You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by "liunancun (via GitHub)" <gi...@apache.org> on 2023/03/04 02:11:41 UTC

[GitHub] [dubbo] liunancun commented on issue #11716: 在Filter中调用RpcContext.getServiceContext().isConsumerSide()方法报空指针错误

liunancun commented on issue #11716:
URL: https://github.com/apache/dubbo/issues/11716#issuecomment-1454336745

   我尝试升级到3.1.7版本之后,这个用例不会报错了,但业务代码测试会报另外一个错误,具体场景没办法用demo重现
   
   ```
   2023-03-04 10:08:25.538 ERROR 9312 --- [           main] o.a.d.r.client.metadata.MetadataUtils    :  [DUBBO] Failed to get app metadata for revision 0e3b6e9a9e1c2b728fcedaadc65c4450 for type local from instance 192.168.99.230:20001, dubbo version: 3.1.7, current host: 10.10.1.19, error code: 1-39. This may be caused by , go to https://dubbo.apache.org/faq/1/39 to find instructions. 
   
   java.lang.NullPointerException: null
   	at org.apache.dubbo.rpc.RpcServiceContext.isConsumerSide(RpcServiceContext.java:144) ~[dubbo-3.1.7.jar:3.1.7]
   	at com.bessky.dubbo.UserContextFilter.invoke(UserContextFilter.java:19) ~[bessky-dubbo-3.0.0-20230304.020331-14.jar:na]
   	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:327) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:194) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.rpc.proxy.InvocationUtil.invoke(InvocationUtil.java:57) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:75) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.metadata.MetadataServiceDubboProxy0.getMetadataInfo(MetadataServiceDubboProxy0.java) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.metadata.MetadataUtils.getRemoteMetadata(MetadataUtils.java:173) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.AbstractServiceDiscovery.getRemoteMetadata(AbstractServiceDiscovery.java:228) [dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.lambda$doOnEvent$2(ServiceInstancesChangedListener.java:159) [dubbo-3.1.7.jar:3.1.7]
   	at java.util.Optional.orElseGet(Optional.java:267) ~[na:1.8.0_161]
   	at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.doOnEvent(ServiceInstancesChangedListener.java:159) [dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.onEvent(ServiceInstancesChangedListener.java:113) [dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery.registerServiceWatcher(ZookeeperServiceDiscovery.java:208) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery.lambda$addServiceInstancesChangedListener$3(ZookeeperServiceDiscovery.java:154) ~[dubbo-3.1.7.jar:3.1.7]
   	at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_161]
   	at org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery.addServiceInstancesChangedListener(ZookeeperServiceDiscovery.java:154) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribeURLs(ServiceDiscoveryRegistry.java:327) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.doSubscribe(ServiceDiscoveryRegistry.java:217) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribe(ServiceDiscoveryRegistry.java:185) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.ListenerRegistryWrapper.subscribe(ListenerRegistryWrapper.java:88) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.integration.DynamicDirectory.subscribe(DynamicDirectory.java:183) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.subscribe(ServiceDiscoveryRegistryDirectory.java:127) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.integration.RegistryProtocol.doCreateInvoker(RegistryProtocol.java:573) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol.getServiceDiscoveryInvoker(InterfaceCompatibleRegistryProtocol.java:65) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.migration.MigrationInvoker.refreshServiceDiscoveryInvoker(MigrationInvoker.java:437) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.migration.MigrationInvoker.migrateToApplicationFirstInvoker(MigrationInvoker.java:245) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.migration.MigrationRuleHandler.refreshInvoker(MigrationRuleHandler.java:76) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.migration.MigrationRuleHandler.doMigrate(MigrationRuleHandler.java:60) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.client.migration.MigrationRuleListener.onRefer(MigrationRuleListener.java:247) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.integration.RegistryProtocol.interceptInvoker(RegistryProtocol.java:538) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.integration.RegistryProtocol.doRefer(RegistryProtocol.java:508) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.registry.integration.RegistryProtocol.refer(RegistryProtocol.java:490) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.qos.protocol.QosProtocolWrapper.refer(QosProtocolWrapper.java:83) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:74) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.rpc.protocol.ProtocolSecurityWrapper.refer(ProtocolSecurityWrapper.java:107) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:71) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper.refer(ProtocolSerializationWrapper.java:52) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.ReferenceConfig.createInvokerForRemote(ReferenceConfig.java:614) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:448) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:300) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:232) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.utils.SimpleReferenceCache.get(SimpleReferenceCache.java:131) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.lambda$referServices$6(DefaultModuleDeployer.java:396) ~[dubbo-3.1.7.jar:3.1.7]
   	at java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4707) ~[na:1.8.0_161]
   	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.referServices(DefaultModuleDeployer.java:376) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.startSync(DefaultModuleDeployer.java:167) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.start(DefaultModuleDeployer.java:139) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onContextRefreshedEvent(DubboDeployApplicationListener.java:113) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:102) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.apache.dubbo.config.spring.context.DubboDeployApplicationListener.onApplicationEvent(DubboDeployApplicationListener.java:47) ~[dubbo-3.1.7.jar:3.1.7]
   	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
   	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
   	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
   	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:404) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
   	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:361) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
   	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:898) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
   	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:554) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
   	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.10.RELEASE.jar:2.2.10.RELEASE]
   	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.10.RELEASE.jar:2.2.10.RELEASE]
   	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.10.RELEASE.jar:2.2.10.RELEASE]
   	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.10.RELEASE.jar:2.2.10.RELEASE]
   	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.10.RELEASE.jar:2.2.10.RELEASE]
   	at com.bessky.elasticsearch.BesskyElasticsearchServiceApplication.main(BesskyElasticsearchServiceApplication.java:17) ~[classes/:na]
   ```
   
   我用demo重现的时候不会调用org.apache.dubbo.registry.client.metadata.MetadataUtils.getRemoteMetadata方法,这个方法具体要在什么场景下才会调用?业务代码调用这个方法进入过滤器还是会报空指针


-- 
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