- Node
foo joins the cluster: Node { NodeId: "foo", GenerationId: 0, grpc_addr: "::1:12345" }
- Client pool:
Pool {"::1::12345": "foo:0" }
- Node
foo restarts and rejoins the cluster: Node { NodeId: "foo", GenerationId: 1, grpc_addr: "::1:12345" }
- Chitchat detects the new node, client pool receives
add event and replaces node: Pool {"::1::12345": "foo:1" }
- Chitchat detects the dead node, client pool receives
remove event and deletes node: Pool {}
- Chitchat node key update, client pool receives
update event and adds node: Pool {"::1::12345": "foo:1" }
Things go well if the dead node is removed before the new node is added. Things go ok if the new node is updated frequently. Things go wrong if the node is not updated frequently or at all.