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

kfaraz 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 4ef4e75c5df Fix the issue of missing implementation of 
IndexerTaskCountStatsProvider for peons (#16875)
4ef4e75c5df is described below

commit 4ef4e75c5dfa4a49579f31e6d5af91437696077a
Author: Rushikesh Bankar <[email protected]>
AuthorDate: Sat Aug 10 14:53:16 2024 +0530

    Fix the issue of missing implementation of IndexerTaskCountStatsProvider 
for peons (#16875)
    
    Bug description:
    Peons to fail to start up when `WorkerTaskCountStatsMonitor` is used on 
MiddleManagers.
    This is because MiddleManagers pass on their properties to peons and peons 
are unable to
    find `IndexerTaskCountStatsProvider` as that is bound only for indexer 
nodes.
    
    Fix:
    Check if node is an indexer before trying to get instance of 
`IndexerTaskCountStatsProvider`.
---
 .../druid/server/metrics/WorkerTaskCountStatsMonitor.java     | 11 +++++++++--
 .../druid/server/metrics/WorkerTaskCountStatsMonitorTest.java | 11 +++++++++++
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git 
a/server/src/main/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitor.java
 
b/server/src/main/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitor.java
index bc09e95b5ce..a568ad85d42 100644
--- 
a/server/src/main/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitor.java
+++ 
b/server/src/main/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitor.java
@@ -38,6 +38,7 @@ public class WorkerTaskCountStatsMonitor extends 
AbstractMonitor
   private final String workerCategory;
   private final String workerVersion;
   private final boolean isMiddleManager;
+  private final boolean isIndexer;
 
   @Inject
   public WorkerTaskCountStatsMonitor(
@@ -46,16 +47,22 @@ public class WorkerTaskCountStatsMonitor extends 
AbstractMonitor
   )
   {
     this.isMiddleManager = nodeRoles.contains(NodeRole.MIDDLE_MANAGER);
+    this.isIndexer = nodeRoles.contains(NodeRole.INDEXER);
     if (isMiddleManager) {
       this.statsProvider = 
injector.getInstance(WorkerTaskCountStatsProvider.class);
       this.indexerStatsProvider = null;
       this.workerCategory = statsProvider.getWorkerCategory();
       this.workerVersion = statsProvider.getWorkerVersion();
-    } else {
+    } else if (isIndexer) {
       this.indexerStatsProvider = 
injector.getInstance(IndexerTaskCountStatsProvider.class);
       this.statsProvider = null;
       this.workerCategory = null;
       this.workerVersion = null;
+    } else {
+      this.indexerStatsProvider = null;
+      this.statsProvider = null;
+      this.workerCategory = null;
+      this.workerVersion = null;
     }
   }
 
@@ -68,7 +75,7 @@ public class WorkerTaskCountStatsMonitor extends 
AbstractMonitor
       emit(emitter, "worker/taskSlot/idle/count", 
statsProvider.getWorkerIdleTaskSlotCount());
       emit(emitter, "worker/taskSlot/total/count", 
statsProvider.getWorkerTotalTaskSlotCount());
       emit(emitter, "worker/taskSlot/used/count", 
statsProvider.getWorkerUsedTaskSlotCount());
-    } else {
+    } else if (isIndexer) {
       emit(emitter, "worker/task/running/count", 
indexerStatsProvider.getWorkerRunningTasks());
       emit(emitter, "worker/task/assigned/count", 
indexerStatsProvider.getWorkerAssignedTasks());
       emit(emitter, "worker/task/completed/count", 
indexerStatsProvider.getWorkerCompletedTasks());
diff --git 
a/server/src/test/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitorTest.java
 
b/server/src/test/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitorTest.java
index ad00e5e6dbd..a1930bef637 100644
--- 
a/server/src/test/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitorTest.java
+++ 
b/server/src/test/java/org/apache/druid/server/metrics/WorkerTaskCountStatsMonitorTest.java
@@ -309,6 +309,7 @@ public class WorkerTaskCountStatsMonitorTest
             89L
     );
   }
+
   @Test
   public void testMonitorWithNulls()
   {
@@ -318,4 +319,14 @@ public class WorkerTaskCountStatsMonitorTest
     monitor.doMonitor(emitter);
     Assert.assertEquals(0, emitter.getEvents().size());
   }
+
+  @Test
+  public void testMonitorWithPeon()
+  {
+    final WorkerTaskCountStatsMonitor monitor =
+            new WorkerTaskCountStatsMonitor(injectorForPeon, 
ImmutableSet.of(NodeRole.PEON));
+    final StubServiceEmitter emitter = new StubServiceEmitter("service", 
"host");
+    monitor.doMonitor(emitter);
+    Assert.assertEquals(0, emitter.getEvents().size());
+  }
 }


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

Reply via email to