This is an automated email from the ASF dual-hosted git repository.

jinsongzhou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/amoro.git


The following commit(s) were added to refs/heads/master by this push:
     new 15b36a90a [AMORO-3658] Modify the execution interval of the executor 
from fixed to a range of random values. (#3659)
15b36a90a is described below

commit 15b36a90a4424d01f0794413a8d8dee1b6432f5f
Author: zhangwl9 <[email protected]>
AuthorDate: Mon Aug 4 20:48:50 2025 +0800

    [AMORO-3658] Modify the execution interval of the executor from fixed to a 
range of random values. (#3659)
    
    Modify the execution interval of the executor from fixed to a range of 
random values.
    
    Co-authored-by: 张文领 <[email protected]>
---
 .../org/apache/amoro/server/scheduler/PeriodicTableScheduler.java  | 4 +++-
 .../amoro/server/scheduler/inline/BlockerExpiringExecutor.java     | 5 +++++
 .../scheduler/inline/DanglingDeleteFilesCleaningExecutor.java      | 7 +++++++
 .../apache/amoro/server/scheduler/inline/DataExpiringExecutor.java | 6 ++++++
 .../amoro/server/scheduler/inline/HiveCommitSyncExecutor.java      | 7 +++++++
 .../amoro/server/scheduler/inline/OptimizingCommitExecutor.java    | 5 +++++
 .../amoro/server/scheduler/inline/OptimizingExpiringExecutor.java  | 5 +++++
 .../amoro/server/scheduler/inline/OrphanFilesCleaningExecutor.java | 6 ++++++
 .../amoro/server/scheduler/inline/SnapshotsExpiringExecutor.java   | 7 +++++++
 .../amoro/server/scheduler/inline/TableRuntimeRefreshExecutor.java | 5 +++++
 .../amoro/server/scheduler/inline/TagsAutoCreatingExecutor.java    | 7 +++++++
 11 files changed, 63 insertions(+), 1 deletion(-)

diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/PeriodicTableScheduler.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/PeriodicTableScheduler.java
index ee9a03d3a..c260cac53 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/PeriodicTableScheduler.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/PeriodicTableScheduler.java
@@ -154,8 +154,10 @@ public abstract class PeriodicTableScheduler extends 
RuntimeHandlerChain {
     logger.info("dispose thread pool for threads {}", getThreadName());
   }
 
+  protected abstract long getExecutorDelay();
+
   protected long getStartDelay() {
-    return START_DELAY;
+    return START_DELAY + getExecutorDelay();
   }
 
   protected AmoroTable<?> loadTable(DefaultTableRuntime tableRuntime) {
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/BlockerExpiringExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/BlockerExpiringExecutor.java
index 93811676b..ec38e4d25 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/BlockerExpiringExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/BlockerExpiringExecutor.java
@@ -44,6 +44,11 @@ public class BlockerExpiringExecutor extends 
PeriodicTableScheduler {
     return true;
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return 0;
+  }
+
   @Override
   protected void execute(DefaultTableRuntime tableRuntime) {
     try {
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/DanglingDeleteFilesCleaningExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/DanglingDeleteFilesCleaningExecutor.java
index 4b53919ca..c19471535 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/DanglingDeleteFilesCleaningExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/DanglingDeleteFilesCleaningExecutor.java
@@ -27,6 +27,8 @@ import org.apache.amoro.server.table.TableService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.concurrent.ThreadLocalRandom;
+
 /** Clean table dangling delete files */
 public class DanglingDeleteFilesCleaningExecutor extends 
PeriodicTableScheduler {
 
@@ -55,6 +57,11 @@ public class DanglingDeleteFilesCleaningExecutor extends 
PeriodicTableScheduler
     scheduleIfNecessary(tableRuntime, getStartDelay());
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return ThreadLocalRandom.current().nextLong(INTERVAL);
+  }
+
   @Override
   protected void execute(DefaultTableRuntime tableRuntime) {
     try {
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/DataExpiringExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/DataExpiringExecutor.java
index 59050694d..2f31b1660 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/DataExpiringExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/DataExpiringExecutor.java
@@ -28,6 +28,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.time.Duration;
+import java.util.concurrent.ThreadLocalRandom;
 
 public class DataExpiringExecutor extends PeriodicTableScheduler {
 
@@ -56,6 +57,11 @@ public class DataExpiringExecutor extends 
PeriodicTableScheduler {
     scheduleIfNecessary(tableRuntime, getStartDelay());
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return ThreadLocalRandom.current().nextLong(interval.toMillis());
+  }
+
   @Override
   protected void execute(DefaultTableRuntime tableRuntime) {
     try {
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/HiveCommitSyncExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/HiveCommitSyncExecutor.java
index 1ef52c8b8..d5251905c 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/HiveCommitSyncExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/HiveCommitSyncExecutor.java
@@ -29,6 +29,8 @@ import org.apache.amoro.table.MixedTable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.concurrent.ThreadLocalRandom;
+
 public class HiveCommitSyncExecutor extends PeriodicTableScheduler {
   private static final Logger LOG = 
LoggerFactory.getLogger(HiveCommitSyncExecutor.class);
 
@@ -49,6 +51,11 @@ public class HiveCommitSyncExecutor extends 
PeriodicTableScheduler {
     return true;
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return ThreadLocalRandom.current().nextLong(INTERVAL);
+  }
+
   @Override
   protected void execute(DefaultTableRuntime tableRuntime) {
     long startTime = System.currentTimeMillis();
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OptimizingCommitExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OptimizingCommitExecutor.java
index f687da85c..67c2e7670 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OptimizingCommitExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OptimizingCommitExecutor.java
@@ -44,6 +44,11 @@ public class OptimizingCommitExecutor extends 
PeriodicTableScheduler {
     return tableRuntime.getOptimizingState().getOptimizingStatus() == 
OptimizingStatus.COMMITTING;
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return 0;
+  }
+
   @Override
   protected void execute(DefaultTableRuntime tableRuntime) {
     
Optional.ofNullable(tableRuntime.getOptimizingState().getOptimizingProcess())
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OptimizingExpiringExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OptimizingExpiringExecutor.java
index 4a0c330a9..ad8e71b83 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OptimizingExpiringExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OptimizingExpiringExecutor.java
@@ -50,6 +50,11 @@ public class OptimizingExpiringExecutor extends 
PeriodicTableScheduler {
     return true;
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return 0;
+  }
+
   @Override
   protected void execute(DefaultTableRuntime tableRuntime) {
     try {
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OrphanFilesCleaningExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OrphanFilesCleaningExecutor.java
index 7d694b229..e7512e4b5 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OrphanFilesCleaningExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/OrphanFilesCleaningExecutor.java
@@ -28,6 +28,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.time.Duration;
+import java.util.concurrent.ThreadLocalRandom;
 
 public class OrphanFilesCleaningExecutor extends PeriodicTableScheduler {
   private static final Logger LOG = 
LoggerFactory.getLogger(OrphanFilesCleaningExecutor.class);
@@ -54,6 +55,11 @@ public class OrphanFilesCleaningExecutor extends 
PeriodicTableScheduler {
     scheduleIfNecessary(tableRuntime, getStartDelay());
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return ThreadLocalRandom.current().nextLong(interval.toMillis());
+  }
+
   @Override
   public void execute(DefaultTableRuntime tableRuntime) {
     try {
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/SnapshotsExpiringExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/SnapshotsExpiringExecutor.java
index b4d9da1e5..d465023bd 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/SnapshotsExpiringExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/SnapshotsExpiringExecutor.java
@@ -27,6 +27,8 @@ import org.apache.amoro.server.table.TableService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.concurrent.ThreadLocalRandom;
+
 /** Service for expiring tables periodically. */
 public class SnapshotsExpiringExecutor extends PeriodicTableScheduler {
   private static final Logger LOG = 
LoggerFactory.getLogger(SnapshotsExpiringExecutor.class);
@@ -53,6 +55,11 @@ public class SnapshotsExpiringExecutor extends 
PeriodicTableScheduler {
     scheduleIfNecessary(tableRuntime, getStartDelay());
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return ThreadLocalRandom.current().nextLong(INTERVAL);
+  }
+
   @Override
   public void execute(DefaultTableRuntime tableRuntime) {
     try {
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/TableRuntimeRefreshExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/TableRuntimeRefreshExecutor.java
index 374e52b54..d9557aba0 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/TableRuntimeRefreshExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/TableRuntimeRefreshExecutor.java
@@ -90,6 +90,11 @@ public class TableRuntimeRefreshExecutor extends 
PeriodicTableScheduler {
     }
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return 0;
+  }
+
   @Override
   public void execute(DefaultTableRuntime tableRuntime) {
     try {
diff --git 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/TagsAutoCreatingExecutor.java
 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/TagsAutoCreatingExecutor.java
index 144aa567b..99a06fb38 100644
--- 
a/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/TagsAutoCreatingExecutor.java
+++ 
b/amoro-ams/src/main/java/org/apache/amoro/server/scheduler/inline/TagsAutoCreatingExecutor.java
@@ -28,6 +28,8 @@ import org.apache.amoro.server.table.TableService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.concurrent.ThreadLocalRandom;
+
 /** Service for automatically creating tags for table periodically. */
 public class TagsAutoCreatingExecutor extends PeriodicTableScheduler {
   private static final Logger LOG = 
LoggerFactory.getLogger(TagsAutoCreatingExecutor.class);
@@ -50,6 +52,11 @@ public class TagsAutoCreatingExecutor extends 
PeriodicTableScheduler {
         && tableRuntime.getFormat() == TableFormat.ICEBERG;
   }
 
+  @Override
+  protected long getExecutorDelay() {
+    return ThreadLocalRandom.current().nextLong(interval);
+  }
+
   @Override
   protected void execute(DefaultTableRuntime tableRuntime) {
     try {

Reply via email to