uniquetruth / remote-debug-agent

a useful java agent for integration testing
Apache License 2.0
71 stars 25 forks source link

server访问agent的兼容问题 #17

Closed znifeng closed 1 year ago

znifeng commented 1 year ago

image

报一个bug,如图所示,浏览器如果直接访问agent 发送start、coverage等信息是ok的。但是如果浏览器访问server,server再通过接口访问agent,就会有问题。因为server访问agent这个代码也被agent插桩了,这边没处理好

znifeng commented 1 year ago

原因定位了,因为一开始没有执行start命令,默认不会记录当前线程的trace,onMethodIn的时候,IPmap.canTrace()为false。而在server方法调agent接口打开start,开始trace的时候,在server方法的onMethodOut地方就会报错。因为一开始的时候没有执行deep++,start后deep为0,在out的地方就会导致deep--后,deep又变成负的了。从而无法开启trace

uniquetruth commented 1 year ago

确实从前期设计上没有考虑到这种调用情况。你这样属于是让应用server自己调自己提供的另一个端口了,可能会有一些潜在的问题。我觉得一个可能比较好的做法还是把调用者和应用server分开(如果没有必要非绑一起的话)。

znifeng commented 1 year ago

一般是分开的。 主要是测试时候发现。 因为我这边下面应用会有多个应用,肯定有一个应用作为中转,对外提供接口,可以触发其他多个应用的通信。