From 7789fdb905b3f396e690862e212df23ed0b8a061 Mon Sep 17 00:00:00 2001 From: Robert Zaremba Date: Thu, 7 Jul 2022 19:41:19 +0200 Subject: [PATCH 1/2] fix(server): start telemetry independently from the API server * fix(telemetry): start telemetry independently from the API server (#12448) * fix unlock * add changelog * Update CHANGELOG.md Co-authored-by: Aleksandr Bezobchuk --- server/api/server.go | 22 +++++++++------------- server/start.go | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/server/api/server.go b/server/api/server.go index 819d17f96b..936e4d5276 100644 --- a/server/api/server.go +++ b/server/api/server.go @@ -90,16 +90,6 @@ func New(clientCtx client.Context, logger log.Logger) *Server { // non-blocking, so an external signal handler must be used. func (s *Server) Start(cfg config.Config) error { s.mtx.Lock() - if cfg.Telemetry.Enabled { - m, err := telemetry.New(cfg.Telemetry) - if err != nil { - s.mtx.Unlock() - return err - } - - s.metrics = m - s.registerMetrics() - } ostCfg := ostrpcserver.DefaultConfig() ostCfg.MaxOpenConnections = int(cfg.API.MaxOpenConnections) @@ -115,18 +105,17 @@ func (s *Server) Start(cfg config.Config) error { } s.registerGRPCGatewayRoutes() - s.listener = listener var h http.Handler = s.Router + s.mtx.Unlock() + if cfg.API.EnableUnsafeCORS { allowAllCORS := handlers.CORS(handlers.AllowedHeaders([]string{"Content-Type"})) - s.mtx.Unlock() return ostrpcserver.Serve(s.listener, allowAllCORS(h), s.logger, ostCfg) } s.logger.Info("starting API server...") - s.mtx.Unlock() return ostrpcserver.Serve(s.listener, s.Router, s.logger, ostCfg) } @@ -141,6 +130,13 @@ func (s *Server) registerGRPCGatewayRoutes() { s.Router.PathPrefix("/").Handler(s.GRPCGatewayRouter) } +func (s *Server) SetTelemetry(m *telemetry.Metrics) { + s.mtx.Lock() + s.metrics = m + s.registerMetrics() + s.mtx.Unlock() +} + func (s *Server) registerMetrics() { metricsHandler := func(w http.ResponseWriter, r *http.Request) { format := strings.TrimSpace(r.FormValue("format")) diff --git a/server/start.go b/server/start.go index 763c9507ba..de08709d8c 100644 --- a/server/start.go +++ b/server/start.go @@ -33,6 +33,7 @@ import ( "github.com/line/lbm-sdk/store/cache" "github.com/line/lbm-sdk/store/iavl" storetypes "github.com/line/lbm-sdk/store/types" + "github.com/line/lbm-sdk/telemetry" ) // Ostracon full-node start flags @@ -200,6 +201,10 @@ func startStandAlone(ctx *Context, appCreator types.AppCreator) error { } app := appCreator(ctx.Logger, db, traceWriter, ctx.Viper) + _, err = startTelemetry(config.GetConfig(ctx.Viper)) + if err != nil { + return err + } svr, err := server.NewServer(addr, transport, app) if err != nil { @@ -319,6 +324,11 @@ func startInProcess(ctx *Context, clientCtx client.Context, appCreator types.App app.RegisterTendermintService(clientCtx) } + metrics, err := startTelemetry(config) + if err != nil { + return err + } + var apiSrv *api.Server if config.API.Enable { genDoc, err := genDocProvider() @@ -330,6 +340,9 @@ func startInProcess(ctx *Context, clientCtx client.Context, appCreator types.App apiSrv = api.New(clientCtx, ctx.Logger.With("module", "api-server")) app.RegisterAPIRoutes(apiSrv, config.API) + if config.Telemetry.Enabled { + apiSrv.SetTelemetry(metrics) + } errCh := make(chan error) go func() { @@ -441,3 +454,10 @@ func startInProcess(ctx *Context, clientCtx client.Context, appCreator types.App // wait for signal capture and gracefully return return WaitForQuitSignals() } + +func startTelemetry(cfg config.Config) (*telemetry.Metrics, error) { + if !cfg.Telemetry.Enabled { + return nil, nil + } + return telemetry.New(cfg.Telemetry) +} From 6292977d9deb277281055708a9a96db6cfb09d1c Mon Sep 17 00:00:00 2001 From: Jayden Lee <41176085+tkxkd0159@users.noreply.github.com> Date: Wed, 26 Oct 2022 23:38:41 +0900 Subject: [PATCH 2/2] add CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 904731e313..b295eec299 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -125,6 +125,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (client) [\#737](https://github.com/line/lbm-sdk/pull/737) check multisig key list to prevent unexpected key deletion * (simapp) [\#752](https://github.com/line/lbm-sdk/pull/752) add x/distribution's module account into blockedAddr * (x/auth) [\#754](https://github.com/line/lbm-sdk/pull/754) Fix wrong sequences in `sign-batch` +* (server) [\#763](https://github.com/line/lbm-sdk/pull/763) start telemetry independently from the API server ### Breaking Changes * (proto) [\#564](https://github.com/line/lbm-sdk/pull/564) change gRPC path to original cosmos path