Fairly nasty copy-and-paste based approach to making this more transactional. (Again, this time branched from stable correctly.)
Merge in stable
We can get down_from_gm twice in a row, don't blow up if we do.
Use mnesia:async_dirty/1 to reduce copypasta.
Eliminate list_tx variants since async_dirty is ignored in a tx.
Table locking -> O(n)
Attempt to clean up actions when terminating a slave. Slave termination now never deletes a queue.
Remove use of gm:leave/1: it does almost nothing, master does not invoke it, and it's racy anyway.
Revivify stable
Merged bug25846 into stable
That async_dirty is not needed, there's one in rabbit_runtime_parameters:list/2.
Merged bug25618 into stable
sp.
Merged bug25849 into stable
Maybe sync on slave promotion.
Explain
Added tag rabbitmq_v3_2_1 for changeset fde7d8bb464a
Cope with clients dying.
Remove 'evil' receive block.
Port the deadlock-breaking code from bug 25852.