diff options
author | Tim Watson <watson.timothy@gmail.com> | 2013-12-11 14:13:26 +0000 |
---|---|---|
committer | Tim Watson <watson.timothy@gmail.com> | 2013-12-11 14:13:26 +0000 |
commit | 99fc8c2196dabe90dc6849cec8cca0237df6eb39 (patch) | |
tree | cae328329108665961837c049c2b2b7c6c3f435a | |
parent | e73271fdb74898cce0982a181a849a8a937cbe65 (diff) | |
download | rabbitmq-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.erl | 1 | ||||
-rw-r--r-- | src/rabbit_queue_index.erl | 6 | ||||
-rw-r--r-- | src/rabbit_recovery_indexes.erl | 17 |
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}; |