[Bug]: crash while downloading many podcasts #1617

Closed
opened 2026-02-20 02:03:56 -05:00 by deekerman · 0 comments
Owner

Originally created by @marcaurele on GitHub (Nov 11, 2023).

Describe the issue

I selected 120 episodes on this podcast URL, the download queue stopped at 57 left to run with an error (log below). Then, the podcast itself is in a broken state, and each time you try to access it, the service crashes. It's impossible to remove the podcast alone, it's impossible to edit anything. The only solution is to remove the entire library.

[2023-11-11 18:27:00] ERROR: [Utils] Failed to get ino for path /podcasts/enfants/Oli [Error: ENOENT: no such file or directory, stat '/podcasts/enfants/Oli'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'stat',
  path: '/podcasts/enfants/Oli'
} (fileUtils.js:104)
[2023-11-11 18:27:00] ERROR: [fileUtils] Recurse files error [Error: ENOENT: no such file or directory, scandir '/podcasts/enfants/Oli/'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'scandir',
  path: '/podcasts/enfants/Oli/'
} (fileUtils.js:168)
[2023-11-11 18:27:00] ERROR: [fileUtils] Failed to getFileTimestampsWithIno [Error: ENOENT: no such file or directory, stat '/podcasts/enfants/Oli'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'stat',
  path: '/podcasts/enfants/Oli'
} (fileUtils.js:61)
[2023-11-11 18:27:00] ERROR: [Utils] Failed to get ino for path /podcasts/enfants/Les odyssées [Error: ENOENT: no such file or directory, stat '/podcasts/enfants/Les odyssées'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'stat',
  path: '/podcasts/enfants/Les odyssées'
} (fileUtils.js:104)
[2023-11-11 18:27:00] ERROR: [fileUtils] Recurse files error [Error: ENOENT: no such file or directory, scandir '/podcasts/enfants/Les odyssées/'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'scandir',
  path: '/podcasts/enfants/Les odyssées/'
} (fileUtils.js:168)
[2023-11-11 18:27:00] ERROR: [fileUtils] Failed to getFileTimestampsWithIno [Error: ENOENT: no such file or directory, stat '/podcasts/enfants/Les odyssées'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'stat',
  path: '/podcasts/enfants/Les odyssées'
} (fileUtils.js:61)
node:internal/process/promises:279
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error
    at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
    at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
    at new Promise (<anonymous>)
    at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)
    at /node_modules/sequelize/lib/sequelize.js:315:28
    at async SQLiteQueryInterface.select (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)
    at async Function.findAll (/node_modules/sequelize/lib/model.js:1140:21)
    at async Function.findOne (/node_modules/sequelize/lib/model.js:1240:12)
    at async Function.findByPk (/node_modules/sequelize/lib/model.js:1221:12)
    at async Function.getOldById (/server/models/LibraryItem.js:422:25) {
  name: 'SequelizeDatabaseError',
  parent: [Error: SQLITE_IOERR: disk I/O error] {
    errno: 10,
    code: 'SQLITE_IOERR',
    sql: "SELECT `libraryItem`.`id`, `libraryItem`.`ino`, `libraryItem`.`path`, `libraryItem`.`relPath`, `libraryItem`.`mediaId`, `libraryItem`.`mediaType`, `libraryItem`.`isFile`, `libraryItem`.`isMissing`, `libraryItem`.`isInvalid`, `libraryItem`.`mtime`, `libraryItem`.`ctime`, `libraryItem`.`birthtime`, `libraryItem`.`size`, `libraryItem`.`lastScan`, `libraryItem`.`lastScanVersion`, `libraryItem`.`libraryFiles`, `libraryItem`.`extraData`, `libraryItem`.`createdAt`, `libraryItem`.`updatedAt`, `libraryItem`.`libraryId`, `libraryItem`.`libraryFolderId`, `book`.`id` AS `book.id`, `book`.`title` AS `book.title`, `book`.`titleIgnorePrefix` AS `book.titleIgnorePrefix`, `book`.`subtitle` AS `book.subtitle`, `book`.`publishedYear` AS `book.publishedYear`, `book`.`publishedDate` AS `book.publishedDate`, `book`.`publisher` AS `book.publisher`, `book`.`description` AS `book.description`, `book`.`isbn` AS `book.isbn`, `book`.`asin` AS `book.asin`, `book`.`language` AS `book.language`, `book`.`explicit` AS `book.explicit`, `book`.`abridged` AS `book.abridged`, `book`.`coverPath` AS `book.coverPath`, `book`.`duration` AS `book.duration`, `book`.`narrators` AS `book.narrators`, `book`.`audioFiles` AS `book.audioFiles`, `book`.`ebookFile` AS `book.ebookFile`, `book`.`chapters` AS `book.chapters`, `book`.`tags` AS `book.tags`, `book`.`genres` AS `book.genres`, `book`.`createdAt` AS `book.createdAt`, `book`.`updatedAt` AS `book.updatedAt`, `book->authors`.`id` AS `book.authors.id`, `book->authors`.`name` AS `book.authors.name`, `book->authors`.`lastFirst` AS `book.authors.lastFirst`, `book->authors`.`asin` AS `book.authors.asin`, `book->authors`.`description` AS `book.authors.description`, `book->authors`.`imagePath` AS `book.authors.imagePath`, `book->authors`.`createdAt` AS `book.authors.createdAt`, `book->authors`.`updatedAt` AS `book.authors.updatedAt`, `book->authors`.`libraryId` AS `book.authors.libraryId`, `book->series`.`id` AS `book.series.id`, `book->series`.`name` AS `book.series.name`, `book->series`.`nameIgnorePrefix` AS `book.series.nameIgnorePrefix`, `book->series`.`description` AS `book.series.description`, `book->series`.`createdAt` AS `book.series.createdAt`, `book->series`.`updatedAt` AS `book.series.updatedAt`, `book->series`.`libraryId` AS `book.series.libraryId`, `book->series->bookSeries`.`id` AS `book.series.bookSeries.id`, `book->series->bookSeries`.`sequence` AS `book.series.bookSeries.sequence`, `podcast`.`id` AS `podcast.id`, `podcast`.`title` AS `podcast.title`, `podcast`.`titleIgnorePrefix` AS `podcast.titleIgnorePrefix`, `podcast`.`author` AS `podcast.author`, `podcast`.`releaseDate` AS `podcast.releaseDate`, `podcast`.`feedURL` AS `podcast.feedURL`, `podcast`.`imageURL` AS `podcast.imageURL`, `podcast`.`description` AS `podcast.description`, `podcast`.`itunesPageURL` AS `podcast.itunesPageURL`, `podcast`.`itunesId` AS `podcast.itunesId`, `podcast`.`itunesArtistId` AS `podcast.itunesArtistId`, `podcast`.`language` AS `podcast.language`, `podcast`.`podcastType` AS `podcast.podcastType`, `podcast`.`explicit` AS `podcast.explicit`, `podcast`.`autoDownloadEpisodes` AS `podcast.autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule` AS `podcast.autoDownloadSchedule`, `podcast`.`lastEpisodeCheck` AS `podcast.lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep` AS `podcast.maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload` AS `podcast.maxNewEpisodesToDownload`, `podcast`.`coverPath` AS `podcast.coverPath`, `podcast`.`tags` AS `podcast.tags`, `podcast`.`genres` AS `podcast.genres`, `podcast`.`createdAt` AS `podcast.createdAt`, `podcast`.`updatedAt` AS `podcast.updatedAt`, `podcast->podcastEpisodes`.`id` AS `podcast.podcastEpisodes.id`, `podcast->podcastEpisodes`.`index` AS `podcast.podcastEpisodes.index`, `podcast->podcastEpisodes`.`season` AS `podcast.podcastEpisodes.season`, `podcast->podcastEpisodes`.`episode` AS `podcast.podcastEpisodes.episode`, `podcast->podcastEpisodes`.`episodeType` AS `podcast.podcastEpisodes.episodeType`, `podcast->podcastEpisodes`.`title` AS `podcast.podcastEpisodes.title`, `podcast->podcastEpisodes`.`subtitle` AS `podcast.podcastEpisodes.subtitle`, `podcast->podcastEpisodes`.`description` AS `podcast.podcastEpisodes.description`, `podcast->podcastEpisodes`.`pubDate` AS `podcast.podcastEpisodes.pubDate`, `podcast->podcastEpisodes`.`enclosureURL` AS `podcast.podcastEpisodes.enclosureURL`, `podcast->podcastEpisodes`.`enclosureSize` AS `podcast.podcastEpisodes.enclosureSize`, `podcast->podcastEpisodes`.`enclosureType` AS `podcast.podcastEpisodes.enclosureType`, `podcast->podcastEpisodes`.`publishedAt` AS `podcast.podcastEpisodes.publishedAt`, `podcast->podcastEpisodes`.`audioFile` AS `podcast.podcastEpisodes.audioFile`, `podcast->podcastEpisodes`.`chapters` AS `podcast.podcastEpisodes.chapters`, `podcast->podcastEpisodes`.`extraData` AS `podcast.podcastEpisodes.extraData`, `podcast->podcastEpisodes`.`createdAt` AS `podcast.podcastEpisodes.createdAt`, `podcast->podcastEpisodes`.`updatedAt` AS `podcast.podcastEpisodes.updatedAt`, `podcast->podcastEpisodes`.`podcastId` AS `podcast.podcastEpisodes.podcastId` FROM `libraryItems` AS `libraryItem` LEFT OUTER JOIN `books` AS `book` ON `libraryItem`.`mediaId` = `book`.`id` LEFT OUTER JOIN ( `bookAuthors` AS `book->authors->bookAuthor` INNER JOIN `authors` AS `book->authors` ON `book->authors`.`id` = `book->authors->bookAuthor`.`authorId`) ON `book`.`id` = `book->authors->bookAuthor`.`bookId` LEFT OUTER JOIN ( `bookSeries` AS `book->series->bookSeries` INNER JOIN `series` AS `book->series` ON `book->series`.`id` = `book->series->bookSeries`.`seriesId`) ON `book`.`id` = `book->series->bookSeries`.`bookId` LEFT OUTER JOIN `podcasts` AS `podcast` ON `libraryItem`.`mediaId` = `podcast`.`id` LEFT OUTER JOIN `podcastEpisodes` AS `podcast->podcastEpisodes` ON `podcast`.`id` = `podcast->podcastEpisodes`.`podcastId` WHERE `libraryItem`.`id` = '5287b99a-3afa-4410-a931-5e5f2edb701f' ORDER BY `book->authors->bookAuthor`.`createdAt` ASC, `book->series->bookSeries`.`createdAt` ASC;"
  },
  original: [Error: SQLITE_IOERR: disk I/O error] {
    errno: 10,
    code: 'SQLITE_IOERR',
    sql: "SELECT `libraryItem`.`id`, `libraryItem`.`ino`, `libraryItem`.`path`, `libraryItem`.`relPath`, `libraryItem`.`mediaId`, `libraryItem`.`mediaType`, `libraryItem`.`isFile`, `libraryItem`.`isMissing`, `libraryItem`.`isInvalid`, `libraryItem`.`mtime`, `libraryItem`.`ctime`, `libraryItem`.`birthtime`, `libraryItem`.`size`, `libraryItem`.`lastScan`, `libraryItem`.`lastScanVersion`, `libraryItem`.`libraryFiles`, `libraryItem`.`extraData`, `libraryItem`.`createdAt`, `libraryItem`.`updatedAt`, `libraryItem`.`libraryId`, `libraryItem`.`libraryFolderId`, `book`.`id` AS `book.id`, `book`.`title` AS `book.title`, `book`.`titleIgnorePrefix` AS `book.titleIgnorePrefix`, `book`.`subtitle` AS `book.subtitle`, `book`.`publishedYear` AS `book.publishedYear`, `book`.`publishedDate` AS `book.publishedDate`, `book`.`publisher` AS `book.publisher`, `book`.`description` AS `book.description`, `book`.`isbn` AS `book.isbn`, `book`.`asin` AS `book.asin`, `book`.`language` AS `book.language`, `book`.`explicit` AS `book.explicit`, `book`.`abridged` AS `book.abridged`, `book`.`coverPath` AS `book.coverPath`, `book`.`duration` AS `book.duration`, `book`.`narrators` AS `book.narrators`, `book`.`audioFiles` AS `book.audioFiles`, `book`.`ebookFile` AS `book.ebookFile`, `book`.`chapters` AS `book.chapters`, `book`.`tags` AS `book.tags`, `book`.`genres` AS `book.genres`, `book`.`createdAt` AS `book.createdAt`, `book`.`updatedAt` AS `book.updatedAt`, `book->authors`.`id` AS `book.authors.id`, `book->authors`.`name` AS `book.authors.name`, `book->authors`.`lastFirst` AS `book.authors.lastFirst`, `book->authors`.`asin` AS `book.authors.asin`, `book->authors`.`description` AS `book.authors.description`, `book->authors`.`imagePath` AS `book.authors.imagePath`, `book->authors`.`createdAt` AS `book.authors.createdAt`, `book->authors`.`updatedAt` AS `book.authors.updatedAt`, `book->authors`.`libraryId` AS `book.authors.libraryId`, `book->series`.`id` AS `book.series.id`, `book->series`.`name` AS `book.series.name`, `book->series`.`nameIgnorePrefix` AS `book.series.nameIgnorePrefix`, `book->series`.`description` AS `book.series.description`, `book->series`.`createdAt` AS `book.series.createdAt`, `book->series`.`updatedAt` AS `book.series.updatedAt`, `book->series`.`libraryId` AS `book.series.libraryId`, `book->series->bookSeries`.`id` AS `book.series.bookSeries.id`, `book->series->bookSeries`.`sequence` AS `book.series.bookSeries.sequence`, `podcast`.`id` AS `podcast.id`, `podcast`.`title` AS `podcast.title`, `podcast`.`titleIgnorePrefix` AS `podcast.titleIgnorePrefix`, `podcast`.`author` AS `podcast.author`, `podcast`.`releaseDate` AS `podcast.releaseDate`, `podcast`.`feedURL` AS `podcast.feedURL`, `podcast`.`imageURL` AS `podcast.imageURL`, `podcast`.`description` AS `podcast.description`, `podcast`.`itunesPageURL` AS `podcast.itunesPageURL`, `podcast`.`itunesId` AS `podcast.itunesId`, `podcast`.`itunesArtistId` AS `podcast.itunesArtistId`, `podcast`.`language` AS `podcast.language`, `podcast`.`podcastType` AS `podcast.podcastType`, `podcast`.`explicit` AS `podcast.explicit`, `podcast`.`autoDownloadEpisodes` AS `podcast.autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule` AS `podcast.autoDownloadSchedule`, `podcast`.`lastEpisodeCheck` AS `podcast.lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep` AS `podcast.maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload` AS `podcast.maxNewEpisodesToDownload`, `podcast`.`coverPath` AS `podcast.coverPath`, `podcast`.`tags` AS `podcast.tags`, `podcast`.`genres` AS `podcast.genres`, `podcast`.`createdAt` AS `podcast.createdAt`, `podcast`.`updatedAt` AS `podcast.updatedAt`, `podcast->podcastEpisodes`.`id` AS `podcast.podcastEpisodes.id`, `podcast->podcastEpisodes`.`index` AS `podcast.podcastEpisodes.index`, `podcast->podcastEpisodes`.`season` AS `podcast.podcastEpisodes.season`, `podcast->podcastEpisodes`.`episode` AS `podcast.podcastEpisodes.episode`, `podcast->podcastEpisodes`.`episodeType` AS `podcast.podcastEpisodes.episodeType`, `podcast->podcastEpisodes`.`title` AS `podcast.podcastEpisodes.title`, `podcast->podcastEpisodes`.`subtitle` AS `podcast.podcastEpisodes.subtitle`, `podcast->podcastEpisodes`.`description` AS `podcast.podcastEpisodes.description`, `podcast->podcastEpisodes`.`pubDate` AS `podcast.podcastEpisodes.pubDate`, `podcast->podcastEpisodes`.`enclosureURL` AS `podcast.podcastEpisodes.enclosureURL`, `podcast->podcastEpisodes`.`enclosureSize` AS `podcast.podcastEpisodes.enclosureSize`, `podcast->podcastEpisodes`.`enclosureType` AS `podcast.podcastEpisodes.enclosureType`, `podcast->podcastEpisodes`.`publishedAt` AS `podcast.podcastEpisodes.publishedAt`, `podcast->podcastEpisodes`.`audioFile` AS `podcast.podcastEpisodes.audioFile`, `podcast->podcastEpisodes`.`chapters` AS `podcast.podcastEpisodes.chapters`, `podcast->podcastEpisodes`.`extraData` AS `podcast.podcastEpisodes.extraData`, `podcast->podcastEpisodes`.`createdAt` AS `podcast.podcastEpisodes.createdAt`, `podcast->podcastEpisodes`.`updatedAt` AS `podcast.podcastEpisodes.updatedAt`, `podcast->podcastEpisodes`.`podcastId` AS `podcast.podcastEpisodes.podcastId` FROM `libraryItems` AS `libraryItem` LEFT OUTER JOIN `books` AS `book` ON `libraryItem`.`mediaId` = `book`.`id` LEFT OUTER JOIN ( `bookAuthors` AS `book->authors->bookAuthor` INNER JOIN `authors` AS `book->authors` ON `book->authors`.`id` = `book->authors->bookAuthor`.`authorId`) ON `book`.`id` = `book->authors->bookAuthor`.`bookId` LEFT OUTER JOIN ( `bookSeries` AS `book->series->bookSeries` INNER JOIN `series` AS `book->series` ON `book->series`.`id` = `book->series->bookSeries`.`seriesId`) ON `book`.`id` = `book->series->bookSeries`.`bookId` LEFT OUTER JOIN `podcasts` AS `podcast` ON `libraryItem`.`mediaId` = `podcast`.`id` LEFT OUTER JOIN `podcastEpisodes` AS `podcast->podcastEpisodes` ON `podcast`.`id` = `podcast->podcastEpisodes`.`podcastId` WHERE `libraryItem`.`id` = '5287b99a-3afa-4410-a931-5e5f2edb701f' ORDER BY `book->authors->bookAuthor`.`createdAt` ASC, `book->series->bookSeries`.`createdAt` ASC;"
  },
  sql: "SELECT `libraryItem`.`id`, `libraryItem`.`ino`, `libraryItem`.`path`, `libraryItem`.`relPath`, `libraryItem`.`mediaId`, `libraryItem`.`mediaType`, `libraryItem`.`isFile`, `libraryItem`.`isMissing`, `libraryItem`.`isInvalid`, `libraryItem`.`mtime`, `libraryItem`.`ctime`, `libraryItem`.`birthtime`, `libraryItem`.`size`, `libraryItem`.`lastScan`, `libraryItem`.`lastScanVersion`, `libraryItem`.`libraryFiles`, `libraryItem`.`extraData`, `libraryItem`.`createdAt`, `libraryItem`.`updatedAt`, `libraryItem`.`libraryId`, `libraryItem`.`libraryFolderId`, `book`.`id` AS `book.id`, `book`.`title` AS `book.title`, `book`.`titleIgnorePrefix` AS `book.titleIgnorePrefix`, `book`.`subtitle` AS `book.subtitle`, `book`.`publishedYear` AS `book.publishedYear`, `book`.`publishedDate` AS `book.publishedDate`, `book`.`publisher` AS `book.publisher`, `book`.`description` AS `book.description`, `book`.`isbn` AS `book.isbn`, `book`.`asin` AS `book.asin`, `book`.`language` AS `book.language`, `book`.`explicit` AS `book.explicit`, `book`.`abridged` AS `book.abridged`, `book`.`coverPath` AS `book.coverPath`, `book`.`duration` AS `book.duration`, `book`.`narrators` AS `book.narrators`, `book`.`audioFiles` AS `book.audioFiles`, `book`.`ebookFile` AS `book.ebookFile`, `book`.`chapters` AS `book.chapters`, `book`.`tags` AS `book.tags`, `book`.`genres` AS `book.genres`, `book`.`createdAt` AS `book.createdAt`, `book`.`updatedAt` AS `book.updatedAt`, `book->authors`.`id` AS `book.authors.id`, `book->authors`.`name` AS `book.authors.name`, `book->authors`.`lastFirst` AS `book.authors.lastFirst`, `book->authors`.`asin` AS `book.authors.asin`, `book->authors`.`description` AS `book.authors.description`, `book->authors`.`imagePath` AS `book.authors.imagePath`, `book->authors`.`createdAt` AS `book.authors.createdAt`, `book->authors`.`updatedAt` AS `book.authors.updatedAt`, `book->authors`.`libraryId` AS `book.authors.libraryId`, `book->series`.`id` AS `book.series.id`, `book->series`.`name` AS `book.series.name`, `book->series`.`nameIgnorePrefix` AS `book.series.nameIgnorePrefix`, `book->series`.`description` AS `book.series.description`, `book->series`.`createdAt` AS `book.series.createdAt`, `book->series`.`updatedAt` AS `book.series.updatedAt`, `book->series`.`libraryId` AS `book.series.libraryId`, `book->series->bookSeries`.`id` AS `book.series.bookSeries.id`, `book->series->bookSeries`.`sequence` AS `book.series.bookSeries.sequence`, `podcast`.`id` AS `podcast.id`, `podcast`.`title` AS `podcast.title`, `podcast`.`titleIgnorePrefix` AS `podcast.titleIgnorePrefix`, `podcast`.`author` AS `podcast.author`, `podcast`.`releaseDate` AS `podcast.releaseDate`, `podcast`.`feedURL` AS `podcast.feedURL`, `podcast`.`imageURL` AS `podcast.imageURL`, `podcast`.`description` AS `podcast.description`, `podcast`.`itunesPageURL` AS `podcast.itunesPageURL`, `podcast`.`itunesId` AS `podcast.itunesId`, `podcast`.`itunesArtistId` AS `podcast.itunesArtistId`, `podcast`.`language` AS `podcast.language`, `podcast`.`podcastType` AS `podcast.podcastType`, `podcast`.`explicit` AS `podcast.explicit`, `podcast`.`autoDownloadEpisodes` AS `podcast.autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule` AS `podcast.autoDownloadSchedule`, `podcast`.`lastEpisodeCheck` AS `podcast.lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep` AS `podcast.maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload` AS `podcast.maxNewEpisodesToDownload`, `podcast`.`coverPath` AS `podcast.coverPath`, `podcast`.`tags` AS `podcast.tags`, `podcast`.`genres` AS `podcast.genres`, `podcast`.`createdAt` AS `podcast.createdAt`, `podcast`.`updatedAt` AS `podcast.updatedAt`, `podcast->podcastEpisodes`.`id` AS `podcast.podcastEpisodes.id`, `podcast->podcastEpisodes`.`index` AS `podcast.podcastEpisodes.index`, `podcast->podcastEpisodes`.`season` AS `podcast.podcastEpisodes.season`, `podcast->podcastEpisodes`.`episode` AS `podcast.podcastEpisodes.episode`, `podcast->podcastEpisodes`.`episodeType` AS `podcast.podcastEpisodes.episodeType`, `podcast->podcastEpisodes`.`title` AS `podcast.podcastEpisodes.title`, `podcast->podcastEpisodes`.`subtitle` AS `podcast.podcastEpisodes.subtitle`, `podcast->podcastEpisodes`.`description` AS `podcast.podcastEpisodes.description`, `podcast->podcastEpisodes`.`pubDate` AS `podcast.podcastEpisodes.pubDate`, `podcast->podcastEpisodes`.`enclosureURL` AS `podcast.podcastEpisodes.enclosureURL`, `podcast->podcastEpisodes`.`enclosureSize` AS `podcast.podcastEpisodes.enclosureSize`, `podcast->podcastEpisodes`.`enclosureType` AS `podcast.podcastEpisodes.enclosureType`, `podcast->podcastEpisodes`.`publishedAt` AS `podcast.podcastEpisodes.publishedAt`, `podcast->podcastEpisodes`.`audioFile` AS `podcast.podcastEpisodes.audioFile`, `podcast->podcastEpisodes`.`chapters` AS `podcast.podcastEpisodes.chapters`, `podcast->podcastEpisodes`.`extraData` AS `podcast.podcastEpisodes.extraData`, `podcast->podcastEpisodes`.`createdAt` AS `podcast.podcastEpisodes.createdAt`, `podcast->podcastEpisodes`.`updatedAt` AS `podcast.podcastEpisodes.updatedAt`, `podcast->podcastEpisodes`.`podcastId` AS `podcast.podcastEpisodes.podcastId` FROM `libraryItems` AS `libraryItem` LEFT OUTER JOIN `books` AS `book` ON `libraryItem`.`mediaId` = `book`.`id` LEFT OUTER JOIN ( `bookAuthors` AS `book->authors->bookAuthor` INNER JOIN `authors` AS `book->authors` ON `book->authors`.`id` = `book->authors->bookAuthor`.`authorId`) ON `book`.`id` = `book->authors->bookAuthor`.`bookId` LEFT OUTER JOIN ( `bookSeries` AS `book->series->bookSeries` INNER JOIN `series` AS `book->series` ON `book->series`.`id` = `book->series->bookSeries`.`seriesId`) ON `book`.`id` = `book->series->bookSeries`.`bookId` LEFT OUTER JOIN `podcasts` AS `podcast` ON `libraryItem`.`mediaId` = `podcast`.`id` LEFT OUTER JOIN `podcastEpisodes` AS `podcast->podcastEpisodes` ON `podcast`.`id` = `podcast->podcastEpisodes`.`podcastId` WHERE `libraryItem`.`id` = '5287b99a-3afa-4410-a931-5e5f2edb701f' ORDER BY `book->authors->bookAuthor`.`createdAt` ASC, `book->series->bookSeries`.`createdAt` ASC;",
  parameters: {}
}

