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]