diff --git a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java index 9d71e82a18cae3..355a88aeb903d9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java @@ -972,6 +972,16 @@ private void clearDropPartitionFailedMsg(long tableId) { createOrUpdateRuntimeInfo(tableId, DROP_PARTITION_MSG, DEFAULT_RUNTIME_VALUE); } + /** + * DynamicPartitionScheduler keeps two kinds of tables in {@code dynamicPartitionTableInfo}: dynamic partition + * tables with scheduling enabled, and auto partition tables that rely on {@code partition.retention_count} for + * periodic cleanup. + */ + private boolean isDynamicScheduleTable(Table table) { + return table instanceof OlapTable && (((OlapTable) table).getPartitionRetentionCount() > 0 + || DynamicPartitionUtil.isDynamicPartitionTable(table)); + } + private void initDynamicPartitionTable() { for (Long dbId : Env.getCurrentEnv().getInternalCatalog().getDbIds()) { Database db = Env.getCurrentInternalCatalog().getDbNullable(dbId); @@ -982,9 +992,7 @@ private void initDynamicPartitionTable() { for (Table table : tableList) { table.readLock(); try { - if (table instanceof OlapTable - && (((OlapTable) table).getPartitionRetentionCount() > 0 - || DynamicPartitionUtil.isDynamicPartitionTable(table))) { + if (isDynamicScheduleTable(table)) { registerDynamicPartitionTable(db.getId(), table.getId()); } } finally {