[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12975613#action_12975613
 ] 

Ted Dunning commented on ZOOKEEPER-965:
---------------------------------------

{quote}
Please Ted, don't move that fast.
{quote}
My time is only available in tiny drips so I have to use them when I get them.  
You must be the first 
person to have accused me of moving too fast on open source projects.

I think that you will have a slow time of it changing the ZK API except with an 
add-on library because of the all the backwards compatibility issues that will 
raise.  I doubt seriously that any fundamental changes will be acceptable to 
the community.

As such, I am certainly not going to hold off on this change waiting for an API 
change that may not happen.

As far as use cases are concerned, there have been several recently on the 
mailing list.  They have been compelling enough that I have changed my mind 
about the value of multi-update and would like to contribute to making it 
happen.  One excellent use-case was the graph idea where nodes have connections 
to and from other nodes.  It is unreasonable to keep a relatively large graph 
in a single node, but it is also important to have coherent updates to the 
graph.  Multi-update makes this trivial.


> 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
>            Reporter: Ted Dunning
>             Fix For: 3.4.0
>
>
> 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.
-
You can reply to this email to add a comment to the issue online.

Reply via email to