From 1d8724ecb715ff12d5a926999902707d50cfe601 Mon Sep 17 00:00:00 2001 From: Fabian Schlenz Date: Tue, 21 Feb 2017 13:41:55 +0100 Subject: [PATCH] Catching TimeoutExceptions during mediaDownload() should now skip the file. --- .../telegram_backup/DownloadManager.java | 18 +++++++++--------- .../AbstractMediaFileManager.java | 2 +- .../mediafilemanager/DocumentFileManager.java | 2 +- .../mediafilemanager/PhotoFileManager.java | 2 +- .../mediafilemanager/StickerFileManager.java | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java b/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java index 9fcb8bc..da4fe89 100644 --- a/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java +++ b/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java @@ -234,7 +234,7 @@ public class DownloadManager { } else { throw e; } - } catch (TimeoutException e) { + } /*catch (TimeoutException e) { completed = false; System.out.println(""); System.out.println("Telegram took too long to respond to our request."); @@ -242,11 +242,11 @@ public class DownloadManager { logger.warn("TimeoutException caught", e); try { TimeUnit.MINUTES.sleep(1); } catch(InterruptedException e2) {} System.out.println(""); - } + }*/ } while (!completed); } - private void _downloadMedia() throws RpcErrorException, IOException, TimeoutException { + private void _downloadMedia() throws RpcErrorException, IOException { logger.info("This is _downloadMedia"); logger.info("Checking if there are messages in the DB with a too old API layer"); LinkedList ids = db.getIdsFromQuery("SELECT id FROM messages WHERE has_media=1 AND api_layer<" + Kotlogram.API_LAYER); @@ -272,13 +272,13 @@ public class DownloadManager { } else if (m.isDownloaded()) { prog.onMediaAlreadyPresent(m); } else { - /*try {*/ + try { m.download(); prog.onMediaDownloaded(m); - /*} catch (TimeoutException e) { + } catch (TimeoutException e) { // do nothing - skip this file prog.onMediaSkipped(); - }*/ + } } } prog.onMediaDownloadFinished(); @@ -290,17 +290,17 @@ public class DownloadManager { return a; } - public static void downloadFile(TelegramClient client, String targetFilename, int size, int dcId, long volumeId, int localId, long secret) throws RpcErrorException, IOException { + public static void downloadFile(TelegramClient client, String targetFilename, int size, int dcId, long volumeId, int localId, long secret) throws RpcErrorException, IOException, TimeoutException { TLInputFileLocation loc = new TLInputFileLocation(volumeId, localId, secret); downloadFileFromDc(client, targetFilename, loc, dcId, size); } - public static void downloadFile(TelegramClient client, String targetFilename, int size, int dcId, long id, long accessHash) throws RpcErrorException, IOException { + public static void downloadFile(TelegramClient client, String targetFilename, int size, int dcId, long id, long accessHash) throws RpcErrorException, IOException, TimeoutException { TLInputDocumentFileLocation loc = new TLInputDocumentFileLocation(id, accessHash); downloadFileFromDc(client, targetFilename, loc, dcId, size); } - private static boolean downloadFileFromDc(TelegramClient client, String target, TLAbsInputFileLocation loc, Integer dcID, int size) throws RpcErrorException, IOException { + private static boolean downloadFileFromDc(TelegramClient client, String target, TLAbsInputFileLocation loc, Integer dcID, int size) throws RpcErrorException, IOException, TimeoutException { FileOutputStream fos = null; try { String temp_filename = target + ".downloading"; diff --git a/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/AbstractMediaFileManager.java b/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/AbstractMediaFileManager.java index 7e1f68f..106551a 100644 --- a/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/AbstractMediaFileManager.java +++ b/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/AbstractMediaFileManager.java @@ -55,7 +55,7 @@ public abstract class AbstractMediaFileManager { public boolean isEmpty() { return isEmpty; } public boolean isDownloaded() { return new File(getTargetPathAndFilename()).isFile(); } public boolean isDownloading() { return new File(getTargetPathAndFilename() + ".downloading").isFile(); } - public abstract void download() throws RpcErrorException, IOException; + public abstract void download() throws RpcErrorException, IOException, TimeoutException; public static void throwUnexpectedObjectError(Object o) { throw new RuntimeException("Unexpected " + o.getClass().getName()); } diff --git a/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/DocumentFileManager.java b/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/DocumentFileManager.java index 0559cc7..70204d1 100644 --- a/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/DocumentFileManager.java +++ b/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/DocumentFileManager.java @@ -100,7 +100,7 @@ public class DocumentFileManager extends AbstractMediaFileManager { return ext; } - public void download() throws RpcErrorException, IOException { + public void download() throws RpcErrorException, IOException, TimeoutException { if (doc!=null) { DownloadManager.downloadFile(client, getTargetPathAndFilename(), getSize(), doc.getDcId(), doc.getId(), doc.getAccessHash()); } diff --git a/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/PhotoFileManager.java b/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/PhotoFileManager.java index 7833e35..648df1b 100644 --- a/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/PhotoFileManager.java +++ b/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/PhotoFileManager.java @@ -76,7 +76,7 @@ public class PhotoFileManager extends AbstractMediaFileManager { public String getExtension() { return "jpg"; } - public void download() throws RpcErrorException, IOException { + public void download() throws RpcErrorException, IOException, TimeoutException { if (isEmpty) return; TLFileLocation loc = (TLFileLocation) size.getLocation(); DownloadManager.downloadFile(client, getTargetPathAndFilename(), getSize(), loc.getDcId(), loc.getVolumeId(), loc.getLocalId(), loc.getSecret()); diff --git a/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/StickerFileManager.java b/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/StickerFileManager.java index dcc165e..c911a8b 100644 --- a/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/StickerFileManager.java +++ b/src/main/java/de/fabianonline/telegram_backup/mediafilemanager/StickerFileManager.java @@ -88,7 +88,7 @@ public class StickerFileManager extends DocumentFileManager { return path; } - public void download() throws RpcErrorException, IOException { + public void download() throws RpcErrorException, IOException, TimeoutException { String old_file = Config.FILE_BASE + File.separatorChar + Config.FILE_STICKER_BASE + File.separatorChar + getTargetFilename(); logger.trace("Old filename exists: {}", new File(old_file).exists());