summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Watson <watson.timothy@gmail.com>2013-12-11 14:13:26 +0000
committerTim Watson <watson.timothy@gmail.com>2013-12-11 14:13:26 +0000
commit99fc8c2196dabe90dc6849cec8cca0237df6eb39 (patch)
treecae328329108665961837c049c2b2b7c6c3f435a
parente73271fdb74898cce0982a181a849a8a937cbe65 (diff)
downloadrabbitmq-server-99fc8c2196dabe90dc6849cec8cca0237df6eb39.tar.gz
Further refactoring
Inline check_clean_shutdown for improved clarity, move index table recovery up into rabbit:recover/0, fix/update recovery index specs.
-rw-r--r--src/rabbit.erl1
-rw-r--r--src/rabbit_queue_index.erl6
-rw-r--r--src/rabbit_recovery_indexes.erl17
3 files changed, 11 insertions, 13 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 67459b17..c0010d62 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -595,6 +595,7 @@ boot_delegate() ->
recover() ->
rabbit_policy:recover(),
+ ok = rabbit_recovery_indexes:recover(),
Qs = rabbit_amqqueue:recover(),
ok = rabbit_binding:recover(rabbit_exchange:recover(),
[QName || #amqqueue{name = QName} <- Qs]),
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl
index 4ebcdfaf..4349a2f0 100644
--- a/src/rabbit_queue_index.erl
+++ b/src/rabbit_queue_index.erl
@@ -253,7 +253,10 @@ recover(Name, Terms, MsgStoreRecovered, ContainsCheckFun, OnSyncFun) ->
State = #qistate { dir = Dir } = blank_state(Name),
State1 = State #qistate { on_sync = OnSyncFun },
CleanShutdown =
- rabbit_recovery_indexes:check_clean_shutdown(Dir),
+ case rabbit_recovery_indexes:remove_recovery_terms(Dir) of
+ ok -> true;
+ {error, not_found} -> false
+ end,
case CleanShutdown andalso MsgStoreRecovered of
true -> RecoveredCounts = proplists:get_value(segments, Terms, []),
init_clean(RecoveredCounts, State1);
@@ -360,7 +363,6 @@ bounds(State = #qistate { segments = Segments }) ->
{LowSeqId, NextSeqId, State}.
recover(DurableQueues) ->
- ok = rabbit_recovery_indexes:recover(),
DurableDict = dict:from_list([ {queue_name_to_dir_name(Queue), Queue} ||
Queue <- DurableQueues ]),
QueuesDir = queues_dir(),
diff --git a/src/rabbit_recovery_indexes.erl b/src/rabbit_recovery_indexes.erl
index de72aef6..67d46a32 100644
--- a/src/rabbit_recovery_indexes.erl
+++ b/src/rabbit_recovery_indexes.erl
@@ -24,7 +24,6 @@
-export([recover/0,
start_link/0,
store_recovery_terms/2,
- check_clean_shutdown/1,
read_recovery_terms/1,
remove_recovery_terms/1,
flush/0]).
@@ -41,15 +40,14 @@
-spec(recover() -> 'ok').
-spec(start_link() -> rabbit_types:ok_pid_or_error()).
-spec(store_recovery_terms(
- Name :: rabbit_misc:resource_name(),
+ Name :: file:filename(),
Terms :: term()) -> rabbit_types:ok_or_error(term())).
--spec(check_clean_shutdown(
- rabbit_misc:resource_name()) ->
- boolean() | rabbit_types:error(term())).
-spec(read_recovery_terms(
- rabbit_misc:resource_name()) ->
- rabbit_types:ok_or_error2(term(), not_found)).
-
+ file:filename()) ->
+ rabbit_types:ok_or_error(not_found)).
+-spec(remove_recovery_terms(
+ file:filename()) ->
+ rabbit_types:ok_or_error(not_found)).
-endif. % use_specs
-include("rabbit.hrl").
@@ -72,9 +70,6 @@ start_link() ->
store_recovery_terms(Name, Terms) ->
dets:insert(?MODULE, {Name, Terms}).
-check_clean_shutdown(Name) ->
- ok == remove_recovery_terms(Name).
-
read_recovery_terms(Name) ->
case dets:lookup(?MODULE, Name) of
[{_, Terms}] -> {ok, Terms};