Always register backend for expiration, check for open during loop

This commit is contained in:
Tim Wojtulewicz 2025-02-06 12:50:41 -07:00
parent 28951dccf1
commit 64f3969434
3 changed files with 9 additions and 11 deletions

View file

@ -62,13 +62,10 @@ OpenResultCallback::OpenResultCallback(IntrusivePtr<zeek::detail::trigger::Trigg
void OpenResultCallback::Complete(const ErrorResult& res) {
zeek::Val* result;
if ( res ) {
if ( res )
result = new StringVal(res.value());
}
else {
storage_mgr->AddBackendToMap(backend->backend);
else
result = backend;
}
ValComplete(result);
}

View file

@ -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,16 +82,18 @@ 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<std::mutex> lk(backends_mtx);
for ( const auto& b : backends )
for ( const auto& b : backends ) {
if ( b->IsOpen() )
b->Expire();
}
}
void Manager::StartExpirationTimer() {
zeek::detail::timer_mgr->Add(
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<std::mutex> lk(backends_mtx);
backends.push_back(std::move(backend));
}

View file

@ -71,7 +71,7 @@ protected:
void StartExpirationTimer();
friend class storage::OpenResultCallback;
void AddBackendToMap(BackendPtr backend);
void RegisterBackend(BackendPtr backend);
private:
std::vector<BackendPtr> backends;