Software /
code /
prosody
Comparison
util/startup.lua @ 10934:b4daa697a7ea
util.startup: Configure the GC on startup, using the config or built-in defaults
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 15 Jun 2020 14:16:34 +0100 |
parent | 10651:1196f1e8d178 |
child | 10936:d770435f0f84 |
comparison
equal
deleted
inserted
replaced
10933:f59bc81245b3 | 10934:b4daa697a7ea |
---|---|
11 local config_warnings; | 11 local config_warnings; |
12 | 12 |
13 local dependencies = require "util.dependencies"; | 13 local dependencies = require "util.dependencies"; |
14 | 14 |
15 local original_logging_config; | 15 local original_logging_config; |
16 | |
17 local default_gc_params = { mode = "incremental", threshold = 105, speed = 250 }; | |
16 | 18 |
17 local short_params = { D = "daemonize", F = "no-daemonize" }; | 19 local short_params = { D = "daemonize", F = "no-daemonize" }; |
18 local value_params = { config = true }; | 20 local value_params = { config = true }; |
19 | 21 |
20 function startup.parse_args() | 22 function startup.parse_args() |
519 print(""); | 521 print(""); |
520 os.exit(1); | 522 os.exit(1); |
521 end | 523 end |
522 end | 524 end |
523 | 525 |
526 function startup.init_gc() | |
527 -- Apply garbage collector settings from the config file | |
528 local gc = require "util.gc"; | |
529 local gc_settings = config.get("*", "gc") or { mode = default_gc_params.mode }; | |
530 | |
531 local ok, err = gc.configure(gc_settings, default_gc_params); | |
532 if not ok then | |
533 log("error", "Failed to apply GC configuration: %s", err); | |
534 return nil, err; | |
535 end | |
536 return true; | |
537 end | |
538 | |
524 function startup.make_host(hostname) | 539 function startup.make_host(hostname) |
525 return { | 540 return { |
526 type = "local", | 541 type = "local", |
527 events = prosody.events, | 542 events = prosody.events, |
528 modules = {}, | 543 modules = {}, |
549 startup.parse_args(); | 564 startup.parse_args(); |
550 startup.init_global_state(); | 565 startup.init_global_state(); |
551 startup.read_config(); | 566 startup.read_config(); |
552 startup.force_console_logging(); | 567 startup.force_console_logging(); |
553 startup.init_logging(); | 568 startup.init_logging(); |
569 startup.init_gc(); | |
554 startup.setup_plugindir(); | 570 startup.setup_plugindir(); |
555 -- startup.setup_plugin_install_path(); | 571 -- startup.setup_plugin_install_path(); |
556 startup.setup_datadir(); | 572 startup.setup_datadir(); |
557 startup.chdir(); | 573 startup.chdir(); |
558 startup.read_version(); | 574 startup.read_version(); |
571 prosody.process_type = "prosody"; | 587 prosody.process_type = "prosody"; |
572 startup.parse_args(); | 588 startup.parse_args(); |
573 startup.init_global_state(); | 589 startup.init_global_state(); |
574 startup.read_config(); | 590 startup.read_config(); |
575 startup.init_logging(); | 591 startup.init_logging(); |
592 startup.init_gc(); | |
576 startup.sanity_check(); | 593 startup.sanity_check(); |
577 startup.sandbox_require(); | 594 startup.sandbox_require(); |
578 startup.set_function_metatable(); | 595 startup.set_function_metatable(); |
579 startup.check_dependencies(); | 596 startup.check_dependencies(); |
580 startup.init_logging(); | 597 startup.init_logging(); |