uniquetruth / remote-debug-agent

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

linkedlistk空指针问题 #18

Closed znifeng closed 1 year ago

znifeng commented 1 year ago

image

image

如图所示,linkedlist的长度为65535,取l.get(0)的时候就抛出了空指针了。

uniquetruth commented 1 year ago

确实可能在traceVo的list长度超过指定值,且碰上多线程访问的时候,可能存在线程安全问题,导致LinkedList内的元素为空。可否尝试一下在IPmap类内部,将LinkedList换成线程安全的ConcurrentLinkedQueue?最近被封控在小区内,反而要花更多的时间去处理日常工作和防疫的杂事了,暂时没空改代码,如果你尝试了没问题的话,希望能告诉我。

另外api接口设计时的定位是运行时调试接口,所以未做太多关于traceMax的控制。从我自己的使用情况来看,尽量是一次业务调用取一次list,用完后马上clean再进行下一次使用,实在碰到需要更多traceMax的时候就使用-Dtest.coverage.traceMax或agent参数中增加traceMax=999999来调整上限。 至于超过traceMax之后覆盖率数据丢失的问题,从我的设计目的来看是没有丢失的,因为我只关注以ip为粒度的覆盖行数据,这个维度的数据可以用manage/dump接口落盘后进行分析。你比较关注的是以单个调用请求为粒度的覆盖行数据,如果要使工具支持这个粒度的话,可能确实有不少需要改造的地方。