diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2010-07-21 06:59:57 +0100 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2010-07-21 06:59:57 +0100 |
| commit | 5e1a01349a8e2ba636938ad5424c40cc45a6240f (patch) | |
| tree | 092f133035ea43e92159ebce8b7ab9c0062535cb | |
| parent | 79de0821eae1c6507ca4d98244fe2718f5914102 (diff) | |
| download | rabbitmq-server-git-5e1a01349a8e2ba636938ad5424c40cc45a6240f.tar.gz | |
flesh out backing_queue API
| -rw-r--r-- | include/rabbit_backing_queue_spec.hrl | 1 | ||||
| -rw-r--r-- | src/rabbit_amqqueue.erl | 4 | ||||
| -rw-r--r-- | src/rabbit_backing_queue.erl | 5 | ||||
| -rw-r--r-- | src/rabbit_invariable_queue.erl | 5 |
4 files changed, 13 insertions, 2 deletions
diff --git a/include/rabbit_backing_queue_spec.hrl b/include/rabbit_backing_queue_spec.hrl index 0f57f62433..005994f09f 100644 --- a/include/rabbit_backing_queue_spec.hrl +++ b/include/rabbit_backing_queue_spec.hrl @@ -38,6 +38,7 @@ -type(ack_required() :: boolean()). -spec(start/1 :: ([rabbit_amqqueue:name()]) -> 'ok'). +-spec(stop/0 :: () -> 'ok'). -spec(init/3 :: (rabbit_amqqueue:name(), is_durable(), attempt_recovery()) -> state()). -spec(terminate/1 :: (state()) -> state()). -spec(delete_and_terminate/1 :: (state()) -> state()). diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index e5faef5416..df9474439f 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -167,7 +167,9 @@ start() -> stop() -> ok = supervisor:terminate_child(rabbit_sup, rabbit_amqqueue_sup), - ok = supervisor:delete_child(rabbit_sup, rabbit_amqqueue_sup). + ok = supervisor:delete_child(rabbit_sup, rabbit_amqqueue_sup), + {ok, BQ} = application:get_env(rabbit, backing_queue_module), + ok = BQ:stop(). find_durable_queues() -> Node = node(), diff --git a/src/rabbit_backing_queue.erl b/src/rabbit_backing_queue.erl index b76ae11ebc..2230c507e9 100644 --- a/src/rabbit_backing_queue.erl +++ b/src/rabbit_backing_queue.erl @@ -42,6 +42,11 @@ behaviour_info(callbacks) -> %% shared resources. {start, 1}, + %% Called to tear down any state/resources. NB: Implementations + %% should not depend on this function being called on shutdown + %% and instead should hook into the rabbit supervision hierarchy. + {stop, 0}, + %% Initialise the backing queue and its state. {init, 3}, diff --git a/src/rabbit_invariable_queue.erl b/src/rabbit_invariable_queue.erl index cf8bc8f77e..4e0dad8422 100644 --- a/src/rabbit_invariable_queue.erl +++ b/src/rabbit_invariable_queue.erl @@ -37,7 +37,7 @@ set_ram_duration_target/2, ram_duration/1, needs_idle_timeout/1, idle_timeout/1, handle_pre_hibernate/1, status/1]). --export([start/1]). +-export([start/1, stop/0]). -behaviour(rabbit_backing_queue). @@ -61,6 +61,9 @@ start(DurableQueues) -> ok = rabbit_sup:start_child(rabbit_persister, [DurableQueues]). +stop() -> + ok = rabbit_sup:stop_child(rabbit_persister). + init(QName, IsDurable, Recover) -> Q = queue:from_list(case IsDurable andalso Recover of true -> rabbit_persister:queue_content(QName); |
