[apache/dubbo]isConsumerSide 报 null 问题

2024-06-24 276 views
3
  • Dubbo version: 3.1.1
  • Operating System version: linux
  • Java version: 1.8

image image

不应该报null的地方 却报null了 好多原先好使的 现在都不好使了 3.0.9无问题

回答

9

image 只要是injvm 获取url全都是null 导致后续所有操作全都报null

2

image

3

org/apache/dubbo/rpc/filter/ContextFilter.java:95 看一下这个地方有没有设置进去

8

image 这个只有PROVIDER有效 我现在想在CONSUMER打日志 拿不到数据

3

org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java:66 consumer 应该是这个

3

org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java:66 consumer 应该是这个

还没等执行到这个类的时候 就已经执行上面的方法并报错了

6

你的 order 是不是 min-value

7

并不是 没有设置order用的默认的

0

Filter 整个定义脱敏后发一下

4
/**
 * dubbo日志过滤器
 *
 * @author Lion Li
 */
@Slf4j
@Activate(group = {CommonConstants.PROVIDER, CommonConstants.CONSUMER})
public class DubboRequestFilter implements Filter {

    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        String client = CommonConstants.PROVIDER;
        if (RpcContext.getServiceContext().isConsumerSide()) {
            client = CommonConstants.CONSUMER;
        }
        String baselog = "Client[" + client + "],InterfaceName=[" + invocation.getInvoker().getInterface().getSimpleName() + "],MethodName=[" + invocation.getMethodName() + "]";
        log.info("DUBBO - 服务调用: {},Parameter={}", baselog, invocation.getArguments());

        long startTime = System.currentTimeMillis();
        // 执行接口调用逻辑
        Result result = invoker.invoke(invocation);
        // 调用耗时
        long elapsed = System.currentTimeMillis() - startTime;
        // 如果发生异常 则打印异常日志
        if (result.hasException() && invoker.getInterface().equals(GenericService.class)) {
            log.error("DUBBO - 服务异常: {},Exception={}", baselog, result.getException());
        } else {
            log.info("DUBBO - 服务响应: {},SpendTime=[{}ms]", baselog, elapsed);
        }
        return result;
    }

}
2

就拦截打印了一下日志 很简单的 filter

5

Will be fixed in 3.0.13, 3.1.2

5

请问下最后是用什么方式解决的,我是在切换成非admin用户使用时,debug发现这里报错,麻烦告知一下

5

Will be fixed in 3.0.13, 3.1.2

升级 3.1.2 依旧报这个错 你上面提交的pr在3.1.2版本里也没有找到 还是本地调用的问题 根本就没有改正过来 image

1

@AlbumenJ