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 a728f55e0d6c12..b87223e51119d8 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 @@ -969,6 +969,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); @@ -979,9 +989,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 {