summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/rabbit_backing_queue_type_spec.hrl1
-rw-r--r--src/rabbit_amqqueue.erl3
-rw-r--r--src/rabbit_backing_queue_type.erl7
-rw-r--r--src/rabbit_variable_queue.erl5
4 files changed, 15 insertions, 1 deletions
diff --git a/include/rabbit_backing_queue_type_spec.hrl b/include/rabbit_backing_queue_type_spec.hrl
index 836e220bf7..85d9a067f2 100644
--- a/include/rabbit_backing_queue_type_spec.hrl
+++ b/include/rabbit_backing_queue_type_spec.hrl
@@ -29,6 +29,7 @@
%% Contributor(s): ______________________________________.
%%
+-spec(start/1 :: ([amqqueue()]) -> 'ok').
-spec(init/2 :: (queue_name(), boolean()) -> 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 235b1edbc7..7a18eb4b67 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -125,7 +125,8 @@
start() ->
DurableQueues = find_durable_queues(),
- ok = rabbit_queue_index:start_msg_stores(DurableQueues),
+ {ok, BQ} = application:get_env(backing_queue_module),
+ ok = BQ:start(DurableQueues),
{ok,_} = supervisor:start_child(
rabbit_sup,
{rabbit_amqqueue_sup,
diff --git a/src/rabbit_backing_queue_type.erl b/src/rabbit_backing_queue_type.erl
index 46299d0207..b00d351b84 100644
--- a/src/rabbit_backing_queue_type.erl
+++ b/src/rabbit_backing_queue_type.erl
@@ -35,6 +35,13 @@
behaviour_info(callbacks) ->
[
+ %% Called on startup with a list of durable queues. The queues
+ %% aren't being started at this point, but this call allows the
+ %% backing queue to perform any checking necessary for the
+ %% consistency of those queues, or initialise any other shared
+ %% resources.
+ {start, 1},
+
%% Called with queue name and a boolean to indicate whether or
%% not the queue is durable.
{init, 2},
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index b798a2c9c4..7ee88deaf8 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -37,6 +37,8 @@
delete_and_terminate/1, requeue/2, tx_publish/2, tx_rollback/2,
tx_commit/4, needs_sync/1, handle_pre_hibernate/1, status/1]).
+-export([start/1]).
+
-export([tx_commit_post_msg_store/5, tx_commit_index/1]). %% internal
%%----------------------------------------------------------------------------
@@ -252,6 +254,9 @@
%% Public API
%%----------------------------------------------------------------------------
+start(DurableQueues) ->
+ rabbit_queue_index:start_msg_stores(DurableQueues).
+
init(QueueName, IsDurable) ->
PersistentStore = case IsDurable of
true -> ?PERSISTENT_MSG_STORE;