wirybeaver commented on code in PR #9710:
URL: https://github.com/apache/pinot/pull/9710#discussion_r1024597451
##########
pinot-common/src/main/java/org/apache/pinot/common/utils/fetcher/SegmentFetcherFactory.java:
##########
@@ -196,4 +206,21 @@ private void fetchAndDecryptSegmentToLocalInternal(String
uri, File dest, String
crypter.decrypt(tempDownloadedFile, dest);
}
}
+
+ private void fetchAndDecryptSegmentToLocalInternal(@NonNull List<URI> uris,
File dest, String crypterName)
+ throws Exception {
+ Preconditions.checkArgument(!uris.isEmpty(), "empty uris passed into the
fetchAndDecryptSegmentToLocalInternal");
+ URI uri = uris.get(RANDOM.nextInt(uris.size()));
Review Comment:
I am considering whether we should introduces the strategy pattern here:
user can either choose to pick up a random or go over all peers. The trade of
between responsiveness and data reliability can be determined by user. For the
sake of time, I hide the random implementation inside this function. In the
future, I think the function signature would be
```
private void fetchAndDecryptSegmentToLocalInternal(@NonNull List<URI> uris,
File dest, String crypterName, PeerDownloadderStrategy strategy);
interface PeerDownloaderStrategy {
Response download(List<URI> uris, File dest, Context);
}
class Context {
String crypterName;
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]