mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-04-12 00:38:22 +02:00
Handle library scan failure gracefully
This commit is contained in:
parent
5b09bd8242
commit
1099dbe642
@ -79,38 +79,49 @@ class LibraryScanner {
|
|||||||
|
|
||||||
Logger.info(`[LibraryScanner] Starting${forceRescan ? ' (forced)' : ''} library scan ${libraryScan.id} for ${libraryScan.libraryName}`)
|
Logger.info(`[LibraryScanner] Starting${forceRescan ? ' (forced)' : ''} library scan ${libraryScan.id} for ${libraryScan.libraryName}`)
|
||||||
|
|
||||||
const canceled = await this.scanLibrary(libraryScan, forceRescan)
|
try {
|
||||||
|
const canceled = await this.scanLibrary(libraryScan, forceRescan)
|
||||||
|
|
||||||
if (canceled) {
|
if (canceled) {
|
||||||
Logger.info(`[LibraryScanner] Library scan canceled for "${libraryScan.libraryName}"`)
|
Logger.info(`[LibraryScanner] Library scan canceled for "${libraryScan.libraryName}"`)
|
||||||
delete this.cancelLibraryScan[libraryScan.libraryId]
|
delete this.cancelLibraryScan[libraryScan.libraryId]
|
||||||
|
}
|
||||||
|
|
||||||
|
libraryScan.setComplete()
|
||||||
|
|
||||||
|
Logger.info(`[LibraryScanner] Library scan ${libraryScan.id} completed in ${libraryScan.elapsedTimestamp} | ${libraryScan.resultStats}`)
|
||||||
|
|
||||||
|
if (canceled && !libraryScan.totalResults) {
|
||||||
|
task.setFinished('Scan canceled')
|
||||||
|
TaskManager.taskFinished(task)
|
||||||
|
|
||||||
|
const emitData = libraryScan.getScanEmitData
|
||||||
|
emitData.results = null
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
library.lastScan = Date.now()
|
||||||
|
library.lastScanVersion = packageJson.version
|
||||||
|
if (library.isBook) {
|
||||||
|
const newExtraData = library.extraData || {}
|
||||||
|
newExtraData.lastScanMetadataPrecedence = library.settings.metadataPrecedence
|
||||||
|
library.extraData = newExtraData
|
||||||
|
library.changed('extraData', true)
|
||||||
|
}
|
||||||
|
await library.save()
|
||||||
|
|
||||||
|
task.setFinished(libraryScan.scanResultsString)
|
||||||
|
} catch (err) {
|
||||||
|
libraryScan.setComplete(err)
|
||||||
|
Logger.error(`[LibraryScanner] Library scan ${libraryScan.id} failed after ${libraryScan.elapsedTimestamp}.`, err)
|
||||||
|
|
||||||
|
if (this.cancelLibraryScan[libraryScan.libraryId]) delete this.cancelLibraryScan[libraryScan.libraryId]
|
||||||
|
|
||||||
|
task.setFailed(`Scan failed: ${err.message}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
libraryScan.setComplete()
|
|
||||||
|
|
||||||
Logger.info(`[LibraryScanner] Library scan ${libraryScan.id} completed in ${libraryScan.elapsedTimestamp} | ${libraryScan.resultStats}`)
|
|
||||||
this.librariesScanning = this.librariesScanning.filter((ls) => ls.id !== library.id)
|
this.librariesScanning = this.librariesScanning.filter((ls) => ls.id !== library.id)
|
||||||
|
|
||||||
if (canceled && !libraryScan.totalResults) {
|
|
||||||
task.setFinished('Scan canceled')
|
|
||||||
TaskManager.taskFinished(task)
|
|
||||||
|
|
||||||
const emitData = libraryScan.getScanEmitData
|
|
||||||
emitData.results = null
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
library.lastScan = Date.now()
|
|
||||||
library.lastScanVersion = packageJson.version
|
|
||||||
if (library.isBook) {
|
|
||||||
const newExtraData = library.extraData || {}
|
|
||||||
newExtraData.lastScanMetadataPrecedence = library.settings.metadataPrecedence
|
|
||||||
library.extraData = newExtraData
|
|
||||||
library.changed('extraData', true)
|
|
||||||
}
|
|
||||||
await library.save()
|
|
||||||
|
|
||||||
task.setFinished(libraryScan.scanResultsString)
|
|
||||||
TaskManager.taskFinished(task)
|
TaskManager.taskFinished(task)
|
||||||
|
|
||||||
if (libraryScan.totalResults) {
|
if (libraryScan.totalResults) {
|
||||||
|
Loading…
Reference in New Issue
Block a user