-
Notifications
You must be signed in to change notification settings - Fork 606
Fix perpetual auto-recovery problem #1203
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Your description of the problem and proposed solution make sense to me. |
@mot256 thank you. Can you please submit the same change against |
Fix perpetual auto-recovery problem (cherry picked from commit 480c739)
I cherry-picked this to |
Will do. Thanks. |
@michaelklishin when are you planning to release 3.6.1 that will include this fix? We are having issues in production that are directly linked to this issue. |
I cannot make any ETA promises but we can try to ship a patch release this week. |
Sorry it didn't seem that urgent. I'll get a release done within the next few hours. |
@mot256 - https://www.nuget.org/packages/RabbitMQ.Client/6.3.1 I'm getting the release details sorted out here right now. Thanks again for your contribution. |
Proposed Changes
We have found an issue where if a consumer of an auto-delete queue is cancelled, the auto-recovery will fail perpetually.
After debugging we found that, when a consumer of an auto-delete queue is cancelled, the recording of the queue is removed from the auto-recovery list, but the associated bindings were not removed from the recording. Leading to a perpetual error stating that the binding cannot be done because the queue does not exist.
Types of Changes
What types of changes does your code introduce to this project?
Put an
x
in the boxes that applyChecklist
Put an
x
in the boxes that apply. You can also fill these out after creatingthe PR. If you're unsure about any of them, don't hesitate to ask on the
mailing list. We're here to help! This is simply a reminder of what we are
going to look for before merging your code.
CONTRIBUTING.md
documentFurther Comments
You will also note that I fixed inconsistent locking that could lead to further auto-recovery issues due to _recordedBindings variable not being locked with the same lock while reading and writing.