Lars-Kristian Svenøy
01/19/2022, 6:10 PMLars-Kristian Svenøy
01/19/2022, 6:15 PMLars-Kristian Svenøy
01/19/2022, 6:15 PM// First find servers hosting the segment in a ONLINE state.
List<URI> peerSegmentURIs = PeerServerSegmentFinder.getPeerServerURIs(segmentName, downloadScheme, _helixManager);
// Next download the segment from a randomly chosen server using configured scheme.
SegmentFetcherFactory.getSegmentFetcher(downloadScheme).fetchSegmentToLocal(peerSegmentURIs, segmentTarFile);Lars-Kristian Svenøy
01/19/2022, 6:15 PMLars-Kristian Svenøy
01/19/2022, 6:15 PMLars-Kristian Svenøy
01/19/2022, 6:15 PM@Override
public void fetchSegmentToLocal(List<URI> uris, File dest)
throws Exception {
if (uris == null) {
throw new IllegalArgumentException("The input uri list is empty");
}
Random r = new Random();
RetryPolicies.exponentialBackoffRetryPolicy(_retryCount, _retryWaitMs, _retryDelayScaleFactor).attempt(() -> {
URI uri = uris.get(r.nextInt(uris.size()));Lars-Kristian Svenøy
01/19/2022, 6:15 PMLars-Kristian Svenøy
01/19/2022, 6:15 PMLars-Kristian Svenøy
01/19/2022, 6:31 PMMayank