From 7c9066b61158634120c64dcf4d9a957ddea41d45 Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Fri, 1 Mar 2024 14:31:10 +0100 Subject: [PATCH] rec: partial backport of 13830 to rec-5.0.x: reduce RPZ memory usage --- pdns/recursordist/rec-main.cc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pdns/recursordist/rec-main.cc b/pdns/recursordist/rec-main.cc index 954eb76ed6..69b2a56128 100644 --- a/pdns/recursordist/rec-main.cc +++ b/pdns/recursordist/rec-main.cc @@ -2750,8 +2750,7 @@ static void recursorThread() } } - unsigned int ringsize = ::arg().asNum("stats-ringbuffer-entries") / RecThreadInfo::numUDPWorkers(); - if (ringsize != 0) { + if (unsigned int ringsize = ::arg().asNum("stats-ringbuffer-entries") / RecThreadInfo::numUDPWorkers(); ringsize != 0) { t_remotes = std::make_unique(); if (RecThreadInfo::weDistributeQueries()) { t_remotes->set_capacity(::arg().asNum("stats-ringbuffer-entries") / RecThreadInfo::numDistributors()); @@ -2778,14 +2777,16 @@ static void recursorThread() g_multiTasker = std::make_unique(::arg().asNum("stack-size"), ::arg().asNum("stack-cache-size")); threadInfo.setMT(g_multiTasker.get()); - /* start protobuf export threads if needed */ - auto luaconfsLocal = g_luaconfs.getLocal(); - checkProtobufExport(luaconfsLocal); - checkOutgoingProtobufExport(luaconfsLocal); + { + /* start protobuf export threads if needed, don;'t keep a ref to lua config around */ + auto luaconfsLocal = g_luaconfs.getLocal(); + checkProtobufExport(luaconfsLocal); + checkOutgoingProtobufExport(luaconfsLocal); #ifdef HAVE_FSTRM - checkFrameStreamExport(luaconfsLocal, luaconfsLocal->frameStreamExportConfig, t_frameStreamServersInfo); - checkFrameStreamExport(luaconfsLocal, luaconfsLocal->nodFrameStreamExportConfig, t_nodFrameStreamServersInfo); + checkFrameStreamExport(luaconfsLocal, luaconfsLocal->frameStreamExportConfig, t_frameStreamServersInfo); + checkFrameStreamExport(luaconfsLocal, luaconfsLocal->nodFrameStreamExportConfig, t_nodFrameStreamServersInfo); #endif + } t_fdm = unique_ptr(getMultiplexer(log)); -- 2.47.2