[Paper Note] Efficient Exposure of Partial Failure Bugs in Distributed Systems With Inferred Abstract States
Motivation
目前分布式系统中的故障注入不够高效,主要是由于以下原因:
- 许多故障是 partial failure。发生故障时,系统仍然在运行,只是系统的某个组件或服务受影响。
- 故障的触发条件非常罕见。例如,某些故障只在特定时刻的特定网络故障下发生,并且只影响某个组件。
- 成熟的分布式系统有比较好的容错性。许多混沌工程的实践随机注入故障,成熟的分布式系统可以容忍大部分故障,大量的注入是无效的,无法检测出新 bug。
故障注入的一大难点是“如何在无数中可能的故障注入点中找到最可能暴露 bug 的故障注入点”。论文认为,大多数的 bug 都发生在特殊情况下,因此故障注入框架也应该找到这些“特殊情况”,并在这些容易出错的地方注入故障。论文提出了一个新的故障注入框架 Legolas,Legolas 通过静态分析,找到程序的状态机,并在这些故障迁移时根据 bsrr(budgeted-state-round-robin)策略通过插入 hook 注入故障。