9 hours ago
- 在Redis GitHub上报告了一个关于Redis 4.0中PSYNC2复制协议的关键问题。
- PSYNC2允许在故障转移和从节点重启后进行差异重新同步,但重启从节点功能不可靠。
- 两个主要问题:该功能是最后一刻添加的,未经彻底审查;此外,重启后恢复完整复制状态非常复杂。
- Bug #4483:从节点重启后,主节点复制积压中的Lua脚本(EVALSHA)导致从节点因Lua脚本引擎被清空而无法处理写入。
- 作者匆忙修复该错误,但在4.0.3版本中错误地遗漏了一个提交,随后发布的4.0.4版本中引入的新修复又导致了新错误(对重复脚本加载的断言)。
- 该错误最终在4.0.5版本中修复,但这一系列故障给用户造成了问题。
- 经验教训:Redis 4.0发布过早;匆忙的修复需要更仔细的检查;测试应涵盖带有Lua脚本的PSYNC2情况。
- 作者道歉并感谢贡献者,尤其是@soloestoy。