)]}'
{"ansible/roles/rabbitmq/templates/definitions.json.j2":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":17,"context_line":"    {% endif %}"},{"line_number":18,"context_line":"  ],"},{"line_number":19,"context_line":"  \"policies\":["},{"line_number":20,"context_line":"    {\"vhost\": \"/\", \"name\": \"ha-all\", \"pattern\": \"^(?!(amq\\.)|(.*_fanout_)|(reply_)).*\", \"apply-to\": \"all\", \"definition\": {\"ha-mode\":\"all\"}, \"priority\":0}{% if project_name \u003d\u003d \u0027outward_rabbitmq\u0027 %},"},{"line_number":21,"context_line":"    {\"vhost\": \"{{ murano_agent_rabbitmq_vhost }}\", \"name\": \"ha-all\", \"pattern\": \".*\", \"apply-to\": \"all\", \"definition\": {\"ha-mode\":\"all\"}, \"priority\":0}"},{"line_number":22,"context_line":"    {% endif %}"},{"line_number":23,"context_line":"  ]"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"958c5ef7_1ed1ac90","line":20,"range":{"start_line":20,"start_character":57,"end_line":20,"end_character":58},"updated":"2021-12-31 10:24:20.000000000","message":"needs to be \\\\","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"8d8eebaee765e71623840215786cd540f8c76ed0","unresolved":true,"context_lines":[{"line_number":17,"context_line":"    {% endif %}"},{"line_number":18,"context_line":"  ],"},{"line_number":19,"context_line":"  \"policies\":["},{"line_number":20,"context_line":"    {\"vhost\": \"/\", \"name\": \"ha-all\", \"pattern\": \"^(?!(amq\\.)|(.*_fanout_)|(reply_)).*\", \"apply-to\": \"all\", \"definition\": {\"ha-mode\":\"all\"}, \"priority\":0}{% if project_name \u003d\u003d \u0027outward_rabbitmq\u0027 %},"},{"line_number":21,"context_line":"    {\"vhost\": \"{{ murano_agent_rabbitmq_vhost }}\", \"name\": \"ha-all\", \"pattern\": \".*\", \"apply-to\": \"all\", \"definition\": {\"ha-mode\":\"all\"}, \"priority\":0}"},{"line_number":22,"context_line":"    {% endif %}"},{"line_number":23,"context_line":"  ]"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"fe79a291_64030479","line":20,"range":{"start_line":20,"start_character":57,"end_line":20,"end_character":58},"in_reply_to":"4a075abe_31db1339","updated":"2022-01-10 17:30:20.000000000","message":"One other thing to note, is that this patch moves in the direction of making transient queues non-mirrored, which is a good thing [1]:\n\n```\nSemantically using transient entities (as in AMQP 0-9-1) and asking the system to replicate them makes no sense. The above example only confirms this: if you pin a transient queue to two nodes and they are both down, what should happen? Should this queue exist or not when the nodes come back up and promotion of out-of-sync mirrors is allowed? It is transient and all of its designated nodes were offline at some point; but it is also mirrored and promotion is allowed. I don\u0027t have an answer, as this combination of settings is too unlikely to be set intentionally.\n```\n[1] https://github.com/rabbitmq/rabbitmq-server/issues/2045\n\nPerhaps a good place to start, is to consider which queues should be mirrored (and durable), if any, and then expand the regex in this patch to cover all transient queues.","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"db6eb72cd73c8e72f2e45058a0a1978f59940b30","unresolved":true,"context_lines":[{"line_number":17,"context_line":"    {% endif %}"},{"line_number":18,"context_line":"  ],"},{"line_number":19,"context_line":"  \"policies\":["},{"line_number":20,"context_line":"    {\"vhost\": \"/\", \"name\": \"ha-all\", \"pattern\": \"^(?!(amq\\.)|(.*_fanout_)|(reply_)).*\", \"apply-to\": \"all\", \"definition\": {\"ha-mode\":\"all\"}, \"priority\":0}{% if project_name \u003d\u003d \u0027outward_rabbitmq\u0027 %},"},{"line_number":21,"context_line":"    {\"vhost\": \"{{ murano_agent_rabbitmq_vhost }}\", \"name\": \"ha-all\", \"pattern\": \".*\", \"apply-to\": \"all\", \"definition\": {\"ha-mode\":\"all\"}, \"priority\":0}"},{"line_number":22,"context_line":"    {% endif %}"},{"line_number":23,"context_line":"  ]"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"4a075abe_31db1339","line":20,"range":{"start_line":20,"start_character":57,"end_line":20,"end_character":58},"in_reply_to":"958c5ef7_1ed1ac90","updated":"2022-01-10 17:17:49.000000000","message":"Looking at a Victoria deployment with a 3 node control plane, I don\u0027t see any durable exchanges or queues at all, except for the internal `amq.*` exchanges:\n\n```\n(rabbitmq)[rabbitmq@stack1 /]$ rabbitmqctl list_exchanges durable, name, type   | grep true\ntrue\tamq.topic\ttopic\ntrue\tamq.rabbitmq.trace\ttopic\ntrue\tamq.headers\theaders\ntrue\tamq.direct\tdirect\ntrue\t\tdirect\ntrue\tamq.fanout\tfanout\ntrue\tamq.match\theaders\n```\n\n```\n(rabbitmq)[rabbitmq@intern-control3 /]$ rabbitmqctl list_queues type,durable, name | grep true | wc -l\n0\n```\n\nSo, I am confused about whether we should change these internal `amq.*` exchanges.\n\nThe discussion from OSA implies there was a reason:\n\n```\n16:04:44 \u003cgsantomaggio\u003e I am looking how Open Stack does use RabbitMQ,\n16:04:44 \u003cgsantomaggio\u003e I found this HA policy:\n16:04:44 \u003cgsantomaggio\u003e https://git.openstack.org/cgit/openstack/openstack-ansible-rabbitmq_server/tree/defaults/main.yml#n154\n16:04:44 \u003cgsantomaggio\u003e If I am not wrong, open stack does not use the autodelete queues anymore.\n16:04:44 \u003cgsantomaggio\u003e It works using queues with TTL, right?\n16:04:45 \u003cgsantomaggio\u003e So, this policy should be changed from \u0027^(?!amq\\.).*\u0027  to \u0027^(?!reply_\\.).*\u0027\n16:04:45 \u003cgsantomaggio\u003e What do you think?\n```\n\nBut when I look, I see plenty of queues with autodelete, but not the `amq.*` ones:\n\n```\n(rabbitmq)[rabbitmq@intern-control3 /]$ rabbitmqctl list_exchanges auto_delete, name, type | grep false\nfalse   amq.direct      direct\nfalse   amq.topic       topic\nfalse   amq.rabbitmq.trace      topic\nfalse   amq.match       headers\nfalse   amq.headers     headers\nfalse           direct\nfalse   neutron topic\nfalse   nova    topic\nfalse   heat    topic\nfalse   amq.fanout      fanout\nfalse   openstack       topic\n```\n\n```\n(rabbitmq)[rabbitmq@intern-control3 /]$ rabbitmqctl list_exchanges auto_delete, name, type | grep true\ntrue    engine_worker_fanout    fanout\ntrue    q-agent-notifier-dvr-update_fanout      fanout\ntrue    q-agent-notifier-network-update_fanout  fanout\ntrue    q-agent-notifier-security_group-update_fanout   fanout\ntrue    q-agent-notifier-network-delete_fanout  fanout\ntrue    neutron-vo-Port-1.5_fanout      fanout\ntrue    neutron-vo-SubPort-1.0_fanout   fanout\ntrue    q-agent-notifier-port-delete_fanout     fanout\ntrue    q-reports-plugin_fanout fanout\ntrue    q-agent-notifier-l2population-update_fanout     fanout\ntrue    q-agent-notifier-tunnel-update_fanout   fanout\ntrue    cinder-volume.intern-control1.dl@rbd-1_fanout   fanout\ntrue    neutron-vo-SecurityGroupRule-1.0_fanout fanout\ntrue    cinder-scheduler_fanout fanout\ntrue    dhcp_agent_fanout       fanout\ntrue    neutron-vo-Subnet-1.1_fanout    fanout\ntrue    q-agent-notifier-port-update_fanout     fanout\ntrue    compute_fanout  fanout\ntrue    heat-engine-listener_fanout     fanout\ntrue    scheduler_fanout        fanout\ntrue    q-l3-plugin_fanout      fanout\ntrue    cinder-volume.intern-control3.dl@rbd-1_fanout   fanout\ntrue    q-server-resource-versions_fanout       fanout\ntrue    q-agent-notifier-tunnel-delete_fanout   fanout\ntrue    cinder-backup_fanout    fanout\ntrue    engine_fanout   fanout\ntrue    cinder-volume.intern-control2.dl@rbd-1_fanout   fanout\ntrue    l3_agent_fanout fanout\ntrue    neutron-vo-Trunk-1.1_fanout     fanout\ntrue    neutron-vo-SecurityGroup-1.2_fanout     fanout\ntrue    cinder-volume_fanout    fanout\ntrue    neutron-vo-Network-1.1_fanout   fanout\ntrue    conductor_fanout        fanout\ntrue    q-plugin_fanout fanout\n```\n\n`amq.*` queues not being listed as auto-delete, doesn\u0027t match with the OSA release note:\n\n```\n---\nupgrade:\n  - |\n    The default queue policy has changed to ``^(?!(amq\\.)|(.*_fanout_)|(reply_)).*``\n    instead of ``^(?!amq\\.).*`` for efficiency.\n    The new HA policy excludes reply queues (these queues have a single consumer and TTL policy),\n    fanout queues (they have the TTL policy) and\n    amq queues (they are auto-delete queues, with a single consumer).\n```\n\nAside: I assume the TTL policy in the above release note comes in via rpc_timeout or something in the service configuration as I don\u0027t see any TTL polices, or operator policies in the Rabbit CLI.\n\nThe other thing to consider (perhaps not here), is that where we have HA queues, they will eventually need to become quorum queues [1]:\n\n```\nRemoval of Classic Queue mirroring\n\nWhy are we making this decision?\nQuorum Queues provide greater data safety as compared to classic mirrored queues.\n\n```\n\n[1] https://blog.rabbitmq.com/posts/2021/08/4.0-deprecation-announcements/\n\nTLDR is that more investigation is required.","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"}],"releasenotes/notes/fix-rabbit-ha-policy-pattern-fd67002cde1c55c2.yaml":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Rabbitmq ha policy pattern used to include transient queues such as fanout"},{"line_number":5,"context_line":"    and reply queues to be mirroed to all hosts. Given there is usually only"},{"line_number":6,"context_line":"    one consumer, this is overkill. Reducing the amount of this busy work"},{"line_number":7,"context_line":"    will help performance. It also appears to help wen recoving from a network"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"f33647ec_f54904f8","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":13},"updated":"2021-12-31 10:24:20.000000000","message":"RabbitMQ","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Rabbitmq ha policy pattern used to include transient queues such as fanout"},{"line_number":5,"context_line":"    and reply queues to be mirroed to all hosts. Given there is usually only"},{"line_number":6,"context_line":"    one consumer, this is overkill. Reducing the amount of this busy work"},{"line_number":7,"context_line":"    will help performance. It also appears to help wen recoving from a network"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1af10d8f_becbdf30","line":4,"range":{"start_line":4,"start_character":13,"end_line":4,"end_character":16},"updated":"2021-12-31 10:24:20.000000000","message":"ha-all","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Rabbitmq ha policy pattern used to include transient queues such as fanout"},{"line_number":5,"context_line":"    and reply queues to be mirroed to all hosts. Given there is usually only"},{"line_number":6,"context_line":"    one consumer, this is overkill. Reducing the amount of this busy work"},{"line_number":7,"context_line":"    will help performance. It also appears to help wen recoving from a network"},{"line_number":8,"context_line":"    partitions, as we hit these kinds of rabbimq message discard errors:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"dd57f489_d2343bc4","line":5,"range":{"start_line":5,"start_character":27,"end_line":5,"end_character":35},"updated":"2021-12-31 10:24:20.000000000","message":"mirrored","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Rabbitmq ha policy pattern used to include transient queues such as fanout"},{"line_number":5,"context_line":"    and reply queues to be mirroed to all hosts. Given there is usually only"},{"line_number":6,"context_line":"    one consumer, this is overkill. Reducing the amount of this busy work"},{"line_number":7,"context_line":"    will help performance. It also appears to help wen recoving from a network"},{"line_number":8,"context_line":"    partitions, as we hit these kinds of rabbimq message discard errors:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"4a65b811_894d2730","line":5,"range":{"start_line":5,"start_character":20,"end_line":5,"end_character":21},"updated":"2021-12-31 10:24:20.000000000","message":"what about internal amq. ones?","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Rabbitmq ha policy pattern used to include transient queues such as fanout"},{"line_number":5,"context_line":"    and reply queues to be mirroed to all hosts. Given there is usually only"},{"line_number":6,"context_line":"    one consumer, this is overkill. Reducing the amount of this busy work"},{"line_number":7,"context_line":"    will help performance. It also appears to help wen recoving from a network"},{"line_number":8,"context_line":"    partitions, as we hit these kinds of rabbimq message discard errors:"},{"line_number":9,"context_line":"    https://github.com/rabbitmq/rabbitmq-server/issues/2045"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"60f53e85_c989939f","line":6,"range":{"start_line":6,"start_character":25,"end_line":6,"end_character":26},"updated":"2021-12-31 10:24:20.000000000","message":"an","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Rabbitmq ha policy pattern used to include transient queues such as fanout"},{"line_number":5,"context_line":"    and reply queues to be mirroed to all hosts. Given there is usually only"},{"line_number":6,"context_line":"    one consumer, this is overkill. Reducing the amount of this busy work"},{"line_number":7,"context_line":"    will help performance. It also appears to help wen recoving from a network"},{"line_number":8,"context_line":"    partitions, as we hit these kinds of rabbimq message discard errors:"},{"line_number":9,"context_line":"    https://github.com/rabbitmq/rabbitmq-server/issues/2045"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"48e82d15_03ac25ef","line":7,"range":{"start_line":7,"start_character":55,"end_line":7,"end_character":64},"updated":"2021-12-31 10:24:20.000000000","message":"recovering","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Rabbitmq ha policy pattern used to include transient queues such as fanout"},{"line_number":5,"context_line":"    and reply queues to be mirroed to all hosts. Given there is usually only"},{"line_number":6,"context_line":"    one consumer, this is overkill. Reducing the amount of this busy work"},{"line_number":7,"context_line":"    will help performance. It also appears to help wen recoving from a network"},{"line_number":8,"context_line":"    partitions, as we hit these kinds of rabbimq message discard errors:"},{"line_number":9,"context_line":"    https://github.com/rabbitmq/rabbitmq-server/issues/2045"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3c35baf4_b952b50b","line":7,"range":{"start_line":7,"start_character":51,"end_line":7,"end_character":55},"updated":"2021-12-31 10:24:20.000000000","message":"when","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    and reply queues to be mirroed to all hosts. Given there is usually only"},{"line_number":6,"context_line":"    one consumer, this is overkill. Reducing the amount of this busy work"},{"line_number":7,"context_line":"    will help performance. It also appears to help wen recoving from a network"},{"line_number":8,"context_line":"    partitions, as we hit these kinds of rabbimq message discard errors:"},{"line_number":9,"context_line":"    https://github.com/rabbitmq/rabbitmq-server/issues/2045"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"0d0c4129_9618a9de","line":8,"range":{"start_line":8,"start_character":41,"end_line":8,"end_character":49},"updated":"2021-12-31 10:24:20.000000000","message":"RabbitMQ","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"1d7a5517c9fd06e130d4eae9a884e50449ec5376","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    one consumer, this is overkill. Reducing the amount of this busy work"},{"line_number":7,"context_line":"    will help performance. It also appears to help wen recoving from a network"},{"line_number":8,"context_line":"    partitions, as we hit these kinds of rabbimq message discard errors:"},{"line_number":9,"context_line":"    https://github.com/rabbitmq/rabbitmq-server/issues/2045"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"788828ef_530bd1d4","line":9,"updated":"2021-12-31 10:24:20.000000000","message":"based on the referenced (in the commit message) bug report on k-a, this also helps in other situations","commit_id":"4114565d9d6bba9dade019c71f5493accbdc97a6"}]}
