use epoll edge trigger to resolve github issues #608
parent
7414bea9b5
commit
1e209da4e2
|
|
@ -20,7 +20,7 @@
|
||||||
#include "fastcommon/logger.h"
|
#include "fastcommon/logger.h"
|
||||||
#include "fdfs_global.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;
|
bool g_use_connection_pool = false;
|
||||||
ConnectionPool g_connection_pool;
|
ConnectionPool g_connection_pool;
|
||||||
int g_connection_pool_max_idle_time = 3600;
|
int g_connection_pool_max_idle_time = 3600;
|
||||||
|
|
|
||||||
|
|
@ -1648,6 +1648,7 @@ int storage_service_init()
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SF_G_EPOLL_EDGE_TRIGGER = true;
|
||||||
result = sf_service_init("storage", alloc_thread_extra_data_func,
|
result = sf_service_init("storage", alloc_thread_extra_data_func,
|
||||||
NULL, sock_accept_done_callback, storage_set_body_length,
|
NULL, sock_accept_done_callback, storage_set_body_length,
|
||||||
sock_send_done_callback, storage_deal_task, task_finish_clean_up,
|
sock_send_done_callback, storage_deal_task, task_finish_clean_up,
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
#include "fastcommon/logger.h"
|
#include "fastcommon/logger.h"
|
||||||
#include "fastcommon/fast_task_queue.h"
|
#include "fastcommon/fast_task_queue.h"
|
||||||
|
#include "fastcommon/fc_atomic.h"
|
||||||
#include "sf/sf_service.h"
|
#include "sf/sf_service.h"
|
||||||
#include "fdfs_define.h"
|
#include "fdfs_define.h"
|
||||||
#include "storage_types.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)
|
if (pClientInfo->clean_func != NULL)
|
||||||
{
|
{
|
||||||
pClientInfo->clean_func(pTask);
|
pClientInfo->clean_func(pTask);
|
||||||
|
pClientInfo->clean_func = NULL;
|
||||||
}
|
}
|
||||||
memset(pTask->arg, 0, sizeof(StorageClientInfo));
|
memset(pTask->arg, 0, sizeof(StorageClientInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void storage_release_task(struct fast_task_info *pTask)
|
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);
|
storage_clear_task(pTask);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue