From: Alexey Shchepin Date: Thu, 30 Nov 2017 10:31:23 +0000 (+0300) Subject: Fix session table cleanup X-Git-Tag: 17.12~81 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8639da0e00b0949b238cfbbf30845ec21976003c;p=ejabberd Fix session table cleanup --- diff --git a/src/ejabberd_sm_mnesia.erl b/src/ejabberd_sm_mnesia.erl index 99e53fa12..b96d27f04 100644 --- a/src/ejabberd_sm_mnesia.erl +++ b/src/ejabberd_sm_mnesia.erl @@ -111,12 +111,18 @@ handle_cast(_Msg, State) -> {noreply, State}. handle_info({mnesia_system_event, {mnesia_down, Node}}, State) -> - ets:select_delete( - session, - ets:fun2ms( - fun(#session{sid = {_, Pid}}) -> - node(Pid) == Node - end)), + Sessions = + ets:select( + session, + ets:fun2ms( + fun(#session{sid = {_, Pid}} = S) + when node(Pid) == Node -> + S + end)), + lists:foreach( + fun(S) -> + mnesia:dirty_delete_object(S) + end, Sessions), {noreply, State}; handle_info(_Info, State) -> {noreply, State}.