From 76ee9b29ac9d529bf3833e453ac05c3d3f64b252 Mon Sep 17 00:00:00 2001 From: Jonathan Gimeno Date: Tue, 16 Jun 2020 19:31:35 +0200 Subject: [PATCH] Merge PR #6450: Some small improve on API server --- server/api/server.go | 5 +++++ server/config/config.go | 1 + server/start.go | 12 +++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/server/api/server.go b/server/api/server.go index 6266f4720..588614f2f 100644 --- a/server/api/server.go +++ b/server/api/server.go @@ -81,6 +81,11 @@ func (s *Server) Start(cfg config.Config) error { return tmrpcserver.Serve(s.listener, s.Router, s.logger, tmCfg) } +// Close closes the API server. +func (s *Server) Close() error { + return s.listener.Close() +} + func (s *Server) registerSwaggerUI() { statikFS, err := fs.New() if err != nil { diff --git a/server/config/config.go b/server/config/config.go index 690680655..6ae3737de 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -153,6 +153,7 @@ func GetConfig() Config { PrometheusRetentionTime: viper.GetInt64("telemetry.prometheus-retention-time"), }, API: APIConfig{ + Enable: viper.GetBool("api.enable"), Address: viper.GetString("api.address"), MaxOpenConnections: viper.GetUint("api.max-open-connections"), RPCReadTimeout: viper.GetUint("api.rpc-read-timeout"), diff --git a/server/start.go b/server/start.go index 15ed11355..d4eb9f76d 100644 --- a/server/start.go +++ b/server/start.go @@ -192,7 +192,9 @@ func startInProcess(ctx *Context, cdc codec.JSONMarshaler, appCreator AppCreator return err } - if viper.GetBool("api.enable") { + config := config.GetConfig() + var apiSrv *api.Server + if config.API.Enable { genDoc, err := genDocProvider() if err != nil { return err @@ -208,10 +210,10 @@ func startInProcess(ctx *Context, cdc codec.JSONMarshaler, appCreator AppCreator WithClient(local.New(tmNode)). WithTrustNode(true) - apiSrv := api.New(ctx) + apiSrv = api.New(ctx) app.RegisterAPIRoutes(apiSrv) - if err := apiSrv.Start(config.GetConfig()); err != nil { + if err := apiSrv.Start(config); err != nil { return err } } @@ -245,6 +247,10 @@ func startInProcess(ctx *Context, cdc codec.JSONMarshaler, appCreator AppCreator cpuProfileCleanup() } + if apiSrv != nil { + _ = apiSrv.Close() + } + ctx.Logger.Info("exiting...") })