You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by xi...@apache.org on 2020/08/11 21:41:17 UTC

[incubator-pinot] branch adding-controller-healthcheck-endpoint created (now bd3e06f)

This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a change to branch adding-controller-healthcheck-endpoint
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git.


      at bd3e06f  Adding controller health check endpoint

This branch includes the following new commits:

     new 1820b59  Adding /health endpoint in pinot controller
     new bd3e06f  Adding controller health check endpoint

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[incubator-pinot] 01/02: Adding /health endpoint in pinot controller

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a commit to branch adding-controller-healthcheck-endpoint
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit 1820b5967764a4175290eed641c685460256c728
Author: Xiang Fu <fx...@gmail.com>
AuthorDate: Tue Aug 11 14:36:18 2020 -0700

    Adding /health endpoint in pinot controller
---
 .../controller/api/resources/PinotControllerHealthCheck.java | 12 ++++++++++++
 1 file changed, 12 insertions(+)

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..5876b3e 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
@@ -43,6 +43,18 @@ public class PinotControllerHealthCheck {
   @ApiOperation(value = "Check controller health")
   @ApiResponses(value = {@ApiResponse(code = 200, message = "Good")})
   @Produces(MediaType.TEXT_PLAIN)
+  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() {
     if (StringUtils.isNotBlank(controllerConf.generateVipUrl())) {
       return "GOOD";


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[incubator-pinot] 02/02: Adding controller health check endpoint

Posted by xi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a commit to branch adding-controller-healthcheck-endpoint
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit bd3e06f7fbd8ba56cd84bea8eacea89e7ea58c2b
Author: Xiang Fu <fx...@gmail.com>
AuthorDate: Tue Aug 11 14:40:52 2020 -0700

    Adding controller health check endpoint
---
 .../apache/pinot/common/metrics/ControllerMeter.java   |  2 ++
 .../api/resources/PinotControllerHealthCheck.java      | 18 +++++++++++++++---
 2 files changed, 17 insertions(+), 3 deletions(-)

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 5876b3e..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,6 +43,9 @@ public class PinotControllerHealthCheck {
   @Inject
   ControllerConf controllerConf;
 
+  @Inject
+  private ControllerMetrics controllerMetrics;
+
   @GET
   @Path("pinot-controller/admin")
   @ApiOperation(value = "Check controller health")
@@ -56,9 +64,13 @@ public class PinotControllerHealthCheck {
   @ApiResponses(value = {@ApiResponse(code = 200, message = "Good")})
   @Produces(MediaType.TEXT_PLAIN)
   public String checkHealth() {
-    if (StringUtils.isNotBlank(controllerConf.generateVipUrl())) {
-      return "GOOD";
+    ServiceStatus.Status status = ServiceStatus.getServiceStatus();
+    if (status == ServiceStatus.Status.GOOD) {
+      controllerMetrics.addMeteredGlobalValue(ControllerMeter.HEALTHCHECK_OK_CALLS, 1);
+      return "OK";
     }
-    return "";
+    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: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org