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

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

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

最佳回复
alwans 回复

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

共收到 15 条回复 时间 点赞

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

alwans 回复

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

cocohome 回复

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

alwans 回复

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

cocohome 回复

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

cocohome 回复

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

alwans 回复

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

cocohome 回复

就是回放结果

cocohome 回复

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

孙武牧羊 回复

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

孙武牧羊 回复

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

cocohome 回复

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

cocohome 回复

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

孙武牧羊 回复

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

15楼 已删除
alwans 回复

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

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