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

Wenhan Feng commented on ZOOKEEPER-4773:
----------------------------------------

Hi, I just wanted to gently follow up on this issue. Is there anything we can 
do to help move it forward? This issue is blocking some of our progress, and we 
believe it's a problem worth addressing. Please let us know if there's any 
additional information we can provide to help reproduce or diagnose it.

> 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.8.3, 3.9.1
>            Reporter: May
>            Priority: Major
>
> 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)

Reply via email to