curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ding Jinqiang (JIRA)" <>
Subject [jira] [Commented] (CURATOR-49) LeaderSelector has no response when delete the leader node by other clients
Date Tue, 30 Jul 2013 06:09:49 GMT


Ding Jinqiang commented on CURATOR-49:

Well...We may have other clients to manage the zookeeper server, such as roshan. 
So when I want the current leader to abandon its leadership and another one to take over the
leader's job(May be the server that holds the previous leader has other heavy tasks), my first
idea is to manually delete the current leader node, and hope the corresponding client can
receive a notification that you lose the leadership, cancel the job and join the election

Or I should obey the rule not to operate the nodes created by curator and find other ways
to do such things?

My current solution is to check the leadership in takeLeadership() every a few seconds, which
I thought is not so elegant. 

Thanks for answer my question:)

> LeaderSelector has no response when delete the leader node by other clients
> ---------------------------------------------------------------------------
>                 Key: CURATOR-49
>                 URL:
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Recipes
>    Affects Versions: 2.1.0-incubating
>         Environment: curator-recipes 2.1.0-incubating and  zookeeper 3.4.5
>            Reporter: Ding Jinqiang
> If I setup a normal LeaderSelection with two participants, and as expected one of them
becomes the leader. But when I delete the leader node manually by other clients, the other
leaderSelector becomes the leader normally. But the leaderSelector, which is the previous
leader, does not receive any notification in the LeaderSelectorListener. 
> Well, my question is, is this normal, or I just missed something? 
> Sample code may like this:
> 		RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 1);
> 		client = CuratorFrameworkFactory.newClient(Config.getInstance().getServerConnectString(),
> 				retryPolicy);
> 		client.start();
>  		LeaderSelectorListener listener = new LeaderSelectorListener() {
> 			@Override
> 			public void takeLeadership(CuratorFramework client) throws Exception {
>"takeLeadership, thread id:"+Thread.currentThread().getId());
>  				Thread.sleep(Long.MAX_VALUE);
> 			}
> 			@Override
> 			public void stateChanged(CuratorFramework client, ConnectionState newState) {
>"Zookeeper connection stateChanged, new state is " + newState);
> 			}
> 		};
> 		selector = new LeaderSelector(client, Config.getInstance().getEclectPath());
> 		selector.autoRequeue();
> 		selector.start();

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message