diff options
| author | Tim Watson <watson.timothy@gmail.com> | 2014-01-23 19:42:38 +0000 |
|---|---|---|
| committer | Tim Watson <watson.timothy@gmail.com> | 2014-01-23 19:42:38 +0000 |
| commit | 9a4ecf490da2b5b5519508c5f97a1415811898bc (patch) | |
| tree | 813b75b6dfb7a08db3abad0360cfb9ed780152a9 /src | |
| parent | ea9cbf46e5660d23dd0fe896022e4957990f22ec (diff) | |
| download | rabbitmq-server-git-9a4ecf490da2b5b5519508c5f97a1415811898bc.tar.gz | |
Refactor rabbit_recovery_terms startup
Rename rabbit_queue_index:{recover => start}/1.
Rename rabbit_shutdown_terms{recover => start}/0.
Stop handling supervisor child-start errors explicitly.
Add {rabbit_recovery_terms, rabbit_queue_index}:stop/0 variants.
Introduce a `stop’ code path from BQ:stop/0 to qi:stop/0.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_queue_index.erl | 10 | ||||
| -rw-r--r-- | src/rabbit_recovery_terms.erl | 14 | ||||
| -rw-r--r-- | src/rabbit_variable_queue.erl | 6 |
3 files changed, 16 insertions, 14 deletions
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl index 8db6717d76..b5a316f0cf 100644 --- a/src/rabbit_queue_index.erl +++ b/src/rabbit_queue_index.erl @@ -19,7 +19,7 @@ -export([init/2, recover/5, terminate/2, delete_and_terminate/1, publish/5, deliver/2, ack/2, sync/1, needs_sync/1, flush/1, - read/3, next_segment_boundary/1, bounds/1, recover/1]). + read/3, next_segment_boundary/1, bounds/1, start/1, stop/0]). -export([add_queue_ttl/0, avoid_zeroes/0]). @@ -217,7 +217,7 @@ -spec(next_segment_boundary/1 :: (seq_id()) -> seq_id()). -spec(bounds/1 :: (qistate()) -> {non_neg_integer(), non_neg_integer(), qistate()}). --spec(recover/1 :: ([rabbit_amqqueue:name()]) -> {[[any()]], {walker(A), A}}). +-spec(start/1 :: ([rabbit_amqqueue:name()]) -> {[[any()]], {walker(A), A}}). -spec(add_queue_ttl/0 :: () -> 'ok'). @@ -342,8 +342,8 @@ bounds(State = #qistate { segments = Segments }) -> end, {LowSeqId, NextSeqId, State}. -recover(DurableQueueNames) -> - ok = rabbit_recovery_terms:recover(), +start(DurableQueueNames) -> + ok = rabbit_recovery_terms:start(), {DurableTerms, DurableDirectories} = lists:foldl( fun(QName, {RecoveryTerms, ValidDirectories}) -> @@ -369,6 +369,8 @@ recover(DurableQueueNames) -> OrderedTerms = lists:reverse(DurableTerms), {OrderedTerms, {fun queue_index_walker/1, {start, DurableQueueNames}}}. +stop() -> rabbit_recovery_terms:stop(). + all_queue_directory_names(Dir) -> case rabbit_file:list_dir(Dir) of {ok, Entries} -> [ Entry || Entry <- Entries, diff --git a/src/rabbit_recovery_terms.erl b/src/rabbit_recovery_terms.erl index 6e2a4a3d53..24f2edb2f6 100644 --- a/src/rabbit_recovery_terms.erl +++ b/src/rabbit_recovery_terms.erl @@ -21,7 +21,7 @@ -behaviour(gen_server). --export([recover/0, store/2, read/1, clear/0]). +-export([start/0, stop/0, store/2, read/1, clear/0]). -export([upgrade_recovery_terms/0, start_link/0]). -export([init/1, handle_call/3, handle_cast/2, handle_info/2, @@ -33,7 +33,8 @@ -ifdef(use_specs). --spec(recover() -> 'ok'). +-spec(start() -> rabbit_types:ok_or_error(term())). +-spec(stop() -> rabbit_types:ok_or_error(term())). -spec(store(file:filename(), term()) -> rabbit_types:ok_or_error(term())). -spec(read(file:filename()) -> rabbit_types:ok_or_error2(term(), not_found)). -spec(clear() -> 'ok'). @@ -44,12 +45,9 @@ -define(SERVER, ?MODULE). -recover() -> - case rabbit_sup:start_child(?MODULE) of - ok -> ok; - {error, {already_started, _}} -> ok; - {error, _}=Err -> Err - end. +start() -> rabbit_sup:start_child(?MODULE). + +stop() -> rabbit_sup:stop_child(?MODULE). store(DirBaseName, Terms) -> dets:insert(?MODULE, {DirBaseName, Terms}). diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl index a5dc5df498..8711d1393a 100644 --- a/src/rabbit_variable_queue.erl +++ b/src/rabbit_variable_queue.erl @@ -389,7 +389,7 @@ %%---------------------------------------------------------------------------- start(DurableQueues) -> - {AllTerms, StartFunState} = rabbit_queue_index:recover(DurableQueues), + {AllTerms, StartFunState} = rabbit_queue_index:start(DurableQueues), start_msg_store( [Ref || Terms <- AllTerms, Terms /= non_clean_shutdown, @@ -400,7 +400,9 @@ start(DurableQueues) -> StartFunState), {ok, AllTerms}. -stop() -> stop_msg_store(). +stop() -> + ok = stop_msg_store(), + ok = rabbit_queue_index:stop(). start_msg_store(Refs, StartFunState) -> ok = rabbit_sup:start_child(?TRANSIENT_MSG_STORE, rabbit_msg_store, |
