This is an automated email from the ASF dual-hosted git repository. jonwei pushed a commit to branch 0.17.0-incubating in repository https://gitbox.apache.org/repos/asf/incubator-druid.git
The following commit(s) were added to refs/heads/0.17.0-incubating by this push: new b6e6a58 add readiness endpoints to processes having initialization delays (#8841) (#9025) b6e6a58 is described below commit b6e6a58c51db78f5eb2794dca34966ee7c64a01d Author: Jonathan Wei <jon-...@users.noreply.github.com> AuthorDate: Thu Dec 12 20:07:23 2019 -0800 add readiness endpoints to processes having initialization delays (#8841) (#9025) --- docs/operations/api-reference.md | 6 +++++- .../java/org/apache/druid/server/http/BrokerResource.java | 13 ++++++++++++- .../org/apache/druid/server/http/HistoricalResource.java | 2 +- .../org/apache/druid/cli/QueryJettyServerInitializer.java | 9 +++++++-- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/docs/operations/api-reference.md b/docs/operations/api-reference.md index 085a571..4537b5f 100644 --- a/docs/operations/api-reference.md +++ b/docs/operations/api-reference.md @@ -772,7 +772,11 @@ Returns segment information lists including server locations for the given datas * `/druid/broker/v1/loadstatus` -Returns a flag indicating if the Broker knows about all segments in Zookeeper. This can be used to know when a Broker process is ready to be queried after a restart. +Returns a flag indicating if the Broker knows about all segments in the cluster. This can be used to know when a Broker process is ready to be queried after a restart. + +* `/druid/broker/v1/readiness` + +Similar to `/druid/broker/v1/loadstatus`, but instead of returning a JSON, responses 200 OK if its ready and otherwise 503 SERVICE UNAVAILABLE. #### Queries diff --git a/server/src/main/java/org/apache/druid/server/http/BrokerResource.java b/server/src/main/java/org/apache/druid/server/http/BrokerResource.java index ddbe19e..e50b04e 100644 --- a/server/src/main/java/org/apache/druid/server/http/BrokerResource.java +++ b/server/src/main/java/org/apache/druid/server/http/BrokerResource.java @@ -32,7 +32,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path("/druid/broker/v1") -@ResourceFilters(StateResourceFilter.class) public class BrokerResource { private final BrokerServerView brokerServerView; @@ -45,9 +44,21 @@ public class BrokerResource @GET @Path("/loadstatus") + @ResourceFilters(StateResourceFilter.class) @Produces(MediaType.APPLICATION_JSON) public Response getLoadStatus() { return Response.ok(ImmutableMap.of("inventoryInitialized", brokerServerView.isInitialized())).build(); } + + @GET + @Path("/readiness") + public Response getReadiness() + { + if (brokerServerView.isInitialized()) { + return Response.ok().build(); + } else { + return Response.status(Response.Status.SERVICE_UNAVAILABLE).build(); + } + } } diff --git a/server/src/main/java/org/apache/druid/server/http/HistoricalResource.java b/server/src/main/java/org/apache/druid/server/http/HistoricalResource.java index dcaa434..c338854 100644 --- a/server/src/main/java/org/apache/druid/server/http/HistoricalResource.java +++ b/server/src/main/java/org/apache/druid/server/http/HistoricalResource.java @@ -32,7 +32,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path("/druid/historical/v1") -@ResourceFilters(StateResourceFilter.class) public class HistoricalResource { private final ZkCoordinator coordinator; @@ -47,6 +46,7 @@ public class HistoricalResource @GET @Path("/loadstatus") + @ResourceFilters(StateResourceFilter.class) @Produces(MediaType.APPLICATION_JSON) public Response getLoadStatus() { diff --git a/services/src/main/java/org/apache/druid/cli/QueryJettyServerInitializer.java b/services/src/main/java/org/apache/druid/cli/QueryJettyServerInitializer.java index 9282ca3..431b3a0 100644 --- a/services/src/main/java/org/apache/druid/cli/QueryJettyServerInitializer.java +++ b/services/src/main/java/org/apache/druid/cli/QueryJettyServerInitializer.java @@ -22,6 +22,7 @@ package org.apache.druid.cli; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Key; @@ -45,16 +46,20 @@ import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; -import java.util.Collections; import java.util.List; import java.util.Set; /** + * */ public class QueryJettyServerInitializer implements JettyServerInitializer { private static final Logger log = new Logger(QueryJettyServerInitializer.class); - private static List<String> UNSECURED_PATHS = Collections.singletonList("/status/health"); + private static List<String> UNSECURED_PATHS = Lists.newArrayList( + "/status/health", + "/druid/historical/v1/readiness", + "/druid/broker/v1/readiness" + ); private final List<Handler> extensionHandlers; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org For additional commands, e-mail: commits-h...@druid.apache.org