diff --git a/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java b/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java index d6d0e568dee95a..b35092a830da22 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java +++ b/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java @@ -525,7 +525,7 @@ public Pair lockBinlog(long dbId, long tableId, } // get the dropped partitions of the db. - public List getDroppedPartitions(long dbId) { + public List> getDroppedPartitions(long dbId) { lock.readLock().lock(); try { DBBinlog dbBinlog = dbBinlogMap.get(dbId); @@ -539,7 +539,7 @@ public List getDroppedPartitions(long dbId) { } // get the dropped tables of the db. - public List getDroppedTables(long dbId) { + public List> getDroppedTables(long dbId) { lock.readLock().lock(); try { DBBinlog dbBinlog = dbBinlogMap.get(dbId); @@ -553,7 +553,7 @@ public List getDroppedTables(long dbId) { } // get the dropped indexes of the db. - public List getDroppedIndexes(long dbId) { + public List> getDroppedIndexes(long dbId) { lock.readLock().lock(); try { DBBinlog dbBinlog = dbBinlogMap.get(dbId); diff --git a/fe/fe-core/src/main/java/org/apache/doris/binlog/DBBinlog.java b/fe/fe-core/src/main/java/org/apache/doris/binlog/DBBinlog.java index 8e2c7bbde96b02..b65f91e7b220bb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/binlog/DBBinlog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/binlog/DBBinlog.java @@ -46,7 +46,6 @@ import java.util.Optional; import java.util.TreeSet; import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.stream.Collectors; public class DBBinlog { private static final Logger LOG = LogManager.getLogger(BinlogManager.class); @@ -232,36 +231,30 @@ public Pair> getBinlog(long tableId, long prevCommitSeq, } // Get the dropped partitions of the db. - public List getDroppedPartitions() { + public List> getDroppedPartitions() { lock.readLock().lock(); try { - return droppedPartitions.stream() - .map(v -> v.first) - .collect(Collectors.toList()); + return new ArrayList<>(droppedPartitions); } finally { lock.readLock().unlock(); } } // Get the dropped tables of the db. - public List getDroppedTables() { + public List> getDroppedTables() { lock.readLock().lock(); try { - return droppedTables.stream() - .map(v -> v.first) - .collect(Collectors.toList()); + return new ArrayList<>(droppedTables); } finally { lock.readLock().unlock(); } } // Get the dropped indexes of the db. - public List getDroppedIndexes() { + public List> getDroppedIndexes() { lock.readLock().lock(); try { - return droppedIndexes.stream() - .map(v -> v.first) - .collect(Collectors.toList()); + return new ArrayList<>(droppedIndexes); } finally { lock.readLock().unlock(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java index 304bcd898d00ec..0005a278692c91 100755 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java @@ -6272,9 +6272,26 @@ public static TGetMetaResult getMeta(Database db, List tables) throws Met if (Config.enable_feature_binlog) { BinlogManager binlogManager = Env.getCurrentEnv().getBinlogManager(); - dbMeta.setDroppedPartitions(binlogManager.getDroppedPartitions(db.getId())); - dbMeta.setDroppedTables(binlogManager.getDroppedTables(db.getId())); - dbMeta.setDroppedIndexes(binlogManager.getDroppedIndexes(db.getId())); + // id -> commit seq + List> droppedPartitions = binlogManager.getDroppedPartitions(db.getId()); + List> droppedTables = binlogManager.getDroppedTables(db.getId()); + List> droppedIndexes = binlogManager.getDroppedIndexes(db.getId()); + dbMeta.setDroppedPartitionMap(droppedPartitions.stream() + .collect(Collectors.toMap(p -> p.first, p -> p.second))); + dbMeta.setDroppedTableMap(droppedTables.stream() + .collect(Collectors.toMap(p -> p.first, p -> p.second))); + dbMeta.setDroppedIndexMap(droppedIndexes.stream() + .collect(Collectors.toMap(p -> p.first, p -> p.second))); + // Keep compatibility with old version + dbMeta.setDroppedPartitions(droppedPartitions.stream() + .map(p -> p.first) + .collect(Collectors.toList())); + dbMeta.setDroppedTables(droppedTables.stream() + .map(p -> p.first) + .collect(Collectors.toList())); + dbMeta.setDroppedIndexes(droppedIndexes.stream() + .map(p -> p.first) + .collect(Collectors.toList())); } result.setDbMeta(dbMeta); diff --git a/gensrc/thrift/FrontendService.thrift b/gensrc/thrift/FrontendService.thrift index 746d5d7e5d8607..68979f1d6c8b4a 100644 --- a/gensrc/thrift/FrontendService.thrift +++ b/gensrc/thrift/FrontendService.thrift @@ -1594,9 +1594,12 @@ struct TGetMetaDBMeta { 1: optional i64 id 2: optional string name 3: optional list tables - 4: optional list dropped_partitions - 5: optional list dropped_tables - 6: optional list dropped_indexes + 4: optional list dropped_partitions // DEPRECATED + 5: optional list dropped_tables // DEPRECATED + 6: optional list dropped_indexes // DEPRECATED + 7: optional map dropped_partition_map // id -> commit seq + 8: optional map dropped_table_map // id -> commit seq + 9: optional map dropped_index_map // id -> commit seq } struct TGetMetaResult {