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

jlli pushed a commit to branch clean-up-task-manager-for-tables
in repository https://gitbox.apache.org/repos/asf/pinot.git

commit 7068a246e9851329a7580cbba4479b8599aa64a2
Author: jlli_LinkedIn <j...@linkedin.com>
AuthorDate: Mon Apr 15 15:39:13 2024 -0700

    Do task related cleanup for non-controller leader
---
 .../controller/helix/core/minion/PinotTaskManager.java   | 16 +++++++++++++++-
 .../helix/core/minion/generator/PinotTaskGenerator.java  |  7 +++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/PinotTaskManager.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/PinotTaskManager.java
index 2cdbf8c1df..a96e550738 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/PinotTaskManager.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/PinotTaskManager.java
@@ -693,11 +693,25 @@ public class PinotTaskManager extends 
ControllerPeriodicTask<Void> {
     scheduleTasks(tableNamesWithType, true);
   }
 
+  @Override
+  protected void nonLeaderCleanup(List<String> tableNamesWithType) {
+    LOGGER.info("Cleaning up all task generators for tables: " + 
tableNamesWithType);
+    for (String taskType : _taskGeneratorRegistry.getAllTaskTypes()) {
+      PinotTaskGenerator pinotTaskGenerator = 
_taskGeneratorRegistry.getTaskGenerator(taskType);
+      if (pinotTaskGenerator != null) {
+        pinotTaskGenerator.nonLeaderCleanUp(tableNamesWithType);
+      }
+    }
+  }
+
   @Override
   public void cleanUpTask() {
     LOGGER.info("Cleaning up all task generators");
     for (String taskType : _taskGeneratorRegistry.getAllTaskTypes()) {
-      _taskGeneratorRegistry.getTaskGenerator(taskType).nonLeaderCleanUp();
+      PinotTaskGenerator pinotTaskGenerator = 
_taskGeneratorRegistry.getTaskGenerator(taskType);
+      if (pinotTaskGenerator != null) {
+        pinotTaskGenerator.nonLeaderCleanUp();
+      }
     }
   }
 
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/generator/PinotTaskGenerator.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/generator/PinotTaskGenerator.java
index ad42135886..fe98e971f8 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/generator/PinotTaskGenerator.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/generator/PinotTaskGenerator.java
@@ -86,6 +86,13 @@ public interface PinotTaskGenerator {
   default void nonLeaderCleanUp() {
   }
 
+  /**
+   * Given the list of table names, performs necessary cleanups (e.g. remove 
metrics) when the controller leadership
+   * changes.
+   */
+  default void nonLeaderCleanUp(List<String> tableNameWithType) {
+  }
+
   /**
    * Gets the minionInstanceTag for the tableConfig
    */


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to