# HG changeset patch # User Matthew Wild # Date 1592226994 -3600 # Node ID b4daa697a7ea4e2af0edb605ac26edaa3cafcfbc # Parent f59bc81245b3a1e4aa60770cdf0ab2ba881b68a0 util.startup: Configure the GC on startup, using the config or built-in defaults diff -r f59bc81245b3 -r b4daa697a7ea util/startup.lua --- a/util/startup.lua Mon Jun 15 14:16:10 2020 +0100 +++ b/util/startup.lua Mon Jun 15 14:16:34 2020 +0100 @@ -14,6 +14,8 @@ 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 @@ 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 @@ 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 @@ startup.init_global_state(); startup.read_config(); startup.init_logging(); + startup.init_gc(); startup.sanity_check(); startup.sandbox_require(); startup.set_function_metatable();