Skip to content

Commit

Permalink
Handle library scan failure gracefully
Browse files Browse the repository at this point in the history
  • Loading branch information
mikiher committed Sep 12, 2024
1 parent 5b09bd8 commit 1099dbe
Showing 1 changed file with 35 additions and 24 deletions.
59 changes: 35 additions & 24 deletions server/scanner/LibraryScanner.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,38 +79,49 @@ class LibraryScanner {

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) {
Logger.info(`[LibraryScanner] Library scan canceled for "${libraryScan.libraryName}"`)
delete this.cancelLibraryScan[libraryScan.libraryId]
}
if (canceled) {
Logger.info(`[LibraryScanner] Library scan canceled for "${libraryScan.libraryName}"`)
delete this.cancelLibraryScan[libraryScan.libraryId]
}

libraryScan.setComplete()
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)
Logger.info(`[LibraryScanner] Library scan ${libraryScan.id} completed in ${libraryScan.elapsedTimestamp} | ${libraryScan.resultStats}`)

if (canceled && !libraryScan.totalResults) {
task.setFinished('Scan canceled')
TaskManager.taskFinished(task)
if (canceled && !libraryScan.totalResults) {
task.setFinished('Scan canceled')
TaskManager.taskFinished(task)

const emitData = libraryScan.getScanEmitData
emitData.results = null
return
}
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)
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}`)
}
await library.save()

task.setFinished(libraryScan.scanResultsString)
this.librariesScanning = this.librariesScanning.filter((ls) => ls.id !== library.id)

TaskManager.taskFinished(task)

if (libraryScan.totalResults) {
Expand Down

0 comments on commit 1099dbe

Please sign in to comment.