Xiaojie Li
Xiaojie Li
iteye的域名不能用了,这个链接可以去掉,如果你有兴趣的话可以提一个pr修改一下。
This article has not been translated yet, and if you would like to translate it, that would be great.
@cwt9562 可否将完整的示例工程提交到您的个人仓库,并在此加以引用?
> 为啥你们要关闭这个issue,明明问题还没有找到 应该是操作错了,我也正在尝试复现这个问题
> @liufeiyu1002 @AlbumenJ @lixiaojiee https://github.com/cwt9562/dubbo-privider-confusion 我基于官方的spring boot demo, 复现了 你们看下 收到,我看下
> 启动provider后, 再启动comsumer 就会得到 Caused by: org.apache.dubbo.common.bytecode.NoSuchMethodException: Not found method "sayHello" in class org.apache.dubbo.springboot.demo.provider.AnotherServiceImpl. 看了下,出现问题是由于您自定义的一个拦截器里又调了一次dubbo方法,如下图: 根本问题是在调用这个方法结束后,RpcContext里面的SERVICE_CONTEXT没有做清理,导致在继续执行调用DemoService的sayHello方法客户端逻辑时读取了已经过期的缓存(attachments.path=org.apache.dubbo.springboot.demo.AnotherService),而服务端正是通过这个path值定位服务端骨架的。感兴趣的话,您可以提个pr修复这个问题。
> 我想了下, @cwt9562 实现的这个过滤器本身可能就是有问题的,在过滤器里再进行RPC请求,弄不好会把系统搞死,我们是否需要针对这种场景做下控制,禁止在框架内做嵌套RPC调用?
> > > > 我想了下, @cwt9562 实现的这个过滤器本身可能就是有问题的,在过滤器里再进行RPC请求,弄不好会把系统搞死,我们是否需要针对这种场景做下控制,禁止在框架内做嵌套RPC调用? @AlbumenJ
> > > > > > > > > 我想了下, @cwt9562 实现的这个过滤器本身可能就是有问题的,在过滤器里再进行RPC请求,弄不好会把系统搞死,我们是否需要针对这种场景做下控制,禁止在框架内做嵌套RPC调用? > > 嵌套调用是有可能有这个需求的,比如请求转发就需要使用到嵌套调用。框架侧来说应该也是可以保证请求成功的(处理好 ThreadLocal 之后) 明白,那这样的话,除了你说的问题需要处理好,还需要框架测处理死循环的问题。我这周试试改一下。