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
>>
|