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