RabbitMQ

Feature flag `quorum_queue`: migration function crashed

babbeolicoding 2025. 3. 21. 21:18
반응형

 

RabbitMQ를 재기동할 때 아래 오류가 발생하면서

제대로 실행되지 않는 경우가 있다.

2024-03-31 11:55:13.486491+09:00 [error] <0.230.0> Feature flag `quorum_queue`: migration function crashed: {error,
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                                                           {timeout_waiting_for_tables,
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                                                            ['rabbit@node-02',
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                                                             'rabbit@node-01'],
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                                                            [rabbit_durable_queue]}}
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0> [{rabbit_table,wait,3,[{file,"rabbit_table.erl"},{line,121}]},
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>  {rabbit_core_ff,quorum_queue_migration,3,
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                  [{file,"rabbit_core_ff.erl"},{line,77}]},
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>  {rabbit_feature_flags,run_migration_fun,3,
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                        [{file,"rabbit_feature_flags.erl"},{line,1602}]},
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>  {rabbit_feature_flags,'-verify_which_feature_flags_are_actually_enabled/0-fun-0-',
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                        3,
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                        [{file,"rabbit_feature_flags.erl"},{line,2269}]},
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>  {maps,fold_1,3,[{file,"maps.erl"},{line,411}]},
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>  {rabbit_feature_flags,verify_which_feature_flags_are_actually_enabled,0,
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                        [{file,"rabbit_feature_flags.erl"},{line,2267}]},
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>  {rabbit_feature_flags,sync_feature_flags_with_cluster,3,
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                        [{file,"rabbit_feature_flags.erl"},{line,2082}]},
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>  {rabbit_mnesia,ensure_feature_flags_are_in_sync,2,
2024-03-31 11:55:13.486491+09:00 [error] <0.230.0>                 [{file,"rabbit_mnesia.erl"},{line,644}]}]

 

그 이유는 rabbitmq가 모두 종료될때
마지막으로 죽었던 노드가 먼저 기동되어야 하는 룰이 있다.
만약 마지막으로 죽었던 노드를 정확하게 모른다면
journalctl 이나 rabbitmq 로그에서 stop된 시점을 확인하면 된다.
 
만약 마지막으로 죽었던 노드를 먼저 기동했음에도 비정상적이라면
rabbitmqctl force_boot를 사용하면 된다.
하지만 force_boot를 하면 클러스터 상태를 무시하고 강제로 시작하므로
데이터 손실 위험이 있으므로 마지막 수단으로 사용 실행 전에 mnesia 디렉터리를 백업해 두는게 좋다.
또 force_boot 옵션을 사용하면 cluster join을 다시 해야 할 수도 있으니 참고하시기 바란다.
반응형

'RabbitMQ' 카테고리의 다른 글

RabbitMQ Export Import 방법  (0) 2025.04.04
RabbitMQ Service Connection test python  (0) 2023.06.20
RabbitMQ Cluster 구성하기  (0) 2023.05.23