From 46cbfbc630e7e606af9ffcbb89189447672d7f3c Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Fri, 7 Nov 2014 13:59:48 -0800 Subject: [PATCH] etcdserver: not add sender when it has existed --- etcdserver/sender.go | 3 +++ etcdserver/sender_test.go | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/etcdserver/sender.go b/etcdserver/sender.go index bee41f949..dbe846f76 100644 --- a/etcdserver/sender.go +++ b/etcdserver/sender.go @@ -92,6 +92,9 @@ func (h *sendHub) Stop() { } func (h *sendHub) Add(m *Member) { + if _, ok := h.senders[m.ID]; ok { + return + } // TODO: considering how to switch between all available peer urls u := fmt.Sprintf("%s%s", m.PickPeerURL(), raftPrefix) c := &http.Client{Transport: h.tr} diff --git a/etcdserver/sender_test.go b/etcdserver/sender_test.go index 3fb73b4ff..a8b22ae45 100644 --- a/etcdserver/sender_test.go +++ b/etcdserver/sender_test.go @@ -61,6 +61,12 @@ func TestSendHubAdd(t *testing.T) { if s.u != "http://a/raft" { t.Errorf("url = %s, want %s", s.u, "http://a/raft") } + + h.Add(m) + ns := h.senders[types.ID(1)] + if s != ns { + t.Errorf("sender = %p, want %p", ns, s) + } } func TestSendHubRemove(t *testing.T) {