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); }