0

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

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

4

2 回答 2

0

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

于 2015-06-03T22:21:39.550 回答
0

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

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

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

在这种情况下, ephemeralOwener 是 0x161988b731d000c。如果你不明白,你会得到一些错误。就我而言,这是 EOF 异常,这是因为客户端库和服务器不匹配。

于 2018-02-15T15:37:15.793 回答