Ah that's correct, we use 3.5 branch.

On 5 February 2020 07:33:47 Rajat Gangwar <[email protected]> wrote:

Hi Chris,

*"The whole tree disappears when the last ephemeral leaf node is removed."*

I think parent node has to be container node for it it work, but container
node <https://issues.apache.org/jira/browse/ZOOKEEPER-2163> was added post
ZK 3.5.
I am trying to get lock-recipe for ZK 3.4. Did you try to implement with
just ephemeral nodes in version <= 3.4?

Thanks,
Rajat

On Wed, Feb 5, 2020 at 11:32 AM Chris T. <[email protected]> wrote:

I have a type of locking mechanism using ephemerals via Curator
framework, they are created with with creatingParentsIfNeeded. The
whole tree disappears when the last ephemeral leaf node is removed.
Parent nodes have an IP address as value.


Code snip from our class:

CreateModable<ACLBackgroundPathAndBytesable<String>> localCreateMethod
= createMethod.get();
if (localCreateMethod == null) {
    CreateBuilderMain createBuilder = cfClient.create();
    CreateModable<ACLBackgroundPathAndBytesable<String>>
tempCreateMethod = createBuilder.creatingParentContainersIfNeeded();
    createMethod.compareAndSet(null, tempCreateMethod);
    localCreateMethod = createMethod.get();
}

try {
localCreateMethod.withMode(CreateMode.EPHEMERAL).inBackground(backgroundCallback).forPath(basePath,
getEncryptedBytes(commandNode.getNodeBytes()));
} catch (Exception e) {
    log.error("Exception: ", e);
}



[zk: localhost:2181(CONNECTED) 1] get /GROUP_V7POC03/ephemerals/inquirylock
10.194.54.93
[zk: localhost:2181(CONNECTED) 2] stat
/GROUP_V7POC03/ephemerals/inquirylock
cZxid = 0xf20001914e
ctime = Tue Feb 04 11:11:45 CET 2020
mZxid = 0xf200019169
mtime = Tue Feb 04 11:11:48 CET 2020
pZxid = 0xf20001918b
cversion = 2
dataVersion = 3
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 2
[zk: localhost:2181(CONNECTED) 3] get /GROUP_V7POC03/ephemerals/inquirylock
10.194.54.93
[zk: localhost:2181(CONNECTED) 4] get /GROUP_V7POC03/ephemerals

[zk: localhost:2181(CONNECTED) 5] stat
/GROUP_V7POC03/ephemerals/inquirylock/lrv1705f.europe.intranet:v7poc03
cZxid = 0xf200019189
ctime = Tue Feb 04 11:11:51 CET 2020
mZxid = 0xf200019189
mtime = Tue Feb 04 11:11:51 CET 2020
pZxid = 0xf200019189
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x10022c4e19c000b
dataLength = 83
numChildren = 0



On 4 February 2020 15:58:39 Jordan Zimmerman <[email protected]>
wrote:

>> can I implement a lock recipe which just
>> tries to create ephemeral node without any persistent nodes.
>
> Ephemeral nodes cannot have any children. Unless you create your lock at
> the root ("/") you'd need some parent persistent node. Is this a big
> problem for you? Unless you have 1000s of unique lock paths there
shouldn't
> be any problem with persistent parent node.
>
> -Jordan




Reply via email to