From 64f3969434ac2d23dbe7f7f480b938e218818aa3 Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Thu, 6 Feb 2025 12:50:41 -0700 Subject: [PATCH] Always register backend for expiration, check for open during loop --- src/storage/Backend.cc | 7 ++----- src/storage/Manager.cc | 11 ++++++----- src/storage/Manager.h | 2 +- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/storage/Backend.cc b/src/storage/Backend.cc index 5a94ba35e0..591d72eda7 100644 --- a/src/storage/Backend.cc +++ b/src/storage/Backend.cc @@ -62,13 +62,10 @@ OpenResultCallback::OpenResultCallback(IntrusivePtrAddBackendToMap(backend->backend); + else result = backend; - } ValComplete(result); } diff --git a/src/storage/Manager.cc b/src/storage/Manager.cc index af632e8f15..53afa52ebb 100644 --- a/src/storage/Manager.cc +++ b/src/storage/Manager.cc @@ -54,8 +54,7 @@ ErrorResult Manager::OpenBackend(BackendPtr backend, RecordValPtr options, TypeP return util::fmt("Failed to open backend %s: %s", backend->Tag(), res.value().c_str()); } - if ( ! cb ) - AddBackendToMap(std::move(backend)); + RegisterBackend(std::move(backend)); // TODO: post Storage::backend_opened event @@ -83,8 +82,10 @@ ErrorResult Manager::CloseBackend(BackendPtr backend, ErrorResultCallback* cb) { void Manager::Expire() { DBG_LOG(DBG_STORAGE, "Expire running, have %zu backends to check", backends.size()); std::unique_lock lk(backends_mtx); - for ( const auto& b : backends ) - b->Expire(); + for ( const auto& b : backends ) { + if ( b->IsOpen() ) + b->Expire(); + } } void Manager::StartExpirationTimer() { @@ -92,7 +93,7 @@ void Manager::StartExpirationTimer() { new detail::ExpirationTimer(run_state::network_time + zeek::BifConst::Storage::expire_interval)); } -void Manager::AddBackendToMap(BackendPtr backend) { +void Manager::RegisterBackend(BackendPtr backend) { std::unique_lock lk(backends_mtx); backends.push_back(std::move(backend)); } diff --git a/src/storage/Manager.h b/src/storage/Manager.h index 5dc9cd9ffc..2974f218ad 100644 --- a/src/storage/Manager.h +++ b/src/storage/Manager.h @@ -71,7 +71,7 @@ protected: void StartExpirationTimer(); friend class storage::OpenResultCallback; - void AddBackendToMap(BackendPtr backend); + void RegisterBackend(BackendPtr backend); private: std::vector backends;