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


Reply via email to