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

karan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 3e172d44ab Bind DurableStorageCleaner only on the Overlord nodes 
(#13355)
3e172d44ab is described below

commit 3e172d44abef43a25409260b51a797a1cef5f958
Author: Laksh Singla <[email protected]>
AuthorDate: Fri Nov 11 21:56:33 2022 +0530

    Bind DurableStorageCleaner only on the Overlord nodes (#13355)
---
 .../druid/msq/guice/MSQDurableStorageModule.java   | 51 ++++++++++++++++++----
 1 file changed, 43 insertions(+), 8 deletions(-)

diff --git 
a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/guice/MSQDurableStorageModule.java
 
b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/guice/MSQDurableStorageModule.java
index df1627ac49..368144091f 100644
--- 
a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/guice/MSQDurableStorageModule.java
+++ 
b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/guice/MSQDurableStorageModule.java
@@ -23,10 +23,14 @@ import com.fasterxml.jackson.databind.Module;
 import com.google.common.collect.ImmutableList;
 import com.google.inject.Binder;
 import com.google.inject.Inject;
+import com.google.inject.Injector;
 import com.google.inject.Key;
+import com.google.inject.TypeLiteral;
 import com.google.inject.multibindings.Multibinder;
+import org.apache.druid.discovery.NodeRole;
 import org.apache.druid.guice.JsonConfigProvider;
 import org.apache.druid.guice.LazySingleton;
+import org.apache.druid.guice.annotations.Self;
 import org.apache.druid.indexing.overlord.helpers.OverlordHelper;
 import org.apache.druid.initialization.DruidModule;
 import org.apache.druid.msq.indexing.DurableStorageCleaner;
@@ -34,8 +38,10 @@ import 
org.apache.druid.msq.indexing.DurableStorageCleanerConfig;
 import org.apache.druid.storage.StorageConnector;
 import org.apache.druid.storage.StorageConnectorProvider;
 
+import javax.annotation.Nullable;
 import java.util.List;
 import java.util.Properties;
+import java.util.Set;
 
 /**
  * Module for functionality related to durable storage for stage output data.
@@ -49,6 +55,7 @@ public class MSQDurableStorageModule implements DruidModule
       String.join(".", MSQ_INTERMEDIATE_STORAGE_PREFIX, "enable");
 
   private Properties properties;
+  private Injector injector;
 
   @Override
   public List<? extends Module> getJacksonModules()
@@ -71,15 +78,18 @@ public class MSQDurableStorageModule implements DruidModule
             .toProvider(Key.get(StorageConnectorProvider.class, 
MultiStageQuery.class))
             .in(LazySingleton.class);
 
-      Multibinder.newSetBinder(binder, OverlordHelper.class)
-                 .addBinding()
-                 .to(DurableStorageCleaner.class);
+      Set<NodeRole> nodeRoles = getNodeRoles(injector);
+      if (nodeRoles != null && nodeRoles.contains(NodeRole.OVERLORD)) {
+        JsonConfigProvider.bind(
+            binder,
+            String.join(".", MSQ_INTERMEDIATE_STORAGE_PREFIX, "cleaner"),
+            DurableStorageCleanerConfig.class
+        );
 
-      JsonConfigProvider.bind(
-          binder,
-          String.join(".", MSQ_INTERMEDIATE_STORAGE_PREFIX, "cleaner"),
-          DurableStorageCleanerConfig.class
-      );
+        Multibinder.newSetBinder(binder, OverlordHelper.class)
+                   .addBinding()
+                   .to(DurableStorageCleaner.class);
+      }
     }
   }
 
@@ -89,6 +99,31 @@ public class MSQDurableStorageModule implements DruidModule
     this.properties = properties;
   }
 
+  @Inject
+  public void setInjector(Injector injector)
+  {
+    this.injector = injector;
+  }
+
+
+  @Nullable
+  private static Set<NodeRole> getNodeRoles(Injector injector)
+  {
+    try {
+      return injector.getInstance(
+          Key.get(
+              new TypeLiteral<Set<NodeRole>>()
+              {
+              },
+              Self.class
+          )
+      );
+    }
+    catch (Exception e) {
+      return null;
+    }
+  }
+
   private boolean isDurableShuffleStorageEnabled()
   {
     return Boolean.parseBoolean((String) 
properties.getOrDefault(MSQ_INTERMEDIATE_STORAGE_ENABLED, "false"));


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to