When does quorum queue membership reconciliation kick in? #11634
-
Describe the bug
Reproduction steps
* Note that I tried with and without the interval settings
* In my case I shutdown
Expected behavior
Additional contextI tried several other things
The only thing that actually worked was to remove (forget) the offline member and then restart all the other 3 nodes. |
Beta Was this translation helpful? Give feedback.
Replies: 6 comments 18 replies
-
|
Beta Was this translation helpful? Give feedback.
-
Unless you remove the down RabbitMQ node (with |
Beta Was this translation helpful? Give feedback.
-
@shadizar128 this feature was designed replace replicas that were hosted on permanently removed replicas. RabbitMQ cannot know if a node is down for just a few minutes for an upgrade or it is never coming back. You must explicitly remove nodes (or QQ replicas) and then the reconciliation mechanism will notice that new ones should be added. Otherwise you'd end up with a replica on every node very quickly, after a single rolling upgrade. |
Beta Was this translation helpful? Give feedback.
-
@shadizar128 if you ship RabbitMQ as part of a product, how exactly you manage QQ and stream replicas is up to you. It is your problem to solve, not ours. Specifically if you are not a regular contributor or a paying customer. QQ reconciliation was contributed by a very large scale user which removes nodes which are considered unavailable (what conditions and criteria they use, I don't know), so this mechanism will kick in. They never expected it to kick in during a rolling upgrade because right now, this is how they upgrade clusters. But that will change and perhaps more options will be introduced. In any case, replica management in QQ and streams is explicit by design. Adding new replicas when a cluster member stops is a terrible idea, as I said above. It would mean that you'd (potentially) have a new replica added every time a node is stopped for an upgrade. |
Beta Was this translation helpful? Give feedback.
-
Finally, these settings
use a crazy low interval. Running this expensive — even in 3.13.4, where it was significantly optimized — operation every second is a complete waste of your cluster's resources. Just like considering a client unavailable too early is not going to work well in practice, a reconciliation interval of less than 15, maybe even 30 seconds is guaranteed to have side effects (resource burn but maybe even likely untested and hard to reason about scenarios such as overlapping reconciliation operations) and won't yield any practical benefit. |
Beta Was this translation helpful? Give feedback.
-
Hopefully rabbitmq/rabbitmq-website#2253 settles it, so we can close this discussion. |
Beta Was this translation helpful? Give feedback.
@shadizar128 if you ship RabbitMQ as part of a product, how exactly you manage QQ and stream replicas is up to you. It is your problem to solve, not ours. Specifically if you are not a regular contributor or a paying customer.
QQ reconciliation was contributed by a very large scale user which removes nodes which are considered unavailable (what conditions and criteria they use, I don't know), so this mechanism will kick in. They never expected it to kick in during a rolling upgrade because right now, this is how they upgrade clusters. But that will change and perhaps more options will be introduced.
In any case, replica management in QQ and streams is explicit by design. Adding new replic…