[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13032733#comment-13032733 ]
jirapos...@reviews.apache.org commented on ZOOKEEPER-965: --------------------------------------------------------- ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/739/ ----------------------------------------------------------- Review request for zookeeper and Benjamin Reed. Summary ------- This mega-patch adds the multi-op capability to ZK. This allows a batch of create, delete, update or version-check operations to succeed or fail together. Both C and java bindings are provided. This addresses bug ZOOKEEPER-965. https://issues.apache.org/jira/browse/ZOOKEEPER-965 Diffs ----- CHANGES.txt d22f1f0 src/c/Makefile.am 65830fe src/c/configure.ac cdea898 src/c/include/proto.h 843032f src/c/include/zookeeper.h c055edb src/c/src/zookeeper.c db715b0 src/c/tests/TestMulti.cc PRE-CREATION src/java/main/org/apache/zookeeper/MultiResponse.java PRE-CREATION src/java/main/org/apache/zookeeper/MultiTransactionRecord.java PRE-CREATION src/java/main/org/apache/zookeeper/Op.java PRE-CREATION src/java/main/org/apache/zookeeper/OpResult.java PRE-CREATION src/java/main/org/apache/zookeeper/Transaction.java PRE-CREATION src/java/main/org/apache/zookeeper/ZooDefs.java 832976f src/java/main/org/apache/zookeeper/ZooKeeper.java 00b4012 src/java/main/org/apache/zookeeper/server/DataTree.java d16537e src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java 2538cf7 src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java 68970d2 src/java/main/org/apache/zookeeper/server/PrepRequestProcessor.java 50f208d src/java/main/org/apache/zookeeper/server/Request.java a5c57e2 src/java/main/org/apache/zookeeper/server/RequestProcessor.java 5c3e8ff src/java/main/org/apache/zookeeper/server/TraceFormatter.java 8ece929 src/java/main/org/apache/zookeeper/server/package.html 3ec7656 src/java/main/org/apache/zookeeper/server/quorum/CommitProcessor.java 49affd5 src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java 9774fb2 src/java/main/org/apache/zookeeper/server/util/SerializeUtils.java 0ad4dd6 src/java/test/org/apache/zookeeper/MultiResponseTest.java PRE-CREATION src/java/test/org/apache/zookeeper/MultiTransactionRecordTest.java PRE-CREATION src/java/test/org/apache/zookeeper/test/MultiTransactionTest.java PRE-CREATION src/zookeeper.jute 7d96f32 Diff: https://reviews.apache.org/r/739/diff Testing ------- A number of unit tests have been implemented. Test coverage is very good. A sample application has been written to do simple operations on a graph of nodes. Thanks, Ted > Need a multi-update command to allow multiple znodes to be updated safely > ------------------------------------------------------------------------- > > Key: ZOOKEEPER-965 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 > Project: ZooKeeper > Issue Type: Bug > Affects Versions: 3.3.3 > Reporter: Ted Dunning > Assignee: Ted Dunning > Fix For: 3.4.0 > > Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, > ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, > ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, > ZOOKEEPER-965.patch, ZOOKEEPER-965.patch > > > The basic idea is to have a single method called "multi" that will accept a > list of create, delete, update or check objects each of which has a desired > version or file state in the case of create. If all of the version and > existence constraints can be satisfied, then all updates will be done > atomically. > Two API styles have been suggested. One has a list as above and the other > style has a "Transaction" that allows builder-like methods to build a set of > updates and a commit method to finalize the transaction. This can trivially > be reduced to the first kind of API so the list based API style should be > considered the primitive and the builder style should be implemented as > syntactic sugar. > The total size of all the data in all updates and creates in a single > transaction should be limited to 1MB. > Implementation-wise this capability can be done using standard ZK internals. > The changes include: > - update to ZK clients to all the new call > - additional wire level request > - on the server, in the code that converts transactions to idempotent form, > the code should be slightly extended to convert a list of operations to > idempotent form. > - on the client, a down-rev server that rejects the multi-update should be > detected gracefully and an informative exception should be thrown. > To facilitate shared development, I have established a github repository at > https://github.com/tdunning/zookeeper and am happy to extend committer > status to anyone who agrees to donate their code back to Apache. The final > patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira