diff --git a/subscriptionstore.cpp b/subscriptionstore.cpp index 5c0e6dd..398df8e 100644 --- a/subscriptionstore.cpp +++ b/subscriptionstore.cpp @@ -654,10 +654,15 @@ void SubscriptionStore::removeExpiredSessionsClients() logger->logf(LOG_DEBUG, "Cleaning out old sessions"); const std::chrono::time_point now = std::chrono::steady_clock::now(); + int removedSessions = 0; + int processedRemovals = 0; + int queuedRemovalsLeft = -1; { std::lock_guard(this->queuedSessionRemovalsMutex); + queuedRemovalsLeft = queuedSessionRemovals.size(); + auto it = queuedSessionRemovals.begin(); while (it != queuedSessionRemovals.end()) { @@ -667,7 +672,6 @@ void SubscriptionStore::removeExpiredSessionsClients() { if (qsr.getExpiresAt() > now) { - logger->logf(LOG_DEBUG, "Breaking from sorted list of queued session removals. %d left in the future.", queuedSessionRemovals.size()); break; } @@ -675,12 +679,20 @@ void SubscriptionStore::removeExpiredSessionsClients() if (!session->hasActiveClient()) { removeSession(session); + removedSessions++; } } it = queuedSessionRemovals.erase(it); + + processedRemovals++; } + + queuedRemovalsLeft = queuedSessionRemovals.size(); } + logger->logf(LOG_DEBUG, "Processed %d queued session removals, resuling in %d deleted expired sessions. %d queued removals in the future.", + processedRemovals, removedSessions, queuedRemovalsLeft); + if (lastTreeCleanup + std::chrono::minutes(30) < now) { RWLockGuard lock_guard(&subscriptionsRwlock);