为什么在sessiontimeout值之后没有从zookeeper中删除emperal节点

5hcedyr0  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(478)

我在curatorframeworkfactory.newclient方法的帮助下创建了一个emperal节点,该方法采用,znodes addresses,sessionTimeoutims,connectionTimeoutims,retry)。我通过了51000的sessiontimeoutims和151000的connectiontimeoutims。这个方法可以在我的zookeeper中创建临时节点,但是这个临时节点直到应用程序运行时才被删除。
为什么sessiontimeout是5秒。

mwkjh3gx

mwkjh3gx1#

最可能的原因是zookeeper的心跳设置(也称为ticktime)较高,并且最小会话超时不能低于2*ticktime。

7gcisfzg

7gcisfzg2#

要进行调试,请在创建临时节点时从zkcli检查临时所有者。该值是会话id。
当拥有节点的客户端在zookeeper日志中时,您应该得到以下行:
信息[processthread](sid:0 cport:2182)::preprequestprocessor@486]-已处理sessionid的会话终止:0x161988b731d000c
在本例中,短命鸟是0x161988b731d000c。如果你不明白,你会有一些错误。在我的例子中,它是eof异常,这是因为客户端库和服务器不匹配。

相关问题