From ead7e21037230d0313a0cb49a83250b37ad9160d Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Tue, 11 Oct 2016 22:20:22 +0200 Subject: [PATCH] Ignore offline sessions in statistics Offline sessions should not be counted when reporting the number of connected resources. Apart from that, this number is now also reported when using a non-default session management backend. --- src/ejabberd_web_admin.erl | 4 ++-- src/mod_stats.erl | 9 ++------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/ejabberd_web_admin.erl b/src/ejabberd_web_admin.erl index 184f9775b..fb57fa560 100644 --- a/src/ejabberd_web_admin.erl +++ b/src/ejabberd_web_admin.erl @@ -1552,7 +1552,7 @@ su_to_list({Server, User}) -> %%%% get_stats get_stats(global, Lang) -> - OnlineUsers = mnesia:table_info(session, size), + OnlineUsers = ejabberd_sm:connected_users_number(), RegisteredUsers = lists:foldl(fun (Host, Total) -> ejabberd_auth:get_vh_registered_users_number(Host) + Total @@ -2178,7 +2178,7 @@ get_node(global, Node, [<<"stats">>], _Query, Lang) -> CPUTime = ejabberd_cluster:call(Node, erlang, statistics, [runtime]), CPUTimeS = list_to_binary(io_lib:format("~.3f", [element(1, CPUTime) / 1000])), - OnlineUsers = mnesia:table_info(session, size), + OnlineUsers = ejabberd_sm:connected_users_number(), TransactionsCommitted = ejabberd_cluster:call(Node, mnesia, system_info, [transaction_commits]), TransactionsAborted = ejabberd_cluster:call(Node, mnesia, diff --git a/src/mod_stats.erl b/src/mod_stats.erl index 99059839a..66bbb5b5b 100644 --- a/src/mod_stats.erl +++ b/src/mod_stats.erl @@ -161,13 +161,8 @@ get_local_stat(Server, [], Name) end; get_local_stat(_Server, [], Name) when Name == <<"users/all-hosts/online">> -> - case catch mnesia:table_info(session, size) of - {'EXIT', _Reason} -> - ?STATERR(<<"500">>, <<"Internal Server Error">>); - Users -> - ?STATVAL((iolist_to_binary(integer_to_list(Users))), - <<"users">>) - end; + Users = ejabberd_sm:connected_users_number(), + ?STATVAL((iolist_to_binary(integer_to_list(Users))), <<"users">>); get_local_stat(_Server, [], Name) when Name == <<"users/all-hosts/total">> -> NumUsers = lists:foldl(fun (Host, Total) ->