From 92a3f63d1daa0bd342884a23c36e6517ecd7b4a7 Mon Sep 17 00:00:00 2001 From: Clint Wylie Date: Thu, 6 Jun 2019 03:34:44 -0700 Subject: [PATCH 1/7] allow optionally listing all supervisors with their state and health --- .../MaterializedViewSupervisor.java | 6 ++ .../kafka/supervisor/KafkaSupervisor.java | 6 -- .../kinesis/supervisor/KinesisSupervisor.java | 6 -- .../supervisor/SupervisorManager.java | 6 ++ .../supervisor/SupervisorResource.java | 29 +++++++- .../supervisor/SeekableStreamSupervisor.java | 13 ++++ .../supervisor/SupervisorResourceTest.java | 70 ++++++++++++++++++- .../supervisor/NoopSupervisorSpec.java | 6 ++ .../overlord/supervisor/Supervisor.java | 2 + 9 files changed, 126 insertions(+), 18 deletions(-) diff --git a/extensions-contrib/materialized-view-maintenance/src/main/java/org/apache/druid/indexing/materializedview/MaterializedViewSupervisor.java b/extensions-contrib/materialized-view-maintenance/src/main/java/org/apache/druid/indexing/materializedview/MaterializedViewSupervisor.java index c1033ae647d4..378f1dafa143 100644 --- a/extensions-contrib/materialized-view-maintenance/src/main/java/org/apache/druid/indexing/materializedview/MaterializedViewSupervisor.java +++ b/extensions-contrib/materialized-view-maintenance/src/main/java/org/apache/druid/indexing/materializedview/MaterializedViewSupervisor.java @@ -240,6 +240,12 @@ public SupervisorReport getStatus() ); } + @Override + public SupervisorStateManager.State getState() + { + return stateManager.getSupervisorState(); + } + @Override public Boolean isHealthy() { diff --git a/extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/supervisor/KafkaSupervisor.java b/extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/supervisor/KafkaSupervisor.java index 5d419a4497f3..cdf133677bff 100644 --- a/extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/supervisor/KafkaSupervisor.java +++ b/extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/supervisor/KafkaSupervisor.java @@ -385,10 +385,4 @@ public KafkaSupervisorIOConfig getIoConfig() { return spec.getIoConfig(); } - - @Override - public Boolean isHealthy() - { - return stateManager.isHealthy(); - } } diff --git a/extensions-core/kinesis-indexing-service/src/main/java/org/apache/druid/indexing/kinesis/supervisor/KinesisSupervisor.java b/extensions-core/kinesis-indexing-service/src/main/java/org/apache/druid/indexing/kinesis/supervisor/KinesisSupervisor.java index 39619a268630..5a0c8614b805 100644 --- a/extensions-core/kinesis-indexing-service/src/main/java/org/apache/druid/indexing/kinesis/supervisor/KinesisSupervisor.java +++ b/extensions-core/kinesis-indexing-service/src/main/java/org/apache/druid/indexing/kinesis/supervisor/KinesisSupervisor.java @@ -316,10 +316,4 @@ protected boolean useExclusiveStartSequenceNumberForNonFirstSequence() { return true; } - - @Override - public Boolean isHealthy() - { - return stateManager.isHealthy(); - } } diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorManager.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorManager.java index 56112d15732d..5727c4ed70bb 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorManager.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorManager.java @@ -65,6 +65,12 @@ public Optional getSupervisorSpec(String id) return supervisor == null ? Optional.absent() : Optional.fromNullable(supervisor.rhs); } + public Optional getSupervisorState(String id) + { + Pair supervisor = supervisors.get(id); + return supervisor == null ? Optional.absent() : Optional.fromNullable(supervisor.lhs.getState()); + } + public boolean createOrUpdateAndStartSupervisor(SupervisorSpec spec) { Preconditions.checkState(started, "SupervisorManager not started"); diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java index 9d97a80aca7b..30bc3821e56e 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java @@ -52,6 +52,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -118,6 +119,7 @@ public Response specPost(final SupervisorSpec spec, @Context final HttpServletRe @Produces(MediaType.APPLICATION_JSON) public Response specGetAll( @QueryParam("full") String full, + @QueryParam("state") Boolean state, @Context final HttpServletRequest req ) { @@ -129,9 +131,28 @@ public Response specGetAll( manager.getSupervisorIds() ); - if (full == null) { - return Response.ok(authorizedSupervisorIds).build(); - } else { + + if (state != null && state) { + List> allStates = + authorizedSupervisorIds.stream() + .map(x -> { + Optional theState = + manager.getSupervisorState(x); + if (theState.isPresent()) { + return ImmutableMap.builder() + .put("id", x) + .put("state", theState.get().getBasicState()) + .put("detailedState", theState.get()) + .put("healthy", theState.get().isHealthy()) + .build(); + } + return null; + } + ) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + return Response.ok(allStates).build(); + } else if (full != null) { List> all = authorizedSupervisorIds.stream() .map(x -> ImmutableMap.builder() @@ -142,6 +163,8 @@ public Response specGetAll( .collect(Collectors.toList()); return Response.ok(all).build(); } + + return Response.ok(authorizedSupervisorIds).build(); } ); } diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisor.java b/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisor.java index 5e7c693aa0c6..64112d6c5fde 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisor.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisor.java @@ -807,6 +807,19 @@ public SupervisorReport getStatus() return generateReport(true); } + + @Override + public SupervisorStateManager.State getState() + { + return stateManager.getSupervisorState(); + } + + @Override + public Boolean isHealthy() + { + return stateManager.isHealthy(); + } + private SupervisorReport> generateReport( boolean includeOffsets ) diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java index 96afde5ed1d5..480377b51eab 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java @@ -166,7 +166,7 @@ public List getDataSources() EasyMock.expectLastCall().anyTimes(); replayAll(); - Response response = supervisorResource.specGetAll(null, request); + Response response = supervisorResource.specGetAll(null, null, request); verifyAll(); Assert.assertEquals(200, response.getStatus()); @@ -176,7 +176,7 @@ public List getDataSources() EasyMock.expect(taskMaster.getSupervisorManager()).andReturn(Optional.absent()); replayAll(); - response = supervisorResource.specGetAll(null, request); + response = supervisorResource.specGetAll(null, null, request); verifyAll(); Assert.assertEquals(503, response.getStatus()); @@ -219,7 +219,7 @@ public List getDataSources() EasyMock.expectLastCall().anyTimes(); replayAll(); - Response response = supervisorResource.specGetAll("", request); + Response response = supervisorResource.specGetAll("", null, request); verifyAll(); Assert.assertEquals(200, response.getStatus()); @@ -233,6 +233,70 @@ public List getDataSources() ); } + @Test + public void testSpecGetState() + { + Set supervisorIds = ImmutableSet.of("id1", "id2"); + SupervisorSpec spec1 = new TestSupervisorSpec("id1", null, null) + { + + @Override + public List getDataSources() + { + return Collections.singletonList("datasource1"); + } + }; + SupervisorSpec spec2 = new TestSupervisorSpec("id2", null, null) + { + + @Override + public List getDataSources() + { + return Collections.singletonList("datasource2"); + } + }; + + SupervisorStateManager.State state1 = SupervisorStateManager.BasicState.RUNNING; + SupervisorStateManager.State state2 = SupervisorStateManager.BasicState.SUSPENDED; + + EasyMock.expect(taskMaster.getSupervisorManager()).andReturn(Optional.of(supervisorManager)); + EasyMock.expect(supervisorManager.getSupervisorIds()).andReturn(supervisorIds).atLeastOnce(); + EasyMock.expect(supervisorManager.getSupervisorSpec("id1")).andReturn(Optional.of(spec1)).times(1); + EasyMock.expect(supervisorManager.getSupervisorSpec("id2")).andReturn(Optional.of(spec2)).times(1); + EasyMock.expect(supervisorManager.getSupervisorState("id1")).andReturn(Optional.of(state1)).times(1); + EasyMock.expect(supervisorManager.getSupervisorState("id2")).andReturn(Optional.of(state2)).times(1); + EasyMock.expect(request.getAttribute(AuthConfig.DRUID_ALLOW_UNSECURED_PATH)).andReturn(null).atLeastOnce(); + EasyMock.expect(request.getAttribute(AuthConfig.DRUID_AUTHORIZATION_CHECKED)).andReturn(null).atLeastOnce(); + EasyMock.expect(request.getAttribute(AuthConfig.DRUID_AUTHENTICATION_RESULT)).andReturn( + new AuthenticationResult("druid", "druid", null, null) + ).atLeastOnce(); + request.setAttribute(AuthConfig.DRUID_AUTHORIZATION_CHECKED, true); + EasyMock.expectLastCall().anyTimes(); + replayAll(); + + Response response = supervisorResource.specGetAll(null, true, request); + verifyAll(); + + Assert.assertEquals(200, response.getStatus()); + List> states = (List>) response.getEntity(); + Assert.assertTrue( + states.stream() + .allMatch(state -> { + final String id = (String) state.get("id"); + if ("id1".equals(id)) { + return state1.equals(state.get("state")) + && state1.equals(state.get("detailedState")) + && (Boolean) state.get("healthy") == state1.isHealthy(); + } else if ("id2".equals(id)) { + return state2.equals(state.get("state")) + && state2.equals(state.get("detailedState")) + && (Boolean) state.get("healthy") == state2.isHealthy(); + } + return false; + }) + ); + } + @Test public void testSpecGet() { diff --git a/server/src/main/java/org/apache/druid/indexing/overlord/supervisor/NoopSupervisorSpec.java b/server/src/main/java/org/apache/druid/indexing/overlord/supervisor/NoopSupervisorSpec.java index d8b726602525..3a904b9e0f74 100644 --- a/server/src/main/java/org/apache/druid/indexing/overlord/supervisor/NoopSupervisorSpec.java +++ b/server/src/main/java/org/apache/druid/indexing/overlord/supervisor/NoopSupervisorSpec.java @@ -113,6 +113,12 @@ public SupervisorReport getStatus() return null; } + @Override + public SupervisorStateManager.State getState() + { + return SupervisorStateManager.BasicState.RUNNING; + } + @Override public void reset(DataSourceMetadata dataSourceMetadata) { diff --git a/server/src/main/java/org/apache/druid/indexing/overlord/supervisor/Supervisor.java b/server/src/main/java/org/apache/druid/indexing/overlord/supervisor/Supervisor.java index cf3f4d5fa2e2..c0ecf44c29c0 100644 --- a/server/src/main/java/org/apache/druid/indexing/overlord/supervisor/Supervisor.java +++ b/server/src/main/java/org/apache/druid/indexing/overlord/supervisor/Supervisor.java @@ -39,6 +39,8 @@ public interface Supervisor SupervisorReport getStatus(); + SupervisorStateManager.State getState(); + default Map> getStats() { return ImmutableMap.of(); From 4ffdd5bcd9776a652d5e8d05ddbab405f9845426 Mon Sep 17 00:00:00 2001 From: Clint Wylie Date: Thu, 6 Jun 2019 03:41:48 -0700 Subject: [PATCH 2/7] docs --- docs/content/operations/api-reference.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/content/operations/api-reference.md b/docs/content/operations/api-reference.md index 9326f2b3103b..efdc0541500b 100644 --- a/docs/content/operations/api-reference.md +++ b/docs/content/operations/api-reference.md @@ -512,6 +512,17 @@ Returns a list of objects of the currently active supervisors. |`id`|String|supervisor unique identifier| |`spec`|SupervisorSpec|json specification of supervisor (See Supervisor Configuration for details)| +* `/druid/indexer/v1/supervisor?state=true` + +Returns a list of objects of the currently active supervisors and their current state. + +|Field|Type|Description| +|---|---|---| +|`id`|String|supervisor unique identifier| +|`state`|String|Basic state of the supervisor. Available states:`UNHEALTHY_SUPERVISOR`, `UNHEALTHY_TASKS`, `PENDING`, `RUNNING`, `SUSPENDED`, `STOPPING`| +|`detailedState`|String|Supervisor specific state. (See documentation of specific supervisor for details)| +|`healthy`|Boolean|True or false indicator of overal supervisor health| + * `/druid/indexer/v1/supervisor/` Returns the current spec for the supervisor with the provided ID. From 95e020dd6db14fceebe839d451492f031c2063cc Mon Sep 17 00:00:00 2001 From: Clint Wylie Date: Thu, 6 Jun 2019 03:52:49 -0700 Subject: [PATCH 3/7] add state to full --- docs/content/operations/api-reference.md | 3 +++ .../supervisor/SupervisorResource.java | 21 +++++++++++++++---- .../supervisor/SupervisorResourceTest.java | 4 ++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/docs/content/operations/api-reference.md b/docs/content/operations/api-reference.md index efdc0541500b..108e07fea3b2 100644 --- a/docs/content/operations/api-reference.md +++ b/docs/content/operations/api-reference.md @@ -510,6 +510,9 @@ Returns a list of objects of the currently active supervisors. |Field|Type|Description| |---|---|---| |`id`|String|supervisor unique identifier| +|`state`|String|Basic state of the supervisor. Available states:`UNHEALTHY_SUPERVISOR`, `UNHEALTHY_TASKS`, `PENDING`, `RUNNING`, `SUSPENDED`, `STOPPING`| +|`detailedState`|String|Supervisor specific state. (See documentation of specific supervisor for details)| +|`healthy`|Boolean|True or false indicator of overal supervisor health| |`spec`|SupervisorSpec|json specification of supervisor (See Supervisor Configuration for details)| * `/druid/indexer/v1/supervisor?state=true` diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java index 30bc3821e56e..aae88b1d11d1 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java @@ -155,11 +155,24 @@ public Response specGetAll( } else if (full != null) { List> all = authorizedSupervisorIds.stream() - .map(x -> ImmutableMap.builder() - .put("id", x) - .put("spec", manager.getSupervisorSpec(x).get()) - .build() + .map(x -> { + Optional theSpec = manager.getSupervisorSpec(x); + Optional theState = + manager.getSupervisorState(x); + + if (theSpec.isPresent() && theState.isPresent()) { + return ImmutableMap.builder() + .put("id", x) + .put("state", theState.get().getBasicState()) + .put("detailedState", theState.get()) + .put("healthy", theState.get().isHealthy()) + .put("spec", theSpec.get()) + .build(); + } + return null; + } ) + .filter(Objects::nonNull) .collect(Collectors.toList()); return Response.ok(all).build(); } diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java index 480377b51eab..f6cb0080a966 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java @@ -205,11 +205,15 @@ public List getDataSources() return Collections.singletonList("datasource2"); } }; + SupervisorStateManager.State state1 = SupervisorStateManager.BasicState.RUNNING; + SupervisorStateManager.State state2 = SupervisorStateManager.BasicState.SUSPENDED; EasyMock.expect(taskMaster.getSupervisorManager()).andReturn(Optional.of(supervisorManager)); EasyMock.expect(supervisorManager.getSupervisorIds()).andReturn(supervisorIds).atLeastOnce(); EasyMock.expect(supervisorManager.getSupervisorSpec("id1")).andReturn(Optional.of(spec1)).times(2); EasyMock.expect(supervisorManager.getSupervisorSpec("id2")).andReturn(Optional.of(spec2)).times(2); + EasyMock.expect(supervisorManager.getSupervisorState("id1")).andReturn(Optional.of(state1)).times(1); + EasyMock.expect(supervisorManager.getSupervisorState("id2")).andReturn(Optional.of(state2)).times(1); EasyMock.expect(request.getAttribute(AuthConfig.DRUID_ALLOW_UNSECURED_PATH)).andReturn(null).atLeastOnce(); EasyMock.expect(request.getAttribute(AuthConfig.DRUID_AUTHORIZATION_CHECKED)).andReturn(null).atLeastOnce(); EasyMock.expect(request.getAttribute(AuthConfig.DRUID_AUTHENTICATION_RESULT)).andReturn( From 98b755157781de5f9f5e735321159a6e8b4d7359 Mon Sep 17 00:00:00 2001 From: Clint Wylie Date: Thu, 6 Jun 2019 04:12:40 -0700 Subject: [PATCH 4/7] clean --- .../supervisor/SupervisorResource.java | 71 +++++++------------ 1 file changed, 27 insertions(+), 44 deletions(-) diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java index aae88b1d11d1..a65344e20a7a 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java @@ -130,51 +130,34 @@ public Response specGetAll( manager, manager.getSupervisorIds() ); - - - if (state != null && state) { - List> allStates = - authorizedSupervisorIds.stream() - .map(x -> { - Optional theState = - manager.getSupervisorState(x); - if (theState.isPresent()) { - return ImmutableMap.builder() - .put("id", x) - .put("state", theState.get().getBasicState()) - .put("detailedState", theState.get()) - .put("healthy", theState.get().isHealthy()) - .build(); - } - return null; - } - ) - .filter(Objects::nonNull) - .collect(Collectors.toList()); + final boolean includeFull = full != null; + final boolean includeState = state != null && state; + + if (includeFull || includeState) { + List> allStates = authorizedSupervisorIds + .stream() + .map(x -> { + Optional theState = + manager.getSupervisorState(x); + ImmutableMap.Builder theBuilder = ImmutableMap.builder(); + theBuilder.put("id", x); + if (theState.isPresent()) { + theBuilder.put("state", theState.get().getBasicState()); + theBuilder.put("detailedState", theState.get()); + theBuilder.put("healthy", theState.get().isHealthy()); + } + if (includeFull) { + Optional theSpec = manager.getSupervisorSpec(x); + if (theSpec.isPresent()) { + theBuilder.put("spec", theSpec.get()); + } + } + return theBuilder.build(); + } + ) + .filter(Objects::nonNull) + .collect(Collectors.toList()); return Response.ok(allStates).build(); - } else if (full != null) { - List> all = - authorizedSupervisorIds.stream() - .map(x -> { - Optional theSpec = manager.getSupervisorSpec(x); - Optional theState = - manager.getSupervisorState(x); - - if (theSpec.isPresent() && theState.isPresent()) { - return ImmutableMap.builder() - .put("id", x) - .put("state", theState.get().getBasicState()) - .put("detailedState", theState.get()) - .put("healthy", theState.get().isHealthy()) - .put("spec", theSpec.get()) - .build(); - } - return null; - } - ) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - return Response.ok(all).build(); } return Response.ok(authorizedSupervisorIds).build(); From 19fac23dc47a1636f9dac68cc4dd8be4cae067a4 Mon Sep 17 00:00:00 2001 From: Clint Wylie Date: Thu, 6 Jun 2019 04:14:56 -0700 Subject: [PATCH 5/7] casing --- docs/content/operations/api-reference.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/content/operations/api-reference.md b/docs/content/operations/api-reference.md index 108e07fea3b2..b7ed7c871227 100644 --- a/docs/content/operations/api-reference.md +++ b/docs/content/operations/api-reference.md @@ -510,9 +510,9 @@ Returns a list of objects of the currently active supervisors. |Field|Type|Description| |---|---|---| |`id`|String|supervisor unique identifier| -|`state`|String|Basic state of the supervisor. Available states:`UNHEALTHY_SUPERVISOR`, `UNHEALTHY_TASKS`, `PENDING`, `RUNNING`, `SUSPENDED`, `STOPPING`| -|`detailedState`|String|Supervisor specific state. (See documentation of specific supervisor for details)| -|`healthy`|Boolean|True or false indicator of overal supervisor health| +|`state`|String|basic state of the supervisor. Available states:`UNHEALTHY_SUPERVISOR`, `UNHEALTHY_TASKS`, `PENDING`, `RUNNING`, `SUSPENDED`, `STOPPING`| +|`detailedState`|String|supervisor specific state. (See documentation of specific supervisor for details)| +|`healthy`|Boolean|true or false indicator of overal supervisor health| |`spec`|SupervisorSpec|json specification of supervisor (See Supervisor Configuration for details)| * `/druid/indexer/v1/supervisor?state=true` @@ -522,9 +522,9 @@ Returns a list of objects of the currently active supervisors and their current |Field|Type|Description| |---|---|---| |`id`|String|supervisor unique identifier| -|`state`|String|Basic state of the supervisor. Available states:`UNHEALTHY_SUPERVISOR`, `UNHEALTHY_TASKS`, `PENDING`, `RUNNING`, `SUSPENDED`, `STOPPING`| -|`detailedState`|String|Supervisor specific state. (See documentation of specific supervisor for details)| -|`healthy`|Boolean|True or false indicator of overal supervisor health| +|`state`|String|basic state of the supervisor. Available states:`UNHEALTHY_SUPERVISOR`, `UNHEALTHY_TASKS`, `PENDING`, `RUNNING`, `SUSPENDED`, `STOPPING`| +|`detailedState`|String|supervisor specific state. (See documentation of specific supervisor for details)| +|`healthy`|Boolean|true or false indicator of overal supervisor health| * `/druid/indexer/v1/supervisor/` From 8f0231407faf6565d062342f254947998df958a0 Mon Sep 17 00:00:00 2001 From: Clint Wylie Date: Thu, 6 Jun 2019 12:50:14 -0700 Subject: [PATCH 6/7] format --- .../supervisor/SupervisorResource.java | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java index a65344e20a7a..e7e9daf74184 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java @@ -137,24 +137,23 @@ public Response specGetAll( List> allStates = authorizedSupervisorIds .stream() .map(x -> { - Optional theState = - manager.getSupervisorState(x); - ImmutableMap.Builder theBuilder = ImmutableMap.builder(); - theBuilder.put("id", x); - if (theState.isPresent()) { - theBuilder.put("state", theState.get().getBasicState()); - theBuilder.put("detailedState", theState.get()); - theBuilder.put("healthy", theState.get().isHealthy()); - } - if (includeFull) { - Optional theSpec = manager.getSupervisorSpec(x); - if (theSpec.isPresent()) { - theBuilder.put("spec", theSpec.get()); - } - } - return theBuilder.build(); - } - ) + Optional theState = + manager.getSupervisorState(x); + ImmutableMap.Builder theBuilder = ImmutableMap.builder(); + theBuilder.put("id", x); + if (theState.isPresent()) { + theBuilder.put("state", theState.get().getBasicState()); + theBuilder.put("detailedState", theState.get()); + theBuilder.put("healthy", theState.get().isHealthy()); + } + if (includeFull) { + Optional theSpec = manager.getSupervisorSpec(x); + if (theSpec.isPresent()) { + theBuilder.put("spec", theSpec.get()); + } + } + return theBuilder.build(); + }) .filter(Objects::nonNull) .collect(Collectors.toList()); return Response.ok(allStates).build(); From f74032626fdd00ea43f7d24e34f72a3c0059f378 Mon Sep 17 00:00:00 2001 From: Clint Wylie Date: Fri, 7 Jun 2019 13:22:44 -0700 Subject: [PATCH 7/7] spelling --- docs/content/operations/api-reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/content/operations/api-reference.md b/docs/content/operations/api-reference.md index b7ed7c871227..473282f19edc 100644 --- a/docs/content/operations/api-reference.md +++ b/docs/content/operations/api-reference.md @@ -512,7 +512,7 @@ Returns a list of objects of the currently active supervisors. |`id`|String|supervisor unique identifier| |`state`|String|basic state of the supervisor. Available states:`UNHEALTHY_SUPERVISOR`, `UNHEALTHY_TASKS`, `PENDING`, `RUNNING`, `SUSPENDED`, `STOPPING`| |`detailedState`|String|supervisor specific state. (See documentation of specific supervisor for details)| -|`healthy`|Boolean|true or false indicator of overal supervisor health| +|`healthy`|Boolean|true or false indicator of overall supervisor health| |`spec`|SupervisorSpec|json specification of supervisor (See Supervisor Configuration for details)| * `/druid/indexer/v1/supervisor?state=true` @@ -524,7 +524,7 @@ Returns a list of objects of the currently active supervisors and their current |`id`|String|supervisor unique identifier| |`state`|String|basic state of the supervisor. Available states:`UNHEALTHY_SUPERVISOR`, `UNHEALTHY_TASKS`, `PENDING`, `RUNNING`, `SUSPENDED`, `STOPPING`| |`detailedState`|String|supervisor specific state. (See documentation of specific supervisor for details)| -|`healthy`|Boolean|true or false indicator of overal supervisor health| +|`healthy`|Boolean|true or false indicator of overall supervisor health| * `/druid/indexer/v1/supervisor/`