Browse Source

Merge pull request #1660 from yichengq/209

etcdserver: not add sender when it has existed
Yicheng Qin 11 years ago
parent
commit
2fc47034ee
2 changed files with 9 additions and 0 deletions
  1. 3 0
      etcdserver/sender.go
  2. 6 0
      etcdserver/sender_test.go

+ 3 - 0
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}

+ 6 - 0
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) {