diff options
| author | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2015-03-09 12:55:44 +0100 |
|---|---|---|
| committer | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2015-03-09 13:09:50 +0100 |
| commit | e759f8fbe39f4d8a2156925745d987cdcaf7feb7 (patch) | |
| tree | e9daf90f3d5613fc2c2d595b13733282ce783ac5 | |
| parent | d538f7d95646a7a9527c9f05ee274768a758a266 (diff) | |
| download | rabbitmq-server-git-e759f8fbe39f4d8a2156925745d987cdcaf7feb7.tar.gz | |
rabbit_networking: In on_node_down(), don't remove listeners if node is back
If the node is already back in the cluster at the time
rabbit_networking:on_node_down() is called don't remove the specified
node's listeners. Otherwise, we would loose the record from the entire
cluster, creating an inconsistency between the running listeners and the
recorded ones.
| -rw-r--r-- | src/rabbit_networking.erl | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/rabbit_networking.erl b/src/rabbit_networking.erl index 1a2883748f..f5deaef388 100644 --- a/src/rabbit_networking.erl +++ b/src/rabbit_networking.erl @@ -394,7 +394,11 @@ node_listeners(Node) -> mnesia:dirty_read(rabbit_listener, Node). on_node_down(Node) -> - ok = mnesia:dirty_delete(rabbit_listener, Node). + case lists:member(Node, nodes()) of + false -> ok = mnesia:dirty_delete(rabbit_listener, Node); + true -> rabbit_log:info( + "Keep ~s listeners: the node is already back~n", [Node]) + end. start_client(Sock, SockTransform) -> {ok, _Child, Reader} = supervisor:start_child(rabbit_tcp_client_sup, []), |
