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 {