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 ad32f84586 Fix capacity response in mm-less ingestion (#14888)
ad32f84586 is described below
commit ad32f8458670339808a3136a9578a10a52b8394f
Author: George Shiqi Wu <[email protected]>
AuthorDate: Thu Aug 24 22:47:38 2023 -0400
Fix capacity response in mm-less ingestion (#14888)
Changes:
- Fix capacity response in mm-less ingestion.
- Add field usedClusterCapacity to the GET /totalWorkerCapacity response.
This API should be used to get the total ingestion capacity on the overlord.
- Remove method `isK8sTaskRunner` from interface `TaskRunner`
---
.../druid/k8s/overlord/KubernetesTaskRunner.java | 18 ++++++----
.../k8s/overlord/KubernetesTaskRunnerTest.java | 18 ++++++++++
.../druid/indexing/overlord/RemoteTaskRunner.java | 12 +++++++
.../apache/druid/indexing/overlord/TaskRunner.java | 25 +++++++++-----
.../overlord/hrtr/HttpRemoteTaskRunner.java | 12 +++++++
.../indexing/overlord/http/OverlordResource.java | 40 +++-------------------
.../overlord/http/TotalWorkerCapacityResponse.java | 15 +++++++-
.../indexing/overlord/RemoteTaskRunnerTest.java | 5 +++
.../overlord/hrtr/HttpRemoteTaskRunnerTest.java | 2 ++
.../overlord/http/OverlordResourceTest.java | 23 +++++++++++--
web-console/src/helpers/capacity.ts | 13 ++-----
11 files changed, 121 insertions(+), 62 deletions(-)
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunner.java
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunner.java
index 8fc6a5624d..9a4e4bcca6 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunner.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/KubernetesTaskRunner.java
@@ -396,12 +396,6 @@ public class KubernetesTaskRunner implements
TaskLogStreamer, TaskRunner
return Collections.emptyMap();
}
- @Override
- public boolean isK8sTaskRunner()
- {
- return true;
- }
-
@Override
public void unregisterListener(String listenerId)
{
@@ -457,4 +451,16 @@ public class KubernetesTaskRunner implements
TaskLogStreamer, TaskRunner
return workItem.getRunnerTaskState();
}
+
+ @Override
+ public int getTotalCapacity()
+ {
+ return config.getCapacity();
+ }
+
+ @Override
+ public int getUsedCapacity()
+ {
+ return tasks.size();
+ }
}
diff --git
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java
index 511c2de352..ca1fc64171 100644
---
a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java
+++
b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java
@@ -628,4 +628,22 @@ public class KubernetesTaskRunnerTest extends
EasyMockSupport
verifyAll();
}
+
+ @Test
+ public void test_getTotalCapacity()
+ {
+ Assert.assertEquals(1, runner.getTotalCapacity());
+ }
+
+ @Test
+ public void test_getUsedCapacity()
+ {
+ Assert.assertEquals(0, runner.getUsedCapacity());
+ KubernetesWorkItem workItem = new KubernetesWorkItem(task, null);
+ runner.tasks.put(task.getId(), workItem);
+ Assert.assertEquals(1, runner.getUsedCapacity());
+ runner.tasks.remove(task.getId());
+ Assert.assertEquals(0, runner.getUsedCapacity());
+
+ }
}
diff --git
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/RemoteTaskRunner.java
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/RemoteTaskRunner.java
index b110b3a45c..87d1dab4ee 100644
---
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/RemoteTaskRunner.java
+++
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/RemoteTaskRunner.java
@@ -1641,4 +1641,16 @@ public class RemoteTaskRunner implements
WorkerTaskRunner, TaskLogStreamer
return totalBlacklistedPeons;
}
+
+ @Override
+ public int getTotalCapacity()
+ {
+ return getWorkers().stream().mapToInt(workerInfo ->
workerInfo.getWorker().getCapacity()).sum();
+ }
+
+ @Override
+ public int getUsedCapacity()
+ {
+ return
getWorkers().stream().mapToInt(ImmutableWorkerInfo::getCurrCapacityUsed).sum();
+ }
}
diff --git
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskRunner.java
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskRunner.java
index 3d0eb485aa..13fc23f1a6 100644
---
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskRunner.java
+++
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskRunner.java
@@ -136,14 +136,6 @@ public interface TaskRunner
Map<String, Long> getBlacklistedTaskSlotCount();
- /**
- * Beacause the k8s task runner is an extension, we need to know the task
runner type in the overlord resource
- */
- default boolean isK8sTaskRunner()
- {
- return false;
- }
-
default void updateStatus(Task task, TaskStatus status)
{
// do nothing
@@ -154,5 +146,22 @@ public interface TaskRunner
// do nothing
}
+ /**
+ * The maximum number of tasks this TaskRunner can run concurrently.
+ * Can return -1 if this method is not implemented or capacity can't be
found.
+ */
+ default int getTotalCapacity()
+ {
+ return -1;
+ }
+
+ /**
+ * The current number of tasks this TaskRunner is running.
+ * Can return -1 if this method is not implemented or the # of tasks can't
be found.
+ */
+ default int getUsedCapacity()
+ {
+ return -1;
+ }
}
diff --git
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunner.java
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunner.java
index d45f7af33f..bfa1c03dc0 100644
---
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunner.java
+++
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunner.java
@@ -1779,6 +1779,18 @@ public class HttpRemoteTaskRunner implements
WorkerTaskRunner, TaskLogStreamer
return totalBlacklistedPeons;
}
+ @Override
+ public int getTotalCapacity()
+ {
+ return getWorkers().stream().mapToInt(workerInfo ->
workerInfo.getWorker().getCapacity()).sum();
+ }
+
+ @Override
+ public int getUsedCapacity()
+ {
+ return
getWorkers().stream().mapToInt(ImmutableWorkerInfo::getCurrCapacityUsed).sum();
+ }
+
private static class HttpRemoteTaskRunnerWorkItem extends
RemoteTaskRunnerWorkItem
{
enum State
diff --git
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/http/OverlordResource.java
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/http/OverlordResource.java
index 3742ecb8c3..fa61f79615 100644
---
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/http/OverlordResource.java
+++
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/http/OverlordResource.java
@@ -32,8 +32,6 @@ import org.apache.druid.audit.AuditEntry;
import org.apache.druid.audit.AuditInfo;
import org.apache.druid.audit.AuditManager;
import org.apache.druid.client.indexing.ClientTaskQuery;
-import org.apache.druid.client.indexing.IndexingWorker;
-import org.apache.druid.client.indexing.IndexingWorkerInfo;
import org.apache.druid.common.config.ConfigManager.SetResult;
import org.apache.druid.common.config.JacksonConfigManager;
import org.apache.druid.common.exception.DruidException;
@@ -469,27 +467,17 @@ public class OverlordResource
public Response getTotalWorkerCapacity()
{
// Calculate current cluster capacity
- int currentCapacity;
Optional<TaskRunner> taskRunnerOptional = taskMaster.getTaskRunner();
if (!taskRunnerOptional.isPresent()) {
// Cannot serve call as not leader
return Response.status(Response.Status.SERVICE_UNAVAILABLE).build();
}
TaskRunner taskRunner = taskRunnerOptional.get();
- Collection<ImmutableWorkerInfo> workers;
- if (taskRunner instanceof WorkerTaskRunner) {
- workers = ((WorkerTaskRunner) taskRunner).getWorkers();
- currentCapacity = workers.stream().mapToInt(workerInfo ->
workerInfo.getWorker().getCapacity()).sum();
- } else {
- log.debug(
- "Cannot calculate capacity as task runner [%s] of type [%s] does not
support listing workers",
- taskRunner,
- taskRunner.getClass().getName()
- );
- workers = ImmutableList.of();
- currentCapacity = -1;
- }
+ Collection<ImmutableWorkerInfo> workers = taskRunner instanceof
WorkerTaskRunner ?
+ ((WorkerTaskRunner) taskRunner).getWorkers() : ImmutableList.of();
+ int currentCapacity = taskRunner.getTotalCapacity();
+ int usedCapacity = taskRunner.getUsedCapacity();
// Calculate maximum capacity with auto scale
int maximumCapacity;
if (workerConfigRef == null) {
@@ -520,7 +508,7 @@ public class OverlordResource
);
maximumCapacity = -1;
}
- return Response.ok(new TotalWorkerCapacityResponse(currentCapacity,
maximumCapacity)).build();
+ return Response.ok(new TotalWorkerCapacityResponse(currentCapacity,
maximumCapacity, usedCapacity)).build();
}
// default value is used for backwards compatibility
@@ -939,24 +927,6 @@ public class OverlordResource
{
if (taskRunner instanceof WorkerTaskRunner) {
return Response.ok(((WorkerTaskRunner)
taskRunner).getWorkers()).build();
- } else if (taskRunner.isK8sTaskRunner()) {
- // required because kubernetes task runner has no concept of a
worker, so returning a dummy worker.
- return Response.ok(ImmutableList.of(
- new IndexingWorkerInfo(
- new IndexingWorker(
- "http",
- "host",
- "8100",
-
taskRunner.getTotalTaskSlotCount().getOrDefault("taskQueue", 0L).intValue(),
- "version"
- ),
- 0,
- Collections.emptySet(),
- Collections.emptyList(),
- DateTimes.EPOCH,
- null
- )
- )).build();
} else {
log.debug(
"Task runner [%s] of type [%s] does not support listing
workers",
diff --git
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/http/TotalWorkerCapacityResponse.java
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/http/TotalWorkerCapacityResponse.java
index f40a8f2466..6ee03ed6ca 100644
---
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/http/TotalWorkerCapacityResponse.java
+++
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/http/TotalWorkerCapacityResponse.java
@@ -37,15 +37,22 @@ public class TotalWorkerCapacityResponse
* This can be -1 if it cannot be determined or if auto scaling is not
configured.
*/
private final int maximumCapacityWithAutoScale;
+ /**
+ * Used cluster capacity of the current state of the cluster. This can be -1
if
+ * it cannot be determined.
+ */
+ private final int usedClusterCapacity;
@JsonCreator
public TotalWorkerCapacityResponse(
@JsonProperty("currentClusterCapacity") int currentClusterCapacity,
- @JsonProperty("maximumCapacityWithAutoScale") int
maximumCapacityWithAutoScale
+ @JsonProperty("maximumCapacityWithAutoScale") int
maximumCapacityWithAutoScale,
+ @JsonProperty("usedClusterCapacity") int usedClusterCapacity
)
{
this.currentClusterCapacity = currentClusterCapacity;
this.maximumCapacityWithAutoScale = maximumCapacityWithAutoScale;
+ this.usedClusterCapacity = usedClusterCapacity;
}
@JsonProperty
@@ -59,4 +66,10 @@ public class TotalWorkerCapacityResponse
{
return maximumCapacityWithAutoScale;
}
+
+ @JsonProperty
+ public int getUsedClusterCapacity()
+ {
+ return usedClusterCapacity;
+ }
}
diff --git
a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/RemoteTaskRunnerTest.java
b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/RemoteTaskRunnerTest.java
index a76766d226..db56811ee2 100644
---
a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/RemoteTaskRunnerTest.java
+++
b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/RemoteTaskRunnerTest.java
@@ -147,6 +147,9 @@ public class RemoteTaskRunnerTest
Assert.assertEquals(3,
remoteTaskRunner.getTotalTaskSlotCount().get(WorkerConfig.DEFAULT_CATEGORY).longValue());
Assert.assertEquals(3,
remoteTaskRunner.getIdleTaskSlotCount().get(WorkerConfig.DEFAULT_CATEGORY).longValue());
Assert.assertEquals(0,
remoteTaskRunner.getUsedTaskSlotCount().get(WorkerConfig.DEFAULT_CATEGORY).longValue());
+ Assert.assertEquals(3, remoteTaskRunner.getTotalCapacity());
+ Assert.assertEquals(0, remoteTaskRunner.getUsedCapacity());
+
ListenableFuture<TaskStatus> result = remoteTaskRunner.run(task);
@@ -164,6 +167,8 @@ public class RemoteTaskRunnerTest
Assert.assertEquals(3,
remoteTaskRunner.getTotalTaskSlotCount().get(WorkerConfig.DEFAULT_CATEGORY).longValue());
Assert.assertEquals(3,
remoteTaskRunner.getIdleTaskSlotCount().get(WorkerConfig.DEFAULT_CATEGORY).longValue());
Assert.assertEquals(0,
remoteTaskRunner.getUsedTaskSlotCount().get(WorkerConfig.DEFAULT_CATEGORY).longValue());
+ Assert.assertEquals(3, remoteTaskRunner.getTotalCapacity());
+ Assert.assertEquals(0, remoteTaskRunner.getUsedCapacity());
}
@Test
diff --git
a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunnerTest.java
b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunnerTest.java
index d7feece444..7b2a6f618b 100644
---
a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunnerTest.java
+++
b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunnerTest.java
@@ -146,6 +146,8 @@ public class HttpRemoteTaskRunnerTest
Assert.assertEquals(numTasks, taskRunner.getKnownTasks().size());
Assert.assertEquals(numTasks, taskRunner.getCompletedTasks().size());
+ Assert.assertEquals(4, taskRunner.getTotalCapacity());
+ Assert.assertEquals(0, taskRunner.getUsedCapacity());
}
/*
diff --git
a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/http/OverlordResourceTest.java
b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/http/OverlordResourceTest.java
index 4b40a40b7a..d244fb0ba3 100644
---
a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/http/OverlordResourceTest.java
+++
b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/http/OverlordResourceTest.java
@@ -1331,6 +1331,8 @@ public class OverlordResourceTest
WorkerBehaviorConfig workerBehaviorConfig =
EasyMock.createMock(WorkerBehaviorConfig.class);
AtomicReference<WorkerBehaviorConfig> workerBehaviorConfigAtomicReference
= new AtomicReference<>(workerBehaviorConfig);
EasyMock.expect(configManager.watch(WorkerBehaviorConfig.CONFIG_KEY,
WorkerBehaviorConfig.class)).andReturn(workerBehaviorConfigAtomicReference);
+ EasyMock.expect(taskRunner.getTotalCapacity()).andReturn(-1);
+ EasyMock.expect(taskRunner.getUsedCapacity()).andReturn(-1);
EasyMock.replay(
taskRunner,
taskMaster,
@@ -1344,6 +1346,7 @@ public class OverlordResourceTest
final Response response = overlordResource.getTotalWorkerCapacity();
Assert.assertEquals(HttpResponseStatus.OK.getCode(), response.getStatus());
Assert.assertEquals(-1, ((TotalWorkerCapacityResponse)
response.getEntity()).getCurrentClusterCapacity());
+ Assert.assertEquals(-1, ((TotalWorkerCapacityResponse)
response.getEntity()).getUsedClusterCapacity());
Assert.assertEquals(-1, ((TotalWorkerCapacityResponse)
response.getEntity()).getMaximumCapacityWithAutoScale());
}
@@ -1352,6 +1355,8 @@ public class OverlordResourceTest
{
AtomicReference<WorkerBehaviorConfig> workerBehaviorConfigAtomicReference
= new AtomicReference<>(null);
EasyMock.expect(configManager.watch(WorkerBehaviorConfig.CONFIG_KEY,
WorkerBehaviorConfig.class)).andReturn(workerBehaviorConfigAtomicReference);
+ EasyMock.expect(taskRunner.getTotalCapacity()).andReturn(-1);
+ EasyMock.expect(taskRunner.getUsedCapacity()).andReturn(-1);
EasyMock.replay(
taskRunner,
taskMaster,
@@ -1365,6 +1370,7 @@ public class OverlordResourceTest
final Response response = overlordResource.getTotalWorkerCapacity();
Assert.assertEquals(HttpResponseStatus.OK.getCode(), response.getStatus());
Assert.assertEquals(-1, ((TotalWorkerCapacityResponse)
response.getEntity()).getCurrentClusterCapacity());
+ Assert.assertEquals(-1, ((TotalWorkerCapacityResponse)
response.getEntity()).getUsedClusterCapacity());
Assert.assertEquals(-1, ((TotalWorkerCapacityResponse)
response.getEntity()).getMaximumCapacityWithAutoScale());
}
@@ -1374,6 +1380,8 @@ public class OverlordResourceTest
DefaultWorkerBehaviorConfig workerBehaviorConfig = new
DefaultWorkerBehaviorConfig(null, null);
AtomicReference<WorkerBehaviorConfig> workerBehaviorConfigAtomicReference
= new AtomicReference<>(workerBehaviorConfig);
EasyMock.expect(configManager.watch(WorkerBehaviorConfig.CONFIG_KEY,
WorkerBehaviorConfig.class)).andReturn(workerBehaviorConfigAtomicReference);
+ EasyMock.expect(taskRunner.getTotalCapacity()).andReturn(-1);
+ EasyMock.expect(taskRunner.getUsedCapacity()).andReturn(-1);
EasyMock.replay(
taskRunner,
taskMaster,
@@ -1387,6 +1395,7 @@ public class OverlordResourceTest
final Response response = overlordResource.getTotalWorkerCapacity();
Assert.assertEquals(HttpResponseStatus.OK.getCode(), response.getStatus());
Assert.assertEquals(-1, ((TotalWorkerCapacityResponse)
response.getEntity()).getCurrentClusterCapacity());
+ Assert.assertEquals(-1, ((TotalWorkerCapacityResponse)
response.getEntity()).getUsedClusterCapacity());
Assert.assertEquals(-1, ((TotalWorkerCapacityResponse)
response.getEntity()).getMaximumCapacityWithAutoScale());
}
@@ -1408,6 +1417,9 @@ public class OverlordResourceTest
)
);
EasyMock.expect(workerTaskRunner.getWorkers()).andReturn(workerInfos);
+
EasyMock.expect(workerTaskRunner.getTotalCapacity()).andReturn(expectedWorkerCapacity);
+ EasyMock.expect(workerTaskRunner.getUsedCapacity()).andReturn(0);
+
EasyMock.reset(taskMaster);
EasyMock.expect(taskMaster.getTaskRunner()).andReturn(
Optional.of(workerTaskRunner)
@@ -1435,6 +1447,7 @@ public class OverlordResourceTest
final Response response = overlordResource.getTotalWorkerCapacity();
Assert.assertEquals(HttpResponseStatus.OK.getCode(), response.getStatus());
Assert.assertEquals(expectedWorkerCapacity, ((TotalWorkerCapacityResponse)
response.getEntity()).getCurrentClusterCapacity());
+ Assert.assertEquals(0, ((TotalWorkerCapacityResponse)
response.getEntity()).getUsedClusterCapacity());
Assert.assertEquals(expectedWorkerCapacity * maxNumWorkers,
((TotalWorkerCapacityResponse)
response.getEntity()).getMaximumCapacityWithAutoScale());
}
@@ -1442,20 +1455,24 @@ public class OverlordResourceTest
public void
testGetTotalWorkerCapacityWithAutoScaleConfiguredAndProvisioningStrategyNotSupportExpectedWorkerCapacity()
{
int invalidExpectedCapacity = -1;
+ int currentTotalCapacity = 3;
+ int currentCapacityUsed = 2;
int maxNumWorkers = 2;
WorkerTaskRunner workerTaskRunner =
EasyMock.createMock(WorkerTaskRunner.class);
Collection<ImmutableWorkerInfo> workerInfos = ImmutableList.of(
new ImmutableWorkerInfo(
new Worker(
- "http", "testWorker", "192.0.0.1", 3, "v1",
WorkerConfig.DEFAULT_CATEGORY
+ "http", "testWorker", "192.0.0.1", currentTotalCapacity, "v1",
WorkerConfig.DEFAULT_CATEGORY
),
- 2,
+ currentCapacityUsed,
ImmutableSet.of("grp1", "grp2"),
ImmutableSet.of("task1", "task2"),
DateTimes.of("2015-01-01T01:01:01Z")
)
);
EasyMock.expect(workerTaskRunner.getWorkers()).andReturn(workerInfos);
+
EasyMock.expect(workerTaskRunner.getTotalCapacity()).andReturn(currentTotalCapacity);
+
EasyMock.expect(workerTaskRunner.getUsedCapacity()).andReturn(currentCapacityUsed);
EasyMock.reset(taskMaster);
EasyMock.expect(taskMaster.getTaskRunner()).andReturn(
Optional.of(workerTaskRunner)
@@ -1484,6 +1501,8 @@ public class OverlordResourceTest
Assert.assertEquals(HttpResponseStatus.OK.getCode(), response.getStatus());
Assert.assertEquals(workerInfos.stream().findFirst().get().getWorker().getCapacity(),
((TotalWorkerCapacityResponse)
response.getEntity()).getCurrentClusterCapacity());
Assert.assertEquals(invalidExpectedCapacity,
((TotalWorkerCapacityResponse)
response.getEntity()).getMaximumCapacityWithAutoScale());
+ Assert.assertEquals(currentTotalCapacity, ((TotalWorkerCapacityResponse)
response.getEntity()).getCurrentClusterCapacity());
+ Assert.assertEquals(currentCapacityUsed, ((TotalWorkerCapacityResponse)
response.getEntity()).getUsedClusterCapacity());
}
@Test
diff --git a/web-console/src/helpers/capacity.ts
b/web-console/src/helpers/capacity.ts
index aaed5903dc..aa29efc68e 100644
--- a/web-console/src/helpers/capacity.ts
+++ b/web-console/src/helpers/capacity.ts
@@ -16,24 +16,17 @@
* limitations under the License.
*/
-import { sum } from 'd3-array';
-
import type { CapacityInfo } from '../druid-models';
import { Api } from '../singletons';
export async function getClusterCapacity(): Promise<CapacityInfo> {
- const workersResponse = await Api.instance.get('/druid/indexer/v1/workers', {
+ const workersResponse = await
Api.instance.get('/druid/indexer/v1/totalWorkerCapacity', {
timeout: 5000,
});
- const usedTaskSlots = sum(
- workersResponse.data,
- (workerInfo: any) => Number(workerInfo.currCapacityUsed) || 0,
- );
+ const usedTaskSlots = Number(workersResponse.data.usedClusterCapacity);
- const totalTaskSlots = sum(workersResponse.data, (workerInfo: any) =>
- Number(workerInfo.worker.capacity),
- );
+ const totalTaskSlots = Number(workersResponse.data.currentClusterCapacity);
return {
availableTaskSlots: totalTaskSlots - usedTaskSlots,
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]