dubbo icon indicating copy to clipboard operation
dubbo copied to clipboard

shutdown后报错:Expected state [STARTED] was [STOPPED]

Open xiaohei88 opened this issue 2 years ago • 14 comments

  • [ ] 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)
image

将zk降级到3.6.0以下就不会有这个问题,因为没框框里面这个事件。

xiaohei88 avatar Jun 13 '22 13:06 xiaohei88

https://github.com/apache/zookeeper/pull/1874/files/4ecb98285a95d3e608c258fbdbd966b5b98372b1#diff-9657d4a14708c9ec1df56fd01581a442e10ef70cae39c7223d4f979b0ae54263

xiaohei88 avatar Jun 13 '22 13:06 xiaohei88

这里的问题和 Dubbo 关联点是什么,有什么修改建议么?

chickenlj avatar Jun 14 '22 06:06 chickenlj

这里的问题和 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。

image image

错误发生时的调用堆栈如下:

    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是否为更好,由于未能读懂源码,我没能替换成功。

DemoCap avatar Jul 07 '22 09:07 DemoCap

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

H-Bob avatar Aug 30 '22 03:08 H-Bob

3.1.7 有同样的问题

JavaHello avatar May 11 '23 01:05 JavaHello

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]

wow981 avatar Jun 16 '23 07:06 wow981

请问这个 fix 什么时候合并?

refeccd avatar Jul 20 '23 17:07 refeccd

如果不使用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

danielludan avatar Aug 10 '23 10:08 danielludan

如果不使用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

JavaHello avatar Aug 11 '23 14:08 JavaHello

3.2.x 以后可以不需要配置 Shutdown Hook 的忽略了,会自动等待 Spring 完成的

AlbumenJ avatar Aug 14 '23 07:08 AlbumenJ

dubbo 2.7.23 curator 4.3.0 zookeeper 3.5.7 存在同样的问题。升级curator至5.x不能解决问题。只有当将dubbo降级到2.7.8没问题。

kuman62 avatar Nov 01 '23 08:11 kuman62

我的 v3.2.11 存在同样的问题

aimilin6688 avatar Apr 13 '24 06:04 aimilin6688

组一: 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

kuman62 avatar Apr 13 '24 13:04 kuman62