diff options
| author | kjnilsson <knilsson@pivotal.io> | 2019-02-20 17:29:29 +0000 |
|---|---|---|
| committer | kjnilsson <knilsson@pivotal.io> | 2019-02-20 17:29:29 +0000 |
| commit | 496986d10a27d52718a8b3273e896f98f456d2ad (patch) | |
| tree | 12274d34960d4941c9d989115e02d52dda6c01dc /src | |
| parent | 2856a2f921ac5b63a469689881f2da251d472ae2 (diff) | |
| download | rabbitmq-server-git-496986d10a27d52718a8b3273e896f98f456d2ad.tar.gz | |
Change rabbit_quorum_queue:grow/3
To filter non-running nodes instead of by connection as it should
not be possible to add a quorum
queue server running on an erlang node without RabbitMQ.
[#162782801]
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_quorum_queue.erl | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/rabbit_quorum_queue.erl b/src/rabbit_quorum_queue.erl index 08b4eaf5b3..5d28ef506a 100644 --- a/src/rabbit_quorum_queue.erl +++ b/src/rabbit_quorum_queue.erl @@ -760,23 +760,23 @@ shrink_all(Node) -> amqqueue:get_type(Q) == quorum, lists:member(Node, amqqueue:get_quorum_nodes(Q))]. --spec grow(node(), binary(), binary(), - all | even) -> +-spec grow(node(), binary(), binary(), all | even) -> [{rabbit_amqqueue:name(), {ok, pos_integer()} | {error, pos_integer(), term()}}]. grow(Node, VhostSpec, QueueSpec, Strategy) -> - ConnectedNodes = [node() | nodes()], + Running = rabbit_mnesia:cluster_nodes(running), [begin + Size = length(amqqueue:get_quorum_nodes(Q)), QName = amqqueue:get_name(Q), rabbit_log:info("~s: Adding member ~w", [rabbit_misc:rs(QName), Node]), - Size = length(amqqueue:get_quorum_nodes(Q)), case add_member(Q, Node) of ok -> {QName, {ok, Size + 1}}; {error, Err} -> - rabbit_log:warning("~s: Failed to add member ~w, Error ~w", - [rabbit_misc:rs(QName), Node, Err]), + rabbit_log:warning( + "~s: Failed to add member ~w, Error ~w", + [rabbit_misc:rs(QName), Node, Err]), {QName, {error, Size, Err}} end end @@ -784,8 +784,8 @@ grow(Node, VhostSpec, QueueSpec, Strategy) -> amqqueue:get_type(Q) == quorum, %% don't add a member if there is already one on the node not lists:member(Node, amqqueue:get_quorum_nodes(Q)), - %% if the node isn't connected, best not to add it - lists:member(Node, ConnectedNodes), + %% node needs to be running + lists:member(Node, Running), matches_strategy(Strategy, amqqueue:get_quorum_nodes(Q)), is_match(amqqueue:get_vhost(Q), VhostSpec) andalso is_match(get_resource_name(amqqueue:get_name(Q)), QueueSpec) ]. |
