[Bug]: Server Crash when scrolling library. Socket Disconnect & Socket Failed To Connect #2718

Open
opened 2026-02-20 02:59:43 -05:00 by deekerman · 9 comments
Owner

Originally created by @Justicova on GitHub (Feb 3, 2025).

What happened?

While scrolling the library, the server crashes. It throws a socket disconnection error, and then a socket failed to connect.

What did you expect to happen?

To be able to browse the library and see all the books stored in it, 410ish.

Steps to reproduce the issue

  1. Start server
  2. Open Library
  3. Scroll down

Audiobookshelf version

2.19

How are you running audiobookshelf?

Other (list in "Additional Notes" box)

What OS is your Audiobookshelf server hosted from?

Other (list in "Additional Notes" box)

If the issue is being seen in the UI, what browsers are you seeing the problem on?

Chrome

Logs

{"timestamp":"2025-02-03 19:24:52.135","source":"Server.js:219","message":"[Server] Unhandled rejection: Error\n    at Database.<anonymous> (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)\n    at /share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50\n    at new Promise (<anonymous>)\n    at Query.run (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)\n    at /share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/sequelize.js:315:28\n    at async SQLiteQueryInterface.select (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)\n    at async book.findAll (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/model.js:1140:21)\n    at async Promise.all (index 1)\n    at async book.findAndCountAll (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/model.js:1322:27)\n    at async Object.getFilteredLibraryItems (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/server/utils/queries/libraryItemsBookFilters.js:563:36) {\n  name: 'SequelizeDatabaseError',\n  parent: [Error: SQLITE_FULL: database or disk is full] {\n    errno: 13,\n    code: 'SQLITE_FULL',\n    sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;'\n  },\n  original: [Error: SQLITE_FULL: database or disk is full] {\n    errno: 13,\n    code: 'SQLITE_FULL',\n    sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;'\n  },\n  sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;',\n  parameters: {}\n} \npromise: Promise {\n  <rejected> Error\n      at Database.<anonymous> (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)\n      at /share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50\n      at new Promise (<anonymous>)\n      at Query.run (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)\n      at /share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/sequelize.js:315:28\n      at async SQLiteQueryInterface.select (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)\n      at async book.findAll (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/model.js:1140:21)\n      at async Promise.all (index 1)\n      at async book.findAndCountAll (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/model.js:1322:27)\n      at async Object.getFilteredLibraryItems (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/server/utils/queries/libraryItemsBookFilters.js:563:36) {\n    name: 'SequelizeDatabaseError',\n    parent: [Error: SQLITE_FULL: database or disk is full] {\n      errno: 13,\n      code: 'SQLITE_FULL',\n      sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;'\n    },\n    original: [Error: SQLITE_FULL: database or disk is full] {\n      errno: 13,\n      code: 'SQLITE_FULL',\n      sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;'\n    },\n    sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;',\n    parameters: {}\n  }\n}","levelName":"FATAL","level":5}

Additional Notes

My copy of the App is run from the Qnap installer located at https://www.myqnap.org/product/audiobookshelf/ and updated by QoolBox.

Note I'm seeing this on any browser that I try on, and the server runs fine until I start looking in the library.

