Originally created by @BarbellDwarf on GitHub (Jul 31, 2023).
Steps to reproduce
Add new podcast
Find all episodes and set to download all episodes
Server side service will restart/crash
Expected behaviour
It should just add them all to the queue and then download them one by one
Actual behaviour
Service will crash/restart, clearing out all downloads, thereby never actually downloading more than 5-10 episodes of the podcast
Environment data
Audiobookshelf Version:
Debian V 2.3.3
Latest Docker version as well
Notes
How is it handling download data? Is it storing it to a database table or is it adding it somewhere in memory? If it simply added it to a database table and then slowly worked down the table, that may prevent the issue from occurring.
Originally created by @BarbellDwarf on GitHub (Jul 31, 2023).
### Steps to reproduce
1. Add new podcast
2. Find all episodes and set to download all episodes
3. Server side service will restart/crash
### Expected behaviour
- It should just add them all to the queue and then download them one by one
### Actual behaviour
- Service will crash/restart, clearing out all downloads, thereby never actually downloading more than 5-10 episodes of the podcast
### Environment data
Audiobookshelf Version:
- Debian V 2.3.3
- Latest Docker version as well
### Notes
How is it handling download data? Is it storing it to a database table or is it adding it somewhere in memory? If it simply added it to a database table and then slowly worked down the table, that may prevent the issue from occurring.
adam
added the bug label 2026-04-24 23:32:53 +02:00
Downloads are queued and handled 1 by 1. All of this is stored in memory so the queue will be gone on server restart. I believe there is a feature request open to persist the queue on server restart but ideally we fix the crash.
That log isn't going to show anything useful unfortunately. You'll have to capture the log of the container or the journalctl of the debian package.
@advplyr commented on GitHub (Jul 31, 2023):
Downloads are queued and handled 1 by 1. All of this is stored in memory so the queue will be gone on server restart. I believe there is a feature request open to persist the queue on server restart but ideally we fix the crash.
That log isn't going to show anything useful unfortunately. You'll have to capture the log of the container or the `journalctl` of the debian package.
Here we go, this is the journalctl output during a crash.
Also ignore the storage, that is just where i had the docker storage for it initially and then i moved it over to a directly installed application and it uses the same storage.
@tonyedwardspz commented on GitHub (Aug 16, 2023):
I've started getting a similar error to the OP in the last couple of days for two difference series. For reference, the logs from the container are below.
audiobookshelf_1 | node:internal/process/promises:279
audiobookshelf_1 | triggerUncaughtException(err, true /* fromPromise */);
audiobookshelf_1 | ^
audiobookshelf_1 |
audiobookshelf_1 | Error
audiobookshelf_1 | at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
audiobookshelf_1 | at Database.serialize (<anonymous>)
audiobookshelf_1 | at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
audiobookshelf_1 | at new Promise (<anonymous>)
audiobookshelf_1 | at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)
audiobookshelf_1 | at /node_modules/sequelize/lib/sequelize.js:315:28
audiobookshelf_1 | at async SQLiteQueryInterface.insert (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:308:21)
audiobookshelf_1 | at async PodcastEpisode.save (/node_modules/sequelize/lib/model.js:2490:35)
audiobookshelf_1 | at async Function.create (/node_modules/sequelize/lib/model.js:1362:12)
audiobookshelf_1 | at async Function.fullUpdateFromOld (/server/models/LibraryItem.js:257:15) {
audiobookshelf_1 | name: 'SequelizeUniqueConstraintError',
audiobookshelf_1 | errors: [
audiobookshelf_1 | ValidationErrorItem {
audiobookshelf_1 | message: 'id must be unique',
audiobookshelf_1 | type: 'unique violation',
audiobookshelf_1 | path: 'id',
audiobookshelf_1 | value: 'a49bf00f-a32b-4717-9f03-00e36d7f062d',
audiobookshelf_1 | origin: 'DB',
audiobookshelf_1 | instance: podcastEpisode {
audiobookshelf_1 | dataValues: {
audiobookshelf_1 | id: 'a49bf00f-a32b-4717-9f03-00e36d7f062d',
audiobookshelf_1 | index: 277,
audiobookshelf_1 | season: '1',
audiobookshelf_1 | episode: '115',
audiobookshelf_1 | episodeType: null,
audiobookshelf_1 | title: '115. The Gunpowder Plot',
audiobookshelf_1 | subtitle: '‘Remember, remember / the Fifth of November / Gunpowder, treason & plot.” Tom & Dominic explore what - if it had succeeded - would have been the most spectacular terrorist attack in British history?',
audiobookshelf_1 | description: '<p>‘Remember, remember / the Fifth of November / Gunpowder, treason & plot.” But what is it exactly we are remembering on Bonfire Night? Tom & Dominic explore what - if it had succeeded - would have been the most spectacular terrorist attack in British history: its background, its legacy, & the controversies that still bedevil our understanding of it.</p><p><br /></p><p>*The Rest Is History Live Tour 2023*:</p><p><br /></p><p>Tom and Dominic are back on tour this autumn! See them live in London, New Zealand, and Australia!</p><p><br /></p><p>Buy your tickets here: restishistorypod.com</p><p><br /></p><p>Twitter: </p><p><br /></p><p>@TheRestHistory</p><p><br /></p><p>@holland_tom</p><p><br /></p><p>@dcsandbrook</p><p> </p><p>Learn more about your ad choices. Visit <a href="https://podcastchoices.com/adchoices">podcastchoices.com/adchoices</a></p>',
audiobookshelf_1 | pubDate: 'Thu, 04 Nov 2021 02:00:00 -0000',
audiobookshelf_1 | enclosureURL: null,
audiobookshelf_1 | enclosureSize: null,
audiobookshelf_1 | enclosureType: null,
audiobookshelf_1 | publishedAt: 2021-11-04T02:00:00.000Z,
audiobookshelf_1 | podcastId: '1ee96937-96fa-4189-889b-5e2da4dd1c91',
audiobookshelf_1 | audioFile: {
audiobookshelf_1 | index: 1,
audiobookshelf_1 | ino: '110861',
audiobookshelf_1 | metadata: [Object],
audiobookshelf_1 | addedAt: 1692173199336,
audiobookshelf_1 | updatedAt: 1692173199336,
audiobookshelf_1 | trackNumFromMeta: 115,
audiobookshelf_1 | discNumFromMeta: 1,
audiobookshelf_1 | trackNumFromFilename: null,
audiobookshelf_1 | discNumFromFilename: null,
audiobookshelf_1 | manuallyVerified: false,
audiobookshelf_1 | invalid: false,
audiobookshelf_1 | exclude: false,
audiobookshelf_1 | error: null,
audiobookshelf_1 | format: 'MP2/3 (MPEG audio layer 2/3)',
audiobookshelf_1 | duration: 3437.217959,
audiobookshelf_1 | bitRate: 64000,
audiobookshelf_1 | language: null,
audiobookshelf_1 | codec: 'mp3',
audiobookshelf_1 | timeBase: '1/14112000',
audiobookshelf_1 | channels: 1,
audiobookshelf_1 | channelLayout: 'mono',
audiobookshelf_1 | chapters: [],
audiobookshelf_1 | embeddedCoverArt: null,
audiobookshelf_1 | metaTags: [Object],
audiobookshelf_1 | mimeType: 'audio/mpeg'
audiobookshelf_1 | },
audiobookshelf_1 | chapters: [],
audiobookshelf_1 | extraData: {},
audiobookshelf_1 | updatedAt: 2023-08-16T08:06:48.572Z,
audiobookshelf_1 | createdAt: 2023-08-16T08:06:48.572Z
audiobookshelf_1 | },
audiobookshelf_1 | _previousDataValues: {
audiobookshelf_1 | id: undefined,
audiobookshelf_1 | index: undefined,
audiobookshelf_1 | season: undefined,
audiobookshelf_1 | episode: undefined,
audiobookshelf_1 | episodeType: undefined,
audiobookshelf_1 | title: undefined,
audiobookshelf_1 | subtitle: undefined,
audiobookshelf_1 | description: undefined,
audiobookshelf_1 | pubDate: undefined,
audiobookshelf_1 | enclosureURL: undefined,
audiobookshelf_1 | enclosureSize: undefined,
audiobookshelf_1 | enclosureType: undefined,
audiobookshelf_1 | publishedAt: undefined,
audiobookshelf_1 | podcastId: undefined,
audiobookshelf_1 | audioFile: undefined,
audiobookshelf_1 | chapters: undefined,
audiobookshelf_1 | extraData: undefined
audiobookshelf_1 | },
audiobookshelf_1 | uniqno: 1,
audiobookshelf_1 | _changed: Set(17) {
audiobookshelf_1 | 'id',
audiobookshelf_1 | 'index',
audiobookshelf_1 | 'season',
audiobookshelf_1 | 'episode',
audiobookshelf_1 | 'episodeType',
audiobookshelf_1 | 'title',
audiobookshelf_1 | 'subtitle',
audiobookshelf_1 | 'description',
audiobookshelf_1 | 'pubDate',
audiobookshelf_1 | 'enclosureURL',
audiobookshelf_1 | 'enclosureSize',
audiobookshelf_1 | 'enclosureType',
audiobookshelf_1 | 'publishedAt',
audiobookshelf_1 | 'podcastId',
audiobookshelf_1 | 'audioFile',
audiobookshelf_1 | 'chapters',
audiobookshelf_1 | 'extraData'
audiobookshelf_1 | },
audiobookshelf_1 | _options: {
audiobookshelf_1 | isNewRecord: true,
audiobookshelf_1 | _schema: null,
audiobookshelf_1 | _schemaDelimiter: '',
audiobookshelf_1 | attributes: undefined,
audiobookshelf_1 | include: undefined,
audiobookshelf_1 | raw: undefined,
audiobookshelf_1 | silent: undefined
audiobookshelf_1 | },
audiobookshelf_1 | isNewRecord: true
audiobookshelf_1 | },
audiobookshelf_1 | validatorKey: 'not_unique',
audiobookshelf_1 | validatorName: null,
audiobookshelf_1 | validatorArgs: []
audiobookshelf_1 | }
audiobookshelf_1 | ],
audiobookshelf_1 | parent: [Error: SQLITE_CONSTRAINT: UNIQUE constraint failed: podcastEpisodes.id] {
audiobookshelf_1 | errno: 19,
audiobookshelf_1 | code: 'SQLITE_CONSTRAINT',
audiobookshelf_1 | sql: 'INSERT INTO `podcastEpisodes` (`id`,`index`,`season`,`episode`,`episodeType`,`title`,`subtitle`,`description`,`pubDate`,`enclosureURL`,`enclosureSize`,`enclosureType`,`publishedAt`,`audioFile`,`chapters`,`extraData`,`createdAt`,`updatedAt`,`podcastId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19);'
audiobookshelf_1 | },
audiobookshelf_1 | original: [Error: SQLITE_CONSTRAINT: UNIQUE constraint failed: podcastEpisodes.id] {
audiobookshelf_1 | errno: 19,
audiobookshelf_1 | code: 'SQLITE_CONSTRAINT',
audiobookshelf_1 | sql: 'INSERT INTO `podcastEpisodes` (`id`,`index`,`season`,`episode`,`episodeType`,`title`,`subtitle`,`description`,`pubDate`,`enclosureURL`,`enclosureSize`,`enclosureType`,`publishedAt`,`audioFile`,`chapters`,`extraData`,`createdAt`,`updatedAt`,`podcastId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19);'
audiobookshelf_1 | },
audiobookshelf_1 | fields: [ 'id' ],
audiobookshelf_1 | sql: 'INSERT INTO `podcastEpisodes` (`id`,`index`,`season`,`episode`,`episodeType`,`title`,`subtitle`,`description`,`pubDate`,`enclosureURL`,`enclosureSize`,`enclosureType`,`publishedAt`,`audioFile`,`chapters`,`extraData`,`createdAt`,`updatedAt`,`podcastId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19);'
audiobookshelf_1 | }
@tonyedwardspz commented on GitHub (Aug 16, 2023):
I've started getting a similar error to the OP in the last couple of days for two difference series. For reference, the logs from the container are below.
```
audiobookshelf_1 | node:internal/process/promises:279
audiobookshelf_1 | triggerUncaughtException(err, true /* fromPromise */);
audiobookshelf_1 | ^
audiobookshelf_1 |
audiobookshelf_1 | Error
audiobookshelf_1 | at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
audiobookshelf_1 | at Database.serialize (<anonymous>)
audiobookshelf_1 | at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
audiobookshelf_1 | at new Promise (<anonymous>)
audiobookshelf_1 | at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)
audiobookshelf_1 | at /node_modules/sequelize/lib/sequelize.js:315:28
audiobookshelf_1 | at async SQLiteQueryInterface.insert (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:308:21)
audiobookshelf_1 | at async PodcastEpisode.save (/node_modules/sequelize/lib/model.js:2490:35)
audiobookshelf_1 | at async Function.create (/node_modules/sequelize/lib/model.js:1362:12)
audiobookshelf_1 | at async Function.fullUpdateFromOld (/server/models/LibraryItem.js:257:15) {
audiobookshelf_1 | name: 'SequelizeUniqueConstraintError',
audiobookshelf_1 | errors: [
audiobookshelf_1 | ValidationErrorItem {
audiobookshelf_1 | message: 'id must be unique',
audiobookshelf_1 | type: 'unique violation',
audiobookshelf_1 | path: 'id',
audiobookshelf_1 | value: 'a49bf00f-a32b-4717-9f03-00e36d7f062d',
audiobookshelf_1 | origin: 'DB',
audiobookshelf_1 | instance: podcastEpisode {
audiobookshelf_1 | dataValues: {
audiobookshelf_1 | id: 'a49bf00f-a32b-4717-9f03-00e36d7f062d',
audiobookshelf_1 | index: 277,
audiobookshelf_1 | season: '1',
audiobookshelf_1 | episode: '115',
audiobookshelf_1 | episodeType: null,
audiobookshelf_1 | title: '115. The Gunpowder Plot',
audiobookshelf_1 | subtitle: '‘Remember, remember / the Fifth of November / Gunpowder, treason & plot.” Tom & Dominic explore what - if it had succeeded - would have been the most spectacular terrorist attack in British history?',
audiobookshelf_1 | description: '<p>‘Remember, remember / the Fifth of November / Gunpowder, treason & plot.” But what is it exactly we are remembering on Bonfire Night? Tom & Dominic explore what - if it had succeeded - would have been the most spectacular terrorist attack in British history: its background, its legacy, & the controversies that still bedevil our understanding of it.</p><p><br /></p><p>*The Rest Is History Live Tour 2023*:</p><p><br /></p><p>Tom and Dominic are back on tour this autumn! See them live in London, New Zealand, and Australia!</p><p><br /></p><p>Buy your tickets here: restishistorypod.com</p><p><br /></p><p>Twitter: </p><p><br /></p><p>@TheRestHistory</p><p><br /></p><p>@holland_tom</p><p><br /></p><p>@dcsandbrook</p><p> </p><p>Learn more about your ad choices. Visit <a href="https://podcastchoices.com/adchoices">podcastchoices.com/adchoices</a></p>',
audiobookshelf_1 | pubDate: 'Thu, 04 Nov 2021 02:00:00 -0000',
audiobookshelf_1 | enclosureURL: null,
audiobookshelf_1 | enclosureSize: null,
audiobookshelf_1 | enclosureType: null,
audiobookshelf_1 | publishedAt: 2021-11-04T02:00:00.000Z,
audiobookshelf_1 | podcastId: '1ee96937-96fa-4189-889b-5e2da4dd1c91',
audiobookshelf_1 | audioFile: {
audiobookshelf_1 | index: 1,
audiobookshelf_1 | ino: '110861',
audiobookshelf_1 | metadata: [Object],
audiobookshelf_1 | addedAt: 1692173199336,
audiobookshelf_1 | updatedAt: 1692173199336,
audiobookshelf_1 | trackNumFromMeta: 115,
audiobookshelf_1 | discNumFromMeta: 1,
audiobookshelf_1 | trackNumFromFilename: null,
audiobookshelf_1 | discNumFromFilename: null,
audiobookshelf_1 | manuallyVerified: false,
audiobookshelf_1 | invalid: false,
audiobookshelf_1 | exclude: false,
audiobookshelf_1 | error: null,
audiobookshelf_1 | format: 'MP2/3 (MPEG audio layer 2/3)',
audiobookshelf_1 | duration: 3437.217959,
audiobookshelf_1 | bitRate: 64000,
audiobookshelf_1 | language: null,
audiobookshelf_1 | codec: 'mp3',
audiobookshelf_1 | timeBase: '1/14112000',
audiobookshelf_1 | channels: 1,
audiobookshelf_1 | channelLayout: 'mono',
audiobookshelf_1 | chapters: [],
audiobookshelf_1 | embeddedCoverArt: null,
audiobookshelf_1 | metaTags: [Object],
audiobookshelf_1 | mimeType: 'audio/mpeg'
audiobookshelf_1 | },
audiobookshelf_1 | chapters: [],
audiobookshelf_1 | extraData: {},
audiobookshelf_1 | updatedAt: 2023-08-16T08:06:48.572Z,
audiobookshelf_1 | createdAt: 2023-08-16T08:06:48.572Z
audiobookshelf_1 | },
audiobookshelf_1 | _previousDataValues: {
audiobookshelf_1 | id: undefined,
audiobookshelf_1 | index: undefined,
audiobookshelf_1 | season: undefined,
audiobookshelf_1 | episode: undefined,
audiobookshelf_1 | episodeType: undefined,
audiobookshelf_1 | title: undefined,
audiobookshelf_1 | subtitle: undefined,
audiobookshelf_1 | description: undefined,
audiobookshelf_1 | pubDate: undefined,
audiobookshelf_1 | enclosureURL: undefined,
audiobookshelf_1 | enclosureSize: undefined,
audiobookshelf_1 | enclosureType: undefined,
audiobookshelf_1 | publishedAt: undefined,
audiobookshelf_1 | podcastId: undefined,
audiobookshelf_1 | audioFile: undefined,
audiobookshelf_1 | chapters: undefined,
audiobookshelf_1 | extraData: undefined
audiobookshelf_1 | },
audiobookshelf_1 | uniqno: 1,
audiobookshelf_1 | _changed: Set(17) {
audiobookshelf_1 | 'id',
audiobookshelf_1 | 'index',
audiobookshelf_1 | 'season',
audiobookshelf_1 | 'episode',
audiobookshelf_1 | 'episodeType',
audiobookshelf_1 | 'title',
audiobookshelf_1 | 'subtitle',
audiobookshelf_1 | 'description',
audiobookshelf_1 | 'pubDate',
audiobookshelf_1 | 'enclosureURL',
audiobookshelf_1 | 'enclosureSize',
audiobookshelf_1 | 'enclosureType',
audiobookshelf_1 | 'publishedAt',
audiobookshelf_1 | 'podcastId',
audiobookshelf_1 | 'audioFile',
audiobookshelf_1 | 'chapters',
audiobookshelf_1 | 'extraData'
audiobookshelf_1 | },
audiobookshelf_1 | _options: {
audiobookshelf_1 | isNewRecord: true,
audiobookshelf_1 | _schema: null,
audiobookshelf_1 | _schemaDelimiter: '',
audiobookshelf_1 | attributes: undefined,
audiobookshelf_1 | include: undefined,
audiobookshelf_1 | raw: undefined,
audiobookshelf_1 | silent: undefined
audiobookshelf_1 | },
audiobookshelf_1 | isNewRecord: true
audiobookshelf_1 | },
audiobookshelf_1 | validatorKey: 'not_unique',
audiobookshelf_1 | validatorName: null,
audiobookshelf_1 | validatorArgs: []
audiobookshelf_1 | }
audiobookshelf_1 | ],
audiobookshelf_1 | parent: [Error: SQLITE_CONSTRAINT: UNIQUE constraint failed: podcastEpisodes.id] {
audiobookshelf_1 | errno: 19,
audiobookshelf_1 | code: 'SQLITE_CONSTRAINT',
audiobookshelf_1 | sql: 'INSERT INTO `podcastEpisodes` (`id`,`index`,`season`,`episode`,`episodeType`,`title`,`subtitle`,`description`,`pubDate`,`enclosureURL`,`enclosureSize`,`enclosureType`,`publishedAt`,`audioFile`,`chapters`,`extraData`,`createdAt`,`updatedAt`,`podcastId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19);'
audiobookshelf_1 | },
audiobookshelf_1 | original: [Error: SQLITE_CONSTRAINT: UNIQUE constraint failed: podcastEpisodes.id] {
audiobookshelf_1 | errno: 19,
audiobookshelf_1 | code: 'SQLITE_CONSTRAINT',
audiobookshelf_1 | sql: 'INSERT INTO `podcastEpisodes` (`id`,`index`,`season`,`episode`,`episodeType`,`title`,`subtitle`,`description`,`pubDate`,`enclosureURL`,`enclosureSize`,`enclosureType`,`publishedAt`,`audioFile`,`chapters`,`extraData`,`createdAt`,`updatedAt`,`podcastId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19);'
audiobookshelf_1 | },
audiobookshelf_1 | fields: [ 'id' ],
audiobookshelf_1 | sql: 'INSERT INTO `podcastEpisodes` (`id`,`index`,`season`,`episode`,`episodeType`,`title`,`subtitle`,`description`,`pubDate`,`enclosureURL`,`enclosureSize`,`enclosureType`,`publishedAt`,`audioFile`,`chapters`,`extraData`,`createdAt`,`updatedAt`,`podcastId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19);'
audiobookshelf_1 | }
```
For podcasts I recommend disabling the folder watcher for now. You can do that by going to the libraries in config, pressing edit, then in the settings tab disable watcher. I'm pretty sure this is the issue so that is a temporary fix.
@slords That is separate. I'm pretty sure I've fixed that already for the next release.
@advplyr commented on GitHub (Aug 24, 2023):
For podcasts I recommend disabling the folder watcher for now. You can do that by going to the libraries in config, pressing edit, then in the settings tab disable watcher. I'm pretty sure this is the issue so that is a temporary fix.
@slords That is separate. I'm pretty sure I've fixed that already for the next release.
That appeared to be the issue. It has been running all night, and has downloaded 4000 podcasts without a snag.
Is that a bug or just a issue with the watcher? @advplyr
@BarbellDwarf commented on GitHub (Aug 24, 2023):
That appeared to be the issue. It has been running all night, and has downloaded 4000 podcasts without a snag.
Is that a bug or just a issue with the watcher? @advplyr
@advplyr Roger that. I will leave it off for now then. Appreciate the help! I feel better already knowing I can horde all the podcasts that I will most likely never listen to.
@BarbellDwarf commented on GitHub (Aug 24, 2023):
@advplyr Roger that. I will leave it off for now then. Appreciate the help! I feel better already knowing I can horde all the podcasts that I will most likely never listen to.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @BarbellDwarf on GitHub (Jul 31, 2023).
Steps to reproduce
Expected behaviour
Actual behaviour
Environment data
Audiobookshelf Version:
Notes
How is it handling download data? Is it storing it to a database table or is it adding it somewhere in memory? If it simply added it to a database table and then slowly worked down the table, that may prevent the issue from occurring.
@BarbellDwarf commented on GitHub (Jul 31, 2023):
Here is the log file:
`2023-07-31 12:18:16
DEBUG
Library Item "/mnt/Media/Podcasts/Jocko Podcast" Media file scan took 15377ms with 398 audio files averaging 626ms per MB
2023-07-31 12:18:17
DEBUG
[FfmpegHelpers] downloadPodcastEpisode: Complete
2023-07-31 12:19:23
DEBUG
[DailyLog] 2023-07-31: Loaded 2394 Logs
2023-07-31 12:19:22
INFO
=== Starting Server ===
2023-07-31 12:19:22
INFO
[Server] Init v2.3.3
2023-07-31 12:19:22
INFO
[Database] Initializing db at "/mnt/Storage/Dockers/audiobookshelf/config/absdatabase.sqlite"
2023-07-31 12:19:22
INFO
[Database] Db connection was successful
2023-07-31 12:19:22
INFO
[Database] Db initialized with models: user, library, libraryFolder, book, podcast, podcastEpisode, libraryItem, mediaProgress, series, bookSeries, author, bookAuthor, collection, collectionBook, playlist, playlistMediaItem, device, playbackSession, feed, feedEpisode, setting`
@advplyr commented on GitHub (Jul 31, 2023):
Downloads are queued and handled 1 by 1. All of this is stored in memory so the queue will be gone on server restart. I believe there is a feature request open to persist the queue on server restart but ideally we fix the crash.
That log isn't going to show anything useful unfortunately. You'll have to capture the log of the container or the
journalctlof the debian package.@BarbellDwarf commented on GitHub (Aug 1, 2023):
Here we go, this is the journalctl output during a crash.
Also ignore the storage, that is just where i had the docker storage for it initially and then i moved it over to a directly installed application and it uses the same storage.
@tonyedwardspz commented on GitHub (Aug 16, 2023):
I've started getting a similar error to the OP in the last couple of days for two difference series. For reference, the logs from the container are below.
@slords commented on GitHub (Aug 16, 2023):
I'm getting a similar issue but with audiobooks not podcasts.
@advplyr commented on GitHub (Aug 24, 2023):
For podcasts I recommend disabling the folder watcher for now. You can do that by going to the libraries in config, pressing edit, then in the settings tab disable watcher. I'm pretty sure this is the issue so that is a temporary fix.
@slords That is separate. I'm pretty sure I've fixed that already for the next release.
@BarbellDwarf commented on GitHub (Aug 24, 2023):
I disabled it. So I will see what happens. Just set a bunch to download. Thank you for the help!
@BarbellDwarf commented on GitHub (Aug 24, 2023):
That appeared to be the issue. It has been running all night, and has downloaded 4000 podcasts without a snag.
Is that a bug or just a issue with the watcher? @advplyr
@advplyr commented on GitHub (Aug 24, 2023):
@SpirusNox Thanks for following up. That's a bug
@BarbellDwarf commented on GitHub (Aug 24, 2023):
@advplyr Roger that. I will leave it off for now then. Appreciate the help! I feel better already knowing I can horde all the podcasts that I will most likely never listen to.