You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by ka...@apache.org on 2024/09/03 08:20:33 UTC

(druid) 02/04: Fix the issue of missing implementation of IndexerTaskCountStatsProvider for peons (#16875)

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

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

commit c71fb60345bcf6ceb27d611f52bd8fd159cb7779
Author: Rushikesh Bankar <67...@users.noreply.github.com>
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`.
    
    (cherry picked from commit 4ef4e75c5dfa4a49579f31e6d5af91437696077a)
---
 .../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 d07311c1a46..d67246e96cd 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 ff9fcffb8d9..044e080444d 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
@@ -271,6 +271,7 @@ public class WorkerTaskCountStatsMonitorTest
         9L
     );
   }
+
   @Test
   public void testMonitorWithNulls()
   {
@@ -280,4 +281,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: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org