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();
+    }
+  }
 }

Reply via email to