Release 2.1.1 2008-04-30 Andrew Kornev * changed the distributino package name to "c-client-src" Release 2.1.0 2008-04-30 Andrew Kornev * added the client latency diagnostics; the client prints a warning when the reponse latency exceeds 20ms * modified logging format to report the znode path for which the zookeeper operation is called * fixed a minor bug where error messages were missing for some of the newer zookeeper error codes (ZCLOSING and ZNOTHING). * improved logging by adding the XID to the message to make it easy to match requests to responses * fixed the bug causing sporadic session termination and timeouts * added a new return code to zookeeper_process() -- ZNOTHING -- that indicates that the socket has no more data to read * more unit tests added Release 1.1.3 2008-02-07 Andrew Kornev * get_xid() is not thread-safe (xid initialization race condition in the multi-threaded mode). * the I/O thread doesn’t automatically terminate on AUTH_FAILURE and SESSION_EXPIRED events. * all session events should be processed on the completion thread. * PING operation doesn’t atomically enqueue the completion and send buffers like other operations do. * corrected zookeeper_init() doxygen docs. * new unit tests added. Release 1.1.2 2008-01-24 Andrew Kornev * fixed a race condition caused by the code in zookeeper_process() and free_completions() setting sc->complete to 1 without proper synchronization; * fixed zoo_get() not updating buffer_len value with the actual buffer length on return; added missing enter_critical/leave_critical calls to the async ZK operations. * Replaced select() with poll() to fix the problem with the FD_SET macro causing stack corruption for FDs higher than 1024 * Added zoo_set_log_stream() to the public API. The function allows applications to specify a different log file. * Removed unused declarations from zookeeper.h (ACL related) * changed zoo_get() signature to take a pointer to buffer length. The function sets the parameter to the actual data length upon return. * the watcher callback now takes the zhandle as its first parameter. This is to avoid a race condition in the multi-threaded client when a watcher is called before zookeeper_init() has returned. * fixed zookeeper_close() resource leaks and race conditions, fixed the race condition causing xid mismatch. * added support for cppunit, added new targets: "check" and "run-check" to build and run unit tests. * Changed the signature of zookeeper_init(): it now takes a context pointer as a parameter. This is to avoid a race condition in the multi-threaded client. * Using a self-pipe rather than SIGUSR1 to wake up select() in the I/O thread * Added the doxygen target to the autoconf scripts * Pulled out the logging functionality from zookeeper.c to zk_log.c/.h. Fixed a minor issue with PING responses being unnecessarily put on the completion queue rather than simply dropped. Make use of DLL_EXPORT symbol for building shared lib on cygwin. * Implemented new Zookeeper operation sync() to flush the leader channel to ensure that all updates have reached the followers. * Synchronous methods not being handled properly on disconnect * breed: fixed an incorrect parameter passed to zookeeper API by the Sync API wrapper functions * breed: the set and delete commands now support both Sync and Async API. Prefix the command name with an 'a' to call the Async API: aset, adelete * Make sure mutexes and condition variables are properly initialized and destroyed * Fixed zookeeper_close() causing core dumps with mt_adaptor Release 1.0.0 2007-11-27 Andrew Kornev * configure.ac and Makefile.am added support for GNU autotools * recordio.c/.h updated jute IO routines to use bit-explicit integer types (int32_t vs. int, and int64_t vs. long long) * README rough draft