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 /src | |
| 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.
Diffstat (limited to 'src')
| -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, []), |
