From 5ac342defdf57c0962545587f28331554dd1ad81 Mon Sep 17 00:00:00 2001 From: Selfhost Alt Date: Mon, 2 May 2022 22:47:16 -0700 Subject: [PATCH] Handle corrupted backups gracefully and continue loading other backups --- server/managers/BackupManager.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/server/managers/BackupManager.js b/server/managers/BackupManager.js index f66d40cf..b1839373 100644 --- a/server/managers/BackupManager.js +++ b/server/managers/BackupManager.js @@ -131,8 +131,21 @@ class BackupManager { var filename = filesInDir[i] if (filename.endsWith('.audiobookshelf')) { var fullFilePath = Path.join(this.BackupPath, filename) - const zip = new StreamZip.async({ file: fullFilePath }) - const data = await zip.entryData('details') + + let zip = null + let data = null + try { + zip = new StreamZip.async({ file: fullFilePath }) + data = await zip.entryData('details') + } catch (error) { + if (error.message === "Bad archive") { + Logger.warn(`[BackupManager] Backup appears to be corrupted: ${fullFilePath}`) + continue; + } else { + throw error + } + } + var details = data.toString('utf8').split('\n') var backup = new Backup({ details, fullPath: fullFilePath })