Close channel of started servers even if embed server fails to start.

Before this change:

```
gwmux, err = sctx.registerGateway([]grpc.DialOption{grpc.WithInsecure()})
if err != nil { return err; }
```

caused the Etcd.Serve() method finish without sctx.serversC channel being closed.
The code closing Etcd got stuck waiting for all the servers to be running.

Signed-off-by: Piotr Tabor <ptab@google.com>
This commit is contained in:
Piotr Tabor 2022-06-15 12:35:55 +02:00
parent fcc8fce4d2
commit 1c401581e3

View File

@ -120,6 +120,9 @@ func (sctx *serveCtx) serve(
}
}()
// 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)
@ -203,7 +206,6 @@ func (sctx *serveCtx) serve(
)
}
close(sctx.serversC)
return m.Serve()
}