james strachan commented on ZOOKEEPER-78:

Thanks for the great comments Benjamin! Have already [added the constructor for 

BTW I was pondering about switching the whenOwner from a Runnable to some kinda 
interface that invokes you when you become the leader/owner - or when you stop 
being the leader/owner. Something like 

public interface WhenOwnerListener {
  void whenOwner();
  void whenNotOwner();

Where only znodes that are the owner would be notified with the whenOwner() 
method; but then if a connection fails or session times out, they'd be notified 
with a call to whenNotOwner();
Spookily - I'd set myself the target today to properly implement the watches so 
that WriteLock gets a notification of it no longer being the leader/owner when 
a connection fails (which normally auto-reconnects anyway right now in the base 
ZooKeeper). Then I was gonna add a notification mechanism so we could notify 
the leader/owner is no longer the leader/owner when the session expired 
exception occurs.

So we're absolutely on the same page; once I'd grokked the proper watch code 
for dealing with normal connection failures & reconnects I was hoping to add 
something vaguely similar to the ZooKeeperFacade so that higher level protocols 
can be aware of both when ZooKeeper reconnects and when ZooKeeperFacade creates 
a whole new connection.

Does that make sense? I totally understand your concerns at making sure the 
WriteLock and associated helper classes like ProtocolSupport/ZooKeeperFacade do 
the right thing - I want exactly the same thing :) I'd just not yet had the 
chance to go through all the different failure conditions and scenarios and 
make sure they all work properly :)

> added a high level protocol/feature - for easy Leader Election or exclusive 
> Write Lock creation
> -----------------------------------------------------------------------------------------------
>                 Key: ZOOKEEPER-78
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-78
>             Project: Zookeeper
>          Issue Type: New Feature
>          Components: java client
>    Affects Versions: 3.0.0
>            Reporter: james strachan
>         Attachments: patch_with_including_Benjamin's_fix.patch, 
> using_zookeeper_facade.patch
> Here's a patch which adds a little WriteLock helper class for performing 
> leader elections or creating exclusive locks in some directory znode. Note 
> its an early cut; am sure we can improve it over time. The aim is to avoid 
> folks having to use the low level ZK stuff but provide a simpler high level 
> abstraction.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

Reply via email to