diff --git a/include/ircd/m/sync.h b/include/ircd/m/sync.h index eaeded3c9..0456ab4d4 100644 --- a/include/ircd/m/sync.h +++ b/include/ircd/m/sync.h @@ -37,7 +37,6 @@ namespace ircd::m::sync extern log::log log; extern ctx::pool pool; extern conf::item stats_info; - extern conf::item stats_debug; } struct ircd::m::sync::item @@ -45,6 +44,9 @@ struct ircd::m::sync::item { using handle = std::function; + std::string conf_name[2]; + conf::item enable; + conf::item stats_debug; handle _polylog; handle _linear; diff --git a/ircd/m.cc b/ircd/m.cc index 81a37047a..bd77ced08 100644 --- a/ircd/m.cc +++ b/ircd/m.cc @@ -426,13 +426,6 @@ ircd::m::sync::stats_info { "default", false }, }; -decltype(ircd::m::sync::stats_debug) -ircd::m::sync::stats_debug -{ - { "name", "ircd.m.sync.stats.debug" }, - { "default", false }, -}; - bool ircd::m::sync::for_each(const item_closure_bool &closure) { @@ -644,6 +637,21 @@ ircd::m::sync::item::item(std::string name, { std::move(name) } +,conf_name +{ + fmt::snstringf{128, "ircd.m.sync.%s.enable", this->name()}, + fmt::snstringf{128, "ircd.m.sync.%s.stats.debug", this->name()}, +} +,enable +{ + { "name", conf_name[0] }, + { "default", true }, +} +,stats_debug +{ + { "name", conf_name[1] }, + { "default", false }, +} ,_polylog { std::move(polylog) @@ -676,22 +684,25 @@ void ircd::m::sync::item::polylog(data &data) try { + if(!enable) + return; + #ifdef RB_DEBUG sync::stats stats { - data.stats? + data.stats && (stats_info || stats_debug)? *data.stats: sync::stats{} }; - if(data.stats) + if(data.stats && (stats_info || stats_debug)) stats.timer = {}; #endif _polylog(data); #ifdef RB_DEBUG - if(data.stats && bool(stats_debug)) + if(data.stats && (stats_info || stats_debug)) { //data.out.flush(); thread_local char tmbuf[32]; diff --git a/modules/client/sync/rooms.cc b/modules/client/sync/rooms.cc index 6f04ea46c..b09ef3e2c 100644 --- a/modules/client/sync/rooms.cc +++ b/modules/client/sync/rooms.cc @@ -93,7 +93,7 @@ ircd::m::sync::_rooms_polylog(data &data, data.user_rooms.for_each(membership, [&data] (const m::room &room, const string_view &membership_) { - #ifdef RB_DEBUG + #if defined(RB_DEBUG) && 0 sync::stats stats { data.stats? @@ -107,7 +107,7 @@ ircd::m::sync::_rooms_polylog(data &data, _rooms_polylog_room(data, room); - #ifdef RB_DEBUG + #if defined(RB_DEBUG) && 0 thread_local char tmbuf[32]; if(data.stats && bool(stats_debug)) log::debug {