copy_uniq_tracker_servers when storage join

multi_ipaddr
YuQing 2019-10-16 15:45:16 +08:00
parent bd42da608f
commit 0097fff08a
2 changed files with 36 additions and 1 deletions

View File

@ -4097,6 +4097,32 @@ static int tracker_mem_first_add_tracker_servers(FDFSStorageJoinBody *pJoinBody)
return find_my_ip_in_tracker_list();
}
static int tracker_mem_copy_uniq_tracker_servers(
TrackerServerInfo *pSrcServer,
TrackerServerInfo *pDestServer)
{
ConnectionInfo *conn;
ConnectionInfo *end;
end = pSrcServer->connections + pSrcServer->count;
for (conn=pSrcServer->connections; conn<end; conn++)
{
if (!fdfs_server_contain1(pDestServer, conn))
{
if (pDestServer->count == FDFS_MULTI_IP_MAX_COUNT)
{
logError("file: "__FILE__", line: %d, "
"tracker IPs reach max count: %d",
__LINE__, FDFS_MULTI_IP_MAX_COUNT);
return ENOSPC;
}
pDestServer->connections[pDestServer->count++] = *conn;
}
}
return 0;
}
static int tracker_mem_check_add_tracker_servers(FDFSStorageJoinBody *pJoinBody)
{
TrackerServerInfo *pJoinTracker;
@ -4117,8 +4143,17 @@ static int tracker_mem_check_add_tracker_servers(FDFSStorageJoinBody *pJoinBody)
for (pLocalTracker=g_tracker_servers.servers;
pLocalTracker<pLocalEnd; pLocalTracker++)
{
if (fdfs_server_equal(pJoinTracker, pLocalTracker))
{
break;
}
if (fdfs_server_contain_ex(pJoinTracker, pLocalTracker))
{
if (pJoinTracker->count > pLocalTracker->count)
{
tracker_mem_copy_uniq_tracker_servers(pJoinTracker,
pLocalTracker);
}
break;
}
}

View File

@ -192,7 +192,7 @@ static int relationship_get_tracker_leader(TrackerRunningStatus *pTrackerStatus)
pStatus = trackerStatus;
result = 0;
pTrackerEnd = g_tracker_servers.servers + g_tracker_servers.server_count;
for (pTrackerServer=g_tracker_servers.servers; \
for (pTrackerServer=g_tracker_servers.servers;
pTrackerServer<pTrackerEnd; pTrackerServer++)
{
pStatus->pTrackerServer = pTrackerServer;