From 8d923502fb14fa2b2d31c945676dcea503f11e0b Mon Sep 17 00:00:00 2001 From: Jose Ulises Nino Rivera Date: Tue, 29 Oct 2019 12:03:38 -0700 Subject: [PATCH] health: make a few more types public (#104) Description: #102 allowed for some customization. This PR makes the types public so that other servers can use this implementation. Signed-off-by: Jose Nino --- src/server/health.go | 14 +++++++++----- src/server/server_impl.go | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/server/health.go b/src/server/health.go index b00084ee..d5ba5ac8 100644 --- a/src/server/health.go +++ b/src/server/health.go @@ -11,14 +11,14 @@ import ( healthpb "google.golang.org/grpc/health/grpc_health_v1" ) -type healthChecker struct { +type HealthChecker struct { grpc *health.Server ok uint32 name string } -func NewHealthChecker(grpcHealthServer *health.Server, name string) *healthChecker { - ret := &healthChecker{} +func NewHealthChecker(grpcHealthServer *health.Server, name string) *HealthChecker { + ret := &HealthChecker{} ret.ok = 1 ret.name = name @@ -37,7 +37,7 @@ func NewHealthChecker(grpcHealthServer *health.Server, name string) *healthCheck return ret } -func (hc *healthChecker) ServeHTTP(w http.ResponseWriter, r *http.Request) { +func (hc *HealthChecker) ServeHTTP(w http.ResponseWriter, r *http.Request) { ok := atomic.LoadUint32(&hc.ok) if ok == 1 { w.Write([]byte("OK")) @@ -46,7 +46,11 @@ func (hc *healthChecker) ServeHTTP(w http.ResponseWriter, r *http.Request) { } } -func (hc *healthChecker) Fail() { +func (hc *HealthChecker) Fail() { atomic.StoreUint32(&hc.ok, 0) hc.grpc.SetServingStatus(hc.name, healthpb.HealthCheckResponse_NOT_SERVING) } + +func (hc *HealthChecker) Server() *health.Server { + return hc.grpc +} diff --git a/src/server/server_impl.go b/src/server/server_impl.go index d18ba83e..a377cb62 100644 --- a/src/server/server_impl.go +++ b/src/server/server_impl.go @@ -41,7 +41,7 @@ type server struct { scope stats.Scope runtime loader.IFace debugListener serverDebugListener - health *healthChecker + health *HealthChecker } func (server *server) AddDebugHttpEndpoint(path string, help string, handler http.HandlerFunc) { @@ -144,7 +144,7 @@ func newServer(name string, opts ...settings.Option) *server { // setup healthcheck path ret.health = NewHealthChecker(health.NewServer(), "ratelimit") ret.router.Path("/healthcheck").Handler(ret.health) - healthpb.RegisterHealthServer(ret.grpcServer, ret.health.grpc) + healthpb.RegisterHealthServer(ret.grpcServer, ret.health.Server()) // setup default debug listener ret.debugListener.debugMux = http.NewServeMux()