diff --git a/HISTORY b/HISTORY index 953cc48..3e0d754 100644 --- a/HISTORY +++ b/HISTORY @@ -6,6 +6,7 @@ Version 5.03 2014-08-10 * patches by liangry@ucweb.com * bug fixed: can't sync large files cause by v5.02 * use newest files from libfastcommon + * change TRACKER_SYNC_STATUS_FILE_INTERVAL from 3600 to 300 Version 5.02 2014-07-20 * corect README spell mistake diff --git a/tracker/tracker_global.h b/tracker/tracker_global.h index 69b4d67..4669c1e 100644 --- a/tracker/tracker_global.h +++ b/tracker/tracker_global.h @@ -29,7 +29,7 @@ #define TRACKER_SYNC_TO_FILE_FREQ 1000 #define TRACKER_MAX_PACKAGE_SIZE (8 * 1024) -#define TRACKER_SYNC_STATUS_FILE_INTERVAL 3600 //one hour +#define TRACKER_SYNC_STATUS_FILE_INTERVAL 300 //5 minute #ifdef __cplusplus extern "C" { diff --git a/tracker/tracker_mem.c b/tracker/tracker_mem.c index a8063e7..b447a19 100644 --- a/tracker/tracker_mem.c +++ b/tracker/tracker_mem.c @@ -3919,6 +3919,15 @@ static int tracker_mem_cmp_tracker_running_status(const void *p1, const void *p2 pStatus1 = (TrackerRunningStatus *)p1; pStatus2 = (TrackerRunningStatus *)p2; + if (pStatus1->if_leader) + { + return 1; + } + else if (pStatus2->if_leader) + { + return -1; + } + sub = pStatus1->running_time - pStatus2->running_time; if (sub != 0) { @@ -4108,23 +4117,20 @@ static int tracker_mem_get_tracker_server(FDFSStorageJoinBody *pJoinBody, \ return result == 0 ? ENOENT : result; } - if (count == 1) + if (count > 1) { - memcpy(pTrackerStatus, trackerStatus, \ - sizeof(TrackerRunningStatus)); - return 0; + qsort(trackerStatus, count, sizeof(TrackerRunningStatus), \ + tracker_mem_cmp_tracker_running_status); } - qsort(trackerStatus, count, sizeof(TrackerRunningStatus), \ - tracker_mem_cmp_tracker_running_status); - for (i=0; iip_addr, \ trackerStatus[i].pTrackerServer->port, \ + trackerStatus[i].if_leader, \ trackerStatus[i].running_time, \ trackerStatus[i].restart_interval); } @@ -4239,6 +4245,7 @@ int tracker_mem_add_group_and_storage(TrackerClientInfo *pClientInfo, \ { /* stop time exceeds 2 * interval */ TrackerRunningStatus runningStatus; + runningStatus.if_leader = false; tracker_calc_running_times(&runningStatus); result = tracker_mem_get_sys_files_from_others(\ pJoinBody, &runningStatus);