Что это значит

Кворумные очереди RabbitMQ пишут изменения в журнал WAL. При запуске узел восстанавливает его (в журнале строка WAL: recovering ["<файл>.wal"]). Если сервер был аварийно остановлен и конец файла остался недописанным (нули вместо данных), восстановление падает с аварийным отчётом no case clause matching {ok,<<0,0,0,0,0>>} in ra_log_wal:open_existing/1, и супервизор ra_log_wal_sup не может запустить журнал. Узел RabbitMQ не стартует.

Случай описан в справке вендора в разделе об устранении неисправностей Directum Ario, но относится к RabbitMQ вообще.

Как проверить

Найти в журнале RabbitMQ строку WAL: recovering перед аварийным отчётом: в ней имя проблемного файла.

Что сделать

  1. Остановить RabbitMQ и сохранить копию каталога данных узла.
  2. Удалить файл WAL из строки WAL: recovering и запустить RabbitMQ.
  3. Учитывать, что сообщения, которые были только в этом файле, теряются. В кластере кворумные очереди догонят данные с других узлов.
  4. Разобраться, почему узел останавливался аварийно: питание, OOM, принудительная перезагрузка.