embed: associate peer serve() listener with corresponding peer

Fixes #8383
release-3.3
Anthony Romano 2017-08-17 10:25:00 -07:00
parent fa32a85e69
commit f4183c68cc
1 changed files with 5 additions and 5 deletions

View File

@ -154,16 +154,16 @@ func StartEtcd(inCfg *Config) (e *Etcd, err error) {
// configure peer handlers after rafthttp.Transport started // configure peer handlers after rafthttp.Transport started
ph := etcdhttp.NewPeerHandler(e.Server) ph := etcdhttp.NewPeerHandler(e.Server)
for i := range e.Peers { for _, p := range e.Peers {
srv := &http.Server{ srv := &http.Server{
Handler: ph, Handler: ph,
ReadTimeout: 5 * time.Minute, ReadTimeout: 5 * time.Minute,
ErrorLog: defaultLog.New(ioutil.Discard, "", 0), // do not log user error ErrorLog: defaultLog.New(ioutil.Discard, "", 0), // do not log user error
} }
e.Peers[i].serve = func() error {
return srv.Serve(e.Peers[i].Listener) l := p.Listener
} p.serve = func() error { return srv.Serve(l) }
e.Peers[i].close = func(ctx context.Context) error { p.close = func(ctx context.Context) error {
// gracefully shutdown http.Server // gracefully shutdown http.Server
// close open listeners, idle connections // close open listeners, idle connections
// until context cancel or time-out // until context cancel or time-out