copy_uniq_tracker_servers when storage join
parent
bd42da608f
commit
0097fff08a
|
|
@ -4097,6 +4097,32 @@ static int tracker_mem_first_add_tracker_servers(FDFSStorageJoinBody *pJoinBody)
|
||||||
return find_my_ip_in_tracker_list();
|
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)
|
static int tracker_mem_check_add_tracker_servers(FDFSStorageJoinBody *pJoinBody)
|
||||||
{
|
{
|
||||||
TrackerServerInfo *pJoinTracker;
|
TrackerServerInfo *pJoinTracker;
|
||||||
|
|
@ -4117,8 +4143,17 @@ static int tracker_mem_check_add_tracker_servers(FDFSStorageJoinBody *pJoinBody)
|
||||||
for (pLocalTracker=g_tracker_servers.servers;
|
for (pLocalTracker=g_tracker_servers.servers;
|
||||||
pLocalTracker<pLocalEnd; pLocalTracker++)
|
pLocalTracker<pLocalEnd; pLocalTracker++)
|
||||||
{
|
{
|
||||||
|
if (fdfs_server_equal(pJoinTracker, pLocalTracker))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (fdfs_server_contain_ex(pJoinTracker, pLocalTracker))
|
if (fdfs_server_contain_ex(pJoinTracker, pLocalTracker))
|
||||||
{
|
{
|
||||||
|
if (pJoinTracker->count > pLocalTracker->count)
|
||||||
|
{
|
||||||
|
tracker_mem_copy_uniq_tracker_servers(pJoinTracker,
|
||||||
|
pLocalTracker);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -192,7 +192,7 @@ static int relationship_get_tracker_leader(TrackerRunningStatus *pTrackerStatus)
|
||||||
pStatus = trackerStatus;
|
pStatus = trackerStatus;
|
||||||
result = 0;
|
result = 0;
|
||||||
pTrackerEnd = g_tracker_servers.servers + g_tracker_servers.server_count;
|
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++)
|
pTrackerServer<pTrackerEnd; pTrackerServer++)
|
||||||
{
|
{
|
||||||
pStatus->pTrackerServer = pTrackerServer;
|
pStatus->pTrackerServer = pTrackerServer;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue