[
https://issues.apache.org/jira/browse/ZOOKEEPER-3830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17110070#comment-17110070
]
Keli Wang commented on ZOOKEEPER-3830:
--------------------------------------
Since this issue and ZOOKEEPER-3829 looks pretty similar, I think it's OK to
mark those two as duplicate issue.
The code about lastSeenQuorumVerifier is in
org.apache.zookeeper.server.quorum.Leader#lead method.
{code:java}
// set quorum verifier in org.apache.zookeeper.server.quorum.Leader#lead
newLeaderProposal.addQuorumVerifier(self.getQuorumVerifier());
if (self.getLastSeenQuorumVerifier().getVersion() >
self.getQuorumVerifier().getVersion()){
newLeaderProposal.addQuorumVerifier(self.getLastSeenQuorumVerifier());
}
// use lastSeenQuorumVerifier in
org.apache.zookeeper.server.quorum.Leader#startZkServer
LOG.info("Have quorum of supporters, sids: [ "
+ newLeaderProposal.ackSetsToString()
+ " ]; starting up and setting last processed zxid: 0x{}",
Long.toHexString(zk.getZxid()));
/*
* ZOOKEEPER-1324. the leader sends the new config it must complete
* to others inside a NEWLEADER message (see LearnerHandler where
* the NEWLEADER message is constructed), and once it has enough
* acks we must execute the following code so that it applies the
* config to itself.
*/
QuorumVerifier newQV = self.getLastSeenQuorumVerifier();
Long designatedLeader = getDesignatedLeader(newLeaderProposal, zk.getZxid());
// check here
self.processReconfig(newQV, designatedLeader, zk.getZxid(), true);
if (designatedLeader != self.getId()) {
allowedToCommit = false;
}
{code}
> After add a new node, zookeeper cluster won't commit any proposal if this new
> node is leader
> --------------------------------------------------------------------------------------------
>
> Key: ZOOKEEPER-3830
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3830
> Project: ZooKeeper
> Issue Type: Bug
> Components: server
> Affects Versions: 3.5.6, 3.5.7, 3.5.8
> Environment: Zookeeper 3.5.8
> JDK 1.8
> Reporter: Keli Wang
> Assignee: Mate Szalay-Beko
> Priority: Major
> Attachments: reproduce-zkclusters.tar.gz
>
>
> I have a zookeeper cluster with 3 nodes, node3 is the leader of the cluster.
>
> {code:java}
> server.1=node1
> server.2=node2
> server.3=node3 # current leader{code}
> With dynamic reconfiguration disabled, I scale this cluster to 4 nodes with 2
> steps:
> # Start node4 with new config, now node4 is a follower.
> # Modify config and restart node1, node2 and node3 one by one.
> The new cluster config is:
> {code:java}
> server.1=node1
> server.2=node2
> server.3=node3
> server.4=node4 # current leader
> {code}
> After restart, node4 is the leader of this cluster. But I cannot connect to
> this cluster using zkCli now, zkCli keeps in CONNECTING status.
> If I restart node4, node3 will be the new leader, and now I can connected to
> cluster using zkCli again.
> After some digging, I find node4's Leader#allowedToCommit field is false, so
> this cluster won't commit any new proposals.
>
> I have attached a zookeeper cluster to reproduce this problem. The cluster in
> the attachment can run in one single machine.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)