Permalink
Browse files

add a v1.1.0 changelog entry, fix up the readme

  • Loading branch information...
1 parent dd6d36c commit 756061b589e22490f5ce4a4627d31e291fb768e9 @slyphon slyphon committed May 14, 2012
Showing with 29 additions and 12 deletions.
  1. +13 −0 CHANGELOG
  2. +16 −12 README.markdown
View
@@ -1,3 +1,16 @@
+v1.1.0 Rewrite C backend to use zookeeper_st, the async library
+
+ * In order to ensure fork safety, a rewrite of the backend was necessary.
+ It was impossible to guarantee with the mt lib that a lock would not
+ be held by a thread when fork() was called, which opened up the possibility
+ for corruption and other badness.
+
+ This version contains a Continuation class, which allows us to present a
+ synchronous front-end to the asynchronous backend. All features are still
+ supported, no special action is necessary to prepare for a fork, and the
+ post-fork procedure is the same as before: call reopen() in the child,
+ continue on in the parent like nothing happened.
+
v1.0.6 Only include backports if RUBY_VERSION is 1.8.x
* 'backports' pollutes too much, use sparingly
View
@@ -6,6 +6,10 @@ An interface to the Zookeeper cluster coordination server.
For a higher-level interface with a more convenient API and features such as locks, have a look at [ZK](https://github.com/slyphon/zk) (also available is [ZK-EventMachine](https://github.com/slyphon/zk-eventmachine) for those who prefer async).
+## Fork Safety! ##
+
+As of 1.1.0, this library is fork-safe (which was not easy to accomplish). This means you can use it without worry in unicorn, resque, and whatever other fork-philic frameworks you sick little monkeys are using this week. The only rule is that after a fork(), you need to call `#reopen` on the client ASAP, because if you try to peform any other action, an exception will be raised. Other than that, there is no special action that is needed in the parent.
+
## Big Plans for 1.0 ##
The 1.0 release will feature a reorganization of the heirarchy. There will be a single top-level `Zookeeper` namespace (as opposed to the current layout, with 5-6 different top-level constants), and for the next several releases, there will be a backwards compatible require for users that still need to use the old names.
@@ -36,18 +40,18 @@ Connect to a server:
## Idioms
The following methods are initially supported:
-* get
-* set
-* get\_children
-* stat
-* create
-* delete
-* get\_acl
-* set\_acl
-
-All support async callbacks. get, get\_children and stat support both watchers and callbacks.
-
-Calls take a dictionary of parameters. With the exception of set\_acl, the only required parameter is :path. Each call returns a dictionary with at minimum two keys :req\_id and :rc.
+* `get`
+* `set`
+* `get_children`
+* `stat`
+* `create`
+* `delete`
+* `get_acl`
+* `set_acl`
+
+All support async callbacks. `get`, `get_children` and `stat` support both watchers and callbacks.
+
+Calls take a dictionary of parameters. With the exception of set\_acl, the only required parameter is `:path`. Each call returns a dictionary with at minimum two keys :req\_id and :rc.
### A Bit about this repository ###

0 comments on commit 756061b

Please sign in to comment.