uniquetruth / remote-debug-agent

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

获取 /trace/list 报错 NPE #16

Closed yang-yao closed 1 year ago

yang-yao commented 2 years ago

前段时间被拉去做一个项目,一直没时间捣鼓,今天继续测试一上来就出问题了

有点不是太理解 这个调用链是 一个请求一条调用链吗?
点击一个按钮可能是多个请求 那就是返回中有多条调用链? 如果是这样的话,测试在页面上执行一条测试用例,那也会返回多条调用链?

刚操作了很多步骤 然后获取/trace/list 会报这个问题

后来又试了一下 又没报错

2022-10-20 15:46:27.016 |  WARN 9162 | qtp97730845-9 [TID: N/A] org.eclipse.jetty.server.HttpChannel     | /trace/list

java.lang.NullPointerException: null
    at com.github.rdagent.common.Util.getCoverageStr(Util.java:104)
    at com.github.rdagent.common.Util.prepareGeneralObject(Util.java:83)
    at com.github.rdagent.common.Util.prepareGeneralObject(Util.java:96)
    at com.github.rdagent.common.Util.prepareGeneralObject(Util.java:96)
    at com.github.rdagent.common.Util.getJsonTrace(Util.java:51)
    at com.github.rdagent.server.TraceContext$List.doGet(TraceContext.java:93)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:864)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
    at org.eclipse.jetty.server.handler.ScopedHan
uniquetruth commented 2 years ago

有点不是太理解 这个调用链是 一个请求一条调用链吗? Yes 点击一个按钮可能是多个请求 那就是返回中有多条调用链? Yes 如果是这样的话,测试在页面上执行一条测试用例,那也会返回多条调用链? Yes

关于调用链,我再进行一点详细的说明。一个请求到达服务器后端,中间件会分配一个工作线程去处理它,假设该线程执行了方法a1、a2、a3,那么探针在内存中记录的就是[a1, a2, a3]这样一个list。你所说的点击一个按钮发送了多个请求的话,假设第二个请求执行了方法b1、b2、b3,因为它跟第一个请求是同源的,所以内存中记为[a1, a2, a3, b1, b2, b3]。 list接口是对内存中的这个记录列表进行了一些包装后,返回给你的,通过方法间的调用关系,组成了2条调用链。

关于NPE的问题,计划在下个版本中修复,谢谢你的信息。

uniquetruth commented 1 year ago

v0.0.8 release 或master分支的最新代码上已修复