Return-Path: X-Original-To: apmail-curator-dev-archive@minotaur.apache.org Delivered-To: apmail-curator-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B50CA99A5 for ; Tue, 9 Dec 2014 21:30:12 +0000 (UTC) Received: (qmail 38831 invoked by uid 500); 9 Dec 2014 21:30:12 -0000 Delivered-To: apmail-curator-dev-archive@curator.apache.org Received: (qmail 38789 invoked by uid 500); 9 Dec 2014 21:30:12 -0000 Mailing-List: contact dev-help@curator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@curator.apache.org Delivered-To: mailing list dev@curator.apache.org Received: (qmail 38778 invoked by uid 99); 9 Dec 2014 21:30:12 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Dec 2014 21:30:12 +0000 Date: Tue, 9 Dec 2014 21:30:12 +0000 (UTC) From: "John Vines (JIRA)" To: dev@curator.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Created] (CURATOR-171) LeaderLatch isn't aware if it's own ephemeral node goes away MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 John Vines created CURATOR-171: ---------------------------------- Summary: 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)