diff --git a/client/Makefile.in b/client/Makefile.in index 6f480f2..a72076e 100644 --- a/client/Makefile.in +++ b/client/Makefile.in @@ -49,6 +49,7 @@ CLIENT_SHARED_LIBS = libfdfsclient.so ALL_LIBS = $(STATIC_LIBS) $(SHARED_LIBS) all: $(ALL_OBJS) $(ALL_PRGS) $(ALL_LIBS) + libfdfsclient.so: $(COMPILE) -o $@ $< -shared $(FDFS_SHARED_OBJS) $(LIB_PATH) libfdfsclient.a: diff --git a/storage/Makefile.in b/storage/Makefile.in index 33bdb92..34f0bd4 100644 --- a/storage/Makefile.in +++ b/storage/Makefile.in @@ -26,6 +26,9 @@ ALL_OBJS = $(SHARED_OBJS) ALL_PRGS = fdfs_storaged all: $(ALL_OBJS) $(ALL_PRGS) + +$(ALL_PRGS): $(ALL_OBJS) + .o: $(COMPILE) -o $@ $< $(SHARED_OBJS) $(LIB_PATH) $(INC_PATH) .c: diff --git a/tracker/Makefile.in b/tracker/Makefile.in index d85751b..adb38fc 100644 --- a/tracker/Makefile.in +++ b/tracker/Makefile.in @@ -17,6 +17,9 @@ ALL_OBJS = $(SHARED_OBJS) ALL_PRGS = fdfs_trackerd all: $(ALL_OBJS) $(ALL_PRGS) + +$(ALL_PRGS): $(ALL_OBJS) + .o: $(COMPILE) -o $@ $< $(SHARED_OBJS) $(LIB_PATH) $(INC_PATH) .c: diff --git a/tracker/fdfs_trackerd.c b/tracker/fdfs_trackerd.c index 6c793ab..06bd176 100644 --- a/tracker/fdfs_trackerd.c +++ b/tracker/fdfs_trackerd.c @@ -58,19 +58,74 @@ static void sigUsrHandler(int sig); static void sigAlarmHandler(int sig); #if defined(DEBUG_FLAG) -/* -#if defined(OS_LINUX) -static void sigSegvHandler(int signum, siginfo_t *info, void *ptr); -#endif -*/ - static void sigDumpHandler(int sig); #endif -#define SCHEDULE_ENTRIES_COUNT 5 +static int setup_signal_handlers() +{ + struct sigaction act; + + memset(&act, 0, sizeof(act)); + sigemptyset(&act.sa_mask); + act.sa_handler = sigUsrHandler; + if(sigaction(SIGUSR1, &act, NULL) < 0 || \ + sigaction(SIGUSR2, &act, NULL) < 0) + { + logCrit("file: "__FILE__", line: %d, " \ + "call sigaction fail, errno: %d, error info: %s", \ + __LINE__, errno, STRERROR(errno)); + return errno; + } + + act.sa_handler = sigHupHandler; + if(sigaction(SIGHUP, &act, NULL) < 0) + { + logCrit("file: "__FILE__", line: %d, " \ + "call sigaction fail, errno: %d, error info: %s", \ + __LINE__, errno, STRERROR(errno)); + return errno; + } + + act.sa_handler = SIG_IGN; + if(sigaction(SIGPIPE, &act, NULL) < 0) + { + logCrit("file: "__FILE__", line: %d, " \ + "call sigaction fail, errno: %d, error info: %s", \ + __LINE__, errno, STRERROR(errno)); + return errno; + } + + act.sa_handler = sigQuitHandler; + if(sigaction(SIGINT, &act, NULL) < 0 || \ + sigaction(SIGTERM, &act, NULL) < 0 || \ + sigaction(SIGQUIT, &act, NULL) < 0) + { + logCrit("file: "__FILE__", line: %d, " \ + "call sigaction fail, errno: %d, error info: %s", \ + __LINE__, errno, STRERROR(errno)); + return errno; + } + +#if defined(DEBUG_FLAG) + memset(&act, 0, sizeof(act)); + sigemptyset(&act.sa_mask); + act.sa_handler = sigDumpHandler; + if(sigaction(SIGUSR1, &act, NULL) < 0 || \ + sigaction(SIGUSR2, &act, NULL) < 0) + { + logCrit("file: "__FILE__", line: %d, " \ + "call sigaction fail, errno: %d, error info: %s", \ + __LINE__, errno, STRERROR(errno)); + return errno; + } +#endif + + return 0; +} static int setup_schedule_tasks() { +#define SCHEDULE_ENTRIES_COUNT 5 ScheduleEntry scheduleEntries[SCHEDULE_ENTRIES_COUNT]; ScheduleArray scheduleArray; @@ -99,7 +154,6 @@ int main(int argc, char *argv[]) int result; int wait_count; pthread_t schedule_tid; - struct sigaction act; char pidFilename[MAX_PATH_SIZE]; bool stop; @@ -206,85 +260,13 @@ int main(int argc, char *argv[]) return result; } - memset(&act, 0, sizeof(act)); - sigemptyset(&act.sa_mask); - - act.sa_handler = sigUsrHandler; - if(sigaction(SIGUSR1, &act, NULL) < 0 || \ - sigaction(SIGUSR2, &act, NULL) < 0) + if ((result=setup_signal_handlers()) != 0) { - logCrit("file: "__FILE__", line: %d, " \ - "call sigaction fail, errno: %d, error info: %s", \ - __LINE__, errno, STRERROR(errno)); logCrit("exit abnormally!\n"); - return errno; + log_destroy(); + return result; } - act.sa_handler = sigHupHandler; - if(sigaction(SIGHUP, &act, NULL) < 0) - { - logCrit("file: "__FILE__", line: %d, " \ - "call sigaction fail, errno: %d, error info: %s", \ - __LINE__, errno, STRERROR(errno)); - logCrit("exit abnormally!\n"); - return errno; - } - - act.sa_handler = SIG_IGN; - if(sigaction(SIGPIPE, &act, NULL) < 0) - { - logCrit("file: "__FILE__", line: %d, " \ - "call sigaction fail, errno: %d, error info: %s", \ - __LINE__, errno, STRERROR(errno)); - logCrit("exit abnormally!\n"); - return errno; - } - - act.sa_handler = sigQuitHandler; - if(sigaction(SIGINT, &act, NULL) < 0 || \ - sigaction(SIGTERM, &act, NULL) < 0 || \ - sigaction(SIGQUIT, &act, NULL) < 0) - { - logCrit("file: "__FILE__", line: %d, " \ - "call sigaction fail, errno: %d, error info: %s", \ - __LINE__, errno, STRERROR(errno)); - logCrit("exit abnormally!\n"); - return errno; - } - -#if defined(DEBUG_FLAG) -/* -#if defined(OS_LINUX) - memset(&act, 0, sizeof(act)); - sigemptyset(&act.sa_mask); - act.sa_sigaction = sigSegvHandler; - act.sa_flags = SA_SIGINFO; - if (sigaction(SIGSEGV, &act, NULL) < 0 || \ - sigaction(SIGABRT, &act, NULL) < 0) - { - logCrit("file: "__FILE__", line: %d, " \ - "call sigaction fail, errno: %d, error info: %s", \ - __LINE__, errno, STRERROR(errno)); - logCrit("exit abnormally!\n"); - return errno; - } -#endif -*/ - - memset(&act, 0, sizeof(act)); - sigemptyset(&act.sa_mask); - act.sa_handler = sigDumpHandler; - if(sigaction(SIGUSR1, &act, NULL) < 0 || \ - sigaction(SIGUSR2, &act, NULL) < 0) - { - logCrit("file: "__FILE__", line: %d, " \ - "call sigaction fail, errno: %d, error info: %s", \ - __LINE__, errno, STRERROR(errno)); - logCrit("exit abnormally!\n"); - return errno; - } -#endif - #ifdef WITH_HTTPD if (!g_http_params.disabled) { @@ -362,18 +344,7 @@ int main(int argc, char *argv[]) wait_count = 0; while ((SF_G_ALIVE_THREAD_COUNT != 0) || g_schedule_flag) { - -/* -#if defined(DEBUG_FLAG) && defined(OS_LINUX) - if (bSegmentFault) - { - sleep(5); - break; - } -#endif -*/ - - usleep(10000); + fc_sleep_ms(10); if (++wait_count > 3000) { logWarning("waiting timeout, exit!"); diff --git a/tracker/tracker_func.c b/tracker/tracker_func.c index 719f5c0..7815c7c 100644 --- a/tracker/tracker_func.c +++ b/tracker/tracker_func.c @@ -127,6 +127,7 @@ static int tracker_load_storage_id_info(const char *config_filename, \ int tracker_load_from_conf_file(const char *filename) { const int task_buffer_extra_size = 0; + const bool need_set_run_by = false; char *pSlotMinSize; char *pSlotMaxSize; char *pSpaceThreshold; @@ -136,6 +137,7 @@ int tracker_load_from_conf_file(const char *filename) char *pHttpCheckType; #endif IniContext iniContext; + SFContextIniConfig config; int result; int64_t trunk_file_size; int64_t slot_min_size; @@ -168,16 +170,17 @@ int tracker_load_from_conf_file(const char *filename) } sf_set_current_time(); - if ((result=sf_load_config("trackerd", filename, &iniContext, - "service", FDFS_TRACKER_SERVER_DEF_PORT, - FDFS_TRACKER_SERVER_DEF_PORT, - task_buffer_extra_size)) != 0) + + SF_SET_CONTEXT_INI_CONFIG(config, filename, &iniContext, + NULL, FDFS_TRACKER_SERVER_DEF_PORT, + FDFS_TRACKER_SERVER_DEF_PORT, DEFAULT_WORK_THREADS); + if ((result=sf_load_config_ex("trackerd", &config, + task_buffer_extra_size, need_set_run_by)) != 0) { return result; } - if ((result=tracker_load_store_lookup(filename, \ - &iniContext)) != 0) + if ((result=tracker_load_store_lookup(filename, &iniContext)) != 0) { break; } @@ -587,4 +590,3 @@ int tracker_load_from_conf_file(const char *filename) return result; } - diff --git a/tracker/tracker_service.c b/tracker/tracker_service.c index 3801366..73e2630 100644 --- a/tracker/tracker_service.c +++ b/tracker/tracker_service.c @@ -66,6 +66,12 @@ static void task_finish_clean_up(struct fast_task_info *pTask) int tracker_service_init() { int result; + + if ((result=init_pthread_lock(&lb_thread_lock)) != 0) + { + return result; + } + result = sf_service_init("fdfs_trackerd", NULL, NULL, NULL, fdfs_set_body_length, tracker_deal_task, task_finish_clean_up, NULL, 1000, sizeof(TrackerHeader), sizeof(TrackerClientInfo));