[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15380391#comment-15380391
 ] 

Alexander Shraer commented on ZOOKEEPER-2476:
---------------------------------------------

Non-voting follower is what happens if you connect a participant to a leader, 
for example, with the intention to add it to the cluster. Logically he's not 
yet part of the cluster. But it does act as a follower - votes on commits, etc. 
His votes don't count when the leader gathers a majority of votes. This is 
something that exists in 3.4 and in fact I remember that such server's votes 
were actually counted, which was a bug. I just exploited this for the purpose 
of adding new servers. Non-voting followers, just like followers, waste the 
leader's bandwidth. 

Observers get and send only part of the messages - no voting is going on, they 
just listen to commits, and when they come they update their in-memory 
database, from which they serve requests. So if you need 10 servers to 
withstand client requests, you don't need all of them to be voters - having 5 
of them be observers is much more efficient in terms of not wasting the 
leader's bandwidth.

> Why can't ZK do this for me?

To do this, we'd need to have observers receive a reconfig request and vote for 
it, which they never do otherwise. I chose not to implement it for simplicity - 
the changes were already extensive enough and its simple enough to issue two 
reconfigs in this case.



> Not possible to upgrade via reconfig a Participant+Observer cluster to a 
> Participant+Participant cluster
> --------------------------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-2476
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2476
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: quorum, server
>    Affects Versions: 3.5.1
>            Reporter: Jordan Zimmerman
>            Assignee: Alexander Shraer
>            Priority: Critical
>         Attachments: ZOOKEEPER-2476.patch
>
>
> Contrary to the documentation, it is not possible to upgrade via reconfig a 
> Participant+Observer cluster to a Participant+Participant cluster. 
> KeeperException.NewConfigNoQuorum is thrown instead.
> PrepRequestProcessor should recognize this special case and let it pass. Test 
> will be enclosed shortly. I'll work on a fix as well, but I imagine that 
> [~shralex] will want to look at it.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to