Steps to reproduce the issue

  1. Open the list of episodes for the podcast https://radiofrance-podcast.net/podcast09/rss_19721.xml
  2. Select all of them
  3. Wait for the download to run
  4. The download queue stopped at 57 items left with this error

image

Audiobookshelf version

v2.5.0

How are you running audiobookshelf?

Docker

Originally created by @marcaurele on GitHub (Nov 11, 2023). ### Describe the issue I selected 120 episodes on this podcast URL, the download queue stopped at 57 left to run with an error (log below). Then, the podcast itself is in a broken state, and each time you try to access it, the service crashes. It's impossible to remove the podcast alone, it's impossible to edit anything. The only solution is to remove the entire library. ```console [2023-11-11 18:27:00] ERROR: [Utils] Failed to get ino for path /podcasts/enfants/Oli [Error: ENOENT: no such file or directory, stat '/podcasts/enfants/Oli'] { errno: -2, code: 'ENOENT', syscall: 'stat', path: '/podcasts/enfants/Oli' } (fileUtils.js:104) [2023-11-11 18:27:00] ERROR: [fileUtils] Recurse files error [Error: ENOENT: no such file or directory, scandir '/podcasts/enfants/Oli/'] { errno: -2, code: 'ENOENT', syscall: 'scandir', path: '/podcasts/enfants/Oli/' } (fileUtils.js:168) [2023-11-11 18:27:00] ERROR: [fileUtils] Failed to getFileTimestampsWithIno [Error: ENOENT: no such file or directory, stat '/podcasts/enfants/Oli'] { errno: -2, code: 'ENOENT', syscall: 'stat', path: '/podcasts/enfants/Oli' } (fileUtils.js:61) [2023-11-11 18:27:00] ERROR: [Utils] Failed to get ino for path /podcasts/enfants/Les odyssées [Error: ENOENT: no such file or directory, stat '/podcasts/enfants/Les odyssées'] { errno: -2, code: 'ENOENT', syscall: 'stat', path: '/podcasts/enfants/Les odyssées' } (fileUtils.js:104) [2023-11-11 18:27:00] ERROR: [fileUtils] Recurse files error [Error: ENOENT: no such file or directory, scandir '/podcasts/enfants/Les odyssées/'] { errno: -2, code: 'ENOENT', syscall: 'scandir', path: '/podcasts/enfants/Les odyssées/' } (fileUtils.js:168) [2023-11-11 18:27:00] ERROR: [fileUtils] Failed to getFileTimestampsWithIno [Error: ENOENT: no such file or directory, stat '/podcasts/enfants/Les odyssées'] { errno: -2, code: 'ENOENT', syscall: 'stat', path: '/podcasts/enfants/Les odyssées' } (fileUtils.js:61) node:internal/process/promises:279 triggerUncaughtException(err, true /* fromPromise */); ^ Error at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27) at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50 at new Promise (<anonymous>) at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12) at /node_modules/sequelize/lib/sequelize.js:315:28 at async SQLiteQueryInterface.select (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12) at async Function.findAll (/node_modules/sequelize/lib/model.js:1140:21) at async Function.findOne (/node_modules/sequelize/lib/model.js:1240:12) at async Function.findByPk (/node_modules/sequelize/lib/model.js:1221:12) at async Function.getOldById (/server/models/LibraryItem.js:422:25) { name: 'SequelizeDatabaseError', parent: [Error: SQLITE_IOERR: disk I/O error] { errno: 10, code: 'SQLITE_IOERR', sql: "SELECT `libraryItem`.`id`, `libraryItem`.`ino`, `libraryItem`.`path`, `libraryItem`.`relPath`, `libraryItem`.`mediaId`, `libraryItem`.`mediaType`, `libraryItem`.`isFile`, `libraryItem`.`isMissing`, `libraryItem`.`isInvalid`, `libraryItem`.`mtime`, `libraryItem`.`ctime`, `libraryItem`.`birthtime`, `libraryItem`.`size`, `libraryItem`.`lastScan`, `libraryItem`.`lastScanVersion`, `libraryItem`.`libraryFiles`, `libraryItem`.`extraData`, `libraryItem`.`createdAt`, `libraryItem`.`updatedAt`, `libraryItem`.`libraryId`, `libraryItem`.`libraryFolderId`, `book`.`id` AS `book.id`, `book`.`title` AS `book.title`, `book`.`titleIgnorePrefix` AS `book.titleIgnorePrefix`, `book`.`subtitle` AS `book.subtitle`, `book`.`publishedYear` AS `book.publishedYear`, `book`.`publishedDate` AS `book.publishedDate`, `book`.`publisher` AS `book.publisher`, `book`.`description` AS `book.description`, `book`.`isbn` AS `book.isbn`, `book`.`asin` AS `book.asin`, `book`.`language` AS `book.language`, `book`.`explicit` AS `book.explicit`, `book`.`abridged` AS `book.abridged`, `book`.`coverPath` AS `book.coverPath`, `book`.`duration` AS `book.duration`, `book`.`narrators` AS `book.narrators`, `book`.`audioFiles` AS `book.audioFiles`, `book`.`ebookFile` AS `book.ebookFile`, `book`.`chapters` AS `book.chapters`, `book`.`tags` AS `book.tags`, `book`.`genres` AS `book.genres`, `book`.`createdAt` AS `book.createdAt`, `book`.`updatedAt` AS `book.updatedAt`, `book->authors`.`id` AS `book.authors.id`, `book->authors`.`name` AS `book.authors.name`, `book->authors`.`lastFirst` AS `book.authors.lastFirst`, `book->authors`.`asin` AS `book.authors.asin`, `book->authors`.`description` AS `book.authors.description`, `book->authors`.`imagePath` AS `book.authors.imagePath`, `book->authors`.`createdAt` AS `book.authors.createdAt`, `book->authors`.`updatedAt` AS `book.authors.updatedAt`, `book->authors`.`libraryId` AS `book.authors.libraryId`, `book->series`.`id` AS `book.series.id`, `book->series`.`name` AS `book.series.name`, `book->series`.`nameIgnorePrefix` AS `book.series.nameIgnorePrefix`, `book->series`.`description` AS `book.series.description`, `book->series`.`createdAt` AS `book.series.createdAt`, `book->series`.`updatedAt` AS `book.series.updatedAt`, `book->series`.`libraryId` AS `book.series.libraryId`, `book->series->bookSeries`.`id` AS `book.series.bookSeries.id`, `book->series->bookSeries`.`sequence` AS `book.series.bookSeries.sequence`, `podcast`.`id` AS `podcast.id`, `podcast`.`title` AS `podcast.title`, `podcast`.`titleIgnorePrefix` AS `podcast.titleIgnorePrefix`, `podcast`.`author` AS `podcast.author`, `podcast`.`releaseDate` AS `podcast.releaseDate`, `podcast`.`feedURL` AS `podcast.feedURL`, `podcast`.`imageURL` AS `podcast.imageURL`, `podcast`.`description` AS `podcast.description`, `podcast`.`itunesPageURL` AS `podcast.itunesPageURL`, `podcast`.`itunesId` AS `podcast.itunesId`, `podcast`.`itunesArtistId` AS `podcast.itunesArtistId`, `podcast`.`language` AS `podcast.language`, `podcast`.`podcastType` AS `podcast.podcastType`, `podcast`.`explicit` AS `podcast.explicit`, `podcast`.`autoDownloadEpisodes` AS `podcast.autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule` AS `podcast.autoDownloadSchedule`, `podcast`.`lastEpisodeCheck` AS `podcast.lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep` AS `podcast.maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload` AS `podcast.maxNewEpisodesToDownload`, `podcast`.`coverPath` AS `podcast.coverPath`, `podcast`.`tags` AS `podcast.tags`, `podcast`.`genres` AS `podcast.genres`, `podcast`.`createdAt` AS `podcast.createdAt`, `podcast`.`updatedAt` AS `podcast.updatedAt`, `podcast->podcastEpisodes`.`id` AS `podcast.podcastEpisodes.id`, `podcast->podcastEpisodes`.`index` AS `podcast.podcastEpisodes.index`, `podcast->podcastEpisodes`.`season` AS `podcast.podcastEpisodes.season`, `podcast->podcastEpisodes`.`episode` AS `podcast.podcastEpisodes.episode`, `podcast->podcastEpisodes`.`episodeType` AS `podcast.podcastEpisodes.episodeType`, `podcast->podcastEpisodes`.`title` AS `podcast.podcastEpisodes.title`, `podcast->podcastEpisodes`.`subtitle` AS `podcast.podcastEpisodes.subtitle`, `podcast->podcastEpisodes`.`description` AS `podcast.podcastEpisodes.description`, `podcast->podcastEpisodes`.`pubDate` AS `podcast.podcastEpisodes.pubDate`, `podcast->podcastEpisodes`.`enclosureURL` AS `podcast.podcastEpisodes.enclosureURL`, `podcast->podcastEpisodes`.`enclosureSize` AS `podcast.podcastEpisodes.enclosureSize`, `podcast->podcastEpisodes`.`enclosureType` AS `podcast.podcastEpisodes.enclosureType`, `podcast->podcastEpisodes`.`publishedAt` AS `podcast.podcastEpisodes.publishedAt`, `podcast->podcastEpisodes`.`audioFile` AS `podcast.podcastEpisodes.audioFile`, `podcast->podcastEpisodes`.`chapters` AS `podcast.podcastEpisodes.chapters`, `podcast->podcastEpisodes`.`extraData` AS `podcast.podcastEpisodes.extraData`, `podcast->podcastEpisodes`.`createdAt` AS `podcast.podcastEpisodes.createdAt`, `podcast->podcastEpisodes`.`updatedAt` AS `podcast.podcastEpisodes.updatedAt`, `podcast->podcastEpisodes`.`podcastId` AS `podcast.podcastEpisodes.podcastId` FROM `libraryItems` AS `libraryItem` LEFT OUTER JOIN `books` AS `book` ON `libraryItem`.`mediaId` = `book`.`id` LEFT OUTER JOIN ( `bookAuthors` AS `book->authors->bookAuthor` INNER JOIN `authors` AS `book->authors` ON `book->authors`.`id` = `book->authors->bookAuthor`.`authorId`) ON `book`.`id` = `book->authors->bookAuthor`.`bookId` LEFT OUTER JOIN ( `bookSeries` AS `book->series->bookSeries` INNER JOIN `series` AS `book->series` ON `book->series`.`id` = `book->series->bookSeries`.`seriesId`) ON `book`.`id` = `book->series->bookSeries`.`bookId` LEFT OUTER JOIN `podcasts` AS `podcast` ON `libraryItem`.`mediaId` = `podcast`.`id` LEFT OUTER JOIN `podcastEpisodes` AS `podcast->podcastEpisodes` ON `podcast`.`id` = `podcast->podcastEpisodes`.`podcastId` WHERE `libraryItem`.`id` = '5287b99a-3afa-4410-a931-5e5f2edb701f' ORDER BY `book->authors->bookAuthor`.`createdAt` ASC, `book->series->bookSeries`.`createdAt` ASC;" }, original: [Error: SQLITE_IOERR: disk I/O error] { errno: 10, code: 'SQLITE_IOERR', sql: "SELECT `libraryItem`.`id`, `libraryItem`.`ino`, `libraryItem`.`path`, `libraryItem`.`relPath`, `libraryItem`.`mediaId`, `libraryItem`.`mediaType`, `libraryItem`.`isFile`, `libraryItem`.`isMissing`, `libraryItem`.`isInvalid`, `libraryItem`.`mtime`, `libraryItem`.`ctime`, `libraryItem`.`birthtime`, `libraryItem`.`size`, `libraryItem`.`lastScan`, `libraryItem`.`lastScanVersion`, `libraryItem`.`libraryFiles`, `libraryItem`.`extraData`, `libraryItem`.`createdAt`, `libraryItem`.`updatedAt`, `libraryItem`.`libraryId`, `libraryItem`.`libraryFolderId`, `book`.`id` AS `book.id`, `book`.`title` AS `book.title`, `book`.`titleIgnorePrefix` AS `book.titleIgnorePrefix`, `book`.`subtitle` AS `book.subtitle`, `book`.`publishedYear` AS `book.publishedYear`, `book`.`publishedDate` AS `book.publishedDate`, `book`.`publisher` AS `book.publisher`, `book`.`description` AS `book.description`, `book`.`isbn` AS `book.isbn`, `book`.`asin` AS `book.asin`, `book`.`language` AS `book.language`, `book`.`explicit` AS `book.explicit`, `book`.`abridged` AS `book.abridged`, `book`.`coverPath` AS `book.coverPath`, `book`.`duration` AS `book.duration`, `book`.`narrators` AS `book.narrators`, `book`.`audioFiles` AS `book.audioFiles`, `book`.`ebookFile` AS `book.ebookFile`, `book`.`chapters` AS `book.chapters`, `book`.`tags` AS `book.tags`, `book`.`genres` AS `book.genres`, `book`.`createdAt` AS `book.createdAt`, `book`.`updatedAt` AS `book.updatedAt`, `book->authors`.`id` AS `book.authors.id`, `book->authors`.`name` AS `book.authors.name`, `book->authors`.`lastFirst` AS `book.authors.lastFirst`, `book->authors`.`asin` AS `book.authors.asin`, `book->authors`.`description` AS `book.authors.description`, `book->authors`.`imagePath` AS `book.authors.imagePath`, `book->authors`.`createdAt` AS `book.authors.createdAt`, `book->authors`.`updatedAt` AS `book.authors.updatedAt`, `book->authors`.`libraryId` AS `book.authors.libraryId`, `book->series`.`id` AS `book.series.id`, `book->series`.`name` AS `book.series.name`, `book->series`.`nameIgnorePrefix` AS `book.series.nameIgnorePrefix`, `book->series`.`description` AS `book.series.description`, `book->series`.`createdAt` AS `book.series.createdAt`, `book->series`.`updatedAt` AS `book.series.updatedAt`, `book->series`.`libraryId` AS `book.series.libraryId`, `book->series->bookSeries`.`id` AS `book.series.bookSeries.id`, `book->series->bookSeries`.`sequence` AS `book.series.bookSeries.sequence`, `podcast`.`id` AS `podcast.id`, `podcast`.`title` AS `podcast.title`, `podcast`.`titleIgnorePrefix` AS `podcast.titleIgnorePrefix`, `podcast`.`author` AS `podcast.author`, `podcast`.`releaseDate` AS `podcast.releaseDate`, `podcast`.`feedURL` AS `podcast.feedURL`, `podcast`.`imageURL` AS `podcast.imageURL`, `podcast`.`description` AS `podcast.description`, `podcast`.`itunesPageURL` AS `podcast.itunesPageURL`, `podcast`.`itunesId` AS `podcast.itunesId`, `podcast`.`itunesArtistId` AS `podcast.itunesArtistId`, `podcast`.`language` AS `podcast.language`, `podcast`.`podcastType` AS `podcast.podcastType`, `podcast`.`explicit` AS `podcast.explicit`, `podcast`.`autoDownloadEpisodes` AS `podcast.autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule` AS `podcast.autoDownloadSchedule`, `podcast`.`lastEpisodeCheck` AS `podcast.lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep` AS `podcast.maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload` AS `podcast.maxNewEpisodesToDownload`, `podcast`.`coverPath` AS `podcast.coverPath`, `podcast`.`tags` AS `podcast.tags`, `podcast`.`genres` AS `podcast.genres`, `podcast`.`createdAt` AS `podcast.createdAt`, `podcast`.`updatedAt` AS `podcast.updatedAt`, `podcast->podcastEpisodes`.`id` AS `podcast.podcastEpisodes.id`, `podcast->podcastEpisodes`.`index` AS `podcast.podcastEpisodes.index`, `podcast->podcastEpisodes`.`season` AS `podcast.podcastEpisodes.season`, `podcast->podcastEpisodes`.`episode` AS `podcast.podcastEpisodes.episode`, `podcast->podcastEpisodes`.`episodeType` AS `podcast.podcastEpisodes.episodeType`, `podcast->podcastEpisodes`.`title` AS `podcast.podcastEpisodes.title`, `podcast->podcastEpisodes`.`subtitle` AS `podcast.podcastEpisodes.subtitle`, `podcast->podcastEpisodes`.`description` AS `podcast.podcastEpisodes.description`, `podcast->podcastEpisodes`.`pubDate` AS `podcast.podcastEpisodes.pubDate`, `podcast->podcastEpisodes`.`enclosureURL` AS `podcast.podcastEpisodes.enclosureURL`, `podcast->podcastEpisodes`.`enclosureSize` AS `podcast.podcastEpisodes.enclosureSize`, `podcast->podcastEpisodes`.`enclosureType` AS `podcast.podcastEpisodes.enclosureType`, `podcast->podcastEpisodes`.`publishedAt` AS `podcast.podcastEpisodes.publishedAt`, `podcast->podcastEpisodes`.`audioFile` AS `podcast.podcastEpisodes.audioFile`, `podcast->podcastEpisodes`.`chapters` AS `podcast.podcastEpisodes.chapters`, `podcast->podcastEpisodes`.`extraData` AS `podcast.podcastEpisodes.extraData`, `podcast->podcastEpisodes`.`createdAt` AS `podcast.podcastEpisodes.createdAt`, `podcast->podcastEpisodes`.`updatedAt` AS `podcast.podcastEpisodes.updatedAt`, `podcast->podcastEpisodes`.`podcastId` AS `podcast.podcastEpisodes.podcastId` FROM `libraryItems` AS `libraryItem` LEFT OUTER JOIN `books` AS `book` ON `libraryItem`.`mediaId` = `book`.`id` LEFT OUTER JOIN ( `bookAuthors` AS `book->authors->bookAuthor` INNER JOIN `authors` AS `book->authors` ON `book->authors`.`id` = `book->authors->bookAuthor`.`authorId`) ON `book`.`id` = `book->authors->bookAuthor`.`bookId` LEFT OUTER JOIN ( `bookSeries` AS `book->series->bookSeries` INNER JOIN `series` AS `book->series` ON `book->series`.`id` = `book->series->bookSeries`.`seriesId`) ON `book`.`id` = `book->series->bookSeries`.`bookId` LEFT OUTER JOIN `podcasts` AS `podcast` ON `libraryItem`.`mediaId` = `podcast`.`id` LEFT OUTER JOIN `podcastEpisodes` AS `podcast->podcastEpisodes` ON `podcast`.`id` = `podcast->podcastEpisodes`.`podcastId` WHERE `libraryItem`.`id` = '5287b99a-3afa-4410-a931-5e5f2edb701f' ORDER BY `book->authors->bookAuthor`.`createdAt` ASC, `book->series->bookSeries`.`createdAt` ASC;" }, sql: "SELECT `libraryItem`.`id`, `libraryItem`.`ino`, `libraryItem`.`path`, `libraryItem`.`relPath`, `libraryItem`.`mediaId`, `libraryItem`.`mediaType`, `libraryItem`.`isFile`, `libraryItem`.`isMissing`, `libraryItem`.`isInvalid`, `libraryItem`.`mtime`, `libraryItem`.`ctime`, `libraryItem`.`birthtime`, `libraryItem`.`size`, `libraryItem`.`lastScan`, `libraryItem`.`lastScanVersion`, `libraryItem`.`libraryFiles`, `libraryItem`.`extraData`, `libraryItem`.`createdAt`, `libraryItem`.`updatedAt`, `libraryItem`.`libraryId`, `libraryItem`.`libraryFolderId`, `book`.`id` AS `book.id`, `book`.`title` AS `book.title`, `book`.`titleIgnorePrefix` AS `book.titleIgnorePrefix`, `book`.`subtitle` AS `book.subtitle`, `book`.`publishedYear` AS `book.publishedYear`, `book`.`publishedDate` AS `book.publishedDate`, `book`.`publisher` AS `book.publisher`, `book`.`description` AS `book.description`, `book`.`isbn` AS `book.isbn`, `book`.`asin` AS `book.asin`, `book`.`language` AS `book.language`, `book`.`explicit` AS `book.explicit`, `book`.`abridged` AS `book.abridged`, `book`.`coverPath` AS `book.coverPath`, `book`.`duration` AS `book.duration`, `book`.`narrators` AS `book.narrators`, `book`.`audioFiles` AS `book.audioFiles`, `book`.`ebookFile` AS `book.ebookFile`, `book`.`chapters` AS `book.chapters`, `book`.`tags` AS `book.tags`, `book`.`genres` AS `book.genres`, `book`.`createdAt` AS `book.createdAt`, `book`.`updatedAt` AS `book.updatedAt`, `book->authors`.`id` AS `book.authors.id`, `book->authors`.`name` AS `book.authors.name`, `book->authors`.`lastFirst` AS `book.authors.lastFirst`, `book->authors`.`asin` AS `book.authors.asin`, `book->authors`.`description` AS `book.authors.description`, `book->authors`.`imagePath` AS `book.authors.imagePath`, `book->authors`.`createdAt` AS `book.authors.createdAt`, `book->authors`.`updatedAt` AS `book.authors.updatedAt`, `book->authors`.`libraryId` AS `book.authors.libraryId`, `book->series`.`id` AS `book.series.id`, `book->series`.`name` AS `book.series.name`, `book->series`.`nameIgnorePrefix` AS `book.series.nameIgnorePrefix`, `book->series`.`description` AS `book.series.description`, `book->series`.`createdAt` AS `book.series.createdAt`, `book->series`.`updatedAt` AS `book.series.updatedAt`, `book->series`.`libraryId` AS `book.series.libraryId`, `book->series->bookSeries`.`id` AS `book.series.bookSeries.id`, `book->series->bookSeries`.`sequence` AS `book.series.bookSeries.sequence`, `podcast`.`id` AS `podcast.id`, `podcast`.`title` AS `podcast.title`, `podcast`.`titleIgnorePrefix` AS `podcast.titleIgnorePrefix`, `podcast`.`author` AS `podcast.author`, `podcast`.`releaseDate` AS `podcast.releaseDate`, `podcast`.`feedURL` AS `podcast.feedURL`, `podcast`.`imageURL` AS `podcast.imageURL`, `podcast`.`description` AS `podcast.description`, `podcast`.`itunesPageURL` AS `podcast.itunesPageURL`, `podcast`.`itunesId` AS `podcast.itunesId`, `podcast`.`itunesArtistId` AS `podcast.itunesArtistId`, `podcast`.`language` AS `podcast.language`, `podcast`.`podcastType` AS `podcast.podcastType`, `podcast`.`explicit` AS `podcast.explicit`, `podcast`.`autoDownloadEpisodes` AS `podcast.autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule` AS `podcast.autoDownloadSchedule`, `podcast`.`lastEpisodeCheck` AS `podcast.lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep` AS `podcast.maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload` AS `podcast.maxNewEpisodesToDownload`, `podcast`.`coverPath` AS `podcast.coverPath`, `podcast`.`tags` AS `podcast.tags`, `podcast`.`genres` AS `podcast.genres`, `podcast`.`createdAt` AS `podcast.createdAt`, `podcast`.`updatedAt` AS `podcast.updatedAt`, `podcast->podcastEpisodes`.`id` AS `podcast.podcastEpisodes.id`, `podcast->podcastEpisodes`.`index` AS `podcast.podcastEpisodes.index`, `podcast->podcastEpisodes`.`season` AS `podcast.podcastEpisodes.season`, `podcast->podcastEpisodes`.`episode` AS `podcast.podcastEpisodes.episode`, `podcast->podcastEpisodes`.`episodeType` AS `podcast.podcastEpisodes.episodeType`, `podcast->podcastEpisodes`.`title` AS `podcast.podcastEpisodes.title`, `podcast->podcastEpisodes`.`subtitle` AS `podcast.podcastEpisodes.subtitle`, `podcast->podcastEpisodes`.`description` AS `podcast.podcastEpisodes.description`, `podcast->podcastEpisodes`.`pubDate` AS `podcast.podcastEpisodes.pubDate`, `podcast->podcastEpisodes`.`enclosureURL` AS `podcast.podcastEpisodes.enclosureURL`, `podcast->podcastEpisodes`.`enclosureSize` AS `podcast.podcastEpisodes.enclosureSize`, `podcast->podcastEpisodes`.`enclosureType` AS `podcast.podcastEpisodes.enclosureType`, `podcast->podcastEpisodes`.`publishedAt` AS `podcast.podcastEpisodes.publishedAt`, `podcast->podcastEpisodes`.`audioFile` AS `podcast.podcastEpisodes.audioFile`, `podcast->podcastEpisodes`.`chapters` AS `podcast.podcastEpisodes.chapters`, `podcast->podcastEpisodes`.`extraData` AS `podcast.podcastEpisodes.extraData`, `podcast->podcastEpisodes`.`createdAt` AS `podcast.podcastEpisodes.createdAt`, `podcast->podcastEpisodes`.`updatedAt` AS `podcast.podcastEpisodes.updatedAt`, `podcast->podcastEpisodes`.`podcastId` AS `podcast.podcastEpisodes.podcastId` FROM `libraryItems` AS `libraryItem` LEFT OUTER JOIN `books` AS `book` ON `libraryItem`.`mediaId` = `book`.`id` LEFT OUTER JOIN ( `bookAuthors` AS `book->authors->bookAuthor` INNER JOIN `authors` AS `book->authors` ON `book->authors`.`id` = `book->authors->bookAuthor`.`authorId`) ON `book`.`id` = `book->authors->bookAuthor`.`bookId` LEFT OUTER JOIN ( `bookSeries` AS `book->series->bookSeries` INNER JOIN `series` AS `book->series` ON `book->series`.`id` = `book->series->bookSeries`.`seriesId`) ON `book`.`id` = `book->series->bookSeries`.`bookId` LEFT OUTER JOIN `podcasts` AS `podcast` ON `libraryItem`.`mediaId` = `podcast`.`id` LEFT OUTER JOIN `podcastEpisodes` AS `podcast->podcastEpisodes` ON `podcast`.`id` = `podcast->podcastEpisodes`.`podcastId` WHERE `libraryItem`.`id` = '5287b99a-3afa-4410-a931-5e5f2edb701f' ORDER BY `book->authors->bookAuthor`.`createdAt` ASC, `book->series->bookSeries`.`createdAt` ASC;", parameters: {} } ``` ### Steps to reproduce the issue 1. Open the list of episodes for the podcast `https://radiofrance-podcast.net/podcast09/rss_19721.xml` 2. Select all of them 3. Wait for the download to run 4. The download queue stopped at 57 items left with this error ![image](https://github.com/advplyr/audiobookshelf/assets/1081566/212737b0-8ed7-485e-af7a-3010c135dcdf) ### Audiobookshelf version v2.5.0 ### How are you running audiobookshelf? Docker
deekerman 2026-02-20 02:03:56 -05:00
  • closed this issue
  • added the
    bug
    label
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/audiobookshelf#1617
No description provided.