为什么在会话超时值之后没有从zookeeper中删除临时节点

问题描述 投票:0回答:2

我正在CuratorFrameworkFactory.newClient方法的帮助下创建一个Empheral节点,该方法采用znodes地址,sessiontimeoutinms,connectiontimeoutinms,Retry)。我传递了5 * 1000作为sessiontimeoutinms和15 * 1000作为connectiontimeoutinms。此方法能够在我的zookeeper中创建EPHEMERAL节点,但在应用程序运行之前不会删除此EPHEMERAL节点。

为什么会发生这种情况,因为sessiontimeout是5秒。

hadoop bigdata apache-zookeeper apache-curator
2个回答
0
投票

最可能的原因是Zookeeper(aka tickTime)的心跳设置较高,最小会话超时不能低于2 * tickTime。


0
投票

调试时,创建一个临时节点时,请检查zkCli中的ephemeralOwner。值是会话ID。

当拥有该节点的客户端,在zookeeper日志中,你应该得到这一行:

INFO [ProcessThread(sid:0 cport:2182):: PrepRequestProcessor @ 486] - sessionid的已处理会话终止:0x161988b731d000c

在这种情况下,ephemeralOwener是0x161988b731d000c。如果你没有得到它,你会遇到一些错误。在我的情况下,它是EOF异常,这是因为客户端库和服务器不匹配。

© www.soinside.com 2019 - 2024. All rights reserved.