MCPcopy Create free account
hub / github.com/dadgar/onecache / memberStateUpdates

Method memberStateUpdates

onecache/onecache.go:234–263  ·  view source on GitHub ↗

Members should be called when serf members join or leave. Remove is set to true if nodes left. This method updates state, including the ring to reflect Nodes joining/leaving.

(members []serf.Member, remove bool)

Source from the content-addressed store, hash-verified

232// true if nodes left. This method updates state, including the ring to reflect
233// Nodes joining/leaving.
234func (n *Node) memberStateUpdates(members []serf.Member, remove bool) {
235 n.lock.Lock()
236
237 var peers []string
238 for _, m := range members {
239 p, err := buildPeerNode(m)
240 if err != nil {
241 n.logger.Printf("[ERROR] onecache: buildPeerNode(%v) failed: %v\n", m, err)
242 continue
243 }
244 peers = append(peers, p.name)
245
246 if err := n.memberStateUpdate(p, remove); err != nil {
247 n.logger.Printf("[ERROR] onecache: memberStateUpdate(%v, %v) failed: %v\n", m, remove, err)
248 }
249 }
250 n.lock.Unlock()
251
252 // Want to mark after all state updates have been applied because the state of replicas can be in flux.
253 if remove {
254 n.replicator.NodesRemoved(peers)
255 } else {
256 if err := n.replicator.MarkPeersDirty(peers); err != nil {
257 n.logger.Printf("[ERROR] onecache.replicator: %v", err)
258 }
259 }
260
261 // The set of Nodes has changed so trigger garbage collection
262 n.gc.Reset(10 * time.Minute)
263}
264
265// memberStateUpdate handles a single node joining or leaving.
266func (n *Node) memberStateUpdate(p *peerNode, remove bool) error {

Callers 2

handleNodeJoinsMethod · 0.95
handleNodeLeavesMethod · 0.95

Calls 4

memberStateUpdateMethod · 0.95
buildPeerNodeFunction · 0.85
NodesRemovedMethod · 0.65
MarkPeersDirtyMethod · 0.65

Tested by

no test coverage detected