From b3f9d9379a35c1884155d2f84a45eea91f9ba04e Mon Sep 17 00:00:00 2001 From: Daniil Cherednik Date: Tue, 12 Nov 2024 17:36:35 +0000 Subject: [PATCH] Moved commit "Fix memory leak in case of launch periodic keep-alive task for query service session" from ydb repo --- src/client/impl/ydb_internal/session_pool/session_pool.cpp | 7 +++++-- src/client/query/client.cpp | 6 +----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/client/impl/ydb_internal/session_pool/session_pool.cpp b/src/client/impl/ydb_internal/session_pool/session_pool.cpp index 810e05d49a..77025f8a3c 100644 --- a/src/client/impl/ydb_internal/session_pool/session_pool.cpp +++ b/src/client/impl/ydb_internal/session_pool/session_pool.cpp @@ -284,10 +284,13 @@ TPeriodicCb TSessionPool::CreatePeriodicTask(std::weak_ptr weakC if (deletePredicate(it->second.get(), sessions.size())) { sessionsToDelete.emplace_back(std::move(it->second)); - } else { + sessions.erase(it++); + } else if (cmd) { sessionsToTouch.emplace_back(std::move(it->second)); + sessions.erase(it++); + } else { + it++; } - sessions.erase(it++); } } diff --git a/src/client/query/client.cpp b/src/client/query/client.cpp index 887b324201..bf9ccb90fe 100644 --- a/src/client/query/client.cpp +++ b/src/client/query/client.cpp @@ -487,15 +487,11 @@ class TQueryClient::TImpl: public TClientImplCommon, public return false; }; - // No need to keep-alive - auto keepAliveCmd = [](TKqpSessionCommon*) { - }; - std::weak_ptr weak = shared_from_this(); Connections_->AddPeriodicTask( SessionPool_.CreatePeriodicTask( weak, - std::move(keepAliveCmd), + NSessionPool::TSessionPool::TKeepAliveCmd(), // no keep-alive cmd for query service std::move(deletePredicate) ), NSessionPool::PERIODIC_ACTION_INTERVAL); }