You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "May (Jira)" <ji...@apache.org> on 2023/11/27 11:05:00 UTC
[jira] [Created] (ZOOKEEPER-4773) Ephemeral node is not deleted when all followers are blocked with leader
May created ZOOKEEPER-4773:
------------------------------
Summary: Ephemeral node is not deleted when all followers are blocked with leader
Key: ZOOKEEPER-4773
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4773
Project: ZooKeeper
Issue Type: Bug
Components: quorum, server
Affects Versions: 3.9.1, 3.8.3
Reporter: May
The test case EphemeralNodeDeletionTest describes that a follower loses its connection with leader when the client writes an ephemeral node, and it should delete the node after the client closed. However, the case fails when I make all followers lose connections.
To reproduce the bug, I simply modified testEphemeralNodeDeletion() as following:
{code:java}
// 2: inject network problem in two followers
ArrayList<CustomQuorumPeer> followers = getFollowers();
for (CustomQuorumPeer follower : followers) {
follower.setInjectError(true);
}
//CustomQuorumPeer follower = (CustomQuorumPeer) getByServerState(mt, ServerState.FOLLOWING);
//follower.setInjectError(true);
// 3: close the session so that ephemeral node is deleted
zk.close();
// remove the error
//follower.setInjectError(false);
for (CustomQuorumPeer follower : followers) {
follower.setInjectError(false);
assertTrue(ClientBase.waitForServerUp("127.0.0.1:" + follower.getClientPort(), CONNECTION_TIMEOUT),
"Faulted Follower should have joined quorum by now");
}
{code}
And here is added method getFollowers():
{code:java}
private ArrayList<CustomQuorumPeer> getFollowers() {
ArrayList<CustomQuorumPeer> followers = new ArrayList<>();
for (int i = 0; i <= mt.length - 1; i++) {
QuorumPeer quorumPeer = mt[i].getQuorumPeer();
if (null != quorumPeer && ServerState.FOLLOWING == quorumPeer.getPeerState()) {
followers.add((CustomQuorumPeer)quorumPeer);
}
}
return followers;
}
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)