diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2013-05-31 13:31:39 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2013-05-31 13:31:39 +0100 |
| commit | e7ef7741e9e3b1989e9d8c0f80d0184f5e0fc694 (patch) | |
| tree | 21ca1d832eeb701629b61ea02ffa9138fb75da87 | |
| parent | 1ad39bfc97bcff4256e15963382a1083fb215ae5 (diff) | |
| download | rabbitmq-server-git-e7ef7741e9e3b1989e9d8c0f80d0184f5e0fc694.tar.gz | |
Attempt to deal with missing segment file.
| -rw-r--r-- | src/rabbit_queue_index.erl | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl index ea70208fac..9a2d2a4a5d 100644 --- a/src/rabbit_queue_index.erl +++ b/src/rabbit_queue_index.erl @@ -1022,7 +1022,18 @@ journal_minus_segment1({no_pub, del, ack}, {?PUB, no_del, no_ack}) -> journal_minus_segment1({no_pub, del, ack}, {?PUB, del, no_ack}) -> {{no_pub, no_del, ack}, 0}; journal_minus_segment1({no_pub, del, ack}, {?PUB, del, ack}) -> - {undefined, -1}. + {undefined, -1}; + +%% Missing segment. If flush_journal/1 is interrupted after deleting +%% the segment but before truncating the journal we can get these +%% cases: a delivery and an acknowledgement in the journal, or just an +%% acknowledgement in the journal, but with no segment. In both cases +%% we have really forgotten the message; so ignore what's in the +%% journal. +journal_minus_segment1({no_pub, no_del, ack}, undefined) -> + {undefined, 0}; +journal_minus_segment1({no_pub, del, ack}, undefined) -> + {undefined, 0}. %%---------------------------------------------------------------------------- %% upgrade |
