Author: mahadev Date: Thu Jan 29 23:29:42 2009 New Revision: 739082 URL: http://svn.apache.org/viewvc?rev=739082&view=rev Log: ZOOKEEPER-269. connectionloss- add more documentation to detail. (phunt and flavio via mahadev)
Modified: hadoop/zookeeper/trunk/CHANGES.txt hadoop/zookeeper/trunk/docs/zookeeperProgrammers.html hadoop/zookeeper/trunk/docs/zookeeperProgrammers.pdf hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperProgrammers.xml Modified: hadoop/zookeeper/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=739082&r1=739081&r2=739082&view=diff ============================================================================== --- hadoop/zookeeper/trunk/CHANGES.txt (original) +++ hadoop/zookeeper/trunk/CHANGES.txt Thu Jan 29 23:29:42 2009 @@ -128,6 +128,9 @@ ZOOKEEPER-253. documentation of DataWatcher state transition is misleading regarding auto watch reset on reconnect. (phunt via mahadev) + ZOOKEEPER-269. connectionloss- add more documentation to detail. (phunt and +flavio via mahadev) + Release 3.0.0 - 2008-10-21 Non-backward compatible changes: Modified: hadoop/zookeeper/trunk/docs/zookeeperProgrammers.html URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperProgrammers.html?rev=739082&r1=739081&r2=739082&view=diff ============================================================================== --- hadoop/zookeeper/trunk/docs/zookeeperProgrammers.html (original) +++ hadoop/zookeeper/trunk/docs/zookeeperProgrammers.html Thu Jan 29 23:29:42 2009 @@ -780,10 +780,31 @@ still active. The timing of the PING is conservative enough to ensure reasonable time to detect a dead connection and reconnect to a new server.</p> +<p> + Once a connection to the server is successfully established + (connected) there are basically two cases where the client lib generates + connectionloss (the result code in c binding, exception in Java -- see + the API documentation for binding specific details) when either a synchronous or + asynchronous operation is performed and one of the following holds: + </p> +<ol> + +<li> +<p>The application calls an operation on a session that is no + longer alive/valid</p> +</li> + +<li> +<p>The ZooKeeper client disconnects from a server when there + are pending operations to that server, i.e., there is a pending asynchronous call. + </p> +</li> + +</ol> </div> -<a name="N101BB"></a><a name="ch_zkWatches"></a> +<a name="N101C9"></a><a name="ch_zkWatches"></a> <h2 class="h3">ZooKeeper Watches</h2> <div class="section"> <p>All of the read operations in ZooKeeper - <strong>getData()</strong>, <strong>getChildren()</strong>, and <strong>exists()</strong> - have the option of setting a watch as a @@ -860,7 +881,7 @@ general this all occurs transparently. There is one case where a watch may be missed: a watch for the existance of a znode not yet created will be missed if the znode is created and deleted while disconnected.</p> -<a name="N101F1"></a><a name="sc_WatchGuarantees"></a> +<a name="N101FF"></a><a name="sc_WatchGuarantees"></a> <h3 class="h4">What ZooKeeper Guarantees about Watches</h3> <p>With regard to watches, ZooKeeper maintains these guarantees:</p> @@ -895,7 +916,7 @@ </li> </ul> -<a name="N10216"></a><a name="sc_WatchRememberThese"></a> +<a name="N10224"></a><a name="sc_WatchRememberThese"></a> <h3 class="h4">Things to Remember about Watches</h3> <ul> @@ -954,7 +975,7 @@ </div> -<a name="N10242"></a><a name="sc_ZooKeeperAccessControl"></a> +<a name="N10250"></a><a name="sc_ZooKeeperAccessControl"></a> <h2 class="h3">ZooKeeper access control using ACLs</h2> <div class="section"> <p>ZooKeeper uses ACLs to control access to its znodes (the @@ -983,7 +1004,7 @@ example, the pair <em>(ip:19.22.0.0/16, READ)</em> gives the <em>READ</em> permission to any clients with an IP address that starts with 19.22.</p> -<a name="N10269"></a><a name="sc_ACLPermissions"></a> +<a name="N10277"></a><a name="sc_ACLPermissions"></a> <h3 class="h4">ACL Permissions</h3> <p>ZooKeeper supports the following permissions:</p> <ul> @@ -1039,7 +1060,7 @@ node, but nothing more. (The problem is, if you want to call zoo_exists() on a node that doesn't exist, there is no permission to check.)</p> -<a name="N102BF"></a><a name="sc_BuiltinACLSchemes"></a> +<a name="N102CD"></a><a name="sc_BuiltinACLSchemes"></a> <h4>Builtin ACL Schemes</h4> <p>ZooKeeeper has the following built in schemes:</p> <ul> @@ -1100,7 +1121,7 @@ </ul> -<a name="N10315"></a><a name="ZooKeeper+C+client+API"></a> +<a name="N10323"></a><a name="ZooKeeper+C+client+API"></a> <h4>ZooKeeper C client API</h4> <p>The following constants are provided by the ZooKeeper C library:</p> @@ -1322,7 +1343,7 @@ </div> -<a name="N1042C"></a><a name="ch_zkGuarantees"></a> +<a name="N1043A"></a><a name="ch_zkGuarantees"></a> <h2 class="h3">Consistency Guarantees</h2> <div class="section"> <p>ZooKeeper is a high performance, scalable service. Both reads and @@ -1448,12 +1469,12 @@ </div> -<a name="N10493"></a><a name="ch_bindings"></a> +<a name="N104A1"></a><a name="ch_bindings"></a> <h2 class="h3">Bindings</h2> <div class="section"> <p>The ZooKeeper client libraries come in two languages: Java and C. The following sections describe these.</p> -<a name="N1049C"></a><a name="Java+Binding"></a> +<a name="N104AA"></a><a name="Java+Binding"></a> <h3 class="h4">Java Binding</h3> <p>There are two packages that make up the ZooKeeper Java binding: <strong>org.apache.zookeeper</strong> and <strong>org.apache.zookeeper.data</strong>. The rest of the @@ -1520,7 +1541,7 @@ (SESSION_EXPIRED and AUTH_FAILED), the ZooKeeper object becomes invalid, the two threads shut down, and any further ZooKeeper calls throw errors.</p> -<a name="N104E5"></a><a name="C+Binding"></a> +<a name="N104F3"></a><a name="C+Binding"></a> <h3 class="h4">C Binding</h3> <p>The C binding has a single-threaded and multi-threaded library. The multi-threaded library is easiest to use and is most similar to the @@ -1537,7 +1558,7 @@ (i.e. FreeBSD 4.x). In all other cases, application developers should link with zookeeper_mt, as it includes support for both Sync and Async API.</p> -<a name="N104F4"></a><a name="Installation"></a> +<a name="N10502"></a><a name="Installation"></a> <h4>Installation</h4> <p>If you're building the client from a check-out from the Apache repository, follow the steps outlined below. If you're building from a @@ -1668,7 +1689,7 @@ </li> </ol> -<a name="N1059D"></a><a name="Using+the+C+Client"></a> +<a name="N105AB"></a><a name="Using+the+C+Client"></a> <h4>Using the C Client</h4> <p>You can test your client by running a ZooKeeper server (see instructions on the project wiki page on how to run it) and connecting @@ -1726,7 +1747,7 @@ </div> -<a name="N105E3"></a><a name="ch_guideToZkOperations"></a> +<a name="N105F1"></a><a name="ch_guideToZkOperations"></a> <h2 class="h3">Building Blocks: A Guide to ZooKeeper Operations</h2> <div class="section"> <p>This section surveys all the operations a developer can perform @@ -1744,28 +1765,28 @@ </li> </ul> -<a name="N105F7"></a><a name="sc_errorsZk"></a> +<a name="N10605"></a><a name="sc_errorsZk"></a> <h3 class="h4">Handling Errors</h3> <p>Both the Java and C client bindings may report errors. The Java client binding does so by throwing KeeperException, calling code() on the exception will return the specific error code. The C client binding returns an error code as defined in the enum ZOO_ERRORS. API callbacks indicate result code for both language bindings. See the API documentation (javadoc for Java, doxygen for C) for full details on the possible errors and their meaning.</p> -<a name="N10601"></a><a name="sc_connectingToZk"></a> +<a name="N1060F"></a><a name="sc_connectingToZk"></a> <h3 class="h4">Connecting to ZooKeeper</h3> <p></p> -<a name="N1060A"></a><a name="sc_readOps"></a> +<a name="N10618"></a><a name="sc_readOps"></a> <h3 class="h4">Read Operations</h3> <p></p> -<a name="N10613"></a><a name="sc_writeOps"></a> +<a name="N10621"></a><a name="sc_writeOps"></a> <h3 class="h4">Write Operations</h3> <p></p> -<a name="N1061C"></a><a name="sc_handlingWatches"></a> +<a name="N1062A"></a><a name="sc_handlingWatches"></a> <h3 class="h4">Handling Watches</h3> <p></p> -<a name="N10625"></a><a name="sc_miscOps"></a> +<a name="N10633"></a><a name="sc_miscOps"></a> <h3 class="h4">Miscelleaneous ZooKeeper Operations</h3> <p></p> </div> -<a name="N1062F"></a><a name="ch_programStructureWithExample"></a> +<a name="N1063D"></a><a name="ch_programStructureWithExample"></a> <h2 class="h3">Program Structure, with Simple Example</h2> <div class="section"> <p> @@ -1774,7 +1795,7 @@ </div> -<a name="N1063A"></a><a name="ch_gotchas"></a> +<a name="N10648"></a><a name="ch_gotchas"></a> <h2 class="h3">Gotchas: Common Problems and Troubleshooting</h2> <div class="section"> <p>So now you know ZooKeeper. It's fast, simple, your application Modified: hadoop/zookeeper/trunk/docs/zookeeperProgrammers.pdf URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/zookeeperProgrammers.pdf?rev=739082&r1=739081&r2=739082&view=diff ============================================================================== Binary files - no diff available. Modified: hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperProgrammers.xml URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperProgrammers.xml?rev=739082&r1=739081&r2=739082&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperProgrammers.xml (original) +++ hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/zookeeperProgrammers.xml Thu Jan 29 23:29:42 2009 @@ -406,6 +406,23 @@ still active. The timing of the PING is conservative enough to ensure reasonable time to detect a dead connection and reconnect to a new server.</para> + + <para> + Once a connection to the server is successfully established + (connected) there are basically two cases where the client lib generates + connectionloss (the result code in c binding, exception in Java -- see + the API documentation for binding specific details) when either a synchronous or + asynchronous operation is performed and one of the following holds: + </para> + + <orderedlist> + <listitem><para>The application calls an operation on a session that is no + longer alive/valid</para></listitem> + <listitem><para>The ZooKeeper client disconnects from a server when there + are pending operations to that server, i.e., there is a pending asynchronous call. + </para></listitem> + </orderedlist> + </section> <section id="ch_zkWatches">