From 38f8ff319e886531c2637731fe137481c213eb31 Mon Sep 17 00:00:00 2001 From: Peter Kurfer Date: Sun, 10 May 2020 12:26:59 +0200 Subject: [PATCH] Apply commented improvements - skip shutdown of gRPC server if failed to start - minor refactoring --- internal/rpc/endpoints_server.go | 31 ++++++++++++++++++++----------- internal/rpc/grpc_api.go | 9 +++++++++ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/internal/rpc/endpoints_server.go b/internal/rpc/endpoints_server.go index bb233f4..a688ab7 100644 --- a/internal/rpc/endpoints_server.go +++ b/internal/rpc/endpoints_server.go @@ -10,17 +10,26 @@ type endpointsServer struct { } func (e endpointsServer) GetEndpoints(_ context.Context, _ *GetEndpointsRequest) (*GetEndpointsResponse, error) { - eps := make([]*Endpoint, 0) - for _, ep := range e.endpointsManager.StartedEndpoints() { - eps = append(eps, &Endpoint{ - Id: ep.Id().String(), - Name: ep.Name(), - Handler: ep.Handler(), - ListenAddress: ep.Listen(), - Port: int32(ep.Port()), - }) - } + eps := rpcEndpointsFromEndpoints(e.endpointsManager.StartedEndpoints()) return &GetEndpointsResponse{ - Endpoints: eps, + Endpoints: *eps, }, nil } + +func rpcEndpointsFromEndpoints(eps []endpoints.Endpoint) *[]*Endpoint { + out := make([]*Endpoint, 0) + for _, ep := range eps { + out = append(out, rpcEndpointFromEndpoint(ep)) + } + return &out +} + +func rpcEndpointFromEndpoint(ep endpoints.Endpoint) *Endpoint { + return &Endpoint{ + Id: ep.Id().String(), + Name: ep.Name(), + Handler: ep.Handler(), + ListenAddress: ep.Listen(), + Port: int32(ep.Port()), + } +} diff --git a/internal/rpc/grpc_api.go b/internal/rpc/grpc_api.go index ebf3b57..5c2c3c6 100644 --- a/internal/rpc/grpc_api.go +++ b/internal/rpc/grpc_api.go @@ -23,6 +23,7 @@ type inetmockAPI struct { endpointManager endpoints.EndpointManager registry plugins.HandlerRegistry logger logging.Logger + serverRunning bool } func NewINetMockAPI( @@ -56,6 +57,12 @@ func (i *inetmockAPI) StartServer() (err error) { } func (i *inetmockAPI) StopServer() { + if !i.serverRunning { + i.logger.Info( + "Skipping API server shutdown because server is not running", + ) + return + } gracefulStopChan := make(chan struct{}) go func() { i.server.GracefulStop() @@ -70,7 +77,9 @@ func (i *inetmockAPI) StopServer() { } func (i *inetmockAPI) startServerAsync(listener net.Listener) { + i.serverRunning = true if err := i.server.Serve(listener); err != nil { + i.serverRunning = false i.logger.Error( "failed to start INetMock API", zap.Error(err),