rabbit_db_cluster: Check rabbit
is stopped in forget_node()
#8829
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why
rabbit_mnesia
indirectly checks thatrabbit
is stopped on the remote node becausemnesia:del_table_copy()
requires that Mnesia is stopped to delete the schema. However, this is not specific to Mnesia and we wantrabbit
to be stopped when we use Khepri in the future.How
We use
rabbit:is_running(Node)
to query the status of RabbitMQ on the remote node to forget. This is not atomic so there is a small chance that RabbitMQ is restarted between the check and the actual forget.Note:
rabbit_mnesia
also removes some queues and emit a "left cluster" event after a successful forget. However, this part was not moved because other parts of the module rely on this in RPC calls. To keep nodes compatibles, the calls are left in place. They will be duplicated for Khepri.