Merge pull request #14116 from ptabor/20220613-embed-errors

Embed server should log errors (and not get stuck)
This commit is contained in:
Piotr Tabor 2022-06-15 22:37:40 +02:00 committed by GitHub
commit a1fe0b8ea3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 1 deletions

View File

@ -766,6 +766,9 @@ func (e *Etcd) serveMetrics() (err error) {
}
func (e *Etcd) errHandler(err error) {
if err != nil {
e.GetLogger().Error("setting up serving from embedded etcd failed.", zap.Error(err))
}
select {
case <-e.stopc:
return

View File

@ -114,10 +114,15 @@ func (sctx *serveCtx) serve(
var gs *grpc.Server
defer func() {
if err != nil && gs != nil {
sctx.lg.Warn("stopping grpc server due to error", zap.Error(err))
gs.Stop()
sctx.lg.Warn("stopped grpc server due to error", zap.Error(err))
}
}()
// Make sure serversC is closed even if we prematurely exit the function.
defer close(sctx.serversC)
if sctx.insecure {
gs = v3rpc.Server(s, nil, nil, gopts...)
v3electionpb.RegisterElectionServer(gs, servElection)
@ -132,6 +137,7 @@ func (sctx *serveCtx) serve(
if s.Cfg.EnableGRPCGateway {
gwmux, err = sctx.registerGateway([]grpc.DialOption{grpc.WithInsecure()})
if err != nil {
sctx.lg.Error("registerGateway failed", zap.Error(err))
return err
}
}
@ -200,7 +206,6 @@ func (sctx *serveCtx) serve(
)
}
close(sctx.serversC)
return m.Serve()
}
@ -238,6 +243,7 @@ func (sctx *serveCtx) registerGateway(opts []grpc.DialOption) (*gw.ServeMux, err
conn, err := grpc.DialContext(ctx, addr, opts...)
if err != nil {
sctx.lg.Error("registerGateway failed to dial", zap.String("addr", addr), zap.Error(err))
return nil, err
}
gwmux := gw.NewServeMux()