[Bug]: SQLITE_BUSY: database is locked #1243

Closed
opened 2026-04-24 23:36:44 +02:00 by adam · 12 comments
Owner

Originally created by @skyzuma on GitHub (Jul 16, 2023).

Describe the issue

abs crached by playing ab book and a starting backup process (i think) ...

[2023-07-16 06:00:12] DEBUG: [PlaybackSessionManager] syncSession "efe5fb3d-a961-42ba-91a4-2ec33358c071" (Device: SM-T725 SDK 30 / v0.9.65-beta) | Total Time Listened: 3766 (PlaybackSessionManager.js:240)
node:internal/process/promises:279
triggerUncaughtException(err, true /* fromPromise */);
^

Error
at Database. (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
at Database.serialize ()
at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
at new Promise ()
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.upsert (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:341:12)
at async Function.upsert (/node_modules/sequelize/lib/model.js:1533:20)
at async PlaybackSessionManager.syncSession (/server/managers/PlaybackSessionManager.js:250:25)
at async PlaybackSessionManager.syncSessionRequest (/server/managers/PlaybackSessionManager.js:69:9) {
name: 'SequelizeTimeoutError',
parent: [Error: SQLITE_BUSY: database is locked] {
errno: 5,
code: 'SQLITE_BUSY',
sql: 'INSERT INTO mediaProgresses (id,mediaItemId,mediaItemType,duration,currentTime,isFinished,hideFromContinueListening,ebookLocation,ebookProgress,finishedAt,extraData,createdAt,updatedAt,userId) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id,userId=EXCLUDED.userId,mediaItemId=EXCLUDED.mediaItemId,mediaItemType=EXCLUDED.mediaItemType,duration=EXCLUDED.duration,currentTime=EXCLUDED.currentTime,ebookLocation=EXCLUDED.ebookLocation,ebookProgress=EXCLUDED.ebookProgress,isFinished=EXCLUDED.isFinished,hideFromContinueListening=EXCLUDED.hideFromContinueListening,finishedAt=EXCLUDED.finishedAt,createdAt=EXCLUDED.createdAt,updatedAt=EXCLUDED.updatedAt,extraData=EXCLUDED.extraData;'
},
original: [Error: SQLITE_BUSY: database is locked] {
errno: 5,
code: 'SQLITE_BUSY',
sql: 'INSERT INTO mediaProgresses (id,mediaItemId,mediaItemType,duration,currentTime,isFinished,hideFromContinueListening,ebookLocation,ebookProgress,finishedAt,extraData,createdAt,updatedAt,userId) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id,userId=EXCLUDED.userId,mediaItemId=EXCLUDED.mediaItemId,mediaItemType=EXCLUDED.mediaItemType,duration=EXCLUDED.duration,currentTime=EXCLUDED.currentTime,ebookLocation=EXCLUDED.ebookLocation,ebookProgress=EXCLUDED.ebookProgress,isFinished=EXCLUDED.isFinished,hideFromContinueListening=EXCLUDED.hideFromContinueListening,finishedAt=EXCLUDED.finishedAt,createdAt=EXCLUDED.createdAt,updatedAt=EXCLUDED.updatedAt,extraData=EXCLUDED.extraData;'
},
sql: 'INSERT INTO mediaProgresses (id,mediaItemId,mediaItemType,duration,currentTime,isFinished,hideFromContinueListening,ebookLocation,ebookProgress,finishedAt,extraData,createdAt,updatedAt,userId) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id,userId=EXCLUDED.userId,mediaItemId=EXCLUDED.mediaItemId,mediaItemType=EXCLUDED.mediaItemType,duration=EXCLUDED.duration,currentTime=EXCLUDED.currentTime,ebookLocation=EXCLUDED.ebookLocation,ebookProgress=EXCLUDED.ebookProgress,isFinished=EXCLUDED.isFinished,hideFromContinueListening=EXCLUDED.hideFromContinueListening,finishedAt=EXCLUDED.finishedAt,createdAt=EXCLUDED.createdAt,updatedAt=EXCLUDED.updatedAt,extraData=EXCLUDED.extraData;',
parameters: {}
}

Steps to reproduce the issue

  1. played a book and start an automated backup process on abs > abs crashed ... but not sure about it ...

Audiobookshelf version

2.3.0

How are you running audiobookshelf?

Docker

Originally created by @skyzuma on GitHub (Jul 16, 2023). ### Describe the issue abs crached by playing ab book and a starting backup process (i think) ... > [2023-07-16 06:00:12] DEBUG: [PlaybackSessionManager] syncSession "efe5fb3d-a961-42ba-91a4-2ec33358c071" (Device: SM-T725 SDK 30 / v0.9.65-beta) | Total Time Listened: 3766 (PlaybackSessionManager.js:240) node:internal/process/promises:279 triggerUncaughtException(err, true /* fromPromise */); ^ > Error at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27) at Database.serialize (<anonymous>) 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.upsert (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:341:12) at async Function.upsert (/node_modules/sequelize/lib/model.js:1533:20) at async PlaybackSessionManager.syncSession (/server/managers/PlaybackSessionManager.js:250:25) at async PlaybackSessionManager.syncSessionRequest (/server/managers/PlaybackSessionManager.js:69:9) { name: 'SequelizeTimeoutError', parent: [Error: SQLITE_BUSY: database is locked] { errno: 5, code: 'SQLITE_BUSY', sql: 'INSERT INTO `mediaProgresses` (`id`,`mediaItemId`,`mediaItemType`,`duration`,`currentTime`,`isFinished`,`hideFromContinueListening`,`ebookLocation`,`ebookProgress`,`finishedAt`,`extraData`,`createdAt`,`updatedAt`,`userId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (`id`) DO UPDATE SET `id`=EXCLUDED.`id`,`userId`=EXCLUDED.`userId`,`mediaItemId`=EXCLUDED.`mediaItemId`,`mediaItemType`=EXCLUDED.`mediaItemType`,`duration`=EXCLUDED.`duration`,`currentTime`=EXCLUDED.`currentTime`,`ebookLocation`=EXCLUDED.`ebookLocation`,`ebookProgress`=EXCLUDED.`ebookProgress`,`isFinished`=EXCLUDED.`isFinished`,`hideFromContinueListening`=EXCLUDED.`hideFromContinueListening`,`finishedAt`=EXCLUDED.`finishedAt`,`createdAt`=EXCLUDED.`createdAt`,`updatedAt`=EXCLUDED.`updatedAt`,`extraData`=EXCLUDED.`extraData`;' }, original: [Error: SQLITE_BUSY: database is locked] { errno: 5, code: 'SQLITE_BUSY', sql: 'INSERT INTO `mediaProgresses` (`id`,`mediaItemId`,`mediaItemType`,`duration`,`currentTime`,`isFinished`,`hideFromContinueListening`,`ebookLocation`,`ebookProgress`,`finishedAt`,`extraData`,`createdAt`,`updatedAt`,`userId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (`id`) DO UPDATE SET `id`=EXCLUDED.`id`,`userId`=EXCLUDED.`userId`,`mediaItemId`=EXCLUDED.`mediaItemId`,`mediaItemType`=EXCLUDED.`mediaItemType`,`duration`=EXCLUDED.`duration`,`currentTime`=EXCLUDED.`currentTime`,`ebookLocation`=EXCLUDED.`ebookLocation`,`ebookProgress`=EXCLUDED.`ebookProgress`,`isFinished`=EXCLUDED.`isFinished`,`hideFromContinueListening`=EXCLUDED.`hideFromContinueListening`,`finishedAt`=EXCLUDED.`finishedAt`,`createdAt`=EXCLUDED.`createdAt`,`updatedAt`=EXCLUDED.`updatedAt`,`extraData`=EXCLUDED.`extraData`;' }, sql: 'INSERT INTO `mediaProgresses` (`id`,`mediaItemId`,`mediaItemType`,`duration`,`currentTime`,`isFinished`,`hideFromContinueListening`,`ebookLocation`,`ebookProgress`,`finishedAt`,`extraData`,`createdAt`,`updatedAt`,`userId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (`id`) DO UPDATE SET `id`=EXCLUDED.`id`,`userId`=EXCLUDED.`userId`,`mediaItemId`=EXCLUDED.`mediaItemId`,`mediaItemType`=EXCLUDED.`mediaItemType`,`duration`=EXCLUDED.`duration`,`currentTime`=EXCLUDED.`currentTime`,`ebookLocation`=EXCLUDED.`ebookLocation`,`ebookProgress`=EXCLUDED.`ebookProgress`,`isFinished`=EXCLUDED.`isFinished`,`hideFromContinueListening`=EXCLUDED.`hideFromContinueListening`,`finishedAt`=EXCLUDED.`finishedAt`,`createdAt`=EXCLUDED.`createdAt`,`updatedAt`=EXCLUDED.`updatedAt`,`extraData`=EXCLUDED.`extraData`;', parameters: {} } ### Steps to reproduce the issue 1. played a book and start an automated backup process on abs > abs crashed ... but not sure about it ... ### Audiobookshelf version 2.3.0 ### How are you running audiobookshelf? Docker
adam added the bug label 2026-04-24 23:36:44 +02:00
adam closed this issue 2026-04-24 23:36:45 +02:00
Author
Owner

@skyzuma commented on GitHub (Aug 20, 2023):

little update (ofyi):

[2023-08-19 05:59:05] DEBUG: [Server] clientEmitter - no clients found for user 6526fe20-f7d3-4031-85cf-9dcfc4ae0dbe (SocketAuthority.js:51)
[2023-08-19 05:59:20] DEBUG: [PlaybackSessionManager] syncSession "06764d38-d0a1-42a4-974d-4030316240a8" (Device: SM-F731B SDK 33 / v0.9.65-beta) | Total Time Listened: 1875 (PlaybackSessionManager.js:276)
[2023-08-19 05:59:20] DEBUG: [Server] clientEmitter - no clients found for user 6526fe20-f7d3-4031-85cf-9dcfc4ae0dbe (SocketAuthority.js:51)
[2023-08-19 05:59:35] DEBUG: [PlaybackSessionManager] syncSession "06764d38-d0a1-42a4-974d-4030316240a8" (Device: SM-F731B SDK 33 / v0.9.65-beta) | Total Time Listened: 1889 (PlaybackSessionManager.js:276)
[2023-08-19 05:59:35] DEBUG: [Server] clientEmitter - no clients found for user 6526fe20-f7d3-4031-85cf-9dcfc4ae0dbe (SocketAuthority.js:51)
[2023-08-19 05:59:50] DEBUG: [PlaybackSessionManager] syncSession "06764d38-d0a1-42a4-974d-4030316240a8" (Device: SM-F731B SDK 33 / v0.9.65-beta) | Total Time Listened: 1903 (PlaybackSessionManager.js:276)
[2023-08-19 05:59:50] DEBUG: [Server] clientEmitter - no clients found for user 6526fe20-f7d3-4031-85cf-9dcfc4ae0dbe (SocketAuthority.js:51)

listened a streamSession and 0600 the backup starts > abs is crashing 5 seconds later while sync failed > databse locked ...

[2023-08-19 06:00:00] INFO: [BackupManager] Running Backup

[2023-08-19 06:00:05] DEBUG: [PlaybackSessionManager] syncSession "06764d38-d0a1-42a4-974d-4030316240a8" (Device: SM-F731B SDK 33 / v0.9.65-beta) | Total Time Listened: 1917 (PlaybackSessionManager.js:276)
node:internal/process/promises:279
triggerUncaughtException(err, true /* fromPromise */);
^

Error
at Database. (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
at Database.serialize ()
at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
at new Promise ()
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.upsert (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:341:12)
at async Function.upsert (/node_modules/sequelize/lib/model.js:1533:20)
at async PlaybackSessionManager.syncSession (/server/managers/PlaybackSessionManager.js:286:25)
at async PlaybackSessionManager.syncSessionRequest (/server/managers/PlaybackSessionManager.js:71:9) {
name: 'SequelizeTimeoutError',
parent: [Error: SQLITE_BUSY: database is locked] {
errno: 5,
code: 'SQLITE_BUSY',
sql: 'INSERT INTO mediaProgresses (id,mediaItemId,mediaItemType,duration,currentTime,isFinished,hideFromContinueListening,ebookLocation,ebookProgress,finishedAt,extraData,createdAt,updatedAt,userId) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id,userId=EXCLUDED.userId,mediaItemId=EXCLUDED.mediaItemId,mediaItemType=EXCLUDED.mediaItemType,duration=EXCLUDED.duration,currentTime=EXCLUDED.currentTime,ebookLocation=EXCLUDED.ebookLocation,ebookProgress=EXCLUDED.ebookProgress,isFinished=EXCLUDED.isFinished,hideFromContinueListening=EXCLUDED.hideFromContinueListening,finishedAt=EXCLUDED.finishedAt,createdAt=EXCLUDED.createdAt,updatedAt=EXCLUDED.updatedAt,extraData=EXCLUDED.extraData;'
},
original: [Error: SQLITE_BUSY: database is locked] {
errno: 5,
code: 'SQLITE_BUSY',
sql: 'INSERT INTO mediaProgresses (id,mediaItemId,mediaItemType,duration,currentTime,isFinished,hideFromContinueListening,ebookLocation,ebookProgress,finishedAt,extraData,createdAt,updatedAt,userId) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id,userId=EXCLUDED.userId,mediaItemId=EXCLUDED.mediaItemId,mediaItemType=EXCLUDED.mediaItemType,duration=EXCLUDED.duration,currentTime=EXCLUDED.currentTime,ebookLocation=EXCLUDED.ebookLocation,ebookProgress=EXCLUDED.ebookProgress,isFinished=EXCLUDED.isFinished,hideFromContinueListening=EXCLUDED.hideFromContinueListening,finishedAt=EXCLUDED.finishedAt,createdAt=EXCLUDED.createdAt,updatedAt=EXCLUDED.updatedAt,extraData=EXCLUDED.extraData;'
},
sql: 'INSERT INTO mediaProgresses (id,mediaItemId,mediaItemType,duration,currentTime,isFinished,hideFromContinueListening,ebookLocation,ebookProgress,finishedAt,extraData,createdAt,updatedAt,userId) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id,userId=EXCLUDED.userId,mediaItemId=EXCLUDED.mediaItemId,mediaItemType=EXCLUDED.mediaItemType,duration=EXCLUDED.duration,currentTime=EXCLUDED.currentTime,ebookLocation=EXCLUDED.ebookLocation,ebookProgress=EXCLUDED.ebookProgress,isFinished=EXCLUDED.isFinished,hideFromContinueListening=EXCLUDED.hideFromContinueListening,finishedAt=EXCLUDED.finishedAt,createdAt=EXCLUDED.createdAt,updatedAt=EXCLUDED.updatedAt,extraData=EXCLUDED.extraData;',
parameters: {}
}

... manual server restart

Config /config /metadata
[2023-08-19 06:05:03] INFO: === Starting Server ===
[2023-08-19 06:05:03] INFO: [Server] Init v2.3.3
[2023-08-19 06:05:03] INFO: [Database] Initializing db at "/config/absdatabase.sqlite"
[2023-08-19 06:05:03] INFO: [Database] Db connection was successful
[2023-08-19 06:05:03] 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
[2023-08-19 06:05:03] DEBUG: Set Log Level to DEBUG (Logger.js:87)
[2023-08-19 06:05:03] INFO: [Database] Loading db data...

@skyzuma commented on GitHub (Aug 20, 2023): little update (ofyi): > [2023-08-19 05:59:05] DEBUG: [Server] clientEmitter - no clients found for user 6526fe20-f7d3-4031-85cf-9dcfc4ae0dbe (SocketAuthority.js:51) [2023-08-19 05:59:20] DEBUG: [PlaybackSessionManager] syncSession "06764d38-d0a1-42a4-974d-4030316240a8" (Device: SM-F731B SDK 33 / v0.9.65-beta) | Total Time Listened: 1875 (PlaybackSessionManager.js:276) [2023-08-19 05:59:20] DEBUG: [Server] clientEmitter - no clients found for user 6526fe20-f7d3-4031-85cf-9dcfc4ae0dbe (SocketAuthority.js:51) [2023-08-19 05:59:35] DEBUG: [PlaybackSessionManager] syncSession "06764d38-d0a1-42a4-974d-4030316240a8" (Device: SM-F731B SDK 33 / v0.9.65-beta) | Total Time Listened: 1889 (PlaybackSessionManager.js:276) [2023-08-19 05:59:35] DEBUG: [Server] clientEmitter - no clients found for user 6526fe20-f7d3-4031-85cf-9dcfc4ae0dbe (SocketAuthority.js:51) [2023-08-19 05:59:50] DEBUG: [PlaybackSessionManager] syncSession "06764d38-d0a1-42a4-974d-4030316240a8" (Device: SM-F731B SDK 33 / v0.9.65-beta) | Total Time Listened: 1903 (PlaybackSessionManager.js:276) [2023-08-19 05:59:50] DEBUG: [Server] clientEmitter - no clients found for user 6526fe20-f7d3-4031-85cf-9dcfc4ae0dbe (SocketAuthority.js:51) listened a streamSession and 0600 the backup starts > abs is crashing 5 seconds later while sync failed > databse locked ... >> [2023-08-19 06:00:00] INFO: [BackupManager] Running Backup > [2023-08-19 06:00:05] DEBUG: [PlaybackSessionManager] syncSession "06764d38-d0a1-42a4-974d-4030316240a8" (Device: SM-F731B SDK 33 / v0.9.65-beta) | Total Time Listened: 1917 (PlaybackSessionManager.js:276) node:internal/process/promises:279 triggerUncaughtException(err, true /* fromPromise */); ^ > > Error at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27) at Database.serialize (<anonymous>) 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.upsert (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:341:12) at async Function.upsert (/node_modules/sequelize/lib/model.js:1533:20) at async PlaybackSessionManager.syncSession (/server/managers/PlaybackSessionManager.js:286:25) at async PlaybackSessionManager.syncSessionRequest (/server/managers/PlaybackSessionManager.js:71:9) { name: 'SequelizeTimeoutError', parent: [Error: SQLITE_BUSY: database is locked] { errno: 5, code: 'SQLITE_BUSY', sql: 'INSERT INTO `mediaProgresses` (`id`,`mediaItemId`,`mediaItemType`,`duration`,`currentTime`,`isFinished`,`hideFromContinueListening`,`ebookLocation`,`ebookProgress`,`finishedAt`,`extraData`,`createdAt`,`updatedAt`,`userId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (`id`) DO UPDATE SET `id`=EXCLUDED.`id`,`userId`=EXCLUDED.`userId`,`mediaItemId`=EXCLUDED.`mediaItemId`,`mediaItemType`=EXCLUDED.`mediaItemType`,`duration`=EXCLUDED.`duration`,`currentTime`=EXCLUDED.`currentTime`,`ebookLocation`=EXCLUDED.`ebookLocation`,`ebookProgress`=EXCLUDED.`ebookProgress`,`isFinished`=EXCLUDED.`isFinished`,`hideFromContinueListening`=EXCLUDED.`hideFromContinueListening`,`finishedAt`=EXCLUDED.`finishedAt`,`createdAt`=EXCLUDED.`createdAt`,`updatedAt`=EXCLUDED.`updatedAt`,`extraData`=EXCLUDED.`extraData`;' }, original: [Error: SQLITE_BUSY: database is locked] { errno: 5, code: 'SQLITE_BUSY', sql: 'INSERT INTO `mediaProgresses` (`id`,`mediaItemId`,`mediaItemType`,`duration`,`currentTime`,`isFinished`,`hideFromContinueListening`,`ebookLocation`,`ebookProgress`,`finishedAt`,`extraData`,`createdAt`,`updatedAt`,`userId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (`id`) DO UPDATE SET `id`=EXCLUDED.`id`,`userId`=EXCLUDED.`userId`,`mediaItemId`=EXCLUDED.`mediaItemId`,`mediaItemType`=EXCLUDED.`mediaItemType`,`duration`=EXCLUDED.`duration`,`currentTime`=EXCLUDED.`currentTime`,`ebookLocation`=EXCLUDED.`ebookLocation`,`ebookProgress`=EXCLUDED.`ebookProgress`,`isFinished`=EXCLUDED.`isFinished`,`hideFromContinueListening`=EXCLUDED.`hideFromContinueListening`,`finishedAt`=EXCLUDED.`finishedAt`,`createdAt`=EXCLUDED.`createdAt`,`updatedAt`=EXCLUDED.`updatedAt`,`extraData`=EXCLUDED.`extraData`;' }, sql: 'INSERT INTO `mediaProgresses` (`id`,`mediaItemId`,`mediaItemType`,`duration`,`currentTime`,`isFinished`,`hideFromContinueListening`,`ebookLocation`,`ebookProgress`,`finishedAt`,`extraData`,`createdAt`,`updatedAt`,`userId`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14) ON CONFLICT (`id`) DO UPDATE SET `id`=EXCLUDED.`id`,`userId`=EXCLUDED.`userId`,`mediaItemId`=EXCLUDED.`mediaItemId`,`mediaItemType`=EXCLUDED.`mediaItemType`,`duration`=EXCLUDED.`duration`,`currentTime`=EXCLUDED.`currentTime`,`ebookLocation`=EXCLUDED.`ebookLocation`,`ebookProgress`=EXCLUDED.`ebookProgress`,`isFinished`=EXCLUDED.`isFinished`,`hideFromContinueListening`=EXCLUDED.`hideFromContinueListening`,`finishedAt`=EXCLUDED.`finishedAt`,`createdAt`=EXCLUDED.`createdAt`,`updatedAt`=EXCLUDED.`updatedAt`,`extraData`=EXCLUDED.`extraData`;', parameters: {} } ... manual server restart > Config /config /metadata [2023-08-19 06:05:03] INFO: === Starting Server === [2023-08-19 06:05:03] INFO: [Server] Init v2.3.3 [2023-08-19 06:05:03] INFO: [Database] Initializing db at "/config/absdatabase.sqlite" [2023-08-19 06:05:03] INFO: [Database] Db connection was successful [2023-08-19 06:05:03] 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 [2023-08-19 06:05:03] DEBUG: Set Log Level to DEBUG (Logger.js:87) [2023-08-19 06:05:03] INFO: [Database] Loading db data...
Author
Owner

@advplyr commented on GitHub (Sep 10, 2023):

Fixed in v2.4.0

@advplyr commented on GitHub (Sep 10, 2023): Fixed in [v2.4.0](https://github.com/advplyr/audiobookshelf/releases/tag/v2.4.0)
Author
Owner

@skyzuma commented on GitHub (Oct 3, 2023):

happend again :(

@skyzuma commented on GitHub (Oct 3, 2023): happend again :(
Author
Owner

@tdp4 commented on GitHub (Oct 12, 2023):

I am having this issue with 2.4.4 when deploying the docker container:

[2023-10-12 14:39:12] INFO: === Starting Server ===
[2023-10-12 14:39:12] INFO: [Server] Init v2.4.4
[2023-10-12 14:39:12] INFO: [Database] Initializing db at "/config/absdatabase.sqlite"
[2023-10-12 14:39:12] INFO: [Database] Db connection was successful
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.createTable (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:98:12)
    at async Function.sync (/node_modules/sequelize/lib/model.js:942:7)
    at async Sequelize.sync (/node_modules/sequelize/lib/sequelize.js:377:9)
    at async Database.init (/server/Database.js:156:5)
    at async Server.init (/server/Server.js:103:5) {
  name: 'SequelizeTimeoutError',
  parent: [Error: SQLITE_BUSY: database is locked] {
    errno: 5,
    code: 'SQLITE_BUSY',
    sql: 'CREATE TABLE IF NOT EXISTS `users` (`id` UUID PRIMARY KEY, `username` VARCHAR(255), `email` VARCHAR(255), `pash` VARCHAR(255), `type` VARCHAR(255), `token` VARCHAR(255), `isActive` TINYINT(1) DEFAULT 0, `isLocked` TINYINT(1) DEFAULT 0, `lastSeen` DATETIME, `permissions` JSON, `bookmarks` JSON, `extraData` JSON, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);'
  },
  original: [Error: SQLITE_BUSY: database is locked] {
    errno: 5,
    code: 'SQLITE_BUSY',
    sql: 'CREATE TABLE IF NOT EXISTS `users` (`id` UUID PRIMARY KEY, `username` VARCHAR(255), `email` VARCHAR(255), `pash` VARCHAR(255), `type` VARCHAR(255), `token` VARCHAR(255), `isActive` TINYINT(1) DEFAULT 0, `isLocked` TINYINT(1) DEFAULT 0, `lastSeen` DATETIME, `permissions` JSON, `bookmarks` JSON, `extraData` JSON, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);'
  },
  sql: 'CREATE TABLE IF NOT EXISTS `users` (`id` UUID PRIMARY KEY, `username` VARCHAR(255), `email` VARCHAR(255), `pash` VARCHAR(255), `type` VARCHAR(255), `token` VARCHAR(255), `isActive` TINYINT(1) DEFAULT 0, `isLocked` TINYINT(1) DEFAULT 0, `lastSeen` DATETIME, `permissions` JSON, `bookmarks` JSON, `extraData` JSON, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);',
  parameters: {}
}

I can verify the something can write to the database as the journal file briefly shows up:

root@docker01:/mnt/docker/audiobookshelf# ls -la
total 0
drwxrwx--- 2 root docker   0 Oct 12 14:34 .
drwxrwx--- 2 root docker   0 Oct 12 14:12 ..
-rwxrwx--- 1 root docker   0 Oct 12 14:30 absdatabase.sqlite
-rwxrwx--- 1 root docker 512 Oct 12 14:34 absdatabase.sqlite-journal
drwxrwx--- 2 root docker   0 Oct 12 14:22 metadata
@tdp4 commented on GitHub (Oct 12, 2023): I am having this issue with 2.4.4 when deploying the docker container: ``` [2023-10-12 14:39:12] INFO: === Starting Server === [2023-10-12 14:39:12] INFO: [Server] Init v2.4.4 [2023-10-12 14:39:12] INFO: [Database] Initializing db at "/config/absdatabase.sqlite" [2023-10-12 14:39:12] INFO: [Database] Db connection was successful 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.createTable (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:98:12) at async Function.sync (/node_modules/sequelize/lib/model.js:942:7) at async Sequelize.sync (/node_modules/sequelize/lib/sequelize.js:377:9) at async Database.init (/server/Database.js:156:5) at async Server.init (/server/Server.js:103:5) { name: 'SequelizeTimeoutError', parent: [Error: SQLITE_BUSY: database is locked] { errno: 5, code: 'SQLITE_BUSY', sql: 'CREATE TABLE IF NOT EXISTS `users` (`id` UUID PRIMARY KEY, `username` VARCHAR(255), `email` VARCHAR(255), `pash` VARCHAR(255), `type` VARCHAR(255), `token` VARCHAR(255), `isActive` TINYINT(1) DEFAULT 0, `isLocked` TINYINT(1) DEFAULT 0, `lastSeen` DATETIME, `permissions` JSON, `bookmarks` JSON, `extraData` JSON, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);' }, original: [Error: SQLITE_BUSY: database is locked] { errno: 5, code: 'SQLITE_BUSY', sql: 'CREATE TABLE IF NOT EXISTS `users` (`id` UUID PRIMARY KEY, `username` VARCHAR(255), `email` VARCHAR(255), `pash` VARCHAR(255), `type` VARCHAR(255), `token` VARCHAR(255), `isActive` TINYINT(1) DEFAULT 0, `isLocked` TINYINT(1) DEFAULT 0, `lastSeen` DATETIME, `permissions` JSON, `bookmarks` JSON, `extraData` JSON, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);' }, sql: 'CREATE TABLE IF NOT EXISTS `users` (`id` UUID PRIMARY KEY, `username` VARCHAR(255), `email` VARCHAR(255), `pash` VARCHAR(255), `type` VARCHAR(255), `token` VARCHAR(255), `isActive` TINYINT(1) DEFAULT 0, `isLocked` TINYINT(1) DEFAULT 0, `lastSeen` DATETIME, `permissions` JSON, `bookmarks` JSON, `extraData` JSON, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);', parameters: {} } ``` I can verify the something can write to the database as the journal file briefly shows up: ``` root@docker01:/mnt/docker/audiobookshelf# ls -la total 0 drwxrwx--- 2 root docker 0 Oct 12 14:34 . drwxrwx--- 2 root docker 0 Oct 12 14:12 .. -rwxrwx--- 1 root docker 0 Oct 12 14:30 absdatabase.sqlite -rwxrwx--- 1 root docker 512 Oct 12 14:34 absdatabase.sqlite-journal drwxrwx--- 2 root docker 0 Oct 12 14:22 metadata ```
Author
Owner

@advplyr commented on GitHub (Oct 12, 2023):

I don't know your setup but Sqlite should not be used on network file systems.

@advplyr commented on GitHub (Oct 12, 2023): I don't know your setup but Sqlite should not be used on network file systems.
Author
Owner

@tdp4 commented on GitHub (Oct 12, 2023):

Thank you @advplyr, that was the issue. Things are starting now.

@tdp4 commented on GitHub (Oct 12, 2023): Thank you @advplyr, that was the issue. Things are starting now.
Author
Owner

@eric10k93 commented on GitHub (May 9, 2024):

I don't know your setup but Sqlite should not be used on network file systems.

To clarify, you're saying the ABS config files and database should not be run on a NAS drive? I recently set up a TrueNAS server and was hoping to migrate my ABS Docker instance to this server for better resiliency, but I'm getting the error mentioned here.

@eric10k93 commented on GitHub (May 9, 2024): > I don't know your setup but Sqlite should not be used on network file systems. To clarify, you're saying the ABS config files and database should not be run on a NAS drive? I recently set up a TrueNAS server and was hoping to migrate my ABS Docker instance to this server for better resiliency, but I'm getting the error mentioned here.
Author
Owner

@nichwall commented on GitHub (May 9, 2024):

The config can be on the NAS if ABS is also running on the same NAS. You should not access the SQLite database over the network.

@nichwall commented on GitHub (May 9, 2024): The config can be on the NAS *if* ABS is also running on the same NAS. You should not access the SQLite database over the network.
Author
Owner

@eric10k93 commented on GitHub (May 9, 2024):

Awesome, thanks for the clarification! I ended up moving the configs back to the local drive. I might have to try installing ABS on the NAS machine later. For now, I at least have the media files on the NAS.

@eric10k93 commented on GitHub (May 9, 2024): Awesome, thanks for the clarification! I ended up moving the configs back to the local drive. I might have to try installing ABS on the NAS machine later. For now, I at least have the media files on the NAS.
Author
Owner

@wat100 commented on GitHub (May 26, 2024):

I don't know your setup but Sqlite should not be used on network file systems.

I'm getting the same busy error in my portainer log. I currently am running a debian virtual machine in proxmox and am trying to get ABS running. All of the stacks that I run on portainer I have the file paths directed to my SMB share on a truenas scale virtual machine. Does this meant that ABS simply won't run on this set up?

@wat100 commented on GitHub (May 26, 2024): > I don't know your setup but Sqlite should not be used on network file systems. I'm getting the same busy error in my portainer log. I currently am running a debian virtual machine in proxmox and am trying to get ABS running. All of the stacks that I run on portainer I have the file paths directed to my SMB share on a truenas scale virtual machine. Does this meant that ABS simply won't run on this set up?
Author
Owner

@nichwall commented on GitHub (May 26, 2024):

Yes, your /config mount needs to be on the same machine. Everything else can be on the SMB share.

@nichwall commented on GitHub (May 26, 2024): Yes, your `/config` mount needs to be on the same machine. Everything else can be on the SMB share.
Author
Owner

@skyzuma commented on GitHub (Jun 4, 2025):

after few tests this is the main problem and #4372 is the result after the crash ...

so, the problem is: if anyone listening to an book (streaming) and the client will send the sync to the db in the same time > abs is crashing with the title msg ... but is the backup process fast enough then the backup is successfully (i´ll also edit #4372)

@skyzuma commented on GitHub (Jun 4, 2025): after few tests this is the main problem and [#4372](https://github.com/advplyr/audiobookshelf/issues/4372) is the result after the crash ... so, the problem is: if anyone listening to an book (streaming) and the client will send the sync to the db in the same time > abs is crashing with the title msg ... but is the backup process fast enough then the backup is successfully (i´ll also edit #4372)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#1243