]> granicus.if.org Git - ejabberd/commitdiff
Make s2s stats commands more robust
authorMickael Remond <mremond@process-one.net>
Sat, 30 Jul 2016 16:50:58 +0000 (18:50 +0200)
committerMickael Remond <mremond@process-one.net>
Sat, 30 Jul 2016 16:50:58 +0000 (18:50 +0200)
src/ejabberd_s2s.erl

index 19de64adb0e1e2a1ccf24a2537804181958f76f5..2a17c75cb5741594a8340124e59296684a510938 100644 (file)
@@ -473,28 +473,34 @@ send_element(Pid, El) ->
 %%% ejabberd commands
 
 get_commands_spec() ->
-    [#ejabberd_commands{name = incoming_s2s_number,
-                       tags = [stats, s2s],
-                       desc =
-                           "Number of incoming s2s connections on "
-                           "the node",
-                        policy = admin,
-                       module = ?MODULE, function = incoming_s2s_number,
-                       args = [], result = {s2s_incoming, integer}},
-     #ejabberd_commands{name = outgoing_s2s_number,
-                       tags = [stats, s2s],
-                       desc =
-                           "Number of outgoing s2s connections on "
-                           "the node",
-                        policy = admin,
-                       module = ?MODULE, function = outgoing_s2s_number,
-                       args = [], result = {s2s_outgoing, integer}}].
-
+    [#ejabberd_commands{
+        name = incoming_s2s_number,
+        tags = [stats, s2s],
+        desc = "Number of incoming s2s connections on the node",
+        policy = admin,
+        module = ?MODULE, function = incoming_s2s_number,
+        args = [], result = {s2s_incoming, integer}},
+     #ejabberd_commands{
+        name = outgoing_s2s_number,
+        tags = [stats, s2s],
+        desc = "Number of outgoing s2s connections on the node",
+        policy = admin,
+        module = ?MODULE, function = outgoing_s2s_number,
+        args = [], result = {s2s_outgoing, integer}}].
+
+%% TODO Move those stats commands to ejabberd stats command ?
 incoming_s2s_number() ->
-    length(supervisor:which_children(ejabberd_s2s_in_sup)).
+    supervisor_count(ejabberd_s2s_in_sup).
 
 outgoing_s2s_number() ->
-    length(supervisor:which_children(ejabberd_s2s_out_sup)).
+    supervisor_count(ejabberd_s2s_out_sup).
+
+supervisor_count(Supervisor) ->
+    case catch supervisor:which_children(Supervisor) of
+        {'EXIT', _} -> 0;
+        Result ->
+            length(Result)
+    end.
 
 %%%----------------------------------------------------------------------
 %%% Update Mnesia tables