diff options
| author | Michael Klishin <michael@novemberain.com> | 2017-08-03 16:05:57 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-08-03 16:05:57 +0300 |
| commit | ac687666a1cc4fb0619792d44cad5f10dd869629 (patch) | |
| tree | de98218e6e25ed2abcf0271b76eee8bf5e844192 /src | |
| parent | 5fc28e4b0f18fbbaa33b9b20b6f84d57435b73b3 (diff) | |
| parent | 82af2d4a7497ccb70c668d6698f7ae2abb6040f2 (diff) | |
| download | rabbitmq-server-git-ac687666a1cc4fb0619792d44cad5f10dd869629.tar.gz | |
Merge pull request #1316 from rabbitmq/rabbitmq-server-1314
Start queue mirrors after vhost recovery instead of node start
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit.erl | 6 | ||||
| -rw-r--r-- | src/rabbit_mirror_queue_misc.erl | 11 | ||||
| -rw-r--r-- | src/rabbit_vhost.erl | 2 |
3 files changed, 9 insertions, 10 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index b166e079f4..0a0eb6b71a 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -168,12 +168,6 @@ {requires, recovery}, {enables, routing_ready}]}). --rabbit_boot_step({mirrored_queues, - [{description, "adding mirrors to queues"}, - {mfa, {rabbit_mirror_queue_misc, on_node_up, []}}, - {requires, recovery}, - {enables, routing_ready}]}). - -rabbit_boot_step({routing_ready, [{description, "message delivery logic ready"}, {requires, core_initialized}]}). diff --git a/src/rabbit_mirror_queue_misc.erl b/src/rabbit_mirror_queue_misc.erl index dc23095fb1..725cd7d089 100644 --- a/src/rabbit_mirror_queue_misc.erl +++ b/src/rabbit_mirror_queue_misc.erl @@ -17,7 +17,7 @@ -module(rabbit_mirror_queue_misc). -behaviour(rabbit_policy_validator). --export([remove_from_queue/3, on_node_up/0, add_mirrors/3, +-export([remove_from_queue/3, on_vhost_up/1, add_mirrors/3, report_deaths/4, store_updated_slaves/1, initial_queue_node/2, suggested_queue_nodes/1, is_mirrored/1, update_mirrors/2, update_mirrors/1, validate_policy/1, @@ -53,7 +53,6 @@ -spec remove_from_queue (rabbit_amqqueue:name(), pid(), [pid()]) -> {'ok', pid(), [pid()], [node()]} | {'error', 'not_found'}. --spec on_node_up() -> 'ok'. -spec add_mirrors(rabbit_amqqueue:name(), [node()], 'sync' | 'async') -> 'ok'. -spec store_updated_slaves(rabbit_types:amqqueue()) -> @@ -167,12 +166,16 @@ slaves_to_start_on_failure(Q, DeadGMPids) -> {_, NewNodes} = suggested_queue_nodes(Q, ClusterNodes), NewNodes -- OldNodes. -on_node_up() -> +on_vhost_up(VHost) -> QNames = rabbit_misc:execute_mnesia_transaction( fun () -> mnesia:foldl( - fun (Q = #amqqueue{name = QName, + fun + (#amqqueue{name = #resource{virtual_host = OtherVhost}}, + QNames0) when OtherVhost =/= VHost -> + QNames0; + (Q = #amqqueue{name = QName, pid = Pid, slave_pids = SPids}, QNames0) -> %% We don't want to pass in the whole diff --git a/src/rabbit_vhost.erl b/src/rabbit_vhost.erl index 30557fc7be..05a7696052 100644 --- a/src/rabbit_vhost.erl +++ b/src/rabbit_vhost.erl @@ -71,6 +71,8 @@ recover(VHost) -> ok = rabbit_binding:recover(rabbit_exchange:recover(VHost), [QName || #amqqueue{name = QName} <- Qs]), ok = rabbit_amqqueue:start(Qs), + %% Start queue mirrors. + ok = rabbit_mirror_queue_misc:on_vhost_up(VHost), ok. %%---------------------------------------------------------------------------- |
