'Syncs mapping with other servers.'

def SyncMapping(self, skip=None):

    pools = []
    try:
        self._PeriodicThread()
        for serv in self.servers[1:]:
            if (skip and (serv in skip)):
                continue
            pool = urllib3.connectionpool.HTTPConnectionPool(serv.Address(), port=serv.Port())
            pools.append((serv, pool))
        body = self.mapping.SerializeToString()
        headers = {'Content-Length': len(body)}
        for (serv, pool) in pools:
            res = pool.urlopen('POST', '/servers/sync', headers=headers, body=body)
            if (res.status != constants.RESPONSE_OK):
                logging.warning('Could    not    sync    with    server    %s:%d', serv.Address(), serv.Port())
                return False
            state = rdf_data_server.DataServerState()
            state.ParseFromString(res.data)
            serv.UpdateState(state)
    except urllib3.exceptions.MaxRetryError:
        return False
    finally:
        for (_, pool) in pools:
            pool.close()
    return True
