Henry Robinson commented on ZOOKEEPER-107:

This is something I'd be willing to work on.

Just to sum up my current understanding of the requirements:

1. Must support off-cluster getPeers operation for a recovering peer to 
bootstrap itself (can cache in its own persistent storage, but that could 
potentially be out of date by recovery time). This is probably best realised 
with the URI idea as before.

2. Support for join and leave operation. With a quiescent cluster, join is 
probably as simple as a sync followed by a commit of the new peer's id to all 
followers (if nothing else, this ensures that if one of them should be elected 
the master, they know how big the quorum should be). Leaves are similar, 
without the sync obviously. If a peer leaves before the Leave( ) operation 
completes, it will look like a crash. 

3. If joining / leaving a cluster that doesn't have a currently elected master, 
block until one exists. If the cluster is currently failed due to f+1 failures, 
it might be necessary to timeout in order to prevent being permanently blocked 
if this is in the middle of a code path.

4. However, if joining / leaving a cluster that has never bootstrapped it's 
important to do something different so as to allow the cluster to achieve a 
quorum. One solution is for a node to check if its id is in the list of peers 
at the cluster URI which will tell it if it was ever a member of the cluster 
previously (or part of the initial membership) and then participate in master 
elections. This places a requirement on the peer list to be kept reasonably 
accurate (but this could only affect liveness, not safety, I think).

Please chime in with comments / stuff that I've missed / bugs, otherwise I'll 
work on fleshing this out.

> Allow dynamic changes to server cluster membership
> --------------------------------------------------
>                 Key: ZOOKEEPER-107
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-107
>             Project: Zookeeper
>          Issue Type: Improvement
>          Components: server
>            Reporter: Patrick Hunt
> Currently cluster membership is statically defined, adding/removing hosts 
> to/from the server cluster dynamically needs to be supported.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

Reply via email to