diff --git a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java index 4c50ae9127..5d6b94bfbb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java @@ -928,9 +928,19 @@ public class DatabaseTransactionMgr { for (Tablet tablet : index.getTablets()) { int healthReplicaNum = 0; for (Replica replica : tablet.getReplicas()) { - if (!errorReplicaIds.contains(replica.getId()) && replica.getLastFailedVersion() < 0) { + if (replica.getLastFailedVersion() >= 0) { + LOG.info("publish version failed for transaction {} on tablet {}," + + " on replica {} due to lastFailedVersion >= 0", + transactionState, tablet, replica); + continue; + } + if (!errorReplicaIds.contains(replica.getId())) { if (replica.checkVersionCatchUp(partition.getVisibleVersion(), true)) { ++healthReplicaNum; + } else { + LOG.info("publish version failed for transaction {} on tablet {}," + + " on replica {} due to not catchup", + transactionState, tablet, replica); } } else if (replica.getVersion() >= partitionCommitInfo.getVersion()) { // the replica's version is larger than or equal to current transaction @@ -938,6 +948,9 @@ public class DatabaseTransactionMgr { // TODO(cmy): actually I have no idea why we need this check errorReplicaIds.remove(replica.getId()); ++healthReplicaNum; + } else { + LOG.info("publish version failed for transaction {} on tablet {}," + + " on replica {} due to version hole", transactionState, tablet, replica); } }