Skip to content

Commit c76bbeb

Browse files
committed
Ensure all goroutines created by StartEtcd to complete before closing the errc
Signed-off-by: Benjamin Wang <[email protected]>
1 parent 851ee26 commit c76bbeb

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

server/embed/etcd.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,9 @@ func (e *Etcd) servePeers() {
607607

608608
// start peer servers in a goroutine
609609
for _, pl := range e.Peers {
610+
e.wg.Add(1)
610611
go func(l *peerListener) {
612+
defer e.wg.Done()
611613
u := l.Addr().String()
612614
e.cfg.logger.Info(
613615
"serving peer traffic",
@@ -774,7 +776,9 @@ func (e *Etcd) serveClients() {
774776

775777
// start client servers in each goroutine
776778
for _, sctx := range e.sctxs {
779+
e.wg.Add(1)
777780
go func(s *serveCtx) {
781+
defer e.wg.Done()
778782
e.errHandler(s.serve(e.Server, &e.cfg.ClientTLSInfo, mux, e.errHandler, e.grpcGatewayDial(splitHTTP), splitHTTP, gopts...))
779783
}(sctx)
780784
}
@@ -859,7 +863,9 @@ func (e *Etcd) serveMetrics() (err error) {
859863
return err
860864
}
861865
e.metricsListeners = append(e.metricsListeners, ml)
866+
e.wg.Add(1)
862867
go func(u url.URL, ln net.Listener) {
868+
defer e.wg.Done()
863869
e.cfg.logger.Info(
864870
"serving metrics",
865871
zap.String("address", u.String()),
@@ -872,9 +878,6 @@ func (e *Etcd) serveMetrics() (err error) {
872878
}
873879

874880
func (e *Etcd) errHandler(err error) {
875-
e.wg.Add(1)
876-
defer e.wg.Done()
877-
878881
if err != nil {
879882
e.GetLogger().Error("setting up serving from embedded etcd failed.", zap.Error(err))
880883
}

0 commit comments

Comments
 (0)