Originally created by @Justicova on GitHub (Feb 3, 2025). ### What happened? While scrolling the library, the server crashes. It throws a socket disconnection error, and then a socket failed to connect. ### What did you expect to happen? To be able to browse the library and see all the books stored in it, 410ish. ### Steps to reproduce the issue 1. Start server 2. Open Library 3. Scroll down ### Audiobookshelf version 2.19 ### How are you running audiobookshelf? Other (list in "Additional Notes" box) ### What OS is your Audiobookshelf server hosted from? Other (list in "Additional Notes" box) ### If the issue is being seen in the UI, what browsers are you seeing the problem on? Chrome ### Logs ```shell {"timestamp":"2025-02-03 19:24:52.135","source":"Server.js:219","message":"[Server] Unhandled rejection: Error\n at Database.<anonymous> (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)\n at /share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50\n at new Promise (<anonymous>)\n at Query.run (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)\n at /share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/sequelize.js:315:28\n at async SQLiteQueryInterface.select (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)\n at async book.findAll (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/model.js:1140:21)\n at async Promise.all (index 1)\n at async book.findAndCountAll (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/model.js:1322:27)\n at async Object.getFilteredLibraryItems (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/server/utils/queries/libraryItemsBookFilters.js:563:36) {\n name: 'SequelizeDatabaseError',\n parent: [Error: SQLITE_FULL: database or disk is full] {\n errno: 13,\n code: 'SQLITE_FULL',\n sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;'\n },\n original: [Error: SQLITE_FULL: database or disk is full] {\n errno: 13,\n code: 'SQLITE_FULL',\n sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;'\n },\n sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;',\n parameters: {}\n} \npromise: Promise {\n <rejected> Error\n at Database.<anonymous> (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)\n at /share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50\n at new Promise (<anonymous>)\n at Query.run (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)\n at /share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/sequelize.js:315:28\n at async SQLiteQueryInterface.select (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)\n at async book.findAll (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/model.js:1140:21)\n at async Promise.all (index 1)\n at async book.findAndCountAll (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/node_modules/sequelize/lib/model.js:1322:27)\n at async Object.getFilteredLibraryItems (/share/CACHEDEV2_DATA/.qpkg/Audiobookshelf/audiobookshelf/server/utils/queries/libraryItemsBookFilters.js:563:36) {\n name: 'SequelizeDatabaseError',\n parent: [Error: SQLITE_FULL: database or disk is full] {\n errno: 13,\n code: 'SQLITE_FULL',\n sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;'\n },\n original: [Error: SQLITE_FULL: database or disk is full] {\n errno: 13,\n code: 'SQLITE_FULL',\n sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;'\n },\n sql: 'SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`updatedAt`, (SELECT group_concat(name, \", \") FROM (SELECT a.name FROM authors AS a, bookAuthors as ba WHERE ba.authorId = a.id AND ba.bookId = book.id ORDER BY ba.createdAt ASC)) AS `author_name`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId`, `libraryItem->feeds`.`id` AS `libraryItem.feeds.id`, `libraryItem->feeds`.`slug` AS `libraryItem.feeds.slug`, `libraryItem->feeds`.`entityType` AS `libraryItem.feeds.entityType`, `libraryItem->feeds`.`entityId` AS `libraryItem.feeds.entityId`, `libraryItem->feeds`.`entityUpdatedAt` AS `libraryItem.feeds.entityUpdatedAt`, `libraryItem->feeds`.`serverAddress` AS `libraryItem.feeds.serverAddress`, `libraryItem->feeds`.`feedURL` AS `libraryItem.feeds.feedURL`, `libraryItem->feeds`.`imageURL` AS `libraryItem.feeds.imageURL`, `libraryItem->feeds`.`siteURL` AS `libraryItem.feeds.siteURL`, `libraryItem->feeds`.`title` AS `libraryItem.feeds.title`, `libraryItem->feeds`.`description` AS `libraryItem.feeds.description`, `libraryItem->feeds`.`author` AS `libraryItem.feeds.author`, `libraryItem->feeds`.`podcastType` AS `libraryItem.feeds.podcastType`, `libraryItem->feeds`.`language` AS `libraryItem.feeds.language`, `libraryItem->feeds`.`ownerName` AS `libraryItem.feeds.ownerName`, `libraryItem->feeds`.`ownerEmail` AS `libraryItem.feeds.ownerEmail`, `libraryItem->feeds`.`explicit` AS `libraryItem.feeds.explicit`, `libraryItem->feeds`.`preventIndexing` AS `libraryItem.feeds.preventIndexing`, `libraryItem->feeds`.`coverPath` AS `libraryItem.feeds.coverPath`, `libraryItem->feeds`.`createdAt` AS `libraryItem.feeds.createdAt`, `libraryItem->feeds`.`updatedAt` AS `libraryItem.feeds.updatedAt`, `libraryItem->feeds`.`userId` AS `libraryItem.feeds.userId` FROM `books` AS `book` INNER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND (`libraryItem`.`libraryId` = \\'7d20118f-1184-4355-a368-d0e0b4e429a8\\' AND `libraryItem`.`mediaType` = \\'book\\') LEFT OUTER JOIN `feeds` AS `libraryItem->feeds` ON `libraryItem`.`id` = `libraryItem->feeds`.`entityId` AND `libraryItem->feeds`.`entityType` = \\'libraryItem\\' ORDER BY author_name COLLATE NOCASE ASC LIMIT 288, 72;',\n parameters: {}\n }\n}","levelName":"FATAL","level":5} ``` ### Additional Notes My copy of the App is run from the Qnap installer located at https://www.myqnap.org/product/audiobookshelf/ and updated by QoolBox. Note I'm seeing this on any browser that I try on, and the server runs fine until I start looking in the library.
Author
Owner

@nichwall commented on GitHub (Feb 3, 2025):

How big is the SQLite database file, located in /config?
The error is saying the disc is full.

@nichwall commented on GitHub (Feb 3, 2025): How big is the SQLite database file, located in `/config`? The error is saying the disc is full.
Author
Owner

@Justicova commented on GitHub (Feb 4, 2025):

Image
38M

The drive itself has well over 100 gigs free on the partition.

