curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Parminder Grewal (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CURATOR-171) LeaderLatch isn't aware if it's own ephemeral node goes away
Date Wed, 05 Oct 2016 20:43:21 GMT

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

Parminder Grewal edited comment on CURATOR-171 at 10/5/16 8:42 PM:
-------------------------------------------------------------------

Is this an issue actively worked on? I just noticed something similar where *sometimes* the
leader latch doesnt realize that the ephemeral node associated with it has been deleted and
continues as leader 

I am using version 2.11.0 


was (Author: psgrewal85@gmail.com):
Is this an issue actively worked on? I just noticed something similar where *sometimes* the
leader latch doesnt realize that the ephemeral node associated with it has been deleted and
continues as leader 

> LeaderLatch isn't aware if it's own ephemeral node goes away
> ------------------------------------------------------------
>
>                 Key: CURATOR-171
>                 URL: https://issues.apache.org/jira/browse/CURATOR-171
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Recipes
>            Reporter: John Vines
>
> Running the following code- {code}  public static void main(String args[]) throws Exception
{
>     CuratorFramework curator = CuratorFrameworkFactory.builder().connectString("localhost:2181").retryPolicy(new
ExponentialBackoffRetry(1000, 5))
>         .authorization("digest", "accumulo:DEFAULT".getBytes()).build();
>     curator.start();
>     LeaderLatch latch = new LeaderLatch(curator, "/latch", "test");
>     LeaderLatch latch2 = new LeaderLatch(curator, "/latch", "test2");
>     latch.addListener(new LeaderLatchListener() {
>       @Override
>       public void isLeader() {
>         System.out.println("Became leader!");
>       }
>       @Override
>       public void notLeader() {
>         System.out.println("Lost leadership!");
>       }
>     });
>     latch.start();
>     latch.await();
>     latch2.start();
>     Thread.sleep(1000);
>     System.out.println("Does latch1 have leadership? " + latch.hasLeadership());
>     System.out.println("Does latch2 have leadership? " + latch2.hasLeadership());
>     for (String child : curator.getChildren().forPath("/latch"))
>       if (Arrays.equals(curator.getData().forPath(ZKPaths.makePath("/latch", child)),
"test".getBytes()))
>           curator.delete().deletingChildrenIfNeeded().forPath(ZKPaths.makePath("/latch",
child));
>     Thread.sleep(1000);
>     System.out.println("Does latch1 have leadership? " + latch.hasLeadership());
>     System.out.println("Does latch2 have leadership? " + latch2.hasLeadership());
>     
>     Thread.sleep(1000 * 40);
>     System.out.println("Does latch1 have leadership? " + latch.hasLeadership());
>     System.out.println("Does latch2 have leadership? " + latch2.hasLeadership());
>     
>     latch.close();
>     latch2.close();
>     curator.close();
>   }{code}
> I get the following output-{noformat}Became leader!
> Does latch1 have leadership? true
> Does latch2 have leadership? false
> Does latch1 have leadership? true
> Does latch2 have leadership? true
> Does latch1 have leadership? true
> Does latch2 have leadership? true
> {noformat}
> I expect that when the ephemeral node is deleted, latch1 no longer reports itself as
having leadership. Furthermore, I expect it to trigger the notLeader call.



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

Mime
View raw message