diff options
author | Harald Musum <musum@yahooinc.com> | 2023-09-18 14:34:14 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2023-09-18 14:34:14 +0200 |
commit | db99754f95ae0b5d400a04d84c2eb16152e80e71 (patch) | |
tree | 0df270bab78792985b1ad3e9126b575356fe9486 /config-proxy | |
parent | 8702c3f4047002fa0356521daf8415785e1dcb18 (diff) |
Switch on uri scheme and create download dir higher up
Diffstat (limited to 'config-proxy')
3 files changed, 9 insertions, 3 deletions
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/S3Downloader.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/S3Downloader.java index 9a244838aa9..ce79cfd5b7e 100644 --- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/S3Downloader.java +++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/S3Downloader.java @@ -19,7 +19,6 @@ import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Optional; -import java.util.concurrent.atomic.AtomicReference; public class S3Downloader implements Downloader { diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloadRpcServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloadRpcServer.java index 59481df1aa8..d6bc506e51c 100644 --- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloadRpcServer.java +++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloadRpcServer.java @@ -6,6 +6,7 @@ import com.yahoo.jrt.Method; import com.yahoo.jrt.Request; import com.yahoo.jrt.StringValue; import com.yahoo.jrt.Supervisor; +import com.yahoo.net.URI; import com.yahoo.security.tls.Capability; import com.yahoo.text.Utf8; import com.yahoo.vespa.defaults.Defaults; @@ -14,6 +15,7 @@ import net.jpountz.xxhash.XXHashFactory; import java.io.File; import java.nio.ByteBuffer; +import java.nio.file.Files; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; @@ -77,6 +79,7 @@ class UrlDownloadRpcServer { } try { + Files.createDirectories(downloadDir.toPath()); Optional<File> file = downloader.downloadFile(url, downloadDir); if (file.isPresent()) req.returnValues().add(new StringValue(file.get().getAbsolutePath())); @@ -91,7 +94,12 @@ class UrlDownloadRpcServer { } private static Downloader downloader(String url) { - return url.startsWith("s3://") ? new S3Downloader() : new UrlDownloader(); + URI uri = new URI(url); + return switch (uri.getScheme()) { + case "http", "https" -> new UrlDownloader(); + case "s3" -> new S3Downloader(); + default -> throw new IllegalArgumentException("Unsupported scheme '" + uri.getScheme() + "'"); + }; } private static void logAndSetRpcError(Request req, String url, Throwable e, int rpcErrorCode) { diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloader.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloader.java index 3a50545f0ae..2f52222a337 100644 --- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloader.java +++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloader.java @@ -31,7 +31,6 @@ class UrlDownloader implements Downloader { throw new RuntimeException("Download of URL '" + url + "' failed, got response code " + connection.getResponseCode()); log.log(Level.INFO, "Downloading URL '" + url + "'"); - Files.createDirectories(downloadDir.toPath()); File contentsPath = new File(downloadDir, CONTENTS_FILE_NAME); try (ReadableByteChannel rbc = Channels.newChannel(connection.getInputStream())) { try (FileOutputStream fos = new FileOutputStream((contentsPath.getAbsolutePath()))) { |