zookeeper-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Gamache <gama...@cabotresearch.com>
Subject Re: Multi question on using previous ops results
Date Thu, 17 May 2012 00:06:42 GMT
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<gamache@cabotresearch.com>  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

View raw message