From 1d7b15d1be67cfbf945850a43ffa28657a12401b Mon Sep 17 00:00:00 2001 From: YuQing <384681@qq.com> Date: Sun, 11 Sep 2022 09:51:52 +0800 Subject: [PATCH] use func sf_parse_daemon_mode_and_action from libserverframe --- .gitignore | 5 ++++ HISTORY | 3 ++ INSTALL | 25 +++++++++++------ client/Makefile.in | 2 +- client/client_func.c | 16 +++++------ common/fdfs_global.c | 1 - common/fdfs_global.h | 2 +- php_client/fastdfs_client.c | 18 ++++++------ storage/Makefile.in | 2 +- storage/fdfs_storaged.c | 47 ++++++++++++++------------------ storage/storage_dump.c | 4 +-- storage/storage_func.c | 16 +++++------ storage/storage_sync.c | 20 +++++++------- storage/trunk_mgr/trunk_mem.c | 6 ++-- storage/trunk_mgr/trunk_shared.c | 14 +++++----- storage/trunk_mgr/trunk_sync.c | 16 +++++------ tracker/Makefile.in | 2 +- tracker/fdfs_trackerd.c | 47 ++++++++++++++------------------ tracker/tracker_dump.c | 4 +-- tracker/tracker_func.c | 16 +++++------ tracker/tracker_mem.c | 20 +++++++------- tracker/tracker_service.c | 4 +-- tracker/tracker_status.c | 4 +-- 23 files changed, 148 insertions(+), 146 deletions(-) diff --git a/.gitignore b/.gitignore index 458784e..da3c2bb 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,8 @@ php_client/run-tests.php # fastdfs runtime paths data/ logs/ + +# others +*.pid +*.swp +*.swo diff --git a/HISTORY b/HISTORY index d099747..019b055 100644 --- a/HISTORY +++ b/HISTORY @@ -1,4 +1,7 @@ +Version 6.09 2022-09-11 + * use libfastcommon V1.60 and libserverframe 1.1.18 + Version 6.08 2022-06-21 * use libfastcommon V1.56 NOTE: you MUST upgrade libfastcommon to V1.56 or later diff --git a/INSTALL b/INSTALL index 77aa342..0a73035 100644 --- a/INSTALL +++ b/INSTALL @@ -11,28 +11,37 @@ Chinese language: http://www.fastken.com/ # command lines as: git clone https://github.com/happyfish100/libfastcommon.git - cd libfastcommon; git checkout V1.0.56 + cd libfastcommon; git checkout V1.0.60 ./make.sh clean && ./make.sh && ./make.sh install -# step 2. download fastdfs source codes and install it, +# step 2. download libserverframe source codes and install it, +# github address: https://github.com/happyfish100/libserverframe.git +# gitee address: https://gitee.com/fastdfs100/libserverframe.git +# command lines as: + + git clone https://github.com/happyfish100/libserverframe.git + cd libserverframe; git checkout V1.1.18 + ./make.sh clean && ./make.sh && ./make.sh install + +# step 3. download fastdfs source codes and install it, # github address: https://github.com/happyfish100/fastdfs.git # gitee address: https://gitee.com/fastdfs100/fastdfs.git # command lines as: git clone https://github.com/happyfish100/fastdfs.git - cd fastdfs; git checkout V6.08 + cd fastdfs; git checkout V6.09 ./make.sh clean && ./make.sh && ./make.sh install -# step 3. setup the config files +# step 4. setup the config files # the setup script does NOT overwrite existing config files, # please feel free to execute this script (take easy :) ./setup.sh /etc/fdfs -# step 4. edit or modify the config files of tracker, storage and client +# step 5. edit or modify the config files of tracker, storage and client such as: vi /etc/fdfs/tracker.conf vi /etc/fdfs/storage.conf @@ -41,7 +50,7 @@ such as: and so on ... -# step 5. run the server programs +# step 6. run the server programs # start the tracker server: /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart @@ -53,12 +62,12 @@ such as: /sbin/service fdfs_storaged restart -# step 6. (optional) run monitor program +# step 7. (optional) run monitor program # such as: /usr/bin/fdfs_monitor /etc/fdfs/client.conf -# step 7. (optional) run the test program +# step 8. (optional) run the test program # such as: /usr/bin/fdfs_test /usr/bin/fdfs_test1 diff --git a/client/Makefile.in b/client/Makefile.in index 7a1a4b7..6f480f2 100644 --- a/client/Makefile.in +++ b/client/Makefile.in @@ -4,7 +4,7 @@ COMPILE = $(CC) $(CFLAGS) ENABLE_STATIC_LIB = $(ENABLE_STATIC_LIB) ENABLE_SHARED_LIB = $(ENABLE_SHARED_LIB) INC_PATH = -I../common -I../tracker -I/usr/include/fastcommon -LIB_PATH = $(LIBS) -lfastcommon +LIB_PATH = $(LIBS) -lfastcommon -lserverframe TARGET_PATH = $(TARGET_PREFIX)/bin TARGET_LIB = $(TARGET_PREFIX)/$(LIB_VERSION) TARGET_INC = $(TARGET_PREFIX)/include diff --git a/client/client_func.c b/client/client_func.c index 610abf2..ce329fe 100644 --- a/client/client_func.c +++ b/client/client_func.c @@ -270,25 +270,25 @@ static int fdfs_client_do_init_ex(TrackerServerGroup *pTrackerGroup, \ pBasePath = iniGetStrValue(NULL, "base_path", iniContext); if (pBasePath == NULL) { - strcpy(g_fdfs_base_path, "/tmp"); + strcpy(SF_G_BASE_PATH_STR, "/tmp"); } else { - snprintf(g_fdfs_base_path, sizeof(g_fdfs_base_path), + snprintf(SF_G_BASE_PATH_STR, sizeof(SF_G_BASE_PATH_STR), "%s", pBasePath); - chopPath(g_fdfs_base_path); - if (!fileExists(g_fdfs_base_path)) + chopPath(SF_G_BASE_PATH_STR); + if (!fileExists(SF_G_BASE_PATH_STR)) { logError("file: "__FILE__", line: %d, " \ "\"%s\" can't be accessed, error info: %s", \ - __LINE__, g_fdfs_base_path, STRERROR(errno)); + __LINE__, SF_G_BASE_PATH_STR, STRERROR(errno)); return errno != 0 ? errno : ENOENT; } - if (!isDir(g_fdfs_base_path)) + if (!isDir(SF_G_BASE_PATH_STR)) { logError("file: "__FILE__", line: %d, " \ "\"%s\" is not a directory!", \ - __LINE__, g_fdfs_base_path); + __LINE__, SF_G_BASE_PATH_STR); return ENOTDIR; } } @@ -376,7 +376,7 @@ static int fdfs_client_do_init_ex(TrackerServerGroup *pTrackerGroup, \ "use_connection_pool=%d, " \ "g_connection_pool_max_idle_time=%ds, " \ "use_storage_id=%d, storage server id count: %d\n", \ - g_fdfs_base_path, g_fdfs_connect_timeout, \ + SF_G_BASE_PATH_STR, g_fdfs_connect_timeout, \ g_fdfs_network_timeout, pTrackerGroup->server_count, \ g_anti_steal_token, g_anti_steal_secret_key.length, \ g_use_connection_pool, g_connection_pool_max_idle_time, \ diff --git a/common/fdfs_global.c b/common/fdfs_global.c index b734868..b6705ca 100644 --- a/common/fdfs_global.c +++ b/common/fdfs_global.c @@ -22,7 +22,6 @@ int g_fdfs_connect_timeout = DEFAULT_CONNECT_TIMEOUT; int g_fdfs_network_timeout = DEFAULT_NETWORK_TIMEOUT; -char g_fdfs_base_path[MAX_PATH_SIZE] = {'/', 't', 'm', 'p', '\0'}; Version g_fdfs_version = {6, 8}; bool g_use_connection_pool = false; ConnectionPool g_connection_pool; diff --git a/common/fdfs_global.h b/common/fdfs_global.h index ca0e3d3..a8ede9f 100644 --- a/common/fdfs_global.h +++ b/common/fdfs_global.h @@ -12,6 +12,7 @@ #define _FDFS_GLOBAL_H #include "fastcommon/common_define.h" +#include "sf/sf_global.h" #include "fdfs_define.h" #include "fastcommon/connection_pool.h" @@ -23,7 +24,6 @@ extern "C" { extern int g_fdfs_connect_timeout; extern int g_fdfs_network_timeout; -extern char g_fdfs_base_path[MAX_PATH_SIZE]; extern Version g_fdfs_version; extern bool g_use_connection_pool; extern ConnectionPool g_connection_pool; diff --git a/php_client/fastdfs_client.c b/php_client/fastdfs_client.c index b87d714..74e84df 100644 --- a/php_client/fastdfs_client.c +++ b/php_client/fastdfs_client.c @@ -7541,28 +7541,28 @@ static int load_config_files() if (zend_get_configuration_directive_wrapper(ITEM_NAME_BASE_PATH, \ sizeof(ITEM_NAME_BASE_PATH), &base_path) != SUCCESS) { - strcpy(g_fdfs_base_path, "/tmp"); + strcpy(SF_G_BASE_PATH_STR, "/tmp"); fprintf(stderr, "file: "__FILE__", line: %d, " \ "fastdfs_client.ini does not have item " \ "\"%s\", set to %s!", __LINE__, - ITEM_NAME_BASE_PATH, g_fdfs_base_path); + ITEM_NAME_BASE_PATH, SF_G_BASE_PATH_STR); } else { - snprintf(g_fdfs_base_path, sizeof(g_fdfs_base_path), "%s", \ + snprintf(SF_G_BASE_PATH_STR, sizeof(SF_G_BASE_PATH_STR), "%s", \ Z_STRVAL_P(base_path)); - chopPath(g_fdfs_base_path); + chopPath(SF_G_BASE_PATH_STR); } - if (!fileExists(g_fdfs_base_path)) + if (!fileExists(SF_G_BASE_PATH_STR)) { logError("\"%s\" can't be accessed, error info: %s", \ - g_fdfs_base_path, STRERROR(errno)); + SF_G_BASE_PATH_STR, STRERROR(errno)); return errno != 0 ? errno : ENOENT; } - if (!isDir(g_fdfs_base_path)) + if (!isDir(SF_G_BASE_PATH_STR)) { - logError("\"%s\" is not a directory!", g_fdfs_base_path); + logError("\"%s\" is not a directory!", SF_G_BASE_PATH_STR); return ENOTDIR; } @@ -7737,7 +7737,7 @@ static int load_config_files() "anti_steal_secret_key length=%d, " \ "tracker_group_count=%d, first tracker group server_count=%d, "\ "use_connection_pool=%d, connection_pool_max_idle_time: %d", \ - g_fdfs_base_path, g_fdfs_connect_timeout, \ + SF_G_BASE_PATH_STR, g_fdfs_connect_timeout, \ g_fdfs_network_timeout, (int)strlen(pAntiStealSecretKey), \ config_count, g_tracker_group.server_count, \ g_use_connection_pool, g_connection_pool_max_idle_time); diff --git a/storage/Makefile.in b/storage/Makefile.in index 8f3afb0..33bdb92 100644 --- a/storage/Makefile.in +++ b/storage/Makefile.in @@ -2,7 +2,7 @@ COMPILE = $(CC) $(CFLAGS) INC_PATH = -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon -LIB_PATH = $(LIBS) -lfastcommon +LIB_PATH = $(LIBS) -lfastcommon -lserverframe TARGET_PATH = $(TARGET_PREFIX)/bin CONFIG_PATH = $(TARGET_CONF_PATH) diff --git a/storage/fdfs_storaged.c b/storage/fdfs_storaged.c index 4cfc046..b6fabc5 100644 --- a/storage/fdfs_storaged.c +++ b/storage/fdfs_storaged.c @@ -28,6 +28,8 @@ #include "fdfs_global.h" #include "fastcommon/ini_file_reader.h" #include "fastcommon/sockopt.h" +#include "sf/sf_service.h" +#include "sf/sf_util.h" #include "tracker_types.h" #include "tracker_proto.h" #include "tracker_client_thread.h" @@ -53,6 +55,7 @@ #define ACCEPT_STAGE_DOING 1 #define ACCEPT_STAGE_DONE 2 +static bool daemon_mode = true; static bool bTerminateFlag = false; static char accept_stage = ACCEPT_STAGE_NONE; @@ -75,17 +78,9 @@ static void sigSegvHandler(int signum, siginfo_t *info, void *ptr); static void sigDumpHandler(int sig); #endif -static void usage(const char *program) -{ - fprintf(stderr, "FastDFS server v%d.%02d\n" - "Usage: %s [start | stop | restart]\n", - g_fdfs_version.major, g_fdfs_version.minor, - program); -} - int main(int argc, char *argv[]) { - char *conf_filename; + const char *conf_filename; char *action; int result; int sock; @@ -96,13 +91,19 @@ int main(int argc, char *argv[]) if (argc < 2) { - usage(argv[0]); + sf_usage(argv[0]); return 1; } + conf_filename = sf_parse_daemon_mode_and_action(argc, argv, + &g_fdfs_version, &daemon_mode, &action); + if (conf_filename == NULL) + { + return 0; + } + g_current_time = time(NULL); g_up_time = g_current_time; - log_init2(); if ((result=trunk_shared_init()) != 0) { @@ -110,17 +111,7 @@ int main(int argc, char *argv[]) return result; } - conf_filename = argv[1]; - if (!fileExists(conf_filename)) - { - if (starts_with(conf_filename, "-")) - { - usage(argv[0]); - return 0; - } - } - if ((result=get_base_path_from_conf_file(conf_filename, - g_fdfs_base_path, sizeof(g_fdfs_base_path))) != 0) + if ((result=sf_get_base_path_from_conf_file(conf_filename)) != 0) { log_destroy(); return result; @@ -131,14 +122,14 @@ int main(int argc, char *argv[]) log_destroy(); return result; } + snprintf(pidFilename, sizeof(pidFilename), - "%s/data/fdfs_storaged.pid", g_fdfs_base_path); - action = argc >= 3 ? argv[2] : "start"; + "%s/data/fdfs_storaged.pid", SF_G_BASE_PATH_STR); if ((result=process_action(pidFilename, action, &stop)) != 0) { if (result == EINVAL) { - usage(argv[0]); + sf_usage(argv[0]); } log_destroy(); return result; @@ -159,7 +150,9 @@ int main(int argc, char *argv[]) } #endif - daemon_init(false); + if (daemon_mode) { + daemon_init(false); + } umask(0); if ((result=write_to_pid_file(pidFilename)) != 0) @@ -429,7 +422,7 @@ static void sigDumpHandler(int sig) bDumpFlag = true; snprintf(filename, sizeof(filename), - "%s/logs/storage_dump.log", g_fdfs_base_path); + "%s/logs/storage_dump.log", SF_G_BASE_PATH_STR); fdfs_dump_storage_global_vars_to_file(filename); bDumpFlag = false; diff --git a/storage/storage_dump.c b/storage/storage_dump.c index e7c8dd6..6f579b7 100644 --- a/storage/storage_dump.c +++ b/storage/storage_dump.c @@ -44,7 +44,7 @@ static int fdfs_dump_global_vars(char *buff, const int buffSize) total_len = snprintf(buff, buffSize, "g_fdfs_connect_timeout=%ds\n" "g_fdfs_network_timeout=%ds\n" - "g_fdfs_base_path=%s\n" + "SF_G_BASE_PATH_STR=%s\n" "g_fdfs_version=%d.%02d\n" "g_continue_flag=%d\n" "g_schedule_flag=%d\n" @@ -138,7 +138,7 @@ static int fdfs_dump_global_vars(char *buff, const int buffSize) #endif , g_fdfs_connect_timeout , g_fdfs_network_timeout - , g_fdfs_base_path + , SF_G_BASE_PATH_STR , g_fdfs_version.major, g_fdfs_version.minor , g_continue_flag , g_schedule_flag diff --git a/storage/storage_func.c b/storage/storage_func.c index 2593cdc..ec1c6ec 100644 --- a/storage/storage_func.c +++ b/storage/storage_func.c @@ -285,7 +285,7 @@ static char *get_storage_stat_filename(const void *pArg, char *full_filename) } snprintf(full_filename, MAX_PATH_SIZE, \ - "%s/data/%s", g_fdfs_base_path, STORAGE_STAT_FILENAME); + "%s/data/%s", SF_G_BASE_PATH_STR, STORAGE_STAT_FILENAME); return full_filename; } @@ -648,7 +648,7 @@ int storage_write_to_sync_ini_file() int i; snprintf(full_filename, sizeof(full_filename), - "%s/data/%s", g_fdfs_base_path, DATA_DIR_INITED_FILENAME); + "%s/data/%s", SF_G_BASE_PATH_STR, DATA_DIR_INITED_FILENAME); fdfs_multi_ips_to_string(&g_tracker_client_ip, ip_str, sizeof(ip_str)); @@ -702,7 +702,7 @@ int storage_check_and_make_global_data_path() { char data_path[MAX_PATH_SIZE]; snprintf(data_path, sizeof(data_path), "%s/data", - g_fdfs_base_path); + SF_G_BASE_PATH_STR); if (!fileExists(data_path)) { if (mkdir(data_path, 0755) != 0) @@ -982,7 +982,7 @@ static int storage_check_and_make_data_dirs() bool pathCreated; snprintf(data_path, sizeof(data_path), "%s/data", - g_fdfs_base_path); + SF_G_BASE_PATH_STR); snprintf(full_filename, sizeof(full_filename), "%s/%s", data_path, DATA_DIR_INITED_FILENAME); if (fileExists(full_filename)) @@ -1460,7 +1460,7 @@ int storage_func_init(const char *filename, \ } load_log_level(&iniContext); - if ((result=log_set_prefix(g_fdfs_base_path, \ + if ((result=log_set_prefix(SF_G_BASE_PATH_STR, \ STORAGE_ERROR_LOG_FILENAME)) != 0) { break; @@ -1926,7 +1926,7 @@ int storage_func_init(const char *filename, \ STORAGE_FILE_SIGNATURE_METHOD_HASH; } - strcpy(g_fdht_base_path, g_fdfs_base_path); + strcpy(g_fdht_base_path, SF_G_BASE_PATH_STR); g_fdht_connect_timeout = g_fdfs_connect_timeout; g_fdht_network_timeout = g_fdfs_network_timeout; @@ -1996,7 +1996,7 @@ int storage_func_init(const char *filename, \ LOG_TIME_PRECISION_MSECOND); log_set_cache_ex(&g_access_log_context, true); result = log_set_prefix_ex(&g_access_log_context, \ - g_fdfs_base_path, "storage_access"); + SF_G_BASE_PATH_STR, "storage_access"); if (result != 0) { break; @@ -2185,7 +2185,7 @@ int storage_func_init(const char *filename, \ "compress_binlog_time=%02d:%02d, " \ "check_store_path_mark=%d", \ g_fdfs_version.major, g_fdfs_version.minor, \ - g_fdfs_base_path, g_fdfs_store_paths.count, \ + SF_G_BASE_PATH_STR, g_fdfs_store_paths.count, \ g_subdir_count_per_path, \ g_group_name, g_run_by_group, g_run_by_user, \ g_fdfs_connect_timeout, g_fdfs_network_timeout, \ diff --git a/storage/storage_sync.c b/storage/storage_sync.c index 6aaf6e0..670b0b3 100644 --- a/storage/storage_sync.c +++ b/storage/storage_sync.c @@ -1216,7 +1216,7 @@ static int write_to_binlog_index(const int binlog_index) int len; snprintf(full_filename, sizeof(full_filename), - "%s/data/"SYNC_DIR_NAME"/%s", g_fdfs_base_path, + "%s/data/"SYNC_DIR_NAME"/%s", SF_G_BASE_PATH_STR, SYNC_BINLOG_INDEX_FILENAME); if ((fd=open(full_filename, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) { @@ -1258,7 +1258,7 @@ static int get_binlog_index_from_file_old() int bytes; snprintf(full_filename, sizeof(full_filename), - "%s/data/"SYNC_DIR_NAME"/%s", g_fdfs_base_path, + "%s/data/"SYNC_DIR_NAME"/%s", SF_G_BASE_PATH_STR, SYNC_BINLOG_INDEX_FILENAME_OLD); if ((fd=open(full_filename, O_RDONLY)) >= 0) { @@ -1297,7 +1297,7 @@ static int get_binlog_index_from_file() int result; snprintf(full_filename, sizeof(full_filename), - "%s/data/"SYNC_DIR_NAME"/%s", g_fdfs_base_path, + "%s/data/"SYNC_DIR_NAME"/%s", SF_G_BASE_PATH_STR, SYNC_BINLOG_INDEX_FILENAME); if (access(full_filename, F_OK) != 0) { @@ -1348,7 +1348,7 @@ static char *get_writable_binlog_filename(char *full_filename) snprintf(full_filename, MAX_PATH_SIZE, \ "%s/data/"SYNC_DIR_NAME"/"SYNC_BINLOG_FILE_PREFIX"" \ SYNC_BINLOG_FILE_EXT_FMT, \ - g_fdfs_base_path, g_binlog_index); + SF_G_BASE_PATH_STR, g_binlog_index); return full_filename; } @@ -1358,7 +1358,7 @@ static char *get_writable_binlog_filename1(char *full_filename, \ snprintf(full_filename, MAX_PATH_SIZE, \ "%s/data/"SYNC_DIR_NAME"/"SYNC_BINLOG_FILE_PREFIX"" \ SYNC_BINLOG_FILE_EXT_FMT, \ - g_fdfs_base_path, binlog_index); + SF_G_BASE_PATH_STR, binlog_index); return full_filename; } @@ -1413,7 +1413,7 @@ int storage_sync_init() char full_filename[MAX_PATH_SIZE]; int result; - snprintf(data_path, sizeof(data_path), "%s/data", g_fdfs_base_path); + snprintf(data_path, sizeof(data_path), "%s/data", SF_G_BASE_PATH_STR); if (!fileExists(data_path)) { if (mkdir(data_path, 0755) != 0) @@ -1720,7 +1720,7 @@ static char *get_binlog_readable_filename_ex( snprintf(full_filename, MAX_PATH_SIZE, "%s/data/"SYNC_DIR_NAME"/"SYNC_BINLOG_FILE_PREFIX"" SYNC_BINLOG_FILE_EXT_FMT, - g_fdfs_base_path, binlog_index); + SF_G_BASE_PATH_STR, binlog_index); return full_filename; } @@ -1952,13 +1952,13 @@ static char *get_mark_filename_by_id_and_port(const char *storage_id, if (g_use_storage_id) { snprintf(full_filename, filename_size, - "%s/data/"SYNC_DIR_NAME"/%s%s", g_fdfs_base_path, + "%s/data/"SYNC_DIR_NAME"/%s%s", SF_G_BASE_PATH_STR, storage_id, SYNC_MARK_FILE_EXT); } else { snprintf(full_filename, filename_size, - "%s/data/"SYNC_DIR_NAME"/%s_%d%s", g_fdfs_base_path, + "%s/data/"SYNC_DIR_NAME"/%s_%d%s", SF_G_BASE_PATH_STR, storage_id, port, SYNC_MARK_FILE_EXT); } return full_filename; @@ -1968,7 +1968,7 @@ static char *get_mark_filename_by_ip_and_port(const char *ip_addr, const int port, char *full_filename, const int filename_size) { snprintf(full_filename, filename_size, - "%s/data/"SYNC_DIR_NAME"/%s_%d%s", g_fdfs_base_path, + "%s/data/"SYNC_DIR_NAME"/%s_%d%s", SF_G_BASE_PATH_STR, ip_addr, port, SYNC_MARK_FILE_EXT); return full_filename; } diff --git a/storage/trunk_mgr/trunk_mem.c b/storage/trunk_mgr/trunk_mem.c index f54bff1..0740589 100644 --- a/storage/trunk_mgr/trunk_mem.c +++ b/storage/trunk_mgr/trunk_mem.c @@ -150,7 +150,7 @@ static int storage_trunk_node_compare_offset(void *p1, void *p2) char *storage_trunk_get_data_filename(char *full_filename) { snprintf(full_filename, MAX_PATH_SIZE, "%s/data/%s", - g_fdfs_base_path, STORAGE_TRUNK_DATA_FILENAME); + SF_G_BASE_PATH_STR, STORAGE_TRUNK_DATA_FILENAME); return full_filename; } @@ -269,7 +269,7 @@ int storage_trunk_init() /* { char filename[MAX_PATH_SIZE]; - sprintf(filename, "%s/logs/tttt.dat", g_fdfs_base_path); + sprintf(filename, "%s/logs/tttt.dat", SF_G_BASE_PATH_STR); trunk_free_block_tree_print(filename); } */ @@ -727,7 +727,7 @@ static int trunk_open_file_writers(struct walk_callback_args *pCallbackArgs) memset(pCallbackArgs, 0, sizeof(*pCallbackArgs)); snprintf(temp_trunk_filename, MAX_PATH_SIZE, "%s/data/.%s.tmp", - g_fdfs_base_path, STORAGE_TRUNK_DATA_FILENAME); + SF_G_BASE_PATH_STR, STORAGE_TRUNK_DATA_FILENAME); if ((result=buffered_file_writer_open(&pCallbackArgs->data_writer, temp_trunk_filename)) != 0) { diff --git a/storage/trunk_mgr/trunk_shared.c b/storage/trunk_mgr/trunk_shared.c index 174c5c3..c452b7e 100644 --- a/storage/trunk_mgr/trunk_shared.c +++ b/storage/trunk_mgr/trunk_shared.c @@ -92,7 +92,7 @@ FDFSStorePathInfo *storage_load_paths_from_conf_file_ex( return NULL; } - pPath = g_fdfs_base_path; + pPath = SF_G_BASE_PATH_STR; } store_paths[0].path_len = strlen(pPath); @@ -185,20 +185,20 @@ int storage_load_paths_from_conf_file(IniContext *pItemContext) return ENOENT; } - snprintf(g_fdfs_base_path, sizeof(g_fdfs_base_path), "%s", pPath); - chopPath(g_fdfs_base_path); - if (!fileExists(g_fdfs_base_path)) + snprintf(SF_G_BASE_PATH_STR, sizeof(SF_G_BASE_PATH_STR), "%s", pPath); + chopPath(SF_G_BASE_PATH_STR); + if (!fileExists(SF_G_BASE_PATH_STR)) { logError("file: "__FILE__", line: %d, " "\"%s\" can't be accessed, error info: %s", - __LINE__, STRERROR(errno), g_fdfs_base_path); + __LINE__, STRERROR(errno), SF_G_BASE_PATH_STR); return errno != 0 ? errno : ENOENT; } - if (!isDir(g_fdfs_base_path)) + if (!isDir(SF_G_BASE_PATH_STR)) { logError("file: "__FILE__", line: %d, " "\"%s\" is not a directory!", - __LINE__, g_fdfs_base_path); + __LINE__, SF_G_BASE_PATH_STR); return ENOTDIR; } diff --git a/storage/trunk_mgr/trunk_sync.c b/storage/trunk_mgr/trunk_sync.c index 751d43c..54187fc 100644 --- a/storage/trunk_mgr/trunk_sync.c +++ b/storage/trunk_mgr/trunk_sync.c @@ -84,7 +84,7 @@ char *get_trunk_binlog_filename(char *full_filename) { snprintf(full_filename, MAX_PATH_SIZE, \ "%s/data/"TRUNK_DIR_NAME"/"TRUNK_SYNC_BINLOG_FILENAME_STR, \ - g_fdfs_base_path); + SF_G_BASE_PATH_STR); return full_filename; } @@ -171,7 +171,7 @@ int trunk_sync_init() char binlog_filename[MAX_PATH_SIZE]; int result; - snprintf(data_path, sizeof(data_path), "%s/data", g_fdfs_base_path); + snprintf(data_path, sizeof(data_path), "%s/data", SF_G_BASE_PATH_STR); if (!fileExists(data_path)) { if (mkdir(data_path, 0755) != 0) @@ -487,7 +487,7 @@ static int trunk_binlog_delete_overflow_backups() TrunkBinlogBackupFileArray file_array; snprintf(file_path, sizeof(file_path), - "%s/data/%s", g_fdfs_base_path, TRUNK_DIR_NAME); + "%s/data/%s", SF_G_BASE_PATH_STR, TRUNK_DIR_NAME); if ((dir=opendir(file_path)) == NULL) { result = errno != 0 ? errno : EPERM; @@ -1435,7 +1435,7 @@ static char *get_binlog_readable_filename(const void *pArg, snprintf(full_filename, MAX_PATH_SIZE, "%s/data/"TRUNK_DIR_NAME"/"TRUNK_SYNC_BINLOG_FILENAME_STR, - g_fdfs_base_path); + SF_G_BASE_PATH_STR); return full_filename; } @@ -1505,13 +1505,13 @@ static char *trunk_get_mark_filename_by_id_and_port(const char *storage_id, \ if (g_use_storage_id) { snprintf(full_filename, filename_size, \ - "%s/data/"TRUNK_DIR_NAME"/%s%s", g_fdfs_base_path, \ + "%s/data/"TRUNK_DIR_NAME"/%s%s", SF_G_BASE_PATH_STR, \ storage_id, TRUNK_SYNC_MARK_FILE_EXT_STR); } else { snprintf(full_filename, filename_size, \ - "%s/data/"TRUNK_DIR_NAME"/%s_%d%s", g_fdfs_base_path, \ + "%s/data/"TRUNK_DIR_NAME"/%s_%d%s", SF_G_BASE_PATH_STR, \ storage_id, port, TRUNK_SYNC_MARK_FILE_EXT_STR); } @@ -1522,7 +1522,7 @@ static char *trunk_get_mark_filename_by_ip_and_port(const char *ip_addr, \ const int port, char *full_filename, const int filename_size) { snprintf(full_filename, filename_size, \ - "%s/data/"TRUNK_DIR_NAME"/%s_%d%s", g_fdfs_base_path, \ + "%s/data/"TRUNK_DIR_NAME"/%s_%d%s", SF_G_BASE_PATH_STR, \ ip_addr, port, TRUNK_SYNC_MARK_FILE_EXT_STR); return full_filename; @@ -2486,7 +2486,7 @@ int trunk_unlink_all_mark_files() localtime_r(&t, &tm); snprintf(file_path, sizeof(file_path), - "%s/data/%s", g_fdfs_base_path, TRUNK_DIR_NAME); + "%s/data/%s", SF_G_BASE_PATH_STR, TRUNK_DIR_NAME); if ((dir=opendir(file_path)) == NULL) { diff --git a/tracker/Makefile.in b/tracker/Makefile.in index a964bfd..c255f14 100644 --- a/tracker/Makefile.in +++ b/tracker/Makefile.in @@ -2,7 +2,7 @@ COMPILE = $(CC) $(CFLAGS) INC_PATH = -I../common -I/usr/local/include -LIB_PATH = $(LIBS) -lfastcommon +LIB_PATH = $(LIBS) -lfastcommon -lserverframe TARGET_PATH = $(TARGET_PREFIX)/bin CONFIG_PATH = $(TARGET_CONF_PATH) diff --git a/tracker/fdfs_trackerd.c b/tracker/fdfs_trackerd.c index c340432..b77f169 100644 --- a/tracker/fdfs_trackerd.c +++ b/tracker/fdfs_trackerd.c @@ -28,6 +28,8 @@ #include "fastcommon/base64.h" #include "fastcommon/sockopt.h" #include "fastcommon/sched_thread.h" +#include "sf/sf_service.h" +#include "sf/sf_util.h" #include "tracker_types.h" #include "tracker_mem.h" #include "tracker_service.h" @@ -46,6 +48,7 @@ #include "tracker_dump.h" #endif +static bool daemon_mode = true; static bool bTerminateFlag = false; static bool bAcceptEndFlag = false; @@ -68,17 +71,9 @@ static void sigDumpHandler(int sig); #define SCHEDULE_ENTRIES_COUNT 5 -static void usage(const char *program) -{ - fprintf(stderr, "FastDFS server v%d.%02d\n" - "Usage: %s [start | stop | restart]\n", - g_fdfs_version.major, g_fdfs_version.minor, - program); -} - int main(int argc, char *argv[]) { - char *conf_filename; + const char *conf_filename; char *action; int result; int wait_count; @@ -92,40 +87,35 @@ int main(int argc, char *argv[]) if (argc < 2) { - usage(argv[0]); + sf_usage(argv[0]); return 1; } + conf_filename = sf_parse_daemon_mode_and_action(argc, argv, + &g_fdfs_version, &daemon_mode, &action); + if (conf_filename == NULL) + { + return 0; + } + g_current_time = time(NULL); g_up_time = g_current_time; srand(g_up_time); - log_init2(); - conf_filename = argv[1]; - if (!fileExists(conf_filename)) - { - if (starts_with(conf_filename, "-")) - { - usage(argv[0]); - return 0; - } - } - if ((result=get_base_path_from_conf_file(conf_filename, - g_fdfs_base_path, sizeof(g_fdfs_base_path))) != 0) + if ((result=sf_get_base_path_from_conf_file(conf_filename)) != 0) { log_destroy(); return result; } snprintf(pidFilename, sizeof(pidFilename), - "%s/data/fdfs_trackerd.pid", g_fdfs_base_path); - action = argc >= 3 ? argv[2] : "start"; + "%s/data/fdfs_trackerd.pid", SF_G_BASE_PATH_STR); if ((result=process_action(pidFilename, action, &stop)) != 0) { if (result == EINVAL) { - usage(argv[0]); + sf_usage(argv[0]); } log_destroy(); return result; @@ -192,7 +182,10 @@ int main(int argc, char *argv[]) return result; } - daemon_init(false); + if (daemon_mode) + { + daemon_init(false); + } umask(0); if ((result=write_to_pid_file(pidFilename)) != 0) @@ -441,7 +434,7 @@ static void sigDumpHandler(int sig) bDumpFlag = true; snprintf(filename, sizeof(filename), - "%s/logs/tracker_dump.log", g_fdfs_base_path); + "%s/logs/tracker_dump.log", SF_G_BASE_PATH_STR); fdfs_dump_tracker_global_vars_to_file(filename); bDumpFlag = false; diff --git a/tracker/tracker_dump.c b/tracker/tracker_dump.c index 8a8c444..3c60911 100644 --- a/tracker/tracker_dump.c +++ b/tracker/tracker_dump.c @@ -293,7 +293,7 @@ static int fdfs_dump_global_vars(char *buff, const int buffSize) total_len = snprintf(buff, buffSize, "g_fdfs_connect_timeout=%ds\n" "g_fdfs_network_timeout=%ds\n" - "g_fdfs_base_path=%s\n" + "SF_G_BASE_PATH_STR=%s\n" "g_fdfs_version=%d.%02d\n" "g_continue_flag=%d\n" "g_schedule_flag=%d\n" @@ -347,7 +347,7 @@ static int fdfs_dump_global_vars(char *buff, const int buffSize) #endif , g_fdfs_connect_timeout , g_fdfs_network_timeout - , g_fdfs_base_path + , SF_G_BASE_PATH_STR , g_fdfs_version.major, g_fdfs_version.minor , g_continue_flag , g_schedule_flag diff --git a/tracker/tracker_func.c b/tracker/tracker_func.c index be08a4c..e290125 100644 --- a/tracker/tracker_func.c +++ b/tracker/tracker_func.c @@ -188,27 +188,27 @@ int tracker_load_from_conf_file(const char *filename, \ break; } - snprintf(g_fdfs_base_path, sizeof(g_fdfs_base_path), "%s", pBasePath); - chopPath(g_fdfs_base_path); - if (!fileExists(g_fdfs_base_path)) + snprintf(SF_G_BASE_PATH_STR, sizeof(SF_G_BASE_PATH_STR), "%s", pBasePath); + chopPath(SF_G_BASE_PATH_STR); + if (!fileExists(SF_G_BASE_PATH_STR)) { logError("file: "__FILE__", line: %d, " \ "\"%s\" can't be accessed, error info: %s", \ - __LINE__, g_fdfs_base_path, STRERROR(errno)); + __LINE__, SF_G_BASE_PATH_STR, STRERROR(errno)); result = errno != 0 ? errno : ENOENT; break; } - if (!isDir(g_fdfs_base_path)) + if (!isDir(SF_G_BASE_PATH_STR)) { logError("file: "__FILE__", line: %d, " \ "\"%s\" is not a directory!", \ - __LINE__, g_fdfs_base_path); + __LINE__, SF_G_BASE_PATH_STR); result = ENOTDIR; break; } load_log_level(&iniContext); - if ((result=log_set_prefix(g_fdfs_base_path, \ + if ((result=log_set_prefix(SF_G_BASE_PATH_STR, \ TRACKER_ERROR_LOG_FILENAME)) != 0) { break; @@ -800,7 +800,7 @@ int tracker_load_from_conf_file(const char *filename, \ "use_connection_pool=%d, " "g_connection_pool_max_idle_time=%ds", g_fdfs_version.major, g_fdfs_version.minor, - g_fdfs_base_path, g_run_by_group, g_run_by_user, + SF_G_BASE_PATH_STR, g_run_by_group, g_run_by_user, g_fdfs_connect_timeout, g_fdfs_network_timeout, g_server_port, bind_addr, g_max_connections, g_accept_threads, g_work_threads, diff --git a/tracker/tracker_mem.c b/tracker/tracker_mem.c index 2dd5e49..9124202 100644 --- a/tracker/tracker_mem.c +++ b/tracker/tracker_mem.c @@ -758,7 +758,7 @@ static int tracker_locate_group_trunk_servers(FDFSGroups *pGroups, \ { snprintf(buff, sizeof(buff), \ "in the file \"%s/data/%s\", ", \ - g_fdfs_base_path, \ + SF_G_BASE_PATH_STR, \ STORAGE_GROUPS_LIST_FILENAME_NEW); } else @@ -824,7 +824,7 @@ static int tracker_locate_storage_sync_server(FDFSGroups *pGroups, \ { snprintf(buff, sizeof(buff), \ "in the file \"%s/data/%s\", ", \ - g_fdfs_base_path, \ + SF_G_BASE_PATH_STR, \ STORAGE_SERVERS_LIST_FILENAME_NEW); } else @@ -1600,7 +1600,7 @@ static int tracker_load_data(FDFSGroups *pGroups) FDFSStorageSync *pTrunkServers; int nTrunkServerCount; - snprintf(data_path, sizeof(data_path), "%s/data", g_fdfs_base_path); + snprintf(data_path, sizeof(data_path), "%s/data", SF_G_BASE_PATH_STR); if (!fileExists(data_path)) { if (mkdir(data_path, 0755) != 0) @@ -1681,7 +1681,7 @@ int tracker_save_groups() tracker_mem_file_lock(); snprintf(trueFilename, sizeof(trueFilename), "%s/data/%s", \ - g_fdfs_base_path, STORAGE_GROUPS_LIST_FILENAME_NEW); + SF_G_BASE_PATH_STR, STORAGE_GROUPS_LIST_FILENAME_NEW); snprintf(tmpFilename, sizeof(tmpFilename), "%s.tmp", trueFilename); if ((fd=open(tmpFilename, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) { @@ -1820,7 +1820,7 @@ int tracker_save_storages() tracker_mem_file_lock(); snprintf(trueFilename, sizeof(trueFilename), "%s/data/%s", \ - g_fdfs_base_path, STORAGE_SERVERS_LIST_FILENAME_NEW); + SF_G_BASE_PATH_STR, STORAGE_SERVERS_LIST_FILENAME_NEW); snprintf(tmpFilename, sizeof(tmpFilename), "%s.tmp", trueFilename); if ((fd=open(tmpFilename, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) { @@ -2108,7 +2108,7 @@ int tracker_save_sync_timestamps() tracker_mem_file_lock(); snprintf(trueFilename, sizeof(trueFilename), "%s/data/%s", \ - g_fdfs_base_path, STORAGE_SYNC_TIMESTAMP_FILENAME); + SF_G_BASE_PATH_STR, STORAGE_SYNC_TIMESTAMP_FILENAME); snprintf(tmpFilename, sizeof(tmpFilename), "%s.tmp", trueFilename); if ((fd=open(tmpFilename, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) { @@ -2232,7 +2232,7 @@ static int tracker_open_changlog_file() char data_path[MAX_PATH_SIZE]; char filename[MAX_PATH_SIZE]; - snprintf(data_path, sizeof(data_path), "%s/data", g_fdfs_base_path); + snprintf(data_path, sizeof(data_path), "%s/data", SF_G_BASE_PATH_STR); if (!fileExists(data_path)) { if (mkdir(data_path, 0755) != 0) @@ -2247,7 +2247,7 @@ static int tracker_open_changlog_file() } snprintf(filename, sizeof(filename), "%s/data/%s", \ - g_fdfs_base_path, STORAGE_SERVERS_CHANGELOG_FILENAME); + SF_G_BASE_PATH_STR, STORAGE_SERVERS_CHANGELOG_FILENAME); changelog_fd = open(filename, O_WRONLY | O_CREAT | O_APPEND, 0644); if (changelog_fd < 0) { @@ -3934,7 +3934,7 @@ static int tracker_mem_get_one_sys_file(ConnectionInfo *pTrackerServer, \ int64_t file_size; snprintf(full_filename, sizeof(full_filename), "%s/data/%s", \ - g_fdfs_base_path, g_tracker_sys_filenames[file_index]); + SF_G_BASE_PATH_STR, g_tracker_sys_filenames[file_index]); fd = open(full_filename, O_WRONLY | O_CREAT | O_TRUNC, 0644); if (fd < 0) { @@ -5094,7 +5094,7 @@ static int tracker_write_to_trunk_change_log(FDFSGroupInfo *pGroup, \ tracker_mem_file_lock(); snprintf(full_filename, sizeof(full_filename), "%s/logs/%s", \ - g_fdfs_base_path, TRUNK_SERVER_CHANGELOG_FILENAME); + SF_G_BASE_PATH_STR, TRUNK_SERVER_CHANGELOG_FILENAME); if ((fd=open(full_filename, O_WRONLY | O_CREAT | O_APPEND, 0644)) < 0) { tracker_mem_file_unlock(); diff --git a/tracker/tracker_service.c b/tracker/tracker_service.c index 372bedd..fee38d2 100644 --- a/tracker/tracker_service.c +++ b/tracker/tracker_service.c @@ -486,7 +486,7 @@ static int tracker_changelog_response(struct fast_task_info *pTask, \ chg_len = TRACKER_MAX_PACKAGE_SIZE - sizeof(TrackerHeader); } - snprintf(filename, sizeof(filename), "%s/data/%s", g_fdfs_base_path,\ + snprintf(filename, sizeof(filename), "%s/data/%s", SF_G_BASE_PATH_STR,\ STORAGE_SERVERS_CHANGELOG_FILENAME); fd = open(filename, O_RDONLY); if (fd < 0) @@ -2098,7 +2098,7 @@ static int tracker_deal_get_one_sys_file(struct fast_task_info *pTask) } snprintf(full_filename, sizeof(full_filename), "%s/data/%s", \ - g_fdfs_base_path, g_tracker_sys_filenames[index]); + SF_G_BASE_PATH_STR, g_tracker_sys_filenames[index]); if (stat(full_filename, &file_stat) != 0) { result = errno != 0 ? errno : ENOENT; diff --git a/tracker/tracker_status.c b/tracker/tracker_status.c index 347d4ab..52c0725 100644 --- a/tracker/tracker_status.c +++ b/tracker/tracker_status.c @@ -38,7 +38,7 @@ int tracker_write_status_to_file(void *args) int len; snprintf(full_filename, sizeof(full_filename), "%s/data/%s", \ - g_fdfs_base_path, TRACKER_STATUS_FILENAME); + SF_G_BASE_PATH_STR, TRACKER_STATUS_FILENAME); len = sprintf(buff, "%s=%d\n" \ "%s=%d\n", @@ -56,7 +56,7 @@ int tracker_load_status_from_file(TrackerStatus *pStatus) int result; snprintf(full_filename, sizeof(full_filename), "%s/data/%s", \ - g_fdfs_base_path, TRACKER_STATUS_FILENAME); + SF_G_BASE_PATH_STR, TRACKER_STATUS_FILENAME); if (!fileExists(full_filename)) { return 0;