[ 
https://issues.apache.org/jira/browse/CURATOR-171?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jordan Zimmerman updated CURATOR-171:
-------------------------------------
    Description: Many Curator lock recipes support revoking. The Leader recipes 
should support this also as they use locking internally. See 
http://curator.apache.org/curator-recipes/shared-reentrant-lock.html - Revoking 
 (was: 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.)

> LeaderLatch and LeaderSelector should support Revokable behavior
> ----------------------------------------------------------------
>
>                 Key: CURATOR-171
>                 URL: https://issues.apache.org/jira/browse/CURATOR-171
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Recipes
>            Reporter: John Vines
>
> Many Curator lock recipes support revoking. The Leader recipes should support 
> this also as they use locking internally. See 
> http://curator.apache.org/curator-recipes/shared-reentrant-lock.html - 
> Revoking



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

Reply via email to