From 7d1d0d56a3f8f5b9ab32c135acd30358d175a54c Mon Sep 17 00:00:00 2001 From: yuqing Date: Sun, 13 Sep 2015 19:27:44 +0800 Subject: [PATCH] use INIT_SCHEDULE_ENTRY --- HISTORY | 2 +- fastdfs.spec | 3 +- storage/fdfs_storaged.c | 136 ++++++++++++++-------------------------- tracker/fdfs_trackerd.c | 71 ++++++++------------- 4 files changed, 76 insertions(+), 136 deletions(-) diff --git a/HISTORY b/HISTORY index 80c8264..97af527 100644 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,5 @@ -Version 5.07 2015-09-05 +Version 5.07 2015-09-13 * schedule task add the "second" field * make.sh changed, you must upgrade libfastcommon to V1.21 or later * bug fixed: storage_disk_recovery.c skip the first file (binlog first line) diff --git a/fastdfs.spec b/fastdfs.spec index fe28c5f..f0c6e1c 100644 --- a/fastdfs.spec +++ b/fastdfs.spec @@ -16,12 +16,13 @@ Source: http://perso.orange.fr/sebastien.godard/%{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: %__cp %__mv %__chmod %__grep %__mkdir %__install %__id +BuildRequires: libfastcommon-devel >= 1.0.21 %description This package provides tracker & storage of fastdfs %package -n %{FDFSServer} -Requires: libfastcommon >= 1.0.20 +Requires: libfastcommon >= 1.0.21 Summary: fastdfs tracker & storage %package -n %{FDFSTool} diff --git a/storage/fdfs_storaged.c b/storage/fdfs_storaged.c index 7cf38bd..41520bf 100644 --- a/storage/fdfs_storaged.c +++ b/storage/fdfs_storaged.c @@ -313,118 +313,76 @@ int main(int argc, char *argv[]) } scheduleArray.entries = scheduleEntries; - + scheduleArray.count = 0; memset(scheduleEntries, 0, sizeof(scheduleEntries)); - scheduleEntries[0].id = 1; - scheduleEntries[0].time_base.hour = TIME_NONE; - scheduleEntries[0].time_base.minute = TIME_NONE; - scheduleEntries[0].time_base.second = TIME_NONE; - scheduleEntries[0].interval = g_sync_log_buff_interval; - scheduleEntries[0].task_func = log_sync_func; - scheduleEntries[0].func_args = &g_log_context; - scheduleEntries[1].id = 2; - scheduleEntries[1].time_base.hour = TIME_NONE; - scheduleEntries[1].time_base.minute = TIME_NONE; - scheduleEntries[1].time_base.second = TIME_NONE; - scheduleEntries[1].interval = g_sync_binlog_buff_interval; - scheduleEntries[1].task_func = fdfs_binlog_sync_func; - scheduleEntries[1].func_args = NULL; + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, TIME_NONE, TIME_NONE, TIME_NONE, + g_sync_log_buff_interval, log_sync_func, &g_log_context); + scheduleArray.count++; - scheduleEntries[2].id = 3; - scheduleEntries[2].time_base.hour = TIME_NONE; - scheduleEntries[2].time_base.minute = TIME_NONE; - scheduleEntries[2].time_base.second = TIME_NONE; - scheduleEntries[2].interval = g_sync_stat_file_interval; - scheduleEntries[2].task_func = fdfs_stat_file_sync_func; - scheduleEntries[2].func_args = NULL; + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, TIME_NONE, TIME_NONE, TIME_NONE, + g_sync_binlog_buff_interval, fdfs_binlog_sync_func, NULL); + scheduleArray.count++; + + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, TIME_NONE, TIME_NONE, TIME_NONE, + g_sync_stat_file_interval, fdfs_stat_file_sync_func, NULL); + scheduleArray.count++; - scheduleArray.count = 3; if (g_if_use_trunk_file) { - scheduleEntries[scheduleArray.count].id = 4; - scheduleEntries[scheduleArray.count].time_base.hour = TIME_NONE; - scheduleEntries[scheduleArray.count].time_base.minute=TIME_NONE; - scheduleEntries[scheduleArray.count].time_base.second=TIME_NONE; - scheduleEntries[scheduleArray.count].interval = 1; - scheduleEntries[scheduleArray.count].task_func = \ - trunk_binlog_sync_func; - scheduleEntries[scheduleArray.count].func_args = NULL; + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, TIME_NONE, TIME_NONE, TIME_NONE, + 1, trunk_binlog_sync_func, NULL); scheduleArray.count++; } if (g_use_access_log) { - scheduleEntries[scheduleArray.count].id = 5; - scheduleEntries[scheduleArray.count].time_base.hour = TIME_NONE; - scheduleEntries[scheduleArray.count].time_base.minute=TIME_NONE; - scheduleEntries[scheduleArray.count].time_base.second=TIME_NONE; - scheduleEntries[scheduleArray.count].interval = \ - g_sync_log_buff_interval; - scheduleEntries[scheduleArray.count].task_func = log_sync_func; - scheduleEntries[scheduleArray.count].func_args = \ - &g_access_log_context; + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, TIME_NONE, TIME_NONE, TIME_NONE, + g_sync_log_buff_interval, log_sync_func, &g_access_log_context); scheduleArray.count++; if (g_rotate_access_log) { - scheduleEntries[scheduleArray.count].id = 6; - scheduleEntries[scheduleArray.count].time_base = \ - g_access_log_rotate_time; - scheduleEntries[scheduleArray.count].interval = \ - 24 * 3600; - scheduleEntries[scheduleArray.count].task_func = \ - log_notify_rotate; - scheduleEntries[scheduleArray.count].func_args = \ - &g_access_log_context; + INIT_SCHEDULE_ENTRY_EX(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, g_access_log_rotate_time, + 24 * 3600, log_notify_rotate, &g_access_log_context); scheduleArray.count++; - if (g_log_file_keep_days > 0) - { - log_set_keep_days(&g_access_log_context, - g_log_file_keep_days); - scheduleEntries[scheduleArray.count].id = 7; - scheduleEntries[scheduleArray.count].time_base.hour = 1; - scheduleEntries[scheduleArray.count].time_base.minute = 0; - scheduleEntries[scheduleArray.count].time_base.second = 0; - scheduleEntries[scheduleArray.count].interval = 24 * 3600; - scheduleEntries[scheduleArray.count].task_func = - log_delete_old_files; - scheduleEntries[scheduleArray.count].func_args = - &g_access_log_context; - scheduleArray.count++; - } - } + if (g_log_file_keep_days > 0) + { + log_set_keep_days(&g_access_log_context, + g_log_file_keep_days); + + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, 1, 0, 0, 24 * 3600, + log_delete_old_files, &g_access_log_context); + scheduleArray.count++; + } + } } if (g_rotate_error_log) { - scheduleEntries[scheduleArray.count].id = 8; - scheduleEntries[scheduleArray.count].time_base = \ - g_error_log_rotate_time; - scheduleEntries[scheduleArray.count].interval = \ - 24 * 3600; - scheduleEntries[scheduleArray.count].task_func = \ - log_notify_rotate; - scheduleEntries[scheduleArray.count].func_args = \ - &g_log_context; + INIT_SCHEDULE_ENTRY_EX(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, g_error_log_rotate_time, + 24 * 3600, log_notify_rotate, &g_log_context); scheduleArray.count++; - if (g_log_file_keep_days > 0) - { - log_set_keep_days(&g_log_context, g_log_file_keep_days); - scheduleEntries[scheduleArray.count].id = 9; - scheduleEntries[scheduleArray.count].time_base.hour = 1; - scheduleEntries[scheduleArray.count].time_base.minute = 0; - scheduleEntries[scheduleArray.count].time_base.second = 0; - scheduleEntries[scheduleArray.count].interval = 24 * 3600; - scheduleEntries[scheduleArray.count].task_func = - log_delete_old_files; - scheduleEntries[scheduleArray.count].func_args = - &g_log_context; - scheduleArray.count++; - } - } + if (g_log_file_keep_days > 0) + { + log_set_keep_days(&g_log_context, g_log_file_keep_days); + + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, 1, 0, 0, 24 * 3600, + log_delete_old_files, &g_log_context); + scheduleArray.count++; + } + } if ((result=sched_start(&scheduleArray, &schedule_tid, \ g_thread_stack_size, (bool * volatile)&g_continue_flag)) != 0) diff --git a/tracker/fdfs_trackerd.c b/tracker/fdfs_trackerd.c index f2f3605..9ec1096 100644 --- a/tracker/fdfs_trackerd.c +++ b/tracker/fdfs_trackerd.c @@ -313,60 +313,41 @@ int main(int argc, char *argv[]) } scheduleArray.entries = scheduleEntries; + scheduleArray.count = 0; memset(scheduleEntries, 0, sizeof(scheduleEntries)); - scheduleEntries[0].id = 1; - scheduleEntries[0].time_base.hour = TIME_NONE; - scheduleEntries[0].time_base.minute = TIME_NONE; - scheduleEntries[0].time_base.second = TIME_NONE; - scheduleEntries[0].interval = g_sync_log_buff_interval; - scheduleEntries[0].task_func = log_sync_func; - scheduleEntries[0].func_args = &g_log_context; - scheduleEntries[1].id = 2; - scheduleEntries[1].time_base.hour = TIME_NONE; - scheduleEntries[1].time_base.minute = TIME_NONE; - scheduleEntries[1].time_base.second = TIME_NONE; - scheduleEntries[1].interval = g_check_active_interval; - scheduleEntries[1].task_func = tracker_mem_check_alive; - scheduleEntries[1].func_args = NULL; + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, TIME_NONE, TIME_NONE, TIME_NONE, + g_sync_log_buff_interval, log_sync_func, &g_log_context); + scheduleArray.count++; - scheduleEntries[2].id = 3; - scheduleEntries[2].time_base.hour = 0; - scheduleEntries[2].time_base.minute = 0; - scheduleEntries[2].time_base.second = 0; - scheduleEntries[2].interval = TRACKER_SYNC_STATUS_FILE_INTERVAL; - scheduleEntries[2].task_func = tracker_write_status_to_file; - scheduleEntries[2].func_args = NULL; + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, TIME_NONE, TIME_NONE, TIME_NONE, + g_check_active_interval, tracker_mem_check_alive, NULL); + scheduleArray.count++; - scheduleArray.count = 3; + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, 0, 0, 0, + TRACKER_SYNC_STATUS_FILE_INTERVAL, + tracker_write_status_to_file, NULL); + scheduleArray.count++; if (g_rotate_error_log) { - scheduleEntries[scheduleArray.count].id = 4; - scheduleEntries[scheduleArray.count].time_base = \ - g_error_log_rotate_time; - scheduleEntries[scheduleArray.count].interval = \ - 24 * 3600; - scheduleEntries[scheduleArray.count].task_func = \ - log_notify_rotate; - scheduleEntries[scheduleArray.count].func_args = \ - &g_log_context; + INIT_SCHEDULE_ENTRY_EX(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, g_error_log_rotate_time, + 24 * 3600, log_notify_rotate, &g_log_context); scheduleArray.count++; - if (g_log_file_keep_days > 0) - { - log_set_keep_days(&g_log_context, g_log_file_keep_days); - scheduleEntries[scheduleArray.count].id = 5; - scheduleEntries[scheduleArray.count].time_base.hour = 1; - scheduleEntries[scheduleArray.count].time_base.minute = 0; - scheduleEntries[scheduleArray.count].time_base.second = 0; - scheduleEntries[scheduleArray.count].interval = 24 * 3600; - scheduleEntries[scheduleArray.count].task_func = - log_delete_old_files; - scheduleEntries[scheduleArray.count].func_args = - &g_log_context; - scheduleArray.count++; - } + if (g_log_file_keep_days > 0) + { + log_set_keep_days(&g_log_context, g_log_file_keep_days); + + INIT_SCHEDULE_ENTRY(scheduleEntries[scheduleArray.count], + scheduleArray.count + 1, 1, 0, 0, 24 * 3600, + log_delete_old_files, &g_log_context); + scheduleArray.count++; + } } if ((result=sched_start(&scheduleArray, &schedule_tid, \