nebula v1.1中单测的一个疑问

正在给社区提交PR,但是在跑历史单测出现问题:
在RaftexTestBase.cpp的函数appendLogs()中,如图,没有对leader->appendAsync()返回的fut的结果进行处理,也就是这里投递消息是异步、存在消息投递失败的可能、但没有给resp设置callback来对可能失败的消息投递进行善后 比如retry,所以这里的实现是否需完善、还是我理解的不对这里就是要模拟消息可能投递失败的场景?

并且参数waitLastLog的默认值是false,也就是允许case调用leader->appendAsync()而不管结果立刻返回,虽然在checkConsensus中会有sleep进行等待,但问题是消息的投递结果仍有可能是失败的.

可以考虑检查,这个地方只是偷懒了,这个地方理论上只会出现一个错,就是LEADER_CHANGE,有的单测是通过调用了waitUntilLeaderElected之后才开始测试。检查主要是就需要同步检查,所以这个地方当时只留了个接口检查最后一个msg。

1 个赞

了解了 :+1: