You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by GitBox <gi...@apache.org> on 2021/09/18 07:33:30 UTC
[GitHub] [dubbo] FinalVersion opened a new issue #8845: Consumer cannot get provider instance list updated using Zookeeper registry
FinalVersion opened a new issue #8845:
URL: https://github.com/apache/dubbo/issues/8845
- [*] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
- [*] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.
### Environment
* Dubbo version: 2.7.10
* Operating System version: CentOS 7
* Java version: 1.8.0
### Expected Result
Consumer using Zookeeper registry can get provider instance list updated whenever a provider instance is registered or deregistered.
### Actual Result
Provider instance list is never updated when first call to doSubscribe failed with an exception.
thread dump below shows that zookeeper event thread is forever waiting on a `CountDownLatch`.
```
"main-EventThread" #109 daemon prio=5 os_prio=0 tid=0x00007f5d67934800 nid=0x95 waiting on condition [0x00007f5b41c5e000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000005c73a9390> (a java.util.concurrent.CountDownLatch$Sync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
at org.apache.dubbo.registry.zookeeper.ZookeeperRegistry$RegistryChildListenerImpl.childChanged(ZookeeperRegistry.java:338)
at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient$CuratorWatcherImpl.process(CuratorZookeeperClient.java:294)
at org.apache.curator.framework.imps.NamespaceWatcher.process(NamespaceWatcher.java:83)
at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:531)
at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:506)
```
The CountDownLatch is used in `ZookeeperRegistry#doSubscribe()`, which may not be `countDown` if an exception is thrown, like below
```
...
Caused by: org.apache.dubbo.rpc.RpcException: Failed to subscribe consumer://172.17.0.5/..., cause: null
at org.apache.dubbo.registry.zookeeper.ZookeeperRegistry.doSubscribe(ZookeeperRegistry.java:186) ~[dubbo-2.7.10.jar!/:2.7.10]
at org.apache.dubbo.registry.support.FailbackRegistry.subscribe(FailbackRegistry.java:299) ~[dubbo-2.7.10.jar!/:2.7.10]
... 33 more
Caused by: java.lang.IllegalStateException
at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.addTargetChildListener(CuratorZookeeperClient.java:215) ~[dubbo-2.7.10.jar!/:2.7.10]
at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.addTargetChildListener(CuratorZookeeperClient.java:53) ~[dubbo-2.7.10.jar!/:2.7.10]
at org.apache.dubbo.remoting.zookeeper.support.AbstractZookeeperClient.addChildListener(AbstractZookeeperClient.java:112) ~[dubbo-2.7.10.jar!/:2.7.10]
at org.apache.dubbo.registry.zookeeper.ZookeeperRegistry.doSubscribe(ZookeeperRegistry.java:176) ~[dubbo-2.7.10.jar!/:2.7.10]
at org.apache.dubbo.registry.support.FailbackRegistry.subscribe(FailbackRegistry.java:299) ~[dubbo-2.7.10.jar!/:2.7.10]
... 33 more
Caused by: java.lang.InterruptedException
at java.lang.Object.wait(Native Method) ~[?:1.8.0_111]
at java.lang.Object.wait(Object.java:502) ~[?:1.8.0_111]
at org.apache.zookeeper.ClientCnxn.submitRequest(ClientCnxn.java:1409) ~[zookeeper-3.4.11.jar!/:3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0]
at org.apache.zookeeper.ZooKeeper.getChildren(ZooKeeper.java:1651) ~[zookeeper-3.4.11.jar!/:3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0]
at org.apache.curator.framework.imps.GetChildrenBuilderImpl$3.call(GetChildrenBuilderImpl.java:242) ~[curator-framework-4.0.1.jar!/:4.0.1]
at org.apache.curator.framework.imps.GetChildrenBuilderImpl$3.call(GetChildrenBuilderImpl.java:231) ~[curator-framework-4.0.1.jar!/:4.0.1]
at org.apache.curator.connection.StandardConnectionHandlingPolicy.callWithRetry(StandardConnectionHandlingPolicy.java:64) ~[curator-client-4.0.1.jar!/:?]
at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:100) ~[curator-client-4.0.1.jar!/:?]
at org.apache.curator.framework.imps.GetChildrenBuilderImpl.pathInForeground(GetChildrenBuilderImpl.java:228) ~[curator-framework-4.0.1.jar!/:4.0.1]
at org.apache.curator.framework.imps.GetChildrenBuilderImpl.forPath(GetChildrenBuilderImpl.java:219) ~[curator-framework-4.0.1.jar!/:4.0.1]
at org.apache.curator.framework.imps.GetChildrenBuilderImpl.forPath(GetChildrenBuilderImpl.java:41) ~[curator-framework-4.0.1.jar!/:4.0.1]
at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.addTargetChildListener(CuratorZookeeperClient.java:211) ~[dubbo-2.7.10.jar!/:2.7.10]
at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.addTargetChildListener(CuratorZookeeperClient.java:53) ~[dubbo-2.7.10.jar!/:2.7.10]
at org.apache.dubbo.remoting.zookeeper.support.AbstractZookeeperClient.addChildListener(AbstractZookeeperClient.java:112) ~[dubbo-2.7.10.jar!/:2.7.10]
at org.apache.dubbo.registry.zookeeper.ZookeeperRegistry.doSubscribe(ZookeeperRegistry.java:176) ~[dubbo-2.7.10.jar!/:2.7.10]
at org.apache.dubbo.registry.support.FailbackRegistry.subscribe(FailbackRegistry.java:299) ~[dubbo-2.7.10.jar!/:2.7.10]
... 33 more
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org
[GitHub] [dubbo] candyaaa commented on issue #8845: Consumer cannot get provider instance list updated using Zookeeper registry
Posted by GitBox <gi...@apache.org>.
candyaaa commented on issue #8845:
URL: https://github.com/apache/dubbo/issues/8845#issuecomment-922236562
@i will solve it@
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org
[GitHub] [dubbo] AlbumenJ closed issue #8845: Consumer cannot get provider instance list updated using Zookeeper registry
Posted by GitBox <gi...@apache.org>.
AlbumenJ closed issue #8845:
URL: https://github.com/apache/dubbo/issues/8845
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org
[GitHub] [dubbo] candyaaa commented on issue #8845: Consumer cannot get provider instance list updated using Zookeeper registry
Posted by GitBox <gi...@apache.org>.
candyaaa commented on issue #8845:
URL: https://github.com/apache/dubbo/issues/8845#issuecomment-923122441
CountDownLatch是要释放的,否则会有一条线程一直等待在org.apache.dubbo.registry.zookeeper.ZookeeperRegistry.RegistryChildListenerImpl#childChanged,至于提供者实例列表不更新,根据异常日志,我怀疑是网络原因导致,所以我先提交了释放CountDownLatch的逻辑。
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org