void startDownloadFromSource(FileReferenceDownload fileReferenceDownload, Spec spec) {
        FileReference fileReference = fileReferenceDownload.fileReference();

        for (var connection : connectionPool.connections()) {
            if (connection.getAddress().equals(spec.toString()))
                downloadExecutor.submit(() -> {
                    if (downloads.get(fileReference).isPresent()) return;

                    log.log(Level.FINE, () -> "Will download " + fileReference + " with timeout " + downloadTimeout + " from " + spec.host());
                    downloads.add(fileReferenceDownload);
                    var downloading = startDownloadRpc(fileReferenceDownload, 1, connection, downloadTimeout);
                    // Need to explicitly remove from downloads if downloading has not started.
                    // If downloading *has* started FileReceiver will take care of that when download has completed or failed
                    if ( ! downloading)
                        downloads.remove(fileReference);
                });
        }
    }
Downloads file reference from config server and keeps track of files being downloaded

@author hmusum
filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java