Add option to set net_ticktime (EJAB-1742)
authorPaweł Chmielowski <pchmielowski@process-one.net>
Mon, 15 Jun 2015 12:57:07 +0000 (14:57 +0200)
committerPaweł Chmielowski <pchmielowski@process-one.net>
Mon, 15 Jun 2015 12:57:07 +0000 (14:57 +0200)
ejabberd.yml.example
src/ejabberd_app.erl

index 9fc815071d5fbc603d78c89c85aa1a4ae752124a..c57ef4657d41c03d603ae29826ad0d8df39f070f 100644 (file)
@@ -72,6 +72,15 @@ log_rate_limit: 100
 ## watchdog_admins:
 ##   - "bob@example.com"
 
+###.  ===============
+###'  NODE PARAMETERS
+
+##
+## net_ticktime: Specifies net_kernel tick time in seconds. This options must have
+## identical value on all nodes, and in most cases shouldn't be changed at all from
+## default value.
+##
+## net_ticktime: 60
 
 ###.  ================
 ###'  SERVED HOSTNAMES
index 46fbf81dc9e456e91f6dd44344b4f68bff922ed2..30f34aff4cacc4439358ec545f8087fb93421f13 100644 (file)
@@ -54,7 +54,7 @@ start(normal, _Args) ->
     ejabberd_admin:start(),
     gen_mod:start(),
     ejabberd_config:start(),
-    set_loglevel_from_config(),
+    set_settings_from_config(),
     acl:start(),
     shaper:start(),
     connect_nodes(),
@@ -234,12 +234,17 @@ delete_pid_file() ->
            file:delete(PidFilename)
     end.
 
-set_loglevel_from_config() ->
+set_settings_from_config() ->
     Level = ejabberd_config:get_option(
               loglevel,
               fun(P) when P>=0, P=<5 -> P end,
               4),
-    ejabberd_logger:set(Level).
+    ejabberd_logger:set(Level),
+    Ticktime = ejabberd_config:get_option(
+                 net_ticktime,
+                 opt_type(net_ticktime),
+                 60),
+    net_kernel:set_net_ticktime(Ticktime).
 
 start_apps() ->
     crypto:start(),
@@ -252,6 +257,8 @@ start_apps() ->
     ejabberd:start_app(p1_zlib),
     ejabberd:start_app(p1_cache_tab).
 
+opt_type(net_ticktime) ->
+    fun (P) when is_integer(P), P > 0 -> P end;
 opt_type(cluster_nodes) ->
     fun (Ns) -> true = lists:all(fun is_atom/1, Ns), Ns end;
 opt_type(loglevel) ->
@@ -263,4 +270,4 @@ opt_type(modules) ->
                      end,
                      Mods)
     end;
-opt_type(_) -> [cluster_nodes, loglevel, modules].
+opt_type(_) -> [cluster_nodes, loglevel, modules, net_ticktime].