dubbo
dubbo copied to clipboard
shutdown后报错:Expected state [STARTED] was [STOPPED]
- [ ] I have searched the issues of this repository and believe that this is not a duplicate.
Environment
- Dubbo version: 2.7.15
- Operating System version: mac
- Java version: 8
Steps to reproduce this issue
环境:zk:3.6.0以上,curator:5.1.0以上
shutdown后,会报错:
20:57:49.731 [main-EventThread] ERROR o.a.c.f.recipes.cache.NodeCache -
java.lang.IllegalStateException: Expected state [STARTED] was [STOPPED]
at org.apache.curator.shaded.com.google.common.base.Preconditions.checkState(Preconditions.java:823)
at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkState(CuratorFrameworkImpl.java:457)
at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkExists(CuratorFrameworkImpl.java:484)
at org.apache.curator.framework.recipes.cache.NodeCache.reset(NodeCache.java:261)
at org.apache.curator.framework.recipes.cache.NodeCache.access$100(NodeCache.java:60)
at org.apache.curator.framework.recipes.cache.NodeCache$2.process(NodeCache.java:104)
at org.apache.curator.framework.imps.NamespaceWatcher.process(NamespaceWatcher.java:77)
at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:588)
at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:563)

将zk降级到3.6.0以下就不会有这个问题,因为没框框里面这个事件。
https://github.com/apache/zookeeper/pull/1874/files/4ecb98285a95d3e608c258fbdbd966b5b98372b1#diff-9657d4a14708c9ec1df56fd01581a442e10ef70cae39c7223d4f979b0ae54263
这里的问题和 Dubbo 关联点是什么,有什么修改建议么?
这里的问题和 Dubbo 关联点是什么,有什么修改建议么?
Environment Dubbo version: 2.7.16 Operating System version: window 11 Java version: 8 Steps to reproduce this issue 环境:zk:3.7.1,curator:5.2.1。
错误发生时的调用堆栈如下:
org.apache.curator.framework.recipes.cache.NodeCache$2#process(104)
org.apache.curator.framework.imps.NamespaceWatcher#process(77)
org.apache.zookeeper.ClientCnxn$EventThread#processEvent(578)
org.apache.zookeeper.ClientCnxn$EventThread#run(553)
我暂时通过覆盖org.apache.curator.framework.recipes.cache.NodeCache#watcher#process(WatchedEvent event)方法抑制了错误
private Watcher watcher = new Watcher()
{
@Override
public void process(WatchedEvent event)
{
try
{
//change start
if(event.getState().equals(Event.KeeperState.Closed) && null == event.getPath() && Event.EventType.None.equals(event.getType())){
return;
}
//change end
reset();
}
catch(Exception e)
{
ThreadUtils.checkInterrupted(e);
handleException(e);
}
}
};
我想Curator5ZookeeperClient使用了被标记为Deprecated的org.apache.curator.framework.recipes.cache.NodeCache,如果更换为org.apache.curator.framework.recipes.cache.CuratorCache是否为更好,由于未能读懂源码,我没能替换成功。
I have the same problem and I've tried in some ways, like changing zk version or monitoring my thread model. However, it has not be solved.
Environment
Dubbo version: 3.0.8 Operating System version: mac and windows 10 Java version: 17 zk: 3.7.1 curator: 5.2.1
3.1.7 有同样的问题
springboot 使用3.2.2版本 优雅停机也会有这个异常。 dubbo-dependencies-zookeeper:3.2.2 org.apache.dubbo:dubbo-spring-boot-starter:3.2.2
2023-06-16 14:54:06.738 [ERROR]-[main-EventThread] [] org.apache.curator.framework.recipes.cache.NodeCache - java.lang.IllegalStateException: Expected state [STARTED] was [STOPPED] at org.apache.curator.shaded.com.google.common.base.Preconditions.checkState(Preconditions.java:823) ~[curator-client-4.3.0.jar:?] at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkState(CuratorFrameworkImpl.java:432) ~[curator-framework-4.3.0.jar:4.3.0] at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkExists(CuratorFrameworkImpl.java:459) ~[curator-framework-4.3.0.jar:4.3.0] at org.apache.curator.framework.recipes.cache.NodeCache.reset(NodeCache.java:258) ~[curator-recipes-4.3.0.jar:4.3.0] at org.apache.curator.framework.recipes.cache.NodeCache.access$100(NodeCache.java:57) ~[curator-recipes-4.3.0.jar:4.3.0] at org.apache.curator.framework.recipes.cache.NodeCache$2.process(NodeCache.java:101) ~[curator-recipes-4.3.0.jar:4.3.0] at org.apache.curator.framework.imps.NamespaceWatcher.process(NamespaceWatcher.java:77) ~[curator-framework-4.3.0.jar:4.3.0] at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:578) ~[zookeeper-3.8.1.jar:3.8.1] at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:553) ~[zookeeper-3.8.1.jar:3.8.1]
请问这个 fix 什么时候合并?
如果不使用ZK作为配置中心或不使用配置中心,可以通过设置dubbo.registry.useAsConfigCenter=false回避这个错误。通过断点发现使用该功能会多增加几个以.configurator为后缀的watcher。虽然root cause仍未找到但没有发现这样修改对基础功能有其他影响,包括优雅停机。 PS:ZK的降级目前测试不能解决该问题 测试环境:dubbo 2.7.23(2.7.8没有该问题),curator 5.1.0 zookeeper 3.6.1
如果不使用ZK作为配置中心或不使用配置中心,可以通过设置dubbo.registry.useAsConfigCenter=false回避这个错误。通过断点发现使用该功能会多增加几个以.configurator为后缀的watcher。虽然root cause仍未找到但没有发现这样修改对基础功能有其他影响,包括优雅停机。 PS:ZK的降级目前测试不能解决该问题 测试环境:dubbo 2.7.23(2.7.8没有该问题),curator 5.1.0 zookeeper 3.6.1
-
dubbo 3.1.7
curator 5.4.0
zookeeper 3.7.1
配置后没有出现报错了 - 如果使用 spring 的优雅停机(https://github.com/apache/dubbo/issues/12210), 需要添加
-Ddubbo.shutdownHook.listenIgnore=true
- 如果使用 spring 的优雅停机(Dubbo3优雅上下线问题 #12210), 需要添加
-Ddubbo.shutdownHook.listenIgnore=true
3.2.x 以后可以不需要配置 Shutdown Hook 的忽略了,会自动等待 Spring 完成的
dubbo 2.7.23 curator 4.3.0 zookeeper 3.5.7 存在同样的问题。升级curator至5.x不能解决问题。只有当将dubbo降级到2.7.8没问题。
我的 v3.2.11 存在同样的问题
组一: dependencies { implementation 'org.apache.dubbo:dubbo:2.7.23' implementation 'org.apache.dubbo:dubbo-dependencies-zookeeper:2.7.23' implementation 'org.apache.zookeeper:zookeeper:3.5.7' implementation 'org.apache.curator:curator-recipes:4.2.0'
}
组二 dependencies { implementation 'org.apache.dubbo:dubbo:2.7.23' implementation 'org.apache.curator:curator-x-discovery:4.3.0' implementation 'org.apache.zookeeper:zookeeper:3.5.7' }
依赖包不同版本存在冲突,按照上面的依赖包版本可以正常运作了,但是dubbo-admin中无法显示元数据结构,因为存在一个小bug,需要自己修改重新编译dubbo-admin