From 0b587193420361112f4613b50be07ffe6fb37314 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Thu, 22 Jun 2017 12:50:55 +0800 Subject: [PATCH] Monitor changes of membership --- src/emqttd_router.erl | 17 ++--------------- src/emqttd_sm_helper.erl | 7 +++++-- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/src/emqttd_router.erl b/src/emqttd_router.erl index e51657285..3da32b845 100644 --- a/src/emqttd_router.erl +++ b/src/emqttd_router.erl @@ -239,27 +239,14 @@ handle_cast({del_local_route, Topic}, State) -> handle_cast(_Msg, State) -> {noreply, State}. -handle_info({member_up, _Node}, State) -> +handle_info({membership, {member_up, _Node}}, State) -> {noreply, State}; -handle_info({member_down, Node}, State) -> +handle_info({membership, {member_down, Node}}, State) -> clean_routes_(Node), update_stats_(), {noreply, State, hibernate}; -handle_info({mnesia_system_event, {inconsistent_database, Context, Node}}, State) -> - %% 1. Backup and restart - %% 2. Set master nodes - lager:critical("Mnesia inconsistent_database event: ~p, ~p~n", [Context, Node]), - {noreply, State}; - -handle_info({mnesia_system_event, {mnesia_overload, Details}}, State) -> - lager:critical("Mnesia overload: ~p~n", [Details]), - {noreply, State}; - -handle_info({mnesia_system_event, _Event}, State) -> - {noreply, State}; - handle_info(stats, State) -> update_stats_(), {noreply, State, hibernate}; diff --git a/src/emqttd_sm_helper.erl b/src/emqttd_sm_helper.erl index 2a32fba58..652c363f0 100644 --- a/src/emqttd_sm_helper.erl +++ b/src/emqttd_sm_helper.erl @@ -52,7 +52,7 @@ handle_call(Req, _From, State) -> handle_cast(Msg, State) -> ?UNEXPECTED_MSG(Msg, State). -handle_info({member_down, Node}, State) -> +handle_info({membership, {mnesia_down, Node}}, State) -> Fun = fun() -> ClientIds = mnesia:select(mqtt_session, [{#mqtt_session{client_id = '$1', sess_pid = '$2', _ = '_'}, @@ -62,7 +62,10 @@ handle_info({member_down, Node}, State) -> mnesia:async_dirty(Fun), {noreply, State}; -handle_info({member_up, _Node}, State) -> +handle_info({membership, {mnesia_up, _Node}}, State) -> + {noreply, State}; + +handle_info({membership, _Event}, State) -> {noreply, State}; handle_info(tick, State) ->