assert queue dlx arg equivalence
and restructure code to make future omissions less likely
optimisation: shrink gen_server2 state slightly
for a (very) modest performance gain, and slightly neater code
refactor gen_server2 debug handling
- more uniformity
- less code duplication
- less closure creation -> performance increase
optimisation: improve performance of permission cache
Don't update the cache when the permission is already in it. This
saves list munching and a 'put' at the expense of no longer being
strictly LRU, but that only affects pathological cases.
optimise rabbit_amqqueue:qpids/1 common case
common-case optimisations for delegate:invoke[_no_result]
optimise "route to no queues" path
optimise "no confirms" case of rabbit_amqqueue_process:discard
cosmetic
restrict previous optimisation, for better workingness
optimise rabbit_channel:ack/2
- moving the ?INCR_STATS call inside the fold_per_queue fun reduces
  consing when stats are disabled
- since this was the only call to fold_per_queue where we cared about
  the result, and we no longer do, we can switch the 'fold' to
  'foreach'
optimise ack collection
for the common case of ack'ing/reject'ing the oldest tag
record pending acks in a queue rather than set in queue process
Just as we do in the channel; this is more efficient for the typical
ack-in-order access pattern.
We depend on tags being passed to the queue process in order when
ack'ing/rejecting. This requires some slightly fiddly code in the
channel.
simplify & document ordering
get rid of #tx{}
and fix uncommitted_acks info item
oops
Merge bug 25385 (into default, although it was branched from stable).
tweak: make use of rabbit_misc:rs/1
Merge bug25386
get rid of vq's ram_ack_index
and instead track ram and disk acks in separate gb_trees, which is
more efficient.