【发布时间】:2021-03-07 17:56:49
【问题描述】:
在多次测试 Curator 服务发现时,在 ZooKeeper 服务器不可用的某些执行中, 开始,它无限期地等待和挂起,可以看到线程转储堆栈跟踪 以下。 示例场景是在 ZooKeeper 服务器不可用时开始,然后 ZooKeeper 可用 - 但 Java 线程仍然挂起。 这也通过 Curator 单元测试服务器重现:org.apache.curator.test.TestingServer。
ZooKeeper 版本是 3.6。
由于这不是一致地重现,这似乎是来自 Curator/ZooKeeper 客户端的竞争条件。
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:502)
org.apache.zookeeper.ClientCnxn.submitRequest(ClientCnxn.java:1561)
org.apache.zookeeper.ClientCnxn.submitRequest(ClientCnxn.java:1533)
org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:1834)
org.apache.curator.framework.imps.CreateBuilderImpl$16.call(CreateBuilderImpl.java:1131)
org.apache.curator.framework.imps.CreateBuilderImpl$16.call(CreateBuilderImpl.java:1113)
org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:93)
org.apache.curator.framework.imps.CreateBuilderImpl.pathInForeground(CreateBuilderImpl.java:1110)
org.apache.curator.framework.imps.CreateBuilderImpl.protectedPathInForeground(CreateBuilderImpl.java:593)
org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:583)
org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:48)
org.apache.curator.x.discovery.details.ServiceDiscoveryImpl.internalRegisterService(ServiceDiscoveryImpl.java:237)
org.apache.curator.x.discovery.details.ServiceDiscoveryImpl.reRegisterServices(ServiceDiscoveryImpl.java:456)
org.apache.curator.x.discovery.details.ServiceDiscoveryImpl.start(ServiceDiscoveryImpl.java:135)
...
【问题讨论】:
标签: java apache-zookeeper apache-curator