From 4001ba2967e0c55cb023a50167e9230cb346b1f5 Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Wed, 9 Jun 2021 18:45:59 +0300 Subject: [PATCH] [#414] ir: Switch health status on application state transitions Set health status to * `UNDEFINED` during Server construction; * `STARTING` on `Server.Start` call; * `READY` after successful `Server.Start` call; * `SHUTTING_DOWN` on `Server.Stop` call. Signed-off-by: Leonard Lyubich --- pkg/innerring/innerring.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/innerring/innerring.go b/pkg/innerring/innerring.go index a1ad4376..1d26e253 100644 --- a/pkg/innerring/innerring.go +++ b/pkg/innerring/innerring.go @@ -138,7 +138,14 @@ var ( ) // Start runs all event providers. -func (s *Server) Start(ctx context.Context, intError chan<- error) error { +func (s *Server) Start(ctx context.Context, intError chan<- error) (err error) { + s.setHealthStatus(control.HealthStatus_STARTING) + defer func() { + if err == nil { + s.setHealthStatus(control.HealthStatus_READY) + } + }() + for _, starter := range s.starters { if err := starter(); err != nil { return err @@ -223,6 +230,8 @@ func (s *Server) startWorkers(ctx context.Context) { // Stop closes all subscription channels. func (s *Server) Stop() { + s.setHealthStatus(control.HealthStatus_SHUTTING_DOWN) + go s.morphListener.Stop() go s.mainnetListener.Stop() @@ -259,6 +268,8 @@ func New(ctx context.Context, log *zap.Logger, cfg *viper.Viper) (*Server, error var err error server := &Server{log: log} + server.setHealthStatus(control.HealthStatus_HEALTH_STATUS_UNDEFINED) + // parse notary support server.feeConfig = config.NewFeeConfig(cfg) server.mainNotaryConfig, server.sideNotaryConfig = parseNotaryConfigs(cfg)