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

   > > @AlbumenJ 这个问题在3.1版本会修复吗
   > 
   > 会的
   我使用的是3.1.7版本,也会抛出同样的错误
   下面是我的pom.xml中引用的依赖
   ```xml
           <dependency>
               <groupId>org.apache.dubbo</groupId>
               <artifactId>dubbo-spring-boot-starter</artifactId>
               <version>3.1.7</version>
           </dependency>
   ```
   过滤器的部分代码ChannelFilter.java
   ```java
   import com.gemantic.common.event.eventobject.RequestAccessEvent;
   import com.gemantic.common.util.TraceUtils;
   import lombok.extern.slf4j.Slf4j;
   import org.apache.commons.lang.StringUtils;
   import org.apache.dubbo.common.constants.CommonConstants;
   import org.apache.dubbo.common.extension.Activate;
   import org.apache.dubbo.rpc.*;
   import org.slf4j.MDC;
   
   import java.util.Objects;
   
   import static com.gemantic.common.constant.CommonConstant.*;
   
   @Slf4j
   @Activate(group = {CommonConstants.PROVIDER, CommonConstants.CONSUMER}, 
order = -999)
   public class ChannelFilter implements Filter {
   
       @Override
       public Result invoke(Invoker<?> invoker, Invocation invocation) throws 
RpcException {
           boolean isConsumerSide = false;
           try {
               isConsumerSide = RpcContext.getServiceContext().isConsumerSide();
               beforeInvoke(isConsumerSide);
               return invoker.invoke(invocation);
           } finally {
               afterInvoke(isConsumerSide);
           }
       }
       .......
   }
   ```
   当在客户端调用服务时,就会抛出以下堆栈信息:
   ```
   java.lang.NullPointerException: null
        at 
org.apache.dubbo.rpc.RpcServiceContext.isConsumerSide(RpcServiceContext.java:144)
 ~[dubbo-3.1.7.jar:3.1.7]
        at 
com.gemantic.common.dubbo.filter.ChannelFilter.invoke(ChannelFilter.java:34) 
~[commons-core-2.3.2.58-spring-boot-2.7.9.jar:?]
        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.MetadataServiceDubboProxy1.getMetadataInfo(MetadataServiceDubboProxy1.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) ~[?:1.8.0_221]
        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.client.ServiceDiscoveryRegistry.subscribeURLs(ServiceDiscoveryRegistry.java:317)
 ~[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.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:74)
 ~[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.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)
 ~[?:1.8.0_221]
        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.ReferenceConfig.get(ReferenceConfig.java:228) 
~[dubbo-3.1.7.jar:3.1.7]
        at 
org.apache.dubbo.config.spring.ReferenceBean.getCallProxy(ReferenceBean.java:351)
 ~[dubbo-3.1.7.jar:3.1.7]
        at 
org.apache.dubbo.config.spring.ReferenceBean.access$100(ReferenceBean.java:100) 
~[dubbo-3.1.7.jar:3.1.7]
        at 
org.apache.dubbo.config.spring.ReferenceBean$DubboReferenceLazyInitTargetSource.createObject(ReferenceBean.java:359)
 ~[dubbo-3.1.7.jar:3.1.7]
        at 
org.springframework.aop.target.AbstractLazyCreationTargetSource.getTarget(AbstractLazyCreationTargetSource.java:88)
 ~[spring-aop-5.3.25.jar:5.3.25]
        at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:195)
 ~[spring-aop-5.3.25.jar:5.3.25]
        at com.sun.proxy.$Proxy201.getRegionsByLevelAndStatus(Unknown Source) 
~[?:?]
        at com.gemantic.wealth.cache.RegionCache.init(RegionCache.java:31) 
~[classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_221]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_221]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_221]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_221]
   ```
   其中的RegionCache.java是服务调用发起的位置,这里是调用代码
   ```java
   regionService.getRegionsByLevelAndStatus(....);
   ```
   


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to