1、问题现象

在发布项目时,elk有打印use dubbo version 2.6.2 is DESTROYED, can not be invoked any more!相关的报错日志,来提示dubbo消费者调用生产者时,生产者服务已经DESTROYED。

ChatGpt可知:

2、问题溯源

com.alibaba.dubbo.rpc.protocol.AbstractInvoker#invoke

源码可知,消费者调用dubbo时,调用invoke(),其会判断当前消费者的标记位是否被销毁状态,如果是就抛出以上异常,否则继续执行调用逻辑。

那消费者有哪些场景会处于销毁状态呢?

手动调用destroy()生产者正在停止中生产者启动中,但未初始化完成时重复创建对象,会先销毁原来对象

结合发布场景每次服务发布的时候才产生异常,所以先考虑2/3的情况;

3、场景分析

针对异常日志:

溯源找到对应的业务代码,发现时xxljob定时任务的调用业务,

跑完大概5分钟左右

4、小结

那以上可知就是xxljob定时任务调用处理需要一些时间,但是提供服务的dubbo在发布时重启了,导致xxljob里存在的while(true)/for循环,调用dubbo服务时检查标志位报错,所以出现了异常;

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: