From c7c3bda8b9114e95e1e27e194e4c42c4784fd659 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Tue, 29 Dec 2015 13:03:12 -0800 Subject: [PATCH] etcdserver: respect done channel when sleeping for snapshot backoff --- etcdserver/server.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/etcdserver/server.go b/etcdserver/server.go index a2a12e935..93a2149aa 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -941,7 +941,10 @@ func (s *EtcdServer) sendMergedSnap(merged snap.Message) { // If the follower still fails to catch up, it is probably just too slow // to catch up. We cannot avoid the snapshot cycle anyway. if ok { - time.Sleep(releaseDelayAfterSnapshot) + select { + case <-time.After(releaseDelayAfterSnapshot): + case <-s.done: + } } atomic.AddInt64(&s.inflightSnapshots, -1) case <-s.done: