Open buzz321 opened 3 weeks ago
为什么回放会有4次?
因为前3次要做1次预热和2次降噪请求,第4次才是真正的回放请求,
预热就是为了先把apollo等配置先还原,因为apollo的配置是加载到内存中的全局配置,第一次要先把配置都mock成录制时的配置,这个过程是异步的(apollo内部机制),无法保证第一次就能把所有的配置文件都还原完成,所以要先进行一次预热,这样后续的回放请求都是使用已经mock过的apollo配置。
另外Apollo config的回放是在ApolloServletV3RequestHandler#handleAfterCreateContext方法实现的
哦 源码位置可能是有调整吧,我对应了一下master上的新代码,ApolloServletV3RequestHandler#handleAfterCreateContext方法是我所说的ApolloServletV3RequestHandler#preHandle了
那我是否可以理解为1次预热(不触发回放)和2次降噪+第4次都执行了回放请求?
另外,如果指定时间段内有 3 个 recordId 需要进行回放的话,预热、降噪和真实的调用是怎么个执行方式呢?
@buzz321 可以加qq群交流,656108079,issue回复不及时
Search before asking
AREX Test Service
AREX Java Agent (arextest/arex-agent-java)
Current Behavior
测试场景:http 入口请求 apollo
遇到以下问题: 1、通过 arex-web 进行 Servlet 请求的回放时,目标机器会生成 4 次arex-replay-id 2、调试发现,第 1 次回放开始,执行到 RequestHandlerManager#preHandle 时,REQUEST_HANDLER_CACHE 缓存总为空,因为 REQUEST_HANDLER_CACHE 的初始化处理在 RequestHandlerManager#preHandle 后,导致未触发 ApolloServletV3RequestHandler#preHandle 回放逻辑,其余3次回放,由于 REQUEST_HANDLER_CACHE 已完成初始化,逻辑正常
Expected Behavior
1、对指定时间段内的 recordId 进行回放,只回放 1 次,生成 1 个 arex-replay-id 2、首次回放时就可以获取到 apollo 的录制配置
Steps To Reproduce
Anything else
No response
Are you willing to submit a pull request to fix on your own?