From 99fdf35b64e025c766b19f4f18c407519568c656 Mon Sep 17 00:00:00 2001 From: Jack Drogon Date: Wed, 8 Nov 2023 18:07:24 +0800 Subject: [PATCH] Fix upsert replay on follower not contains loadedTableIndexIds 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 d17fbc99c94be8..877b6cc18ea4a2 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 static void loadJournal(Env env, Long logId, JournalEntity journal) { 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 e6d266e43eeca8..9b123030465f10 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 @@ private boolean updateCatalogAfterVisible(TransactionState transactionState, Dat tableId, transactionState.getTransactionId(), db.getId()); continue; } + transactionState.addTableIndexes(table); for (PartitionCommitInfo partitionCommitInfo : tableCommitInfo.getIdToPartitionCommitInfo().values()) { long partitionId = partitionCommitInfo.getPartitionId(); long newCommitVersion = partitionCommitInfo.getVersion();