zookeeper-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Koch <tho...@koch.ro>
Subject Re: ANN: Curator - Netflix's ZooKeeper library
Date Fri, 04 Nov 2011 16:35:45 GMT
Will Johnson:
> Jordan,
> I wanted to chime in and say that we ended up writing a similar library for
> our application.  For example we have a BreakableLock that implements
> java.util.concurrent.Lock but requires you to provide a BrokenLockListener
> implementation. Naming aside it looks pretty similar to your implementaion
> with the ClientClosingListener.  We also have similar code for dealing with
> path creation, retry etc.   In order to deal with watches we defined a
> Reconnectable interface that users can implement.  These reconnectables
> are added to a client and called on session expiration or other
> catastrophic client failures.  This gives users a clean way to reestablish
> their watches and reset internal state while centralizing all of the error
> handling.
> When we get around to refactoring or expanding our code base we'll
> definitely take a look at using Curator.  If nothing else it makes us feel
> good that someone else solved a lot of the same problems in a similar
> fashion.
> - will
Hi Will,

could you give more information about your client library? I'd like to include 
it in my list of work that people were forced to do to work around the 
shortcommings of the current ZooKeeper client API. You'd be number four after 
zkclient[1], cages[2] and netflix's Curator. (These projects also add 
features, but all of them had to work around the same API.)
I've filled ZOOKEEPER-911 that would provide one class for each possible 
request to the ZooKeeper server. An instance of such an operation class could 
then be passed to an execution strategy.

[1] http://github.com/sgroschupf/zkclient
[2] http://code.google.com/p/cages/

Imagine the equivalent in SQL: This would be a database client library that 
forces you to call methods select(), update(), delete(), insert() depending on 
what you want to do and throwing exceptions to the calling code.
You don't do this of course but have an object (or SQL literal string) 
representing your query and pass this to some execute() method.

We need to wait for 3.4 to come out before work on ZOOKEEPER-911 could 


Thomas Koch, http://www.koch.ro

View raw message