This is an automated email from the ASF dual-hosted git repository. yihua pushed a commit to branch branch-0.x in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 21874a3f5ad861ed3102b290e7a84f7a1c610bee Author: Zouxxyy <[email protected]> AuthorDate: Sat May 11 09:19:38 2024 +0800 [HUDI-7739] Shudown asyncDetectorExecutor in AsyncTimelineServerBasedDetectionStrategy (#11182) --- .../conflict/detection/TimelineServerBasedDetectionStrategy.java | 2 ++ .../java/org/apache/hudi/timeline/service/RequestHandler.java | 9 +++++++-- .../org/apache/hudi/timeline/service/handlers/MarkerHandler.java | 3 +++ .../marker/AsyncTimelineServerBasedDetectionStrategy.java | 6 ++++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/hudi-common/src/main/java/org/apache/hudi/common/conflict/detection/TimelineServerBasedDetectionStrategy.java b/hudi-common/src/main/java/org/apache/hudi/common/conflict/detection/TimelineServerBasedDetectionStrategy.java index 96a7bd6ab59..d5ac6acc083 100644 --- a/hudi-common/src/main/java/org/apache/hudi/common/conflict/detection/TimelineServerBasedDetectionStrategy.java +++ b/hudi-common/src/main/java/org/apache/hudi/common/conflict/detection/TimelineServerBasedDetectionStrategy.java @@ -60,4 +60,6 @@ public abstract class TimelineServerBasedDetectionStrategy implements EarlyConfl String basePath, Long maxAllowableHeartbeatIntervalInMs, HoodieStorage storage, Object markerHandler, Set<HoodieInstant> completedCommits); + + public abstract void stop(); } diff --git a/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/RequestHandler.java b/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/RequestHandler.java index d9b7c85e8ab..3a9c50fdd8b 100644 --- a/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/RequestHandler.java +++ b/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/RequestHandler.java @@ -85,7 +85,7 @@ public class RequestHandler { private final BaseFileHandler dataFileHandler; private final MarkerHandler markerHandler; private final Registry metricsRegistry = Registry.getRegistry("TimelineService"); - private ScheduledExecutorService asyncResultService = Executors.newSingleThreadScheduledExecutor(); + private final ScheduledExecutorService asyncResultService; public RequestHandler(Javalin app, StorageConfiguration<?> conf, TimelineService.Config timelineServiceConfig, HoodieEngineContext hoodieEngineContext, HoodieStorage storage, @@ -103,7 +103,9 @@ public class RequestHandler { this.markerHandler = null; } if (timelineServiceConfig.async) { - asyncResultService = Executors.newSingleThreadScheduledExecutor(); + this.asyncResultService = Executors.newSingleThreadScheduledExecutor(); + } else { + this.asyncResultService = null; } } @@ -187,6 +189,9 @@ public class RequestHandler { if (markerHandler != null) { markerHandler.stop(); } + if (asyncResultService != null) { + asyncResultService.shutdown(); + } } private void writeValueAsString(Context ctx, Object obj) throws JsonProcessingException { diff --git a/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/handlers/MarkerHandler.java b/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/handlers/MarkerHandler.java index 06e6c95f9a5..859ab4cd5e0 100644 --- a/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/handlers/MarkerHandler.java +++ b/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/handlers/MarkerHandler.java @@ -128,6 +128,9 @@ public class MarkerHandler extends Handler { } dispatchingExecutorService.shutdownNow(); batchingExecutorService.shutdownNow(); + if (earlyConflictDetectionStrategy != null) { + earlyConflictDetectionStrategy.stop(); + } } /** diff --git a/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/handlers/marker/AsyncTimelineServerBasedDetectionStrategy.java b/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/handlers/marker/AsyncTimelineServerBasedDetectionStrategy.java index c6161815e8c..d73d787a5dc 100644 --- a/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/handlers/marker/AsyncTimelineServerBasedDetectionStrategy.java +++ b/hudi-timeline-service/src/main/java/org/apache/hudi/timeline/service/handlers/marker/AsyncTimelineServerBasedDetectionStrategy.java @@ -83,4 +83,10 @@ public class AsyncTimelineServerBasedDetectionStrategy extends TimelineServerBas resolveMarkerConflict(basePath, markerDir, markerName); } } + + public void stop() { + if (asyncDetectorExecutor != null) { + asyncDetectorExecutor.shutdown(); + } + } }
