Skip to content
This repository was archived by the owner on Aug 23, 2023. It is now read-only.

Commit 0f2f3ef

Browse files
committed
ignore gossip about ourself
1 parent 45384ef commit 0f2f3ef

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

cluster/manager.go

+19-3
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ type ClusterManager interface {
6565

6666
type MemberlistManager struct {
6767
sync.RWMutex
68-
members map[string]HTTPNode // all members in the cluster, including this node.
68+
members map[string]HTTPNode // all members in the cluster, guaranteed to always have this node
6969
nodeName string
7070
list *memberlist.Memberlist
7171
cfg *memberlist.Config
@@ -231,6 +231,12 @@ func (c *MemberlistManager) NotifyJoin(node *memberlist.Node) {
231231
member.RemoteAddr = node.Addr.String()
232232
member.local = (member.Name == c.nodeName)
233233

234+
// we never want anyone else in the cluster to tell us anything about ourselves
235+
// cause we know ourself best.
236+
if member.local {
237+
return
238+
}
239+
234240
existing, ok := c.members[node.Name]
235241
if ok && !member.Updated.After(existing.Updated) {
236242
return
@@ -240,6 +246,9 @@ func (c *MemberlistManager) NotifyJoin(node *memberlist.Node) {
240246
}
241247

242248
func (c *MemberlistManager) NotifyLeave(node *memberlist.Node) {
249+
if node.Name == c.nodeName {
250+
return
251+
}
243252
eventsLeave.Inc()
244253
c.Lock()
245254
defer c.Unlock()
@@ -260,8 +269,9 @@ func (c *MemberlistManager) NotifyUpdate(node *memberlist.Node) {
260269
if err != nil {
261270
log.Errorf("CLU manager: Failed to decode node meta from %s: %s", node.Name, err.Error())
262271
unmarshalErrUpdate.Inc()
263-
// if the node is known, lets mark it as notReady until it starts sending valid data again.
264-
if p, ok := c.members[node.Name]; ok {
272+
// if the node is known and it is not thisNode,
273+
// lets mark it as notReady until it starts sending valid data again.
274+
if p, ok := c.members[node.Name]; ok && node.Name != c.nodeName {
265275
p.State = NodeNotReady
266276
p.StateChange = time.Now()
267277
// we dont set Updated as we dont want the NotReady state to propagate incase we are the only node
@@ -274,6 +284,12 @@ func (c *MemberlistManager) NotifyUpdate(node *memberlist.Node) {
274284
member.RemoteAddr = node.Addr.String()
275285
member.local = (member.Name == c.nodeName)
276286

287+
// we never want anyone else in the cluster to tell us anything about ourselves
288+
// cause we know ourself best.
289+
if member.local {
290+
return
291+
}
292+
277293
existing, ok := c.members[node.Name]
278294
if ok && !member.Updated.After(existing.Updated) {
279295
return

0 commit comments

Comments
 (0)