From 8639da0e00b0949b238cfbbf30845ec21976003c Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Thu, 30 Nov 2017 13:31:23 +0300 Subject: [PATCH] Fix session table cleanup --- src/ejabberd_sm_mnesia.erl | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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}.