From 7b6a1281cf44b0b205ec286bed5c4d0b79fc8527 Mon Sep 17 00:00:00 2001 From: pengxuanzheng Date: Mon, 27 Sep 2021 18:49:27 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(TSG-7956):=20delete=20fd?= =?UTF-8?q?=E7=9A=84=E9=94=81=E4=BD=8D=E7=BD=AE=E4=B8=8D=E5=AF=B9=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E9=87=8D=E5=A4=8D=E5=88=A0fd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hos_client.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/hos_client.cpp b/src/hos_client.cpp index b4ec4113..cfb9bc4d 100644 --- a/src/hos_client.cpp +++ b/src/hos_client.cpp @@ -59,7 +59,6 @@ static inline size_t get_current_ms() static int hos_delete_fd(size_t fd, size_t thread_id) { - std::lock_guard locker(m_delete_lock); hos_fd_context_t* context = (hos_fd_context_t *)fd; if (context == NULL) { @@ -151,6 +150,7 @@ static void PutObjectAsyncFinished(const Aws::S3::S3Client* S3Client, if (a_fd_context->mode & APPEND_MODE) { + std::lock_guard locker(m_delete_lock); //APPEND MODE 保留fd atomic_add(&(a_fd_context->recive_cnt), 1); if (a_fd_context->fd_status == HOS_FD_CANCEL) @@ -1039,7 +1039,6 @@ int hos_close_fd(size_t fd, size_t thread_id) data_info->cache[thread_id] = 0; } } - a_fd_context->fd_status = HOS_FD_CANCEL; a_fd_context->cache.reset(); a_fd_context->cache = NULL; a_fd_context->cache_rest = hos_conf->cache_size; @@ -1054,6 +1053,8 @@ int hos_close_fd(size_t fd, size_t thread_id) { //异步APPEND 模式,判断是否可以释放 //异步其他模式,在PutObjectAsyncFinished出释放fd + std::lock_guard locker(m_delete_lock); + a_fd_context->fd_status = HOS_FD_CANCEL; if (a_fd_context->mode == (BUFF_MODE | APPEND_MODE) && a_fd_context->position == a_fd_context->recive_cnt) { MESA_HANDLE_RUNTIME_LOG(g_hos_handle.log, RLOG_LV_DEBUG, __FUNCTION__,