morningman commented on code in PR #9266:
URL: https://github.com/apache/incubator-doris/pull/9266#discussion_r862310804


##########
fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java:
##########
@@ -857,49 +857,19 @@ public void finishTransaction(long transactionId, 
Set<Long> errorReplicaIds) thr
                         }
                     }
 
+                    // check success replica number for each tablet.
+                    // a success replica means:
+                    //  1. Not in errorReplicaIds: succeed in both commit and 
publish phase
+                    //  2. last failed version < 0: is a health replica before
+                    //  3. version catch up: not with a stale version
+                    // Here we only check number, the replica version will be 
updated in updateCatalogAfterVisible()
                     for (MaterializedIndex index : allIndices) {
                         for (Tablet tablet : index.getTablets()) {
                             int healthReplicaNum = 0;
                             for (Replica replica : tablet.getReplicas()) {
                                 if (!errorReplicaIds.contains(replica.getId())
-                                        && replica.getLastFailedVersion() < 0) 
{
-                                    // this means the replica is a healthy 
replica,
-                                    // it is healthy in the past and does not 
have error in current load
-                                    if 
(replica.checkVersionCatchUp(partition.getVisibleVersion(), true)) {
-                                        // during rollup, the rollup replica's 
last failed version < 0,
-                                        // it may be treated as a normal 
replica.
-                                        // the replica is not failed during 
commit or publish
-                                        // during upgrade, one replica's last 
version maybe invalid,
-                                        // has to compare version hash.
-
-                                        // Here we still update the replica's 
info even if we failed to publish
-                                        // this txn, for the following case:
-                                        // replica A,B,C is successfully 
committed, but only A is successfully
-                                        // published,
-                                        // B and C is crashed, now we need a 
Clone task to repair this tablet.
-                                        // So, here we update A's version 
info, so that clone task will clone
-                                        // the latest version of data.
-
-                                        
replica.updateVersionInfo(partitionCommitInfo.getVersion(),
-                                                replica.getDataSize(), 
replica.getRowCount());
-                                        ++healthReplicaNum;
-                                    } else {
-                                        // this means the replica has error in 
the past, but we did not observe it
-                                        // during upgrade, one job maybe in 
quorum finished state, for example, A,B,C 3 replica
-                                        // A,B 's version is 10, C's version 
is 10 but C' 10 is abnormal should be rollback
-                                        // then we will detect this and set 
C's last failed version to 10 and last success version to 11
-                                        // this logic has to be replayed in 
checkpoint thread
-                                        
replica.updateVersionInfo(replica.getVersion(),
-                                                partition.getVisibleVersion(), 
-                                                
partitionCommitInfo.getVersion());
-                                        LOG.warn("transaction state {} has 
error, the replica [{}] not appeared in error replica list "
-                                                + " and its version not equal 
to partition commit version or commit version - 1"
-                                                + " if its not a upgrade 
stage, its a fatal error. ", transactionState, replica);
-                                    }
-                                } else if (replica.getVersion() >= 
partitionCommitInfo.getVersion()) {
-                                    // the replica's version is larger than or 
equal to current transaction partition's version
-                                    // the replica is normal, then remove it 
from error replica ids

Review Comment:
   I added it back



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to