diff --git a/ams/ams-server/src/main/java/com/netease/arctic/ams/server/service/impl/OptimizeQueueService.java b/ams/ams-server/src/main/java/com/netease/arctic/ams/server/service/impl/OptimizeQueueService.java index 3807bebc22..0d23cef2ad 100644 --- a/ams/ams-server/src/main/java/com/netease/arctic/ams/server/service/impl/OptimizeQueueService.java +++ b/ams/ams-server/src/main/java/com/netease/arctic/ams/server/service/impl/OptimizeQueueService.java @@ -731,6 +731,40 @@ private List plan(long currentTime) { for (TableIdentifier tableIdentifier : tableSort) { try { TableOptimizeItem tableItem = ServiceContainer.getOptimizeService().getTableOptimizeItem(tableIdentifier); + + if (tableItem.optimizeRunning()) { + LOG.debug("{} is running continue", tableIdentifier); + + ArcticTable arcticTable = tableItem.getArcticTable(true); + + Map properties = arcticTable.properties(); + int queueId = ServiceContainer.getOptimizeQueueService().getQueueId(properties); + + // queue was updated + if (optimizeQueue.getOptimizeQueueMeta().getQueueId() != queueId) { + releaseTable(tableIdentifier); + ServiceContainer.getOptimizeQueueService().getQueue(queueId).bindTable(tableIdentifier); + continue; + } + + tableItem.checkTaskExecuteTimeout(); + // if enable_optimize is false + if (!tableItem.allowOptimizing()) { + LOG.debug("{} is not enable optimize or retry too frequently continue", tableIdentifier); + continue; + } + + // add failed tasks and retry + List toExecuteTasks = addTask(tableItem, Collections.emptyList()); + if (!toExecuteTasks.isEmpty()) { + LOG.info("{} add {} failed tasks into queue and retry", + tableItem.getTableIdentifier(), toExecuteTasks.size()); + return toExecuteTasks; + } else { + continue; + } + } + if (tableItem.getTableOptimizeRuntime().getOptimizeStatus() != TableOptimizeRuntime.OptimizeStatus.Pending) { // only table in pending should plan continue; @@ -754,20 +788,6 @@ private List plan(long currentTime) { continue; } - if (tableItem.optimizeRunning()) { - LOG.debug("{} is running continue", tableIdentifier); - - // add failed tasks and retry - List toExecuteTasks = addTask(tableItem, Collections.emptyList()); - if (!toExecuteTasks.isEmpty()) { - LOG.info("{} add {} failed tasks into queue and retry", - tableItem.getTableIdentifier(), toExecuteTasks.size()); - return toExecuteTasks; - } else { - continue; - } - } - OptimizePlanResult optimizePlanResult = OptimizePlanResult.EMPTY; long startPlanTime = System.currentTimeMillis(); if (tableItem.startPlanIfNot()) {