baidu / braft

An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems.
Apache License 2.0
3.99k stars 886 forks source link

braft peer 在根分区满了之后无法服务,释放空间后无法自动恢复服务 #361

Open hemin1020 opened 2 years ago

hemin1020 commented 2 years ago

复现步骤:

  1. 修改 example 中的测试用例,将日志重定向到日志文件,我使用的是 /var/log/braft/counter.log 这个路径 image

  2. 在服务稳定工作一段时间后,dd 一个大文件,使日志所在根分区满,dd if=/dev/urandom of=/var/log/braft/bigfile bs=1024k count= status=progress image

  3. 观察此时braft 无法正常工作

  4. 删除 bigfile,空间恢复,braft 日志正常输出,但是日志里都是 is not active的报错,且一直无法恢复,除非通过手动重启服务 image

问题: 我们期望的效果是:在空间释放后,braft 的各个节点可以自动恢复正常,这个可以实现么?

PFZheng commented 2 years ago

这个braft代码不会自动处理,业务可以通过shutdown重新start来恢复,这个效果和重启是一样的