diff --git a/server/embed/serve.go b/server/embed/serve.go index 8b64cd77ead3..30d2d2a6d86c 100644 --- a/server/embed/serve.go +++ b/server/embed/serve.go @@ -46,6 +46,7 @@ import ( "go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb" v3lockgw "go.etcd.io/etcd/server/v3/etcdserver/api/v3lock/v3lockpb/gw" "go.etcd.io/etcd/server/v3/etcdserver/api/v3rpc" + "go.etcd.io/etcd/server/v3/etcdserver/errors" ) type serveCtx struct { @@ -99,7 +100,12 @@ func (sctx *serveCtx) serve( splitHttp bool, gopts ...grpc.ServerOption) (err error) { logger := defaultLog.New(io.Discard, "etcdhttp", 0) - <-s.ReadyNotify() + + select { + case <-s.ReadyNotify(): // wait for e.Server to join the cluster + case <-s.StopNotify(): // publish aborted from 'ErrStopped' + return errors.ErrStopped + } sctx.lg.Info("ready to serve client requests")