You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by jl...@apache.org on 2024/04/15 22:39:32 UTC

(pinot) 01/01: Do task related cleanup for non-controller leader

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 <jl...@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-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org