No thought about two znodes being synchronized at all.
The higher level intent of the first (code) example is: how do you get the version number for a set operation and use that value in the set atomically? For the second one it is: how to I create and lock a znode atomically? [maybe the Lock znode is attached to the node I am creating, maybe in another structure? I don't really care, just can I do it atomically?]
Another way to do what I would like would be to create a znode structure that is not "attached" to the existing one at all, then once I have it the way it should be, attach it to an existing node. However, I am quite certain this is not possible....
On 5/16/2012 7:21 PM, Ted Dunning wrote:
It looks like you are assuming that the versions of two znodes are synchronized. That seems pretty dangerous. What is the higher level intent here? Would it better to simply build a multi to update both znodes? Sent from my iPhone On May 16, 2012, at 11:59 AM, Joe Gamache<[email protected]> wrote:I need to do something like the following: Stat stats = nodeToSet.getStat(); if (stats != null) { int version = stats.getVersion(); stats = client.getZk().setData(path, data, version); (data was preset in code not shown). Since I have multiple processes all vying to do things, in the worst case (which happens too frequently), two processes execute the above at basically the same time, which causes errors. I thought I might be able to use Multi to do this atomically, but I cannot figure out how to use the result (the version number above) from one Op in a later Op. Is this possible? This was the simplest example I could find, but this happens often - usually with Paths. For instance, sometimes I create a zookeeper node and want a "LOCK" node underneath it. If I follow the "recipe" and use an ephemeral sequential node as the lock, how can I refer to sequence in a Path in subsequent Op added to a "multi" or is there any way to do it atomically? Sorry that was so very wordy. What I was really trying to ask, is how do I create and lock a node atomically? thanks for any help, insight! joe
