Skip to content

Fix quorum queues rejecting messages during deletion#15365

Open
luos wants to merge 1 commit intorabbitmq:mainfrom
Seventh-State:fix-qq-rejects
Open

Fix quorum queues rejecting messages during deletion#15365
luos wants to merge 1 commit intorabbitmq:mainfrom
Seventh-State:fix-qq-rejects

Conversation

@luos
Copy link
Contributor

@luos luos commented Jan 28, 2026

Hi,

Here is a proposal for the fix of #15334 as discussed.

Let me know what you think.

Proposed Changes

  • implement a method to clear bindings before a queue is deleted
  • leave the "after delete" procedure to make sure to clean up after deletion in case new bindings were created
  • clear the bindings before the ra:delete_cluster call
  • usage of default exchange may result in rejections

Fixes: #15334

Please describe the big picture of your changes here to communicate to the RabbitMQ team why we should accept this pull request.
If it fixes a bug or resolves a feature request, be sure to link to that issue.

A pull request that doesn't explain why the change was made has a much lower chance of being accepted.

Types of Changes

  • Bug fix (non-breaking change which fixes issue Quorum queue rejects messages during deletion #15334)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause an observable behavior change in existing systems)
  • Documentation improvements (corrections, new content, etc)
  • Cosmetic change (whitespace, formatting, etc)
  • Build system and/or CI

Checklist

Put an x in the boxes that apply.
You can also fill these out after creating the PR.
This is simply a reminder of what we are going to look for before merging your code.

  • Mandatory: I (or my employer/client) have have signed the CA (see https://github.com/rabbitmq/cla)
  • I have read the CONTRIBUTING.md document
  • I have added tests that prove my fix is effective or that my feature works
  • All tests pass locally with my changes
  • If relevant, I have added necessary documentation to https://github.com/rabbitmq/rabbitmq-website
  • If relevant, I have added this change to the first version(s) in release-notes that I expect to introduce it

- implement a method to clear bindings before a queue is deleted
- leave the "after delete" procedure to make sure to clean up after
deletion in case new bindings were created
- clear the bindings before the ra:delete_cluster call
- usage of default exchange may result in rejections

Fixes: rabbitmq#15334
@michaelklishin
Copy link
Collaborator

michaelklishin commented Jan 28, 2026

As seen numerous times before, we are "fixing" RabbitMQ while what needs fixing is a system design that depends on messages being accepted by a queue that's being concurrently deleted.

Deleting bindings before the queue is deleted doesn't make any more sense than deleting the queue first. The fact that it happens to "fix" a system that depends on a very subtle, inherently timing-sensitive behavior that differs between CQs and QQs doesn't justify the change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants