summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_queue_index.erl13
-rw-r--r--src/rabbit_tests.erl18
-rw-r--r--src/rabbit_variable_queue.erl8
3 files changed, 15 insertions, 24 deletions
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl
index 241766b823..36dd5c6d1c 100644
--- a/src/rabbit_queue_index.erl
+++ b/src/rabbit_queue_index.erl
@@ -32,9 +32,8 @@
-module(rabbit_queue_index).
-export([init/3, terminate/2, terminate_and_erase/1, publish/4,
- deliver/2, ack/2, sync/2, flush/1,
- read_segment_entries/2, next_segment_boundary/1, segment_size/0,
- find_lowest_seq_id_seg_and_next_seq_id/1, recover/1]).
+ deliver/2, ack/2, sync/2, flush/1, read_segment_entries/2,
+ next_segment_boundary/1, segment_size/0, bounds/1, recover/1]).
-define(CLEAN_FILENAME, "clean.dot").
@@ -198,7 +197,7 @@
{[{guid(), seq_id(), boolean(), boolean()}], qistate()}).
-spec(next_segment_boundary/1 :: (seq_id()) -> seq_id()).
-spec(segment_size/0 :: () -> non_neg_integer()).
--spec(find_lowest_seq_id_seg_and_next_seq_id/1 :: (qistate()) ->
+-spec(bounds/1 :: (qistate()) ->
{non_neg_integer(), non_neg_integer(), qistate()}).
-spec(recover/1 :: ([queue_name()]) -> {[[any()]], startup_fun_state()}).
@@ -347,7 +346,7 @@ next_segment_boundary(SeqId) ->
segment_size() ->
?SEGMENT_ENTRY_COUNT.
-find_lowest_seq_id_seg_and_next_seq_id(State) ->
+bounds(State) ->
SegNums = all_segment_nums(State),
%% We don't want the lowest seq_id, merely the seq_id of the start
%% of the lowest segment. That seq_id may not actually exist, but
@@ -358,13 +357,13 @@ find_lowest_seq_id_seg_and_next_seq_id(State) ->
%% next segment: it makes life much easier.
%% SegNums is sorted, ascending.
- {LowSeqIdSeg, NextSeqId} =
+ {LowSeqId, NextSeqId} =
case SegNums of
[] -> {0, 0};
[MinSeg|_] -> {reconstruct_seq_id(MinSeg, 0),
reconstruct_seq_id(1 + lists:last(SegNums), 0)}
end,
- {LowSeqIdSeg, NextSeqId, State}.
+ {LowSeqId, NextSeqId, State}.
recover(DurableQueues) ->
DurableDict = dict:from_list([ {queue_name_to_dir_name(Queue), Queue} ||
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index 97d74fc93f..f69a9dc594 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -1455,11 +1455,9 @@ test_queue_index() ->
SeqIdsA = lists:seq(0,9999),
SeqIdsB = lists:seq(10000,19999),
{0, _Terms, Qi0} = test_queue_init(),
- {0, 0, Qi1} =
- rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(Qi0),
+ {0, 0, Qi1} = rabbit_queue_index:bounds(Qi0),
{Qi2, SeqIdsGuidsA} = queue_index_publish(SeqIdsA, false, Qi1),
- {0, SegmentSize, Qi3} =
- rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(Qi2),
+ {0, SegmentSize, Qi3} = rabbit_queue_index:bounds(Qi2),
{ReadA, Qi4} = rabbit_queue_index:read_segment_entries(0, Qi3),
ok = verify_read_with_published(false, false, ReadA,
lists:reverse(SeqIdsGuidsA)),
@@ -1469,11 +1467,9 @@ test_queue_index() ->
ok = rabbit_variable_queue:start([test_queue()]),
%% should get length back as 0, as all the msgs were transient
{0, _Terms1, Qi6} = test_queue_init(),
- {0, 0, Qi7} =
- rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(Qi6),
+ {0, 0, Qi7} = rabbit_queue_index:bounds(Qi6),
{Qi8, SeqIdsGuidsB} = queue_index_publish(SeqIdsB, true, Qi7),
- {0, TwoSegs, Qi9} =
- rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(Qi8),
+ {0, TwoSegs, Qi9} = rabbit_queue_index:bounds(Qi8),
{ReadB, Qi10} = rabbit_queue_index:read_segment_entries(0, Qi9),
ok = verify_read_with_published(false, true, ReadB,
lists:reverse(SeqIdsGuidsB)),
@@ -1483,8 +1479,7 @@ test_queue_index() ->
%% should get length back as 10000
LenB = length(SeqIdsB),
{LenB, _Terms2, Qi12} = test_queue_init(),
- {0, TwoSegs, Qi13} =
- rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(Qi12),
+ {0, TwoSegs, Qi13} = rabbit_queue_index:bounds(Qi12),
Qi14 = queue_index_deliver(SeqIdsB, Qi13),
{ReadC, Qi15} = rabbit_queue_index:read_segment_entries(0, Qi14),
ok = verify_read_with_published(true, true, ReadC,
@@ -1492,8 +1487,7 @@ test_queue_index() ->
Qi16 = rabbit_queue_index:ack(SeqIdsB, Qi15),
Qi17 = queue_index_flush(Qi16),
%% Everything will have gone now because #pubs == #acks
- {0, 0, Qi18} =
- rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(Qi17),
+ {0, 0, Qi18} = rabbit_queue_index:bounds(Qi17),
_Qi19 = rabbit_queue_index:terminate([], Qi18),
ok = stop_msg_store(),
ok = rabbit_variable_queue:start([test_queue()]),
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index 079c14eb9a..eb0f45c120 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -283,8 +283,7 @@ init(QueueName, IsDurable, _Recover) ->
end,
{DeltaCount, Terms, IndexState} =
rabbit_queue_index:init(QueueName, MsgStoreRecovered, ContainsCheckFun),
- {DeltaSeqId, NextSeqId, IndexState1} =
- rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(IndexState),
+ {LowSeqId, NextSeqId, IndexState1} = rabbit_queue_index:bounds(IndexState),
{PRef, TRef, Terms1} =
case [persistent_ref, transient_ref] -- proplists:get_keys(Terms) of
@@ -296,7 +295,7 @@ init(QueueName, IsDurable, _Recover) ->
DeltaCount1 = proplists:get_value(persistent_count, Terms1, DeltaCount),
Delta = case DeltaCount1 == 0 andalso DeltaCount /= undefined of
true -> ?BLANK_DELTA;
- false -> #delta { start_seq_id = DeltaSeqId,
+ false -> #delta { start_seq_id = LowSeqId,
count = DeltaCount1,
end_seq_id = NextSeqId }
end,
@@ -362,8 +361,7 @@ delete_and_terminate(State) ->
%% leaving only partial segments around.
IndexState1 = rabbit_queue_index:flush(IndexState),
IndexState2 =
- case rabbit_queue_index:find_lowest_seq_id_seg_and_next_seq_id(
- IndexState1) of
+ case rabbit_queue_index:bounds(IndexState1) of
{N, N, IndexState3} ->
IndexState3;
{DeltaSeqId, NextSeqId, IndexState3} ->