This is an automated email from the ASF dual-hosted git repository.
xiangfu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
The following commit(s) were added to refs/heads/master by this push:
new db48107 Adding controller healthcheck endpoint: /health (#5846)
db48107 is described below
commit db48107e1e13e26f91da038ca8c2c2174b1ac5b3
Author: Xiang Fu <[email protected]>
AuthorDate: Tue Aug 11 17:06:24 2020 -0700
Adding controller healthcheck endpoint: /health (#5846)
* Adding /health endpoint in pinot controller
* Adding controller health check endpoint
---
.../pinot/common/metrics/ControllerMeter.java | 2 ++
.../api/resources/PinotControllerHealthCheck.java | 26 +++++++++++++++++++++-
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerMeter.java
b/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerMeter.java
index 39ea8db..1e7fc46 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerMeter.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/metrics/ControllerMeter.java
@@ -26,6 +26,8 @@ import org.apache.pinot.common.Utils;
*/
public enum ControllerMeter implements AbstractMetrics.Meter {
HELIX_ZOOKEEPER_RECONNECTS("reconnects", true),
+ HEALTHCHECK_OK_CALLS("healthcheck", true),
+ HEALTHCHECK_BAD_CALLS("healthcheck", true),
CONTROLLER_INSTANCE_POST_ERROR("InstancePostError", true),
CONTROLLER_INSTANCE_DELETE_ERROR("InstanceDeleteError", true),
CONTROLLER_SEGMENT_UPLOAD_ERROR("SegmentUploadError", true),
diff --git
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotControllerHealthCheck.java
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotControllerHealthCheck.java
index 7370085..d844989 100644
---
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotControllerHealthCheck.java
+++
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotControllerHealthCheck.java
@@ -26,8 +26,13 @@ import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.apache.commons.lang.StringUtils;
+import org.apache.pinot.common.metrics.ControllerMeter;
+import org.apache.pinot.common.metrics.ControllerMetrics;
+import org.apache.pinot.common.utils.ServiceStatus;
import org.apache.pinot.controller.ControllerConf;
@@ -38,15 +43,34 @@ public class PinotControllerHealthCheck {
@Inject
ControllerConf controllerConf;
+ @Inject
+ private ControllerMetrics controllerMetrics;
+
@GET
@Path("pinot-controller/admin")
@ApiOperation(value = "Check controller health")
@ApiResponses(value = {@ApiResponse(code = 200, message = "Good")})
@Produces(MediaType.TEXT_PLAIN)
- public String checkHealth() {
+ public String checkHealthLegacy() {
if (StringUtils.isNotBlank(controllerConf.generateVipUrl())) {
return "GOOD";
}
return "";
}
+
+ @GET
+ @Path("health")
+ @ApiOperation(value = "Check controller health")
+ @ApiResponses(value = {@ApiResponse(code = 200, message = "Good")})
+ @Produces(MediaType.TEXT_PLAIN)
+ public String checkHealth() {
+ ServiceStatus.Status status = ServiceStatus.getServiceStatus();
+ if (status == ServiceStatus.Status.GOOD) {
+
controllerMetrics.addMeteredGlobalValue(ControllerMeter.HEALTHCHECK_OK_CALLS,
1);
+ return "OK";
+ }
+
controllerMetrics.addMeteredGlobalValue(ControllerMeter.HEALTHCHECK_BAD_CALLS,
1);
+ throw new WebApplicationException(String.format("Pinot broker status is
%s", status),
+ Response.Status.SERVICE_UNAVAILABLE);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]