cat icon indicating copy to clipboard operation
cat copied to clipboard

3.0 feign + hystrix 无法传递调用链问题

Open geek-lwh opened this issue 6 years ago • 2 comments

使用spring cloud的体系,cat 3.0 client

使用hystrix进行熔断后,因为线程不是同一个,而cat的设计是基于threadlocal来的,所以无法在这种场景下显示调用链路.

主要原因大概看了下源码,网传通过重写HystrixConcurrencyStrategy,将rootId等传递下去只是解决了值传递,而没有解决调用链路的问题,大致看了下源码,问题还是在DefaultMessageTree通过当前线程获取,而这里面的context才是真正记录调用链路的stack.

也就是因为hytrix中的代码是新的线程,所以通过logRemoteClientCall等方法是无法获取父线程的stack.

现在有没有好的解决方案,我发现context类是个内部类 无法获取,然后通过add 方法添加事件,代码读的不多,有实际使用hytrix的同学可以回复下.

geek-lwh avatar Dec 31 '19 09:12 geek-lwh

我也遇到了相同的问题

gezehao avatar Sep 03 '20 11:09 gezehao

我试着修改源码,让context对象也传递进来,但是没能成功, 链路追踪还是有问题,改为信号量模式能正常显示调用链

ggjess avatar Dec 15 '20 09:12 ggjess