Skip to content
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

QQ: persist voter state in amqqueue record queue type state field. #10436

Open
kjnilsson opened this issue Jan 29, 2024 · 2 comments
Open

QQ: persist voter state in amqqueue record queue type state field. #10436

kjnilsson opened this issue Jan 29, 2024 · 2 comments
Assignees

Comments

@kjnilsson
Copy link
Contributor

Is your feature request related to a problem? Please describe.

In RabbitMQ some components do their own, offline quorum availability calculations (MGMT API, health check commands, etc) outside of the Ra cluster itself, typically due to performance reasons. Right now the only information that is readily available on all nodes is the nodes key in the amqqueue record queue type state map. This list of member nodes include both voters and non voters and thus in the case where a quorum queue has non voters the quorum calculations are likely to be even more inaccurate than otherwise.

Describe the solution you'd like

To assist in these offline calculations we can persist the list of voter nodes in the queue type state field also in a new key called voters.

This field can be updated in the quorum queue's tick handler as from Ra 2.9 we can use the new ra:member_info/1 API to get more detailed information on the current member set.

The voters field only needs to be part of the queue type state map when there are non voters in the system and it is thus different from the set in nodes.

Describe alternatives you've considered

Right now we either need to ignore the potential for non voters in the quorum calculations or perform potentially performance impacting queries of the Ra leader to get this information.

Additional context

No response

@kjnilsson
Copy link
Contributor Author

/cc @illotum @michaelklishin @SimonUnge

@kjnilsson kjnilsson self-assigned this Jan 29, 2024
@kjnilsson
Copy link
Contributor Author

The first step is to improve the Ra handle_aux API such that the QQ tick handler can gain access to current member/voter information without calling back into the ra process. rabbitmq/ra#414

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

No branches or pull requests

1 participant