)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"eeb0adb6916dbfc77de80f4dd8824973e630aaa8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bf73f45e_2c3448b6","updated":"2026-03-27 11:15:31.000000000","message":"It’s already too late, but it would’ve been nicer if this ended up, for example, in kolla-toolbox.\nThen it could be easily accessible and run remotely.","commit_id":"856472b8369a702ff683dfc5e28de11c2405bf3e"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"e1b36245d34e400ff6332c8bc68de283a75ef03f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"cd5a163f_fb60d820","updated":"2026-02-19 10:43:39.000000000","message":"thanks Matt, this looks useful!","commit_id":"856472b8369a702ff683dfc5e28de11c2405bf3e"}],"contrib/ops/rabbitmq/rabbitmq-repair-stream-replicas.sh":[{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"e21b0e830f2b61bc69aacdd1669902a0ceb9a23e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3b4b8163_6f46e6f6","line":23,"updated":"2026-01-26 14:21:35.000000000","message":"there is no shebang if this a bash script. please add in the first lines.","commit_id":"38f64143dcd61aa4cd9d56214df2c8a1937ef008"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"1934e2002f2fea5ff8722115ece3ee0b6cda2d47","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"6656d928_968abe99","line":23,"in_reply_to":"3b4b8163_6f46e6f6","updated":"2026-01-27 09:36:25.000000000","message":"Good point, thanks. Done","commit_id":"38f64143dcd61aa4cd9d56214df2c8a1937ef008"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"9c37369a69f2f43f4c531d229433a222bb5d1780","unresolved":true,"context_lines":[{"line_number":14,"context_line":"        if ! grep -qx \"$node\" \u003c\u003c\u003c \"$stream_nodes\"; then"},{"line_number":15,"context_line":"            echo \"MISSING replica of $stream on $node\""},{"line_number":16,"context_line":"            missing\u003d1"},{"line_number":17,"context_line":"            docker exec rabbitmq rabbitmq-streams add_replica $stream $node"},{"line_number":18,"context_line":"        fi"},{"line_number":19,"context_line":"    done"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-sh","patch_set":7,"id":"c8d5ce78_bded1e27","line":17,"updated":"2026-02-19 10:43:05.000000000","message":"I hit an error adding the replica back, but I don\u0027t think this is an issue with script:\n\n```\n(rabbitmq)[rabbitmq@doug-controller-02 /]$ rabbitmq-streams stream_status cinder-scheduler_fanout                                           \nStatus of stream cinder-scheduler_fanout on node rabbit@doug-controller-02 ...                                                              \n┌─────────┬───────────────────────────┬───────┬────────┬──────────────────┬──────────────┬─────────┬──────────┐                             \n│ role    │ node                      │ epoch │ offset │ committed_offset │ first_offset │ readers │ segments │                             \n├─────────┼───────────────────────────┼───────┼────────┼──────────────────┼──────────────┼─────────┼──────────┤                             \n│ replica │ rabbit@doug-controller-01 │ 2     │ 84564  │ -1               │ 0            │ 0       │ 1        │                             \n├─────────┼───────────────────────────┼───────┼────────┼──────────────────┼──────────────┼─────────┼──────────┤                             \n│ writer  │ rabbit@doug-controller-02 │ 0     │ 84564  │ 0                │ 0            │ 2       │ 1        │                             \n└─────────┴───────────────────────────┴───────┴────────┴──────────────────┴──────────────┴─────────┴──────────┘                             \n(rabbitmq)[rabbitmq@doug-controller-02 /]$ exit                                                                                             \nexit                                                                                                                                        \n[root@doug-controller-02 ~]# source test.sh                                                                                                 \nOK: All running nodes have a replica of producer_fanout                                                                                     \nMISSING replica of cinder-scheduler_fanout on rabbit@doug-controller-03                                                                     \nAdding a replica for stream cinder-scheduler_fanout on node rabbit@doug-controller-03...                                                    \n%Protocol.UndefinedError{protocol: String.Chars, value: {:gen_batch_server, :call, [#PID\u003c14242.41639679.0\u003e, :query_replication_state, 5000]}\n, description: \"\"}                                                                                                                          \n                                                                                                                                            \n```\n\nAny idea?\n\nThis is seen on a multi-node epoxy deploy. I removed one replica before running the script:\n\n```\n(rabbitmq)[rabbitmq@doug-controller-02 /]$ rabbitmq-streams  delete_replica cinder-scheduler_fanout rabbit@doug-controller-03   \nRemoving a replica of queue cinder-scheduler_fanout on node rabbit@doug-controller-03...                                        \n```\n\nThe script runs fine before doing the above when everything is healthy.\n\nIf I try manually, I can add the replica back fine.\n\n```\n(rabbitmq)[rabbitmq@doug-controller-02 /]$ rabbitmq-streams add_replica cinder-scheduler_fanout rabbit@doug-controller-03   \nAdding a replica for stream cinder-scheduler_fanout on node rabbit@doug-controller-03...                                    \n\n(rabbitmq)[rabbitmq@doug-controller-02 /]$ rabbitmq-srabbitmq-streams stream_status cinder-scheduler_fanout              \nStatus of stream cinder-scheduler_fanout on node rabbit@doug-controller-02 ...                                           \n┌─────────┬───────────────────────────┬───────┬────────┬──────────────────┬──────────────┬─────────┬──────────┐          \n│ role    │ node                      │ epoch │ offset │ committed_offset │ first_offset │ readers │ segments │          \n├─────────┼───────────────────────────┼───────┼────────┼──────────────────┼──────────────┼─────────┼──────────┤          \n│ writer  │ rabbit@doug-controller-01 │ 0     │ 84606  │ 0                │ 0            │ 2       │ 1        │          \n├─────────┼───────────────────────────┼───────┼────────┼──────────────────┼──────────────┼─────────┼──────────┤          \n│ replica │ rabbit@doug-controller-02 │ 3     │ 84606  │ -1               │ 0            │ 1       │ 1        │          \n├─────────┼───────────────────────────┼───────┼────────┼──────────────────┼──────────────┼─────────┼──────────┤          \n│ replica │ rabbit@doug-controller-03 │ 3     │ -1     │ -1               │ 0            │ 2       │ 1        │          \n└─────────┴───────────────────────────┴───────┴────────┴──────────────────┴──────────────┴─────────┴──────────┘          \n```","commit_id":"856472b8369a702ff683dfc5e28de11c2405bf3e"}],"doc/source/reference/message-queues/rabbitmq.rst":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"2da22452238ff0628810ba7d44c95a373245bd54","unresolved":true,"context_lines":[{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"RabbitMQ streams are expected to be replicated across the nodes in the"},{"line_number":167,"context_line":"cluster. However, RabbitMQ itself will only create a replicas of a stream"},{"line_number":168,"context_line":"the stream is initially declared. This means that any streams declared when a"},{"line_number":169,"context_line":"RabbitMQ node is out of service must be explicitly managed by an operator."},{"line_number":170,"context_line":"RabbitMQ documents how to manage stream replicas here:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"aabb86c0_34d8bc7d","line":167,"range":{"start_line":167,"start_character":51,"end_line":167,"end_character":61},"updated":"2026-02-16 05:58:42.000000000","message":"Either \"a replica\" or \"replicas\"","commit_id":"79a74560d7b880026729f2a84af46212d0b8a445"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"e71fcbbe0fa85290a54cef3fcb1dc29b283add6b","unresolved":false,"context_lines":[{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"RabbitMQ streams are expected to be replicated across the nodes in the"},{"line_number":167,"context_line":"cluster. However, RabbitMQ itself will only create a replicas of a stream"},{"line_number":168,"context_line":"the stream is initially declared. This means that any streams declared when a"},{"line_number":169,"context_line":"RabbitMQ node is out of service must be explicitly managed by an operator."},{"line_number":170,"context_line":"RabbitMQ documents how to manage stream replicas here:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"0be008be_526a88d1","line":167,"range":{"start_line":167,"start_character":51,"end_line":167,"end_character":61},"in_reply_to":"aabb86c0_34d8bc7d","updated":"2026-02-18 13:11:40.000000000","message":"Done","commit_id":"79a74560d7b880026729f2a84af46212d0b8a445"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"2da22452238ff0628810ba7d44c95a373245bd54","unresolved":true,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"RabbitMQ streams are expected to be replicated across the nodes in the"},{"line_number":167,"context_line":"cluster. However, RabbitMQ itself will only create a replicas of a stream"},{"line_number":168,"context_line":"the stream is initially declared. This means that any streams declared when a"},{"line_number":169,"context_line":"RabbitMQ node is out of service must be explicitly managed by an operator."},{"line_number":170,"context_line":"RabbitMQ documents how to manage stream replicas here:"},{"line_number":171,"context_line":"https://www.rabbitmq.com/docs/streams#member-management"}],"source_content_type":"text/x-rst","patch_set":6,"id":"f82ff475_654909b0","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":3},"updated":"2026-02-16 05:58:42.000000000","message":"Missing \"when\"?","commit_id":"79a74560d7b880026729f2a84af46212d0b8a445"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"e71fcbbe0fa85290a54cef3fcb1dc29b283add6b","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"RabbitMQ streams are expected to be replicated across the nodes in the"},{"line_number":167,"context_line":"cluster. However, RabbitMQ itself will only create a replicas of a stream"},{"line_number":168,"context_line":"the stream is initially declared. This means that any streams declared when a"},{"line_number":169,"context_line":"RabbitMQ node is out of service must be explicitly managed by an operator."},{"line_number":170,"context_line":"RabbitMQ documents how to manage stream replicas here:"},{"line_number":171,"context_line":"https://www.rabbitmq.com/docs/streams#member-management"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3ca35914_f768b780","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":3},"in_reply_to":"f82ff475_654909b0","updated":"2026-02-18 13:11:40.000000000","message":"Done","commit_id":"79a74560d7b880026729f2a84af46212d0b8a445"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"2da22452238ff0628810ba7d44c95a373245bd54","unresolved":true,"context_lines":[{"line_number":171,"context_line":"https://www.rabbitmq.com/docs/streams#member-management"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"An example script to create any missing stream replicas can be found under"},{"line_number":174,"context_line":"``kolla-ansible/contrib/ops/rabbitmq/rabbitmq-repair-stream-replicas.sh``."},{"line_number":175,"context_line":"This should be executed from a host running the RabbitMQ container."},{"line_number":176,"context_line":"Currently, membership changes for streams `is not entirely safe"},{"line_number":177,"context_line":"\u003chttps://github.com/rabbitmq/rabbitmq-server/discussions/14246\u003e`__, so this"}],"source_content_type":"text/x-rst","patch_set":6,"id":"06f6ee2f_3a1b9377","line":174,"range":{"start_line":174,"start_character":0,"end_line":174,"end_character":73},"updated":"2026-02-16 05:58:42.000000000","message":"Could you please add a link to OpenDev?","commit_id":"79a74560d7b880026729f2a84af46212d0b8a445"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"e71fcbbe0fa85290a54cef3fcb1dc29b283add6b","unresolved":false,"context_lines":[{"line_number":171,"context_line":"https://www.rabbitmq.com/docs/streams#member-management"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"An example script to create any missing stream replicas can be found under"},{"line_number":174,"context_line":"``kolla-ansible/contrib/ops/rabbitmq/rabbitmq-repair-stream-replicas.sh``."},{"line_number":175,"context_line":"This should be executed from a host running the RabbitMQ container."},{"line_number":176,"context_line":"Currently, membership changes for streams `is not entirely safe"},{"line_number":177,"context_line":"\u003chttps://github.com/rabbitmq/rabbitmq-server/discussions/14246\u003e`__, so this"}],"source_content_type":"text/x-rst","patch_set":6,"id":"def3fa00_04052b51","line":174,"range":{"start_line":174,"start_character":0,"end_line":174,"end_character":73},"in_reply_to":"06f6ee2f_3a1b9377","updated":"2026-02-18 13:11:40.000000000","message":"Done","commit_id":"79a74560d7b880026729f2a84af46212d0b8a445"}]}
