summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2016-10-20 11:04:52 +0100
committerDaniil Fedotov <dfedotov@pivotal.io>2016-10-20 14:49:52 +0100
commit1c81c509d738b9ba85baf48f579b734468d72c2d (patch)
treece464442adbbf474d48a28b50c8144da29e01e95 /src
parent8369950c887c817a2096a3c2fdc941e32547ebce (diff)
downloadrabbitmq-server-git-1c81c509d738b9ba85baf48f579b734468d72c2d.tar.gz
Move queues to vhost storage on upgrade
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_queue_index.erl17
-rw-r--r--src/rabbit_variable_queue.erl1
2 files changed, 18 insertions, 0 deletions
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl
index a835bd4779..3827080a2f 100644
--- a/src/rabbit_queue_index.erl
+++ b/src/rabbit_queue_index.erl
@@ -25,6 +25,9 @@
-export([add_queue_ttl/0, avoid_zeroes/0, store_msg_size/0, store_msg/0]).
-export([scan_queue_segments/3]).
+%% Migration to per-vhost message store
+-export([move_to_vhost_store/1]).
+
-define(CLEAN_FILENAME, "clean.dot").
%%----------------------------------------------------------------------------
@@ -1400,3 +1403,17 @@ drive_transform_fun(Fun, Hdl, Contents) ->
{Output, Contents1} -> ok = file_handle_cache:append(Hdl, Output),
drive_transform_fun(Fun, Hdl, Contents1)
end.
+
+move_to_vhost_store(#resource{} = QueueName) ->
+ OldQueueDir = filename:join([queues_base_dir(), "queues",
+ queue_name_to_dir_name(QueueName)]),
+ NewQueueDir = queue_dir(QueueName),
+ case rabbit_file:is_dir(OldQueueDir) of
+ true ->
+ ok = rabbit_file:ensure_dir(NewQueueDir),
+ ok = rabbit_file:rename(OldQueueDir, NewQueueDir);
+ false ->
+ rabbit_log:info("Queue index directoy not found for queue ~p~n",
+ [QueueName])
+ end,
+ ok.
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl
index 45d9f97792..b65154bb48 100644
--- a/src/rabbit_variable_queue.erl
+++ b/src/rabbit_variable_queue.erl
@@ -2721,6 +2721,7 @@ migrate_queue(Queue, OldStore, NewStoreSup) ->
OldStoreClient = get_old_client(OldStore),
NewStoreClient = get_new_store_client(Queue, NewStoreSup),
#amqqueue{name = QueueName} = Queue,
+ rabbit_queue_index:move_to_vhost_store(QueueName),
%% WARNING: During scan_queue_segments queue index state is being recovered
%% and terminated. This can cause side effects!
rabbit_queue_index:scan_queue_segments(