Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
Zookeeper >> mail # user >> ANN: Curator - Netflix's ZooKeeper library

Copy link to this message
Re: ANN: Curator - Netflix's ZooKeeper library
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