From 1e209da4e2f65548dbe871adad0d0df45617e592 Mon Sep 17 00:00:00 2001 From: YuQing <384681@qq.com> Date: Sun, 12 Feb 2023 10:49:10 +0800 Subject: [PATCH] use epoll edge trigger to resolve github issues #608 --- common/fdfs_global.c | 2 +- storage/storage_service.c | 1 + storage/storage_service.h | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/common/fdfs_global.c b/common/fdfs_global.c index d34fed4..d831f1a 100644 --- a/common/fdfs_global.c +++ b/common/fdfs_global.c @@ -20,7 +20,7 @@ #include "fastcommon/logger.h" #include "fdfs_global.h" -Version g_fdfs_version = {6, 9, 3}; +Version g_fdfs_version = {6, 9, 4}; bool g_use_connection_pool = false; ConnectionPool g_connection_pool; int g_connection_pool_max_idle_time = 3600; diff --git a/storage/storage_service.c b/storage/storage_service.c index eabfed0..a62fceb 100644 --- a/storage/storage_service.c +++ b/storage/storage_service.c @@ -1648,6 +1648,7 @@ int storage_service_init() return result; } + SF_G_EPOLL_EDGE_TRIGGER = true; result = sf_service_init("storage", alloc_thread_extra_data_func, NULL, sock_accept_done_callback, storage_set_body_length, sock_send_done_callback, storage_deal_task, task_finish_clean_up, diff --git a/storage/storage_service.h b/storage/storage_service.h index e4f66d8..b2cccff 100644 --- a/storage/storage_service.h +++ b/storage/storage_service.h @@ -21,6 +21,7 @@ #include "fastcommon/logger.h" #include "fastcommon/fast_task_queue.h" +#include "fastcommon/fc_atomic.h" #include "sf/sf_service.h" #include "fdfs_define.h" #include "storage_types.h" @@ -47,13 +48,14 @@ static inline void storage_clear_task(struct fast_task_info *pTask) if (pClientInfo->clean_func != NULL) { pClientInfo->clean_func(pTask); + pClientInfo->clean_func = NULL; } memset(pTask->arg, 0, sizeof(StorageClientInfo)); } static inline void storage_release_task(struct fast_task_info *pTask) { - if (__sync_sub_and_fetch(&pTask->reffer_count, 0) == 1) + if (FC_ATOMIC_GET(pTask->reffer_count) == 1) { storage_clear_task(pTask); }