You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by jo...@apache.org on 2019/12/13 04:07:31 UTC
[incubator-druid] branch 0.17.0-incubating updated: add readiness
endpoints to processes having initialization delays (#8841) (#9025)
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 <jo...@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-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org