diff --git a/fe/fe-core/src/main/java/org/apache/doris/cloud/transaction/CloudGlobalTransactionMgr.java b/fe/fe-core/src/main/java/org/apache/doris/cloud/transaction/CloudGlobalTransactionMgr.java index c791ccdd27e3dd..1e3888a470f11a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/cloud/transaction/CloudGlobalTransactionMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/cloud/transaction/CloudGlobalTransactionMgr.java @@ -206,10 +206,10 @@ public void setWaitDeleteBitmapLockCostTimeMs(long waitDeleteBitmapLockCostTimeM private Map waitToCommitTxnCountMap = new ConcurrentHashMap<>(); private Map commitCostTimeStatisticMap = new ConcurrentHashMap<>(); - // dbId -> tableId -> txnId - private Map> lastTxnIdMap = Maps.newConcurrentMap(); - // dbId -> txnId -> signature - private Map> txnLastSignatureMap = Maps.newConcurrentMap(); + // tableId -> txnId + private Map lastTxnIdMap = Maps.newConcurrentMap(); + // txnId -> signature + private Map txnLastSignatureMap = Maps.newConcurrentMap(); private final AutoPartitionCacheManager autoPartitionCacheManager = new AutoPartitionCacheManager(); @@ -2589,55 +2589,30 @@ private void decreaseWaitingLockCount(List tableList) { } } - public long getTableLastTxnId(long dbId, long tableId) { - Map tabletIdToTxnId = lastTxnIdMap.get(dbId); - if (tabletIdToTxnId == null) { - return -1; - } - return tabletIdToTxnId.getOrDefault(tableId, -1L); + private long getTableLastTxnId(long dbId, long tableId) { + return lastTxnIdMap.getOrDefault(tableId, -1L); } - public void setTableLastTxnId(long dbId, long tableId, long txnId) { - lastTxnIdMap.compute(dbId, (k, v) -> { - if (v == null) { - v = Maps.newConcurrentMap(); - } - LOG.debug("setTableLastTxnId dbId: {}, tableId: {}, txnId: {}", dbId, tableId, txnId); - v.put(tableId, txnId); - return v; - }); + private void setTableLastTxnId(long dbId, long tableId, long txnId) { + lastTxnIdMap.put(tableId, txnId); + LOG.debug("setTableLastTxnId dbId: {}, tableId: {}, txnId: {}", dbId, tableId, txnId); } - public void clearTableLastTxnId(long dbId, long tableId) { - lastTxnIdMap.computeIfPresent(dbId, (k, v) -> { - v.remove(tableId); - return v.isEmpty() ? null : v; - }); + public void afterDropTable(long dbId, long tableId) { + lastTxnIdMap.remove(tableId); + waitToCommitTxnCountMap.remove(tableId); } - public long getTxnLastSignature(long dbId, long txnId) { - Map txnIdToLastSignature = txnLastSignatureMap.get(dbId); - if (txnIdToLastSignature == null) { - return -1; - } - return txnIdToLastSignature.getOrDefault(txnId, -1L); + private long getTxnLastSignature(long dbId, long txnId) { + return txnLastSignatureMap.getOrDefault(txnId, -1L); } - public void setTxnLastSignature(long dbId, long txnId, long signature) { - txnLastSignatureMap.compute(dbId, (k, v) -> { - if (v == null) { - v = Maps.newConcurrentMap(); - } - LOG.debug("setTxnLastSignature dbId: {}, txnId: {}, signature: {}", dbId, txnId, signature); - v.put(txnId, signature); - return v; - }); + private void setTxnLastSignature(long dbId, long txnId, long signature) { + txnLastSignatureMap.put(txnId, signature); + LOG.debug("setTxnLastSignature dbId: {}, txnId: {}, signature: {}", dbId, txnId, signature); } - public void clearTxnLastSignature(long dbId, long txnId) { - txnLastSignatureMap.computeIfPresent(dbId, (k, v) -> { - v.remove(txnId); - return v.isEmpty() ? null : v; - }); + private void clearTxnLastSignature(long dbId, long txnId) { + txnLastSignatureMap.remove(txnId); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java index ef84c7a1853fc0..e529875fe9edfa 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java @@ -990,8 +990,8 @@ private void dropTableInternal(Database db, Table table, boolean isView, boolean Env.getCurrentEnv().getMtmvService().dropTable(table); } if (Config.isCloudMode()) { - ((CloudGlobalTransactionMgr) Env.getCurrentGlobalTransactionMgr()) - .clearTableLastTxnId(db.getId(), table.getId()); + ((CloudGlobalTransactionMgr) Env.getCurrentGlobalTransactionMgr()).afterDropTable(db.getId(), + table.getId()); } }