diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2014-12-11 16:17:57 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2014-12-11 16:17:57 +0000 |
| commit | 8ccd6154e7b34073a5eb34c8cbf1c4a1bfec0a52 (patch) | |
| tree | a40a32a8219daee2987a15d6a0ecae342f8393e9 | |
| parent | 2188f587af89f71c4e8bbbcfb19cf35af103f7b2 (diff) | |
| download | rabbitmq-server-git-8ccd6154e7b34073a5eb34c8cbf1c4a1bfec0a52.tar.gz | |
Backport the part of 505868f421db which fixes ram_bytes when requeueing an in-memory message to delta, and do the same for beta.
| -rw-r--r-- | src/rabbit_variable_queue.erl | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl index d076b534e6..6415eb6d44 100644 --- a/src/rabbit_variable_queue.erl +++ b/src/rabbit_variable_queue.erl @@ -1485,7 +1485,12 @@ publish_alpha(MsgStatus, State) -> publish_beta(MsgStatus, State) -> {MsgStatus1, State1} = maybe_write_to_disk(true, false, MsgStatus, State), - {m(trim_msg_status(MsgStatus1)), State1}. + MsgStatus2 = m(trim_msg_status(MsgStatus1)), + case {MsgStatus1#msg_status.msg =:= undefined, + MsgStatus2#msg_status.msg =:= undefined} of + {false, true} -> {MsgStatus2, upd_ram_bytes(-1, MsgStatus, State1)}; + _ -> {MsgStatus2, State1} + end. %% Rebuild queue, inserting sequence ids to maintain ordering queue_merge(SeqIds, Q, MsgIds, Limit, PubFun, State) -> @@ -1521,8 +1526,12 @@ delta_merge(SeqIds, Delta, MsgIds, State) -> msg_from_pending_ack(SeqId, State0), {_MsgStatus, State2} = maybe_write_to_disk(true, true, MsgStatus, State1), + State3 = case MsgStatus#msg_status.msg of + undefined -> State2; + _ -> upd_ram_bytes(-1, MsgStatus, State2) + end, {expand_delta(SeqId, Delta0), [MsgId | MsgIds0], - upd_bytes(1, -1, MsgStatus, State2)} + upd_bytes(1, -1, MsgStatus, State3)} end, {Delta, MsgIds, State}, SeqIds). %% Mostly opposite of record_pending_ack/2 |
