From db317841a07f1cca684c5fd4c0ecfbea5fcaf93b Mon Sep 17 00:00:00 2001 From: Jack Drogon Date: Thu, 9 Nov 2023 12:21:43 +0800 Subject: [PATCH] [hotfix](editlog) Fix upsert replay on follower not contains loadedTableIndexIds (#26597) Signed-off-by: Jack Drogon --- fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java | 1 + .../org/apache/doris/transaction/DatabaseTransactionMgr.java | 1 + 2 files changed, 2 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java b/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java index d17fbc99c9..877b6cc18e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java @@ -530,6 +530,7 @@ public class EditLog { Env.getCurrentGlobalTransactionMgr().replayUpsertTransactionState(state); LOG.debug("logid: {}, opcode: {}, tid: {}", logId, opCode, state.getTransactionId()); + // state.loadedTableIndexIds is updated after replay if (state.getTransactionStatus() == TransactionStatus.VISIBLE) { UpsertRecord upsertRecord = new UpsertRecord(logId, state); Env.getCurrentEnv().getBinlogManager().addUpsertRecord(upsertRecord); 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 e6d266e43e..9b12303046 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 @@ -1769,6 +1769,7 @@ public class DatabaseTransactionMgr { tableId, transactionState.getTransactionId(), db.getId()); continue; } + transactionState.addTableIndexes(table); for (PartitionCommitInfo partitionCommitInfo : tableCommitInfo.getIdToPartitionCommitInfo().values()) { long partitionId = partitionCommitInfo.getPartitionId(); long newCommitVersion = partitionCommitInfo.getVersion();