From bffa445d37ec2354c3835023c6e7d19ed2d9bb71 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Tue, 21 Mar 2023 10:28:25 -0700 Subject: [PATCH] ircd::server: Add bounds for wait all w/ conf items; promote warning; rename item. --- ircd/server.cc | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/ircd/server.cc b/ircd/server.cc index 80332efb2..ff7c1f780 100644 --- a/ircd/server.cc +++ b/ircd/server.cc @@ -14,6 +14,8 @@ namespace ircd::server extern log::log log; extern ctx::dock dock; extern conf::item close_all_timeout; + extern conf::item wait_all_timeout; + extern conf::item wait_all_max; extern peers_allocator_state peers_alloc; // Internal util @@ -59,10 +61,24 @@ ircd::server::enable decltype(ircd::server::close_all_timeout) ircd::server::close_all_timeout { - { "name", "ircd.server.close_all_timeout" }, + { "name", "ircd.server.close_all.timeout" }, { "default", 2L }, }; +decltype(ircd::server::wait_all_timeout) +ircd::server::wait_all_timeout +{ + { "name", "ircd.server.wait_all.timeout" }, + { "default", 5L }, +}; + +decltype(ircd::server::wait_all_max) +ircd::server::wait_all_max +{ + { "name", "ircd.server.wait_all.max" }, + { "default", 9L }, +}; + decltype(ircd::server::peers_alloc) ircd::server::peers_alloc; @@ -115,12 +131,15 @@ ircd::server::wait() [] { return !peer_unfinished(); } }; - while(!dock.wait_for(seconds(5), finished)) + const size_t max(wait_all_max); + const seconds timeout(wait_all_timeout); + for(size_t i(0); i < max && !dock.wait_for(timeout, finished); ++i) { for(const auto &[name, peer] : peers) - log::dwarning + log::logf { - log, "Waiting for peer %s tags:%zu links:%zu err:%b op[r:%b f:%b]", + log, log::level::DWARNING, + "Waiting for peer %s tags:%zu links:%zu err:%b op[r:%b f:%b]", name, peer->tag_count(), peer->link_count(),