diff --git a/include/file_manager/events.hpp b/include/file_manager/events.hpp index 1a006411..53be08bd 100644 --- a/include/file_manager/events.hpp +++ b/include/file_manager/events.hpp @@ -93,7 +93,7 @@ E_SIMPLE3(download_stored_failed, error, true, std::string, error, err, E_STRING ); -E_SIMPLE1(download_timeout, warn, true, +E_SIMPLE1(item_timeout, normal, true, std::string, api_path, ap, E_STRING ); // clang-format on diff --git a/src/file_manager/file_manager.cpp b/src/file_manager/file_manager.cpp index e00c293d..7a127ad7 100644 --- a/src/file_manager/file_manager.cpp +++ b/src/file_manager/file_manager.cpp @@ -86,23 +86,15 @@ file_manager::~file_manager() { } void file_manager::close(std::uint64_t handle) { - unique_recur_mutex_lock file_lock(open_file_mtx_); + recur_mutex_lock file_lock(open_file_mtx_); auto closeable_file = get_open_file_by_handle(handle); if (closeable_file) { closeable_file->remove(handle); - - if (closeable_file->can_close()) { - auto api_path = closeable_file->get_api_path(); - open_file_lookup_.erase(api_path); - file_lock.unlock(); - - closeable_file->close(); - } } } void file_manager::close_all(const std::string &api_path) { - unique_recur_mutex_lock file_lock(open_file_mtx_); + recur_mutex_lock file_lock(open_file_mtx_); std::vector handles; auto iter = open_file_lookup_.find(api_path); if (iter == open_file_lookup_.end()) { @@ -115,11 +107,6 @@ void file_manager::close_all(const std::string &api_path) { for (auto handle : handles) { closeable_file->remove(handle); } - - open_file_lookup_.erase(api_path); - file_lock.unlock(); - - closeable_file->close(); } void file_manager::close_timed_out_files() { @@ -141,7 +128,7 @@ void file_manager::close_timed_out_files() { for (auto &closeable_file : closeable_list) { closeable_file->close(); - event_system::instance().raise( + event_system::instance().raise( closeable_file->get_api_path()); } closeable_list.clear(); @@ -838,7 +825,7 @@ void file_manager::stop() { while (not upload_lookup_.empty()) { upload_lock.lock(); if (not upload_lookup_.empty()) { - upload_notify_.wait_for(upload_lock, 1s); + upload_notify_.wait_for(upload_lock, 1ms); } upload_notify_.notify_all(); upload_lock.unlock(); diff --git a/tests/file_manager_test.cpp b/tests/file_manager_test.cpp index 41c554cf..9e41a5b9 100644 --- a/tests/file_manager_test.cpp +++ b/tests/file_manager_test.cpp @@ -1711,8 +1711,8 @@ TEST(file_manager, file_is_closed_after_download_timeout) { const auto source_path = utils::path::combine( cfg.get_cache_directory(), {utils::create_uuid_string()}); - event_consumer es("download_timeout", [](const event &e) { - const auto &ee = dynamic_cast(e); + event_consumer es("item_timeout", [](const event &e) { + const auto &ee = dynamic_cast(e); EXPECT_STREQ("/test_download_timeout.txt", ee.get_api_path().get().c_str()); });