diff options
| author | Diana Corbacho <diana.corbacho@erlang-solutions.com> | 2016-06-24 12:30:32 +0100 |
|---|---|---|
| committer | Diana Corbacho <diana.corbacho@erlang-solutions.com> | 2016-06-24 12:30:32 +0100 |
| commit | 8e8787966d087c8400eddfd9f471ef7d60094342 (patch) | |
| tree | 588a1f520a0d21ad1a166c0f4c81130999baa18d | |
| parent | b9d7e4d7e4699e927e978ea3bb7393da11491655 (diff) | |
| download | rabbitmq-server-git-8e8787966d087c8400eddfd9f471ef7d60094342.tar.gz | |
Avoid index reset when publisher confirms are pending
| -rw-r--r-- | src/rabbit_variable_queue.erl | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl index 45dde112a5..7bf7f2ec54 100644 --- a/src/rabbit_variable_queue.erl +++ b/src/rabbit_variable_queue.erl @@ -556,7 +556,7 @@ delete_crashed(#amqqueue{name = QName}) -> ok = rabbit_queue_index:erase(QName). purge(State = #vqstate { len = Len }) -> - case is_pending_ack_empty(State) of + case is_pending_ack_empty(State) and is_unconfirmed_empty(State) of true -> {Len, purge_and_index_reset(State)}; false -> @@ -1648,6 +1648,9 @@ reset_qi_state(State = #vqstate{index_state = IndexState}) -> is_pending_ack_empty(State) -> count_pending_acks(State) =:= 0. +is_unconfirmed_empty(#vqstate { unconfirmed = UC }) -> + gb_sets:is_empty(UC). + count_pending_acks(#vqstate { ram_pending_ack = RPA, disk_pending_ack = DPA, qi_pending_ack = QPA }) -> |
