Skip to content

Commit f2e7149

Browse files
dcorbachomergify[bot]
authored andcommitted
rabbit_db_cluster: generate left cluster notifications
They must be sent during reset and when leaving the cluster for any metadata store (cherry picked from commit db03d8c)
1 parent d16c618 commit f2e7149

File tree

4 files changed

+13
-15
lines changed

4 files changed

+13
-15
lines changed

deps/rabbit/src/rabbit_db_cluster.erl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ join(RemoteNode, NodeType)
151151
false -> ok = rabbit_mnesia:reset_gracefully()
152152
end,
153153

154+
ok = rabbit_node_monitor:notify_left_cluster(node()),
155+
154156
%% Now that the files are all gone after the reset above, restart
155157
%% the Ra systems. They will recreate their folder in the process.
156158
case RestartRabbit of
@@ -225,6 +227,14 @@ join_using_khepri(_ClusterNodes, ram = NodeType) ->
225227
%% @doc Removes `Node' from the cluster.
226228

227229
forget_member(Node, RemoveWhenOffline) ->
230+
case forget_member0(Node, RemoveWhenOffline) of
231+
ok ->
232+
rabbit_node_monitor:notify_left_cluster(Node);
233+
Error ->
234+
Error
235+
end.
236+
237+
forget_member0(Node, RemoveWhenOffline) ->
228238
case rabbit:is_running(Node) of
229239
false ->
230240
?LOG_DEBUG(

deps/rabbit/src/rabbit_khepri.erl

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -425,13 +425,7 @@ post_add_member(JoiningNode, JoinedNode, Error) ->
425425
%% @private
426426

427427
leave_cluster(Node) ->
428-
case retry_khepri_op(fun() -> remove_member(Node) end, 60) of
429-
ok ->
430-
rabbit_event:notify(node_deleted, [{node, Node}]),
431-
ok;
432-
Any ->
433-
Any
434-
end.
428+
retry_khepri_op(fun() -> remove_member(Node) end, 60).
435429

436430
%% @private
437431

deps/rabbit/src/rabbit_mnesia.erl

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -293,9 +293,6 @@ change_cluster_node_type(Type) ->
293293
-spec forget_cluster_node(node(), boolean()) -> 'ok'.
294294

295295
forget_cluster_node(Node, RemoveWhenOffline) ->
296-
forget_cluster_node(Node, RemoveWhenOffline, true).
297-
298-
forget_cluster_node(Node, RemoveWhenOffline, EmitNodeDeletedEvent) ->
299296
case lists:member(Node, cluster_nodes(all)) of
300297
true -> ok;
301298
false -> e(not_a_cluster_node)
@@ -307,9 +304,6 @@ forget_cluster_node(Node, RemoveWhenOffline, EmitNodeDeletedEvent) ->
307304
{false, true} -> rabbit_log:info(
308305
"Removing node ~tp from cluster", [Node]),
309306
case remove_node_if_mnesia_running(Node) of
310-
ok when EmitNodeDeletedEvent ->
311-
rabbit_event:notify(node_deleted, [{node, Node}]),
312-
ok;
313307
ok -> ok;
314308
{error, _} = Err -> throw(Err)
315309
end
@@ -333,7 +327,7 @@ remove_node_offline_node(Node) ->
333327
%% We skip the 'node_deleted' event because the
334328
%% application is stopped and thus, rabbit_event is not
335329
%% enabled.
336-
forget_cluster_node(Node, false, false),
330+
forget_cluster_node(Node, false),
337331
force_load_next_boot()
338332
after
339333
stop_mnesia()
@@ -893,7 +887,6 @@ remove_node_if_mnesia_running(Node) ->
893887
case mnesia:del_table_copy(schema, Node) of
894888
{atomic, ok} ->
895889
rabbit_amqqueue:forget_all_durable(Node),
896-
rabbit_node_monitor:notify_left_cluster(Node),
897890
ok;
898891
{aborted, Reason} ->
899892
{error, {failed_to_remove_node, Node, Reason}}

deps/rabbit/src/rabbit_node_monitor.erl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,7 @@ handle_cast({left_cluster, Node}, State) ->
620620
{del_node(Node, AllNodes), del_node(Node, DiscNodes),
621621
del_node(Node, RunningNodes)})
622622
end,
623+
rabbit_event:notify(node_deleted, [{node, Node}]),
623624
{noreply, State};
624625

625626
handle_cast({subscribe, Pid}, State = #state{subscribers = Subscribers}) ->

0 commit comments

Comments
 (0)