rabbitmq / ra

A Raft implementation for Erlang and Elixir that strives to be efficient and make it easier to use multiple Raft clusters in a single system.
Other
798 stars 93 forks source link

When using multi statem call only retry for certain errors. #433

Closed kjnilsson closed 2 months ago

kjnilsson commented 2 months ago

Instead of trying all server ids in the supplied list whenever an error or timeout was encountered this change only retries when certain errors such as noproc, nodedown etc is encountered.

If all errors result in a retry genuine API errors such as {error, not_member} in response to a ra:remove_member/2 interaction would be hidden in the aggregate error that is returned once all members have returned.

Related: https://github.com/rabbitmq/rabbitmq-server/discussions/11029