etcdserver: stop raft after stopping apply scheduler
@@ -537,9 +537,12 @@ func (s *EtcdServer) run() {
}
defer func() {
- s.r.stop()
sched.Stop()
+ // must stop raft after scheduler-- etcdserver can leak rafthttp pipelines
+ // by adding a peer after raft stops the transport
+ s.r.stop()
+
s.wg.Wait()
// kv, lessor and backend can be nil if running without v3 enabled