并非总是使用RECONNECTED状态更改来调用Apache Curator连接状态侦听器

问题描述

我正在使用Apache Curator v4.3.0(ZK v3.5.8),并且注意到在某些断开连接/重新连接的情况下,我不再向注册的侦听器发送RECONNECTED事件。

CuratorFramework client = ...; 
   // retry policy is RetryUntilElapsed with Integer.MAX_VALUE
   // sessionTimeout is 15 sec
   // connectionTimeout is 5 sec

client.getConnectionStateListenable().addListener(new ConnectionStateListener()...

尽管我确实看到ConnectionStateManager会打印状态更改:

[org.apache.zookeeper.ClientCnxn] - Client session timed out,have not heard from server in 15013ms for sessionid 0x10000037e340012,closing socket connection and attempting reconnect
[org.apache.zookeeper.ClientCnxn] - Opening socket connection to server 
...
[org.apache.curator.ConnectionState] - Session expired event received
[org.apache.zookeeper.ClientCnxn] - Session establishment complete on server
[org.apache.curator.framework.state.ConnectionStateManager] - State change: RECONNECTED

通常在我看到听众在stateChanged上打电话之后,但并不总是这样。

CuratorFramework客户端在注册不同侦听器的多个组件之间共享。我没有看到任何限制,每个侦听器只能有一个客户端。但是,当我不共享它时,问题就不会再出现了。

关于如何继续调试此问题的任何建议?

谢谢, 梅隆

解决方法

这似乎是Curator 5.0.0中已修复的错误-https://issues.apache.org/jira/browse/CURATOR-525-如果您可以对5.0.0进行测试,看看它是否可以解决问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...