]> jfr.im git - irc/rizon/acid.git/commitdiff
Add a timeout to the file downloader
authorOrillion <redacted>
Fri, 20 Jul 2018 09:40:02 +0000 (11:40 +0200)
committerOrillion <redacted>
Fri, 20 Jul 2018 09:40:15 +0000 (11:40 +0200)
acid/src/main/java/net/rizon/acid/util/FileDownloader.java

index a20a8398bc901257a85dd851a8275975de147f57..5e598c32cee8a4fec1039350de344c0321a8dd3b 100644 (file)
@@ -30,6 +30,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.net.URLConnection;
 import java.nio.channels.Channels;
 import java.nio.channels.ReadableByteChannel;
 import java.util.zip.GZIPInputStream;
@@ -43,6 +44,8 @@ import org.slf4j.LoggerFactory;
 public class FileDownloader
 {
        private static final Logger LOGGER = LoggerFactory.getLogger(FileDownloader.class);
+       private static final int CONNECT_TIMEOUT = 1000;
+       private static final int READ_TIMEOUT = 1000;
 
        public enum CompressionMethod
        {
@@ -95,7 +98,11 @@ public class FileDownloader
 
        private static void noneDownload(URL url, File destination) throws IOException
        {
-               try (InputStream stream = url.openStream();
+               URLConnection conn = url.openConnection();
+               conn.setConnectTimeout(CONNECT_TIMEOUT);
+               conn.setReadTimeout(READ_TIMEOUT);
+
+               try (InputStream stream = conn.getInputStream();
                                FileOutputStream fos = new FileOutputStream(destination);
                                ReadableByteChannel channel = Channels.newChannel(stream))
                {
@@ -105,7 +112,11 @@ public class FileDownloader
 
        private static void gzipDownload(URL url, File destination) throws IOException
        {
-               try (InputStream stream = url.openStream();
+               URLConnection conn = url.openConnection();
+               conn.setConnectTimeout(CONNECT_TIMEOUT);
+               conn.setReadTimeout(READ_TIMEOUT);
+
+               try (InputStream stream = conn.getInputStream();
                                GZIPInputStream gis = new GZIPInputStream(stream);
                                FileOutputStream fos = new FileOutputStream(destination);
                                ReadableByteChannel channel = Channels.newChannel(gis))