问答 jvm-sandbox-repeater 录制流量成功后回放失败,但是数据库 replay 表中有记录

cocohome · 2021年05月21日 · 最后由 孙武牧羊 回复于 2021年06月05日 · 2810 次阅读

jvm-sandbox-repeater 录制流量成功后回放失败,但是数据库 replay 表中有记录,请问有人遇到过类似的问题吗

最佳回复
alwans 回复

好的,谢谢,我再看看吧,成功回放的时候 replay 表的数据 status 状态是啥

共收到 15 条回复 时间 点赞
alwans 回复

有多种参数匹配策略,可以设置使用参数相似度对比策略,就能解决参数值不同(时间参数,相关 id 等),从而导致匹配子调用失败的问题(AbstractMockStrategy#execute)

2楼 已删除
孙武牧羊 回复

你在进行回放的时候,mock 策略都是用参数匹配策略吗?比如回放的时候参数值不同,从而导致匹配子调用失败,你是怎么解决的呢

cocohome 回复

服务器 ip 和数据库的 ip 没直接交互,中间是通过 repeate 和 console 服务中转的。数据库连接的配置改了没,能连通数据库的话 debug 或者打印日志看看

cocohome 回复

是的,需要改代码的。这个 ip 就是回放机器的 ip,测试的话如果目标服务和 console 服务都在同一台机器 127.0.0.1,应用落地 ip 是可以通过传参设置的,把 ip 当接口参数

孙武牧羊 回复

我现在在回放的接口里面带了应用服务器的 ip 过去,但是报错 data not exist,回放的应用服务器 ip 和数据库的 ip 不是同一个,会有什么问题吗,看代码是根据 appName 和 traceId 去数据库捞数据的,数据库有数据

孙武牧羊 回复

我是把 sandbox 和 repeater 都部署在远端的服务器上,本地访问 console 页面以及访问接口 url 都是通过 ip 来的,这个如果是要远端去回放,要怎么解决呢,在 controller 层设置下回放参数 ip 吗,那就是得动代码了吗

cocohome 回复

回放的接口源码里没有设置回放的 ip 地址,如果你是本地演示,在 controller 层设置回放参数的 ip 为 127.0.0.1,因为 service 层有对 ip 的非空检测,也就是你截图的部分。

cocohome 回复

就是回放结果

alwans 回复

好的,谢谢,我再看看吧,成功回放的时候 replay 表的数据 status 状态是啥

cocohome 回复

忘记说,用自带的我有回放成功过的。但是也是会遇到你这个问题,因为我没打算用这个,所以我没去排查原因

cocohome 回复

你可以看看我发的帖子,我没有用自带的 console 模块

alwans 回复

那你有回放成功过吗,请教下,我现在都是录制 OK,回放不成功

cocohome 回复

这个接口不是执行回放,这个接口是执行回放过程中 repeater 去 record 表中拉取对应的 wrapperRecord 数据

alwans 回复

那就是啥都没有修改就 OK 吗,我这边一直都是 failed,并且通过接口 facade/api/repeat 去回放时,会报错,这个看代码是

遇到过,有时候又成功跳到回放详情页了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册