diff options
| author | Daniil Fedotov <dfedotov@pivotal.io> | 2016-10-20 11:04:52 +0100 |
|---|---|---|
| committer | Daniil Fedotov <dfedotov@pivotal.io> | 2016-10-20 14:49:52 +0100 |
| commit | 1c81c509d738b9ba85baf48f579b734468d72c2d (patch) | |
| tree | ce464442adbbf474d48a28b50c8144da29e01e95 /src | |
| parent | 8369950c887c817a2096a3c2fdc941e32547ebce (diff) | |
| download | rabbitmq-server-git-1c81c509d738b9ba85baf48f579b734468d72c2d.tar.gz | |
Move queues to vhost storage on upgrade
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_queue_index.erl | 17 | ||||
| -rw-r--r-- | src/rabbit_variable_queue.erl | 1 |
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( |