@Justicova commented on GitHub (Feb 4, 2025): ![Image](https://github.com/user-attachments/assets/f20036aa-ac83-4803-9a82-739e1c32d1b0) 38M The drive itself has well over 100 gigs free on the partition.
Author
Owner

@nichwall commented on GitHub (Feb 4, 2025):

Is any part of /share/CACHEDEV2_DATA/ a partition, volume, disk or something, or is that a temp location? I assume that is a partition or similar, but not sure how qnap calls things.

Does this happen anywhere else, or only when scrolling down the library page?

Can you run sqlite3 /path/to/database.sqlite "PRAGMA integrity_check;" in the terminal, or load a copy of the database in something like https://sqlitebrowser.org/ and run PRAGMA integrity_check;? You will want to do this on a copy of the database or when the server is not running.

@nichwall commented on GitHub (Feb 4, 2025): Is any part of `/share/CACHEDEV2_DATA/` a partition, volume, disk or something, or is that a temp location? I assume that is a partition or similar, but not sure how qnap calls things. Does this happen anywhere else, or only when scrolling down the library page? Can you run `sqlite3 /path/to/database.sqlite "PRAGMA integrity_check;"` in the terminal, or load a copy of the database in something like https://sqlitebrowser.org/ and run `PRAGMA integrity_check;`? You will want to do this on a copy of the database or when the server is not running.
Author
Owner

@Justicova commented on GitHub (Feb 4, 2025):

Image

I haven't seen it happen anywhere else, just when scrolling the library.

As for /share/CACHEDEV2_DATA, that's how qnap handles storage pools. There aren't any partitions underneath it; the pool is given a set size and placed at that root. There are four other ChacheDevs there etc. The pool has 740 gigs of free space.

@Justicova commented on GitHub (Feb 4, 2025): ![Image](https://github.com/user-attachments/assets/1c004173-5122-4a00-8ef3-bd6adee13b03) I haven't seen it happen anywhere else, just when scrolling the library. As for /share/CACHEDEV2_DATA, that's how qnap handles storage pools. There aren't any partitions underneath it; the pool is given a set size and placed at that root. There are four other ChacheDevs there etc. The pool has 740 gigs of free space.
Author
Owner

@advplyr commented on GitHub (Feb 4, 2025):

You may find help with the developer of that install method

@advplyr commented on GitHub (Feb 4, 2025): You may find help with the developer of that install method
Author
Owner

@Justicova commented on GitHub (Feb 4, 2025):

I tried that first, he sent me to discord, discord sent me here to make a
ticket.

On Tue, Feb 4, 2025, 18:30 advplyr @.***> wrote:

You may find help with the developer of that install method


Reply to this email directly, view it on GitHub
https://github.com/advplyr/audiobookshelf/issues/3927#issuecomment-2635292355,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA4J2XNBEPJDZTMXCAZBUD32OFEPXAVCNFSM6AAAAABWNNAHTSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMMZVGI4TEMZVGU
.
You are receiving this because you authored the thread.Message ID:
@.***>

@Justicova commented on GitHub (Feb 4, 2025): I tried that first, he sent me to discord, discord sent me here to make a ticket. On Tue, Feb 4, 2025, 18:30 advplyr ***@***.***> wrote: > You may find help with the developer of that install method > > — > Reply to this email directly, view it on GitHub > <https://github.com/advplyr/audiobookshelf/issues/3927#issuecomment-2635292355>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/AA4J2XNBEPJDZTMXCAZBUD32OFEPXAVCNFSM6AAAAABWNNAHTSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMMZVGI4TEMZVGU> > . > You are receiving this because you authored the thread.Message ID: > ***@***.***> >
Author
Owner

@advplyr commented on GitHub (Feb 4, 2025):

I've never seen this error before but here are the docs for it: https://www.sqlite.org/rescode.html#full

The SQLITE_FULL result code indicates that a write could not complete because the disk is full. Note that this error can occur when trying to write information into the main database file, or it can also occur when writing into temporary disk files.

Sometimes applications encounter this error even though there is an abundance of primary disk space because the error occurs when writing into temporary disk files on a system where temporary files are stored on a separate partition with much less space that the primary disk.

@advplyr commented on GitHub (Feb 4, 2025): I've never seen this error before but here are the docs for it: https://www.sqlite.org/rescode.html#full > The SQLITE_FULL result code indicates that a write could not complete because the disk is full. Note that this error can occur when trying to write information into the main database file, or it can also occur when writing into [temporary disk files](https://www.sqlite.org/tempfiles.html). > Sometimes applications encounter this error even though there is an abundance of primary disk space because the error occurs when writing into [temporary disk files](https://www.sqlite.org/tempfiles.html) on a system where temporary files are stored on a separate partition with much less space that the primary disk.
Author
Owner

@nichwall commented on GitHub (Feb 4, 2025):

Are you talking about me (nyxholas), or whoever maintains the Qnap package?

I tried that first, he sent me to discord, discord sent me here to make a ticket.

@nichwall commented on GitHub (Feb 4, 2025): Are you talking about me (nyxholas), or whoever maintains the Qnap package? > I tried that first, he sent me to discord, discord sent me here to make a ticket.
Author
Owner

@Justicova commented on GitHub (Feb 5, 2025):

Are you talking about me (nyxholas), or whoever maintains the Qnap package?

I tried that first, he sent me to discord, discord sent me here to make a ticket.

QoolBox the Qnap Package developer. They told me to goto the Discord.

@Justicova commented on GitHub (Feb 5, 2025): > Are you talking about me (nyxholas), or whoever maintains the Qnap package? > > > I tried that first, he sent me to discord, discord sent me here to make a ticket. QoolBox the Qnap Package developer. They told me to goto the Discord.
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#2718
No description provided.