Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] No provider available in test environment when starting dubbo service in local environment with a different group setting #14562

Open
4 tasks done
escapekyg opened this issue Aug 20, 2024 · 2 comments
Labels
component/need-triage Need maintainers to triage type/need-triage Need maintainers to triage

Comments

@escapekyg
Copy link

escapekyg commented Aug 20, 2024

Pre-check

  • I am sure that all the content I provide is in English.

Search before asking

  • I had searched in the issues and found no similar issues.

Apache Dubbo Component

Java SDK (apache/dubbo)

Dubbo Version

dubbo 3.2.13, openjdk 1.8

Steps to reproduce this issue

To facilitate local debugging, we typically use data and invoke Dubbo services from the test environment without affecting service interactions within that environment. We run our application in the local development environment with the same namespace as the test environment but with a different Dubbo group (e.g., the group is test in the test environment and local in the local environment).

This setup worked well across many versions until we upgraded to 3.2.13. Now, when we start the application locally, it affects the test environment, the test and local environment has the same services in differrent group, and the invocation in the test environment will have the exception like the followings. The exception observed in the test environment is as follows. Using different namespaces avoids this issue, but then we can't access the data and providers in the test environment.

2024-08-20 21:33:02.698|ERROR |197978|http-nio-19405-exec-6|c.c.d.s.c.a.ExceptionHandlerAdvice.(:)|[TID: N/A]|RpcException exception is error message:Failed to invoke the method query in the service com.example.QueryService. No provider available for the service TEST/com.example.QueryService:1.0.0 from registry ServiceDiscoveryRegistryDirectory(registry: 10.0.1.29:1811, subscribed key: [query-dubbo])-Directory(invokers: 1[10.0.1.29:1940], validInvokers: 1[10.0.1.29:1940], invokersToReconnect: 0[]) on the consumer 10.0.1.29 using the dubbo version 3.2.13. Please check if the providers have been started and registered. org.apache.dubbo.rpc.RpcException: Failed to invoke the method query in the service com.example.QueryService. No provider available for the service TEST/com.example.QueryService:1.0.0 from registry ServiceDiscoveryRegistryDirectory(registry: 10.0.1.29:1811, subscribed key: [query-dubbo])-Directory(invokers: 1[10.0.1.29:1940], validInvokers: 1[10.0.1.29:1940], invokersToReconnect: 0[]) on the consumer 10.0.1.29 using the dubbo version 3.2.13. Please check if the providers have been started and registered. at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.checkInvokers(AbstractClusterInvoker.java:397) at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:358) at org.apache.dubbo.rpc.cluster.router.RouterSnapshotFilter.invoke(RouterSnapshotFilter.java:46) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:108) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.support.MetricsClusterFilter.invoke(MetricsClusterFilter.java:57) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:52) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.support.ObservationSenderFilter.invoke(ObservationSenderFilter.java:62) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.spring.security.filter.ContextHolderParametersSelectedTransferFilter.invoke(ContextHolderParametersSelectedTransferFilter.java:40) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.spring.security.filter.ContextHolderAuthenticationPrepareFilter.invoke(ContextHolderAuthenticationPrepareFilter.java:68) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.metrics.filter.MetricsFilter.invoke(MetricsFilter.java:86) at org.apache.dubbo.rpc.cluster.filter.support.MetricsConsumerFilter.invoke(MetricsConsumerFilter.java:38) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter.invoke(ConsumerClassLoaderFilter.java:40) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter.invoke(ConsumerContextFilter.java:119) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:197) at org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$ClusterFilterInvoker.invoke(AbstractCluster.java:101) at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:106) at org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterInvoker.invoke(ScopeClusterInvoker.java:171) at org.apache.dubbo.registry.client.migration.MigrationInvoker.invoke(MigrationInvoker.java:294) at org.apache.dubbo.rpc.proxy.InvocationUtil.invoke(InvocationUtil.java:64) at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:81)

2024-08-20 21:33:02.698|ERROR |197978|http-nio-19405-exec-3|o.a.d.r.c.SingleRouterChain.(:)|[TID: N/A]| [DUBBO] Reject to route, because the invokers has changed., dubbo version: 3.2.13, current host: 10.0.1.29, error code: 99-0. This may be caused by , go to https://dubbo.apache.org/faq/99/0 to find instructions. Router's invoker size: 1 Invocation's invoker size: 1 2024-08-20 21:33:02.698|ERROR |197978|http-nio-19405-exec-3|o.a.d.r.i.DynamicDirectory.(:)|[TID: N/A]| [DUBBO] Failed to execute router: nacos://10.0.1.29:1811/org.apache.dubbo.registry.RegistryService?REGISTRY_CLUSTER=default:PROD&application=demo-dubbo&check.serializable=false&dubbo=2.0.2&executor-management-mode=isolation&file=/data/tmp/.dubbo/dubbo-registry-dubbo-consumer-demo-0.cache&file-cache=true&namespace=PROD&password=Nacos_654321&pid=197978&qos.enable=false&release=3.2.13&serialize.check.status=DISABLE&simplified=true&timestamp=1723729304540&username=nacos, cause: reject to route, because the invokers has changed., dubbo version: 3.2.13, current host: 10.0.1.29, error code: 2-1. This may be caused by , go to https://dubbo.apache.org/faq/2/1 to find instructions. java.lang.IllegalStateException: reject to route, because the invokers has changed. at org.apache.dubbo.rpc.cluster.SingleRouterChain.route(SingleRouterChain.java:147) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.registry.integration.DynamicDirectory.doList(DynamicDirectory.java:214) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.directory.AbstractDirectory.list(AbstractDirectory.java:232) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.list(AbstractClusterInvoker.java:452) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:355) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.router.RouterSnapshotFilter.invoke(RouterSnapshotFilter.java:46) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:108) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.support.MetricsClusterFilter.invoke(MetricsClusterFilter.java:57) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:52) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.support.ObservationSenderFilter.invoke(ObservationSenderFilter.java:62) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.spring.security.filter.ContextHolderParametersSelectedTransferFilter.invoke(ContextHolderParametersSelectedTransferFilter.java:40) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.spring.security.filter.ContextHolderAuthenticationPrepareFilter.invoke(ContextHolderAuthenticationPrepareFilter.java:68) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.metrics.filter.MetricsFilter.invoke(MetricsFilter.java:86) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.support.MetricsConsumerFilter.invoke(MetricsConsumerFilter.java:38) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter.invoke(ConsumerClassLoaderFilter.java:40) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter.invoke(ConsumerContextFilter.java:119) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:197) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$ClusterFilterInvoker.invoke(AbstractCluster.java:101) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:106) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterInvoker.invoke(ScopeClusterInvoker.java:171) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.registry.client.migration.MigrationInvoker.invoke(MigrationInvoker.java:294) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.proxy.InvocationUtil.invoke(InvocationUtil.java:64) ~[dubbo-3.2.13.jar:3.2.13] at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:81) ~[dubbo-3.2.13.jar:3.2.13]

What you expected to happen

I expect to be able to start the application with Dubbo services in the local environment, allowing it to invoke providers in the test environment without affecting the test environment itself.

Anything else

No response

Are you willing to submit a pull request to fix on your own?

  • Yes I am willing to submit a pull request on my own!

Code of Conduct

@escapekyg escapekyg added component/need-triage Need maintainers to triage type/need-triage Need maintainers to triage labels Aug 20, 2024
@wcy666103
Copy link
Contributor

Just do it.

@escapekyg
Copy link
Author

Just do it.

sorry, but can you express more clearly? Or is there anything else I need to clarify ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/need-triage Need maintainers to triage type/need-triage Need maintainers to triage
Projects
Status: Todo
Development

No branches or pull requests

2 participants