diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2020-07-08 19:10:55 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2020-07-14 03:50:32 +0300 |
| commit | 1a91b7c38bd12001b38c4ec66202f10546de1988 (patch) | |
| tree | 0ab77ace95a876bea16c2249a767e20669ab985b /src | |
| parent | bcc6fc87c98ba0f79db8546c110d641193d1d753 (diff) | |
| download | rabbitmq-server-git-1a91b7c38bd12001b38c4ec66202f10546de1988.tar.gz | |
Make sure MQTT plugin closes its connections when a node is put into maintenance mode
Part of rabbitmq/rabbitmq-server#2321
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_maintenance.erl | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/rabbit_maintenance.erl b/src/rabbit_maintenance.erl index 390a32d998..81eef9eb32 100644 --- a/src/rabbit_maintenance.erl +++ b/src/rabbit_maintenance.erl @@ -51,6 +51,10 @@ drain() -> suspend_all_client_listeners(), rabbit_log:alert("Suspended all listeners and will no longer accept client connections"), {ok, NConnections} = close_all_client_connections(), + %% allow plugins to react e.g. by closing their protocol connections + rabbit_event:notify(maintenance_connections_closed, #{ + reason => <<"node is being put into maintenance">> + }), rabbit_log:alert("Closed ~b local client connections", [NConnections]), TransferCandidates = primary_replica_transfer_candidate_nodes(), @@ -59,6 +63,11 @@ drain() -> [length(TransferCandidates), ReadableCandidates]), transfer_leadership_of_classic_mirrored_queues(TransferCandidates), transfer_leadership_of_quorum_queues(TransferCandidates), + + %% allow plugins to react + rabbit_event:notify(maintenance_draining, #{ + reason => <<"node is being put into maintenance">> + }), rabbit_log:alert("Node is ready to be shut down for maintenance or upgrade"), ok. @@ -73,6 +82,9 @@ revive() -> unmark_as_being_drained(), rabbit_log:info("Marked this node as back from maintenance and ready to serve clients"), + %% allow plugins to react + rabbit_event:notify(maintenance_revived, #{}), + ok. -spec mark_as_being_drained() -> boolean(). |
