diff options
author | Matthew Wild <mwild1@gmail.com> | 2020-06-15 14:16:34 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2020-06-15 14:16:34 +0100 |
commit | f7167c53dd46baa8dcc69cb8e7c404e70e28b367 (patch) | |
tree | 305c30afcf977fab2016623e237ac6e98a7989c1 | |
parent | 257c1c47b2bde0a71247a38d0661ba752bc72696 (diff) | |
download | prosody-f7167c53dd46baa8dcc69cb8e7c404e70e28b367.tar.gz prosody-f7167c53dd46baa8dcc69cb8e7c404e70e28b367.zip |
util.startup: Configure the GC on startup, using the config or built-in defaults
-rw-r--r-- | util/startup.lua | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/util/startup.lua b/util/startup.lua index d45855f2..69633c47 100644 --- a/util/startup.lua +++ b/util/startup.lua @@ -14,6 +14,8 @@ local dependencies = require "util.dependencies"; local original_logging_config; +local default_gc_params = { mode = "incremental", threshold = 105, speed = 250 }; + local short_params = { D = "daemonize", F = "no-daemonize" }; local value_params = { config = true }; @@ -521,6 +523,19 @@ function startup.check_unwriteable() end end +function startup.init_gc() + -- Apply garbage collector settings from the config file + local gc = require "util.gc"; + local gc_settings = config.get("*", "gc") or { mode = default_gc_params.mode }; + + local ok, err = gc.configure(gc_settings, default_gc_params); + if not ok then + log("error", "Failed to apply GC configuration: %s", err); + return nil, err; + end + return true; +end + function startup.make_host(hostname) return { type = "local", @@ -551,6 +566,7 @@ function startup.prosodyctl() startup.read_config(); startup.force_console_logging(); startup.init_logging(); + startup.init_gc(); startup.setup_plugindir(); -- startup.setup_plugin_install_path(); startup.setup_datadir(); @@ -573,6 +589,7 @@ function startup.prosody() startup.init_global_state(); startup.read_config(); startup.init_logging(); + startup.init_gc(); startup.sanity_check(); startup.sandbox_require(); startup.set_function_metatable(); |