[Bug]: Crash when getaddrinfo fails during upload because Logger is not defined #1428

Closed
opened 2026-04-24 23:45:08 +02:00 by adam · 1 comment
Owner

Originally created by @mpldr on GitHub (Oct 1, 2023).

Describe the issue

Not exactly sure what happened here. Happened during an overnight upload.

audiobookshelf-audiobookshelf-1  | [2023-09-30 23:54:08] ERROR: [fileUtils] Failed to download file "/metadata/items/95423bba-422a-4b8d-95cc-e40b4e8e0fd5/cover" AxiosError: getaddrinfo ENOTFOUND books.google.com
audiobookshelf-audiobookshelf-1  |     at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:109:26) {
audiobookshelf-audiobookshelf-1  |   hostname: 'books.google.com',
audiobookshelf-audiobookshelf-1  |   syscall: 'getaddrinfo',
audiobookshelf-audiobookshelf-1  |   code: 'ENOTFOUND',
audiobookshelf-audiobookshelf-1  |   errno: -3007,
audiobookshelf-audiobookshelf-1  |   config: {
audiobookshelf-audiobookshelf-1  |     transitional: {
audiobookshelf-audiobookshelf-1  |       silentJSONParsing: true,
audiobookshelf-audiobookshelf-1  |       forcedJSONParsing: true,
audiobookshelf-audiobookshelf-1  |       clarifyTimeoutError: false
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     adapter: [Function: httpAdapter],
audiobookshelf-audiobookshelf-1  |     transformRequest: [ [Function: transformRequest] ],
audiobookshelf-audiobookshelf-1  |     transformResponse: [ [Function: transformResponse] ],
audiobookshelf-audiobookshelf-1  |     timeout: 30000,
audiobookshelf-audiobookshelf-1  |     xsrfCookieName: 'XSRF-TOKEN',
audiobookshelf-audiobookshelf-1  |     xsrfHeaderName: 'X-XSRF-TOKEN',
audiobookshelf-audiobookshelf-1  |     maxContentLength: -1,
audiobookshelf-audiobookshelf-1  |     maxBodyLength: -1,
audiobookshelf-audiobookshelf-1  |     env: { FormData: [Function] },
audiobookshelf-audiobookshelf-1  |     validateStatus: [Function: validateStatus],
audiobookshelf-audiobookshelf-1  |     headers: {
audiobookshelf-audiobookshelf-1  |       Accept: 'application/json, text/plain, */*',
audiobookshelf-audiobookshelf-1  |       'User-Agent': 'axios/0.27.2'
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     url: 'https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api',
audiobookshelf-audiobookshelf-1  |     method: 'get',
audiobookshelf-audiobookshelf-1  |     responseType: 'stream',
audiobookshelf-audiobookshelf-1  |     data: undefined
audiobookshelf-audiobookshelf-1  |   },
audiobookshelf-audiobookshelf-1  |   request: <ref *1> Writable {
audiobookshelf-audiobookshelf-1  |     _writableState: WritableState {
audiobookshelf-audiobookshelf-1  |       objectMode: false,
audiobookshelf-audiobookshelf-1  |       highWaterMark: 16384,
audiobookshelf-audiobookshelf-1  |       finalCalled: false,
audiobookshelf-audiobookshelf-1  |       needDrain: false,
audiobookshelf-audiobookshelf-1  |       ending: false,
audiobookshelf-audiobookshelf-1  |       ended: false,
audiobookshelf-audiobookshelf-1  |       finished: false,
audiobookshelf-audiobookshelf-1  |       destroyed: false,
audiobookshelf-audiobookshelf-1  |       decodeStrings: true,
audiobookshelf-audiobookshelf-1  |       defaultEncoding: 'utf8',
audiobookshelf-audiobookshelf-1  |       length: 0,
audiobookshelf-audiobookshelf-1  |       writing: false,
audiobookshelf-audiobookshelf-1  |       corked: 0,
audiobookshelf-audiobookshelf-1  |       sync: true,
audiobookshelf-audiobookshelf-1  |       bufferProcessing: false,
audiobookshelf-audiobookshelf-1  |       onwrite: [Function: bound onwrite],
audiobookshelf-audiobookshelf-1  |       writecb: null,
audiobookshelf-audiobookshelf-1  |       writelen: 0,
audiobookshelf-audiobookshelf-1  |       afterWriteTickInfo: null,
audiobookshelf-audiobookshelf-1  |       buffered: [],
audiobookshelf-audiobookshelf-1  |       bufferedIndex: 0,
audiobookshelf-audiobookshelf-1  |       allBuffers: true,
audiobookshelf-audiobookshelf-1  |       allNoop: true,
audiobookshelf-audiobookshelf-1  |       pendingcb: 0,
audiobookshelf-audiobookshelf-1  |       constructed: true,
audiobookshelf-audiobookshelf-1  |       prefinished: false,
audiobookshelf-audiobookshelf-1  |       errorEmitted: false,
audiobookshelf-audiobookshelf-1  |       emitClose: true,
audiobookshelf-audiobookshelf-1  |       autoDestroy: true,
audiobookshelf-audiobookshelf-1  |       errored: null,
audiobookshelf-audiobookshelf-1  |       closed: false,
audiobookshelf-audiobookshelf-1  |       closeEmitted: false,
audiobookshelf-audiobookshelf-1  |       [Symbol(kOnFinished)]: []
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     _events: [Object: null prototype] {
audiobookshelf-audiobookshelf-1  |       response: [Function: handleResponse],
audiobookshelf-audiobookshelf-1  |       error: [Function: handleRequestError],
audiobookshelf-audiobookshelf-1  |       socket: [Array]
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     _eventsCount: 3,
audiobookshelf-audiobookshelf-1  |     _maxListeners: undefined,
audiobookshelf-audiobookshelf-1  |     _options: {
audiobookshelf-audiobookshelf-1  |       maxRedirects: 21,
audiobookshelf-audiobookshelf-1  |       maxBodyLength: 10485760,
audiobookshelf-audiobookshelf-1  |       protocol: 'https:',
audiobookshelf-audiobookshelf-1  |       path: '/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api',
audiobookshelf-audiobookshelf-1  |       method: 'GET',
audiobookshelf-audiobookshelf-1  |       headers: [Object],
audiobookshelf-audiobookshelf-1  |       agent: undefined,
audiobookshelf-audiobookshelf-1  |       agents: [Object],
audiobookshelf-audiobookshelf-1  |       auth: undefined,
audiobookshelf-audiobookshelf-1  |       hostname: 'books.google.com',
audiobookshelf-audiobookshelf-1  |       port: null,
audiobookshelf-audiobookshelf-1  |       nativeProtocols: [Object],
audiobookshelf-audiobookshelf-1  |       pathname: '/books/content',
audiobookshelf-audiobookshelf-1  |       search: '?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api'
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     _ended: true,
audiobookshelf-audiobookshelf-1  |     _ending: true,
audiobookshelf-audiobookshelf-1  |     _redirectCount: 0,
audiobookshelf-audiobookshelf-1  |     _redirects: [],
audiobookshelf-audiobookshelf-1  |     _requestBodyLength: 0,
audiobookshelf-audiobookshelf-1  |     _requestBodyBuffers: [],
audiobookshelf-audiobookshelf-1  |     _onNativeResponse: [Function (anonymous)],
audiobookshelf-audiobookshelf-1  |     _currentRequest: ClientRequest {
audiobookshelf-audiobookshelf-1  |       _events: [Object: null prototype],
audiobookshelf-audiobookshelf-1  |       _eventsCount: 7,
audiobookshelf-audiobookshelf-1  |       _maxListeners: undefined,
audiobookshelf-audiobookshelf-1  |       outputData: [],
audiobookshelf-audiobookshelf-1  |       outputSize: 0,
audiobookshelf-audiobookshelf-1  |       writable: true,
audiobookshelf-audiobookshelf-1  |       destroyed: false,
audiobookshelf-audiobookshelf-1  |       _last: true,
audiobookshelf-audiobookshelf-1  |       chunkedEncoding: false,
audiobookshelf-audiobookshelf-1  |       shouldKeepAlive: false,
audiobookshelf-audiobookshelf-1  |       maxRequestsOnConnectionReached: false,
audiobookshelf-audiobookshelf-1  |       _defaultKeepAlive: true,
audiobookshelf-audiobookshelf-1  |       useChunkedEncodingByDefault: false,
audiobookshelf-audiobookshelf-1  |       sendDate: false,
audiobookshelf-audiobookshelf-1  |       _removedConnection: false,
audiobookshelf-audiobookshelf-1  |       _removedContLen: false,
audiobookshelf-audiobookshelf-1  |       _removedTE: false,
audiobookshelf-audiobookshelf-1  |       strictContentLength: false,
audiobookshelf-audiobookshelf-1  |       _contentLength: 0,
audiobookshelf-audiobookshelf-1  |       _hasBody: true,
audiobookshelf-audiobookshelf-1  |       _trailer: '',
audiobookshelf-audiobookshelf-1  |       finished: true,
audiobookshelf-audiobookshelf-1  |       _headerSent: true,
audiobookshelf-audiobookshelf-1  |       _closed: false,
audiobookshelf-audiobookshelf-1  |       socket: [TLSSocket],
audiobookshelf-audiobookshelf-1  |       _header: 'GET /books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api HTTP/1.1\r\n' +
audiobookshelf-audiobookshelf-1  |         'Accept: application/json, text/plain, */*\r\n' +
audiobookshelf-audiobookshelf-1  |         'User-Agent: axios/0.27.2\r\n' +
audiobookshelf-audiobookshelf-1  |         'Host: books.google.com\r\n' +
audiobookshelf-audiobookshelf-1  |         'Connection: close\r\n' +
audiobookshelf-audiobookshelf-1  |         '\r\n',
audiobookshelf-audiobookshelf-1  |       _keepAliveTimeout: 0,
audiobookshelf-audiobookshelf-1  |       _onPendingData: [Function: nop],
audiobookshelf-audiobookshelf-1  |       agent: [Agent],
audiobookshelf-audiobookshelf-1  |       socketPath: undefined,
audiobookshelf-audiobookshelf-1  |       method: 'GET',
audiobookshelf-audiobookshelf-1  |       maxHeaderSize: undefined,
audiobookshelf-audiobookshelf-1  |       insecureHTTPParser: undefined,
audiobookshelf-audiobookshelf-1  |       path: '/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api',
audiobookshelf-audiobookshelf-1  |       _ended: false,
audiobookshelf-audiobookshelf-1  |       res: null,
audiobookshelf-audiobookshelf-1  |       aborted: false,
audiobookshelf-audiobookshelf-1  |       timeoutCb: null,
audiobookshelf-audiobookshelf-1  |       upgradeOrConnect: false,
audiobookshelf-audiobookshelf-1  |       parser: null,
audiobookshelf-audiobookshelf-1  |       maxHeadersCount: null,
audiobookshelf-audiobookshelf-1  |       reusedSocket: false,
audiobookshelf-audiobookshelf-1  |       host: 'books.google.com',
audiobookshelf-audiobookshelf-1  |       protocol: 'https:',
audiobookshelf-audiobookshelf-1  |       _redirectable: [Circular *1],
audiobookshelf-audiobookshelf-1  |       [Symbol(kCapture)]: false,
audiobookshelf-audiobookshelf-1  |       [Symbol(kBytesWritten)]: 0,
audiobookshelf-audiobookshelf-1  |       [Symbol(kEndCalled)]: true,
audiobookshelf-audiobookshelf-1  |       [Symbol(kNeedDrain)]: false,
audiobookshelf-audiobookshelf-1  |       [Symbol(corked)]: 0,
audiobookshelf-audiobookshelf-1  |       [Symbol(kOutHeaders)]: [Object: null prototype],
audiobookshelf-audiobookshelf-1  |       [Symbol(kUniqueHeaders)]: null
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     _currentUrl: 'https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api',
audiobookshelf-audiobookshelf-1  |     _timeout: null,
audiobookshelf-audiobookshelf-1  |     [Symbol(kCapture)]: false
audiobookshelf-audiobookshelf-1  |   }
audiobookshelf-audiobookshelf-1  | } (fileUtils.js:221)
audiobookshelf-audiobookshelf-1  | [2023-09-30 23:54:08] ERROR: [CoverManager] Download image file failed for "https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" AxiosError: getaddrinfo ENOTFOUND books.google.com
audiobookshelf-audiobookshelf-1  |     at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:109:26) {
audiobookshelf-audiobookshelf-1  |   hostname: 'books.google.com',
audiobookshelf-audiobookshelf-1  |   syscall: 'getaddrinfo',
audiobookshelf-audiobookshelf-1  |   code: 'ENOTFOUND',
audiobookshelf-audiobookshelf-1  |   errno: -3007,
audiobookshelf-audiobookshelf-1  |   config: {
audiobookshelf-audiobookshelf-1  |     transitional: {
audiobookshelf-audiobookshelf-1  |       silentJSONParsing: true,
audiobookshelf-audiobookshelf-1  |       forcedJSONParsing: true,
audiobookshelf-audiobookshelf-1  |       clarifyTimeoutError: false
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     adapter: [Function: httpAdapter],
audiobookshelf-audiobookshelf-1  |     transformRequest: [ [Function: transformRequest] ],
audiobookshelf-audiobookshelf-1  |     transformResponse: [ [Function: transformResponse] ],
audiobookshelf-audiobookshelf-1  |     timeout: 30000,
audiobookshelf-audiobookshelf-1  |     xsrfCookieName: 'XSRF-TOKEN',
audiobookshelf-audiobookshelf-1  |     xsrfHeaderName: 'X-XSRF-TOKEN',
audiobookshelf-audiobookshelf-1  |     maxContentLength: -1,
audiobookshelf-audiobookshelf-1  |     maxBodyLength: -1,
audiobookshelf-audiobookshelf-1  |     env: { FormData: [Function] },
audiobookshelf-audiobookshelf-1  |     validateStatus: [Function: validateStatus],
audiobookshelf-audiobookshelf-1  |     headers: {
audiobookshelf-audiobookshelf-1  |       Accept: 'application/json, text/plain, */*',
audiobookshelf-audiobookshelf-1  |       'User-Agent': 'axios/0.27.2'
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     url: 'https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api',
audiobookshelf-audiobookshelf-1  |     method: 'get',
audiobookshelf-audiobookshelf-1  |     responseType: 'stream',
audiobookshelf-audiobookshelf-1  |     data: undefined
audiobookshelf-audiobookshelf-1  |   },
audiobookshelf-audiobookshelf-1  |   request: <ref *1> Writable {
audiobookshelf-audiobookshelf-1  |     _writableState: WritableState {
audiobookshelf-audiobookshelf-1  |       objectMode: false,
audiobookshelf-audiobookshelf-1  |       highWaterMark: 16384,
audiobookshelf-audiobookshelf-1  |       finalCalled: false,
audiobookshelf-audiobookshelf-1  |       needDrain: false,
audiobookshelf-audiobookshelf-1  |       ending: false,
audiobookshelf-audiobookshelf-1  |       ended: false,
audiobookshelf-audiobookshelf-1  |       finished: false,
audiobookshelf-audiobookshelf-1  |       destroyed: false,
audiobookshelf-audiobookshelf-1  |       decodeStrings: true,
audiobookshelf-audiobookshelf-1  |       defaultEncoding: 'utf8',
audiobookshelf-audiobookshelf-1  |       length: 0,
audiobookshelf-audiobookshelf-1  |       writing: false,
audiobookshelf-audiobookshelf-1  |       corked: 0,
audiobookshelf-audiobookshelf-1  |       sync: true,
audiobookshelf-audiobookshelf-1  |       bufferProcessing: false,
audiobookshelf-audiobookshelf-1  |       onwrite: [Function: bound onwrite],
audiobookshelf-audiobookshelf-1  |       writecb: null,
audiobookshelf-audiobookshelf-1  |       writelen: 0,
audiobookshelf-audiobookshelf-1  |       afterWriteTickInfo: null,
audiobookshelf-audiobookshelf-1  |       buffered: [],
audiobookshelf-audiobookshelf-1  |       bufferedIndex: 0,
audiobookshelf-audiobookshelf-1  |       allBuffers: true,
audiobookshelf-audiobookshelf-1  |       allNoop: true,
audiobookshelf-audiobookshelf-1  |       pendingcb: 0,
audiobookshelf-audiobookshelf-1  |       constructed: true,
audiobookshelf-audiobookshelf-1  |       prefinished: false,
audiobookshelf-audiobookshelf-1  |       errorEmitted: false,
audiobookshelf-audiobookshelf-1  |       emitClose: true,
audiobookshelf-audiobookshelf-1  |       autoDestroy: true,
audiobookshelf-audiobookshelf-1  |       errored: null,
audiobookshelf-audiobookshelf-1  |       closed: false,
audiobookshelf-audiobookshelf-1  |       closeEmitted: false,
audiobookshelf-audiobookshelf-1  |       [Symbol(kOnFinished)]: []
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     _events: [Object: null prototype] {
audiobookshelf-audiobookshelf-1  |       response: [Function: handleResponse],
audiobookshelf-audiobookshelf-1  |       error: [Function: handleRequestError],
audiobookshelf-audiobookshelf-1  |       socket: [Array]
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     _eventsCount: 3,
audiobookshelf-audiobookshelf-1  |     _maxListeners: undefined,
audiobookshelf-audiobookshelf-1  |     _options: {
audiobookshelf-audiobookshelf-1  |       maxRedirects: 21,
audiobookshelf-audiobookshelf-1  |       maxBodyLength: 10485760,
audiobookshelf-audiobookshelf-1  |       protocol: 'https:',
audiobookshelf-audiobookshelf-1  |       path: '/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api',
audiobookshelf-audiobookshelf-1  |       method: 'GET',
audiobookshelf-audiobookshelf-1  |       headers: [Object],
audiobookshelf-audiobookshelf-1  |       agent: undefined,
audiobookshelf-audiobookshelf-1  |       agents: [Object],
audiobookshelf-audiobookshelf-1  |       auth: undefined,
audiobookshelf-audiobookshelf-1  |       hostname: 'books.google.com',
audiobookshelf-audiobookshelf-1  |       port: null,
audiobookshelf-audiobookshelf-1  |       nativeProtocols: [Object],
audiobookshelf-audiobookshelf-1  |       pathname: '/books/content',
audiobookshelf-audiobookshelf-1  |       search: '?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api'
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     _ended: true,
audiobookshelf-audiobookshelf-1  |     _ending: true,
audiobookshelf-audiobookshelf-1  |     _redirectCount: 0,
audiobookshelf-audiobookshelf-1  |     _redirects: [],
audiobookshelf-audiobookshelf-1  |     _requestBodyLength: 0,
audiobookshelf-audiobookshelf-1  |     _requestBodyBuffers: [],
audiobookshelf-audiobookshelf-1  |     _onNativeResponse: [Function (anonymous)],
audiobookshelf-audiobookshelf-1  |     _currentRequest: ClientRequest {
audiobookshelf-audiobookshelf-1  |       _events: [Object: null prototype],
audiobookshelf-audiobookshelf-1  |       _eventsCount: 7,
audiobookshelf-audiobookshelf-1  |       _maxListeners: undefined,
audiobookshelf-audiobookshelf-1  |       outputData: [],
audiobookshelf-audiobookshelf-1  |       outputSize: 0,
audiobookshelf-audiobookshelf-1  |       writable: true,
audiobookshelf-audiobookshelf-1  |       destroyed: false,
audiobookshelf-audiobookshelf-1  |       _last: true,
audiobookshelf-audiobookshelf-1  |       chunkedEncoding: false,
audiobookshelf-audiobookshelf-1  |       shouldKeepAlive: false,
audiobookshelf-audiobookshelf-1  |       maxRequestsOnConnectionReached: false,
audiobookshelf-audiobookshelf-1  |       _defaultKeepAlive: true,
audiobookshelf-audiobookshelf-1  |       useChunkedEncodingByDefault: false,
audiobookshelf-audiobookshelf-1  |       sendDate: false,
audiobookshelf-audiobookshelf-1  |       _removedConnection: false,
audiobookshelf-audiobookshelf-1  |       _removedContLen: false,
audiobookshelf-audiobookshelf-1  |       _removedTE: false,
audiobookshelf-audiobookshelf-1  |       strictContentLength: false,
audiobookshelf-audiobookshelf-1  |       _contentLength: 0,
audiobookshelf-audiobookshelf-1  |       _hasBody: true,
audiobookshelf-audiobookshelf-1  |       _trailer: '',
audiobookshelf-audiobookshelf-1  |       finished: true,
audiobookshelf-audiobookshelf-1  |       _headerSent: true,
audiobookshelf-audiobookshelf-1  |       _closed: false,
audiobookshelf-audiobookshelf-1  |       socket: [TLSSocket],
audiobookshelf-audiobookshelf-1  |       _header: 'GET /books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api HTTP/1.1\r\n' +
audiobookshelf-audiobookshelf-1  |         'Accept: application/json, text/plain, */*\r\n' +
audiobookshelf-audiobookshelf-1  |         'User-Agent: axios/0.27.2\r\n' +
audiobookshelf-audiobookshelf-1  |         'Host: books.google.com\r\n' +
audiobookshelf-audiobookshelf-1  |         'Connection: close\r\n' +
audiobookshelf-audiobookshelf-1  |         '\r\n',
audiobookshelf-audiobookshelf-1  |       _keepAliveTimeout: 0,
audiobookshelf-audiobookshelf-1  |       _onPendingData: [Function: nop],
audiobookshelf-audiobookshelf-1  |       agent: [Agent],
audiobookshelf-audiobookshelf-1  |       socketPath: undefined,
audiobookshelf-audiobookshelf-1  |       method: 'GET',
audiobookshelf-audiobookshelf-1  |       maxHeaderSize: undefined,
audiobookshelf-audiobookshelf-1  |       insecureHTTPParser: undefined,
audiobookshelf-audiobookshelf-1  |       path: '/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api',
audiobookshelf-audiobookshelf-1  |       _ended: false,
audiobookshelf-audiobookshelf-1  |       res: null,
audiobookshelf-audiobookshelf-1  |       aborted: false,
audiobookshelf-audiobookshelf-1  |       timeoutCb: null,
audiobookshelf-audiobookshelf-1  |       upgradeOrConnect: false,
audiobookshelf-audiobookshelf-1  |       parser: null,
audiobookshelf-audiobookshelf-1  |       maxHeadersCount: null,
audiobookshelf-audiobookshelf-1  |       reusedSocket: false,
audiobookshelf-audiobookshelf-1  |       host: 'books.google.com',
audiobookshelf-audiobookshelf-1  |       protocol: 'https:',
audiobookshelf-audiobookshelf-1  |       _redirectable: [Circular *1],
audiobookshelf-audiobookshelf-1  |       [Symbol(kCapture)]: false,
audiobookshelf-audiobookshelf-1  |       [Symbol(kBytesWritten)]: 0,
audiobookshelf-audiobookshelf-1  |       [Symbol(kEndCalled)]: true,
audiobookshelf-audiobookshelf-1  |       [Symbol(kNeedDrain)]: false,
audiobookshelf-audiobookshelf-1  |       [Symbol(corked)]: 0,
audiobookshelf-audiobookshelf-1  |       [Symbol(kOutHeaders)]: [Object: null prototype],
audiobookshelf-audiobookshelf-1  |       [Symbol(kUniqueHeaders)]: null
audiobookshelf-audiobookshelf-1  |     },
audiobookshelf-audiobookshelf-1  |     _currentUrl: 'https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api',
audiobookshelf-audiobookshelf-1  |     _timeout: null,
audiobookshelf-audiobookshelf-1  |     [Symbol(kCapture)]: false
audiobookshelf-audiobookshelf-1  |   }
audiobookshelf-audiobookshelf-1  | } (CoverManager.js:288)
audiobookshelf-audiobookshelf-1  | /server/scanner/BookScanner.js:1114
audiobookshelf-audiobookshelf-1  |           Logger.error(`[Scanner] Failed to download cover from url "${results[i]}" | Attempt ${i + 1}`, result.error)
audiobookshelf-audiobookshelf-1  |           ^
audiobookshelf-audiobookshelf-1  | 
audiobookshelf-audiobookshelf-1  | ReferenceError: Logger is not defined
audiobookshelf-audiobookshelf-1  |     at BookScanner.searchForCover (/server/scanner/BookScanner.js:1114:11)
audiobookshelf-audiobookshelf-1  |     at runMicrotasks (<anonymous>)
audiobookshelf-audiobookshelf-1  |     at processTicksAndRejections (node:internal/process/task_queues:96:5)
audiobookshelf-audiobookshelf-1  |     at async BookScanner.scanNewBookLibraryItem (/server/scanner/BookScanner.js:469:32)
audiobookshelf-audiobookshelf-1  |     at async LibraryItemScanner.scanNewLibraryItem (/server/scanner/LibraryItemScanner.js:181:24)
audiobookshelf-audiobookshelf-1  |     at async LibraryScanner.scanFolderUpdates (/server/scanner/LibraryScanner.js:517:30)
audiobookshelf-audiobookshelf-1  |     at async LibraryScanner.scanFilesChanged (/server/scanner/LibraryScanner.js:346:33)

Steps to reproduce the issue

  1. start uploading 5 books at once using the upload folder function
  2. go to bed
  3. wake up to audiobookshelf being dead

Audiobookshelf version

v2.4.4

How are you running audiobookshelf?

Docker

Originally created by @mpldr on GitHub (Oct 1, 2023). ### Describe the issue Not exactly sure what happened here. Happened during an overnight upload. ``` audiobookshelf-audiobookshelf-1 | [2023-09-30 23:54:08] ERROR: [fileUtils] Failed to download file "/metadata/items/95423bba-422a-4b8d-95cc-e40b4e8e0fd5/cover" AxiosError: getaddrinfo ENOTFOUND books.google.com audiobookshelf-audiobookshelf-1 | at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:109:26) { audiobookshelf-audiobookshelf-1 | hostname: 'books.google.com', audiobookshelf-audiobookshelf-1 | syscall: 'getaddrinfo', audiobookshelf-audiobookshelf-1 | code: 'ENOTFOUND', audiobookshelf-audiobookshelf-1 | errno: -3007, audiobookshelf-audiobookshelf-1 | config: { audiobookshelf-audiobookshelf-1 | transitional: { audiobookshelf-audiobookshelf-1 | silentJSONParsing: true, audiobookshelf-audiobookshelf-1 | forcedJSONParsing: true, audiobookshelf-audiobookshelf-1 | clarifyTimeoutError: false audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | adapter: [Function: httpAdapter], audiobookshelf-audiobookshelf-1 | transformRequest: [ [Function: transformRequest] ], audiobookshelf-audiobookshelf-1 | transformResponse: [ [Function: transformResponse] ], audiobookshelf-audiobookshelf-1 | timeout: 30000, audiobookshelf-audiobookshelf-1 | xsrfCookieName: 'XSRF-TOKEN', audiobookshelf-audiobookshelf-1 | xsrfHeaderName: 'X-XSRF-TOKEN', audiobookshelf-audiobookshelf-1 | maxContentLength: -1, audiobookshelf-audiobookshelf-1 | maxBodyLength: -1, audiobookshelf-audiobookshelf-1 | env: { FormData: [Function] }, audiobookshelf-audiobookshelf-1 | validateStatus: [Function: validateStatus], audiobookshelf-audiobookshelf-1 | headers: { audiobookshelf-audiobookshelf-1 | Accept: 'application/json, text/plain, */*', audiobookshelf-audiobookshelf-1 | 'User-Agent': 'axios/0.27.2' audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | url: 'https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api', audiobookshelf-audiobookshelf-1 | method: 'get', audiobookshelf-audiobookshelf-1 | responseType: 'stream', audiobookshelf-audiobookshelf-1 | data: undefined audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | request: <ref *1> Writable { audiobookshelf-audiobookshelf-1 | _writableState: WritableState { audiobookshelf-audiobookshelf-1 | objectMode: false, audiobookshelf-audiobookshelf-1 | highWaterMark: 16384, audiobookshelf-audiobookshelf-1 | finalCalled: false, audiobookshelf-audiobookshelf-1 | needDrain: false, audiobookshelf-audiobookshelf-1 | ending: false, audiobookshelf-audiobookshelf-1 | ended: false, audiobookshelf-audiobookshelf-1 | finished: false, audiobookshelf-audiobookshelf-1 | destroyed: false, audiobookshelf-audiobookshelf-1 | decodeStrings: true, audiobookshelf-audiobookshelf-1 | defaultEncoding: 'utf8', audiobookshelf-audiobookshelf-1 | length: 0, audiobookshelf-audiobookshelf-1 | writing: false, audiobookshelf-audiobookshelf-1 | corked: 0, audiobookshelf-audiobookshelf-1 | sync: true, audiobookshelf-audiobookshelf-1 | bufferProcessing: false, audiobookshelf-audiobookshelf-1 | onwrite: [Function: bound onwrite], audiobookshelf-audiobookshelf-1 | writecb: null, audiobookshelf-audiobookshelf-1 | writelen: 0, audiobookshelf-audiobookshelf-1 | afterWriteTickInfo: null, audiobookshelf-audiobookshelf-1 | buffered: [], audiobookshelf-audiobookshelf-1 | bufferedIndex: 0, audiobookshelf-audiobookshelf-1 | allBuffers: true, audiobookshelf-audiobookshelf-1 | allNoop: true, audiobookshelf-audiobookshelf-1 | pendingcb: 0, audiobookshelf-audiobookshelf-1 | constructed: true, audiobookshelf-audiobookshelf-1 | prefinished: false, audiobookshelf-audiobookshelf-1 | errorEmitted: false, audiobookshelf-audiobookshelf-1 | emitClose: true, audiobookshelf-audiobookshelf-1 | autoDestroy: true, audiobookshelf-audiobookshelf-1 | errored: null, audiobookshelf-audiobookshelf-1 | closed: false, audiobookshelf-audiobookshelf-1 | closeEmitted: false, audiobookshelf-audiobookshelf-1 | [Symbol(kOnFinished)]: [] audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | _events: [Object: null prototype] { audiobookshelf-audiobookshelf-1 | response: [Function: handleResponse], audiobookshelf-audiobookshelf-1 | error: [Function: handleRequestError], audiobookshelf-audiobookshelf-1 | socket: [Array] audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | _eventsCount: 3, audiobookshelf-audiobookshelf-1 | _maxListeners: undefined, audiobookshelf-audiobookshelf-1 | _options: { audiobookshelf-audiobookshelf-1 | maxRedirects: 21, audiobookshelf-audiobookshelf-1 | maxBodyLength: 10485760, audiobookshelf-audiobookshelf-1 | protocol: 'https:', audiobookshelf-audiobookshelf-1 | path: '/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api', audiobookshelf-audiobookshelf-1 | method: 'GET', audiobookshelf-audiobookshelf-1 | headers: [Object], audiobookshelf-audiobookshelf-1 | agent: undefined, audiobookshelf-audiobookshelf-1 | agents: [Object], audiobookshelf-audiobookshelf-1 | auth: undefined, audiobookshelf-audiobookshelf-1 | hostname: 'books.google.com', audiobookshelf-audiobookshelf-1 | port: null, audiobookshelf-audiobookshelf-1 | nativeProtocols: [Object], audiobookshelf-audiobookshelf-1 | pathname: '/books/content', audiobookshelf-audiobookshelf-1 | search: '?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api' audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | _ended: true, audiobookshelf-audiobookshelf-1 | _ending: true, audiobookshelf-audiobookshelf-1 | _redirectCount: 0, audiobookshelf-audiobookshelf-1 | _redirects: [], audiobookshelf-audiobookshelf-1 | _requestBodyLength: 0, audiobookshelf-audiobookshelf-1 | _requestBodyBuffers: [], audiobookshelf-audiobookshelf-1 | _onNativeResponse: [Function (anonymous)], audiobookshelf-audiobookshelf-1 | _currentRequest: ClientRequest { audiobookshelf-audiobookshelf-1 | _events: [Object: null prototype], audiobookshelf-audiobookshelf-1 | _eventsCount: 7, audiobookshelf-audiobookshelf-1 | _maxListeners: undefined, audiobookshelf-audiobookshelf-1 | outputData: [], audiobookshelf-audiobookshelf-1 | outputSize: 0, audiobookshelf-audiobookshelf-1 | writable: true, audiobookshelf-audiobookshelf-1 | destroyed: false, audiobookshelf-audiobookshelf-1 | _last: true, audiobookshelf-audiobookshelf-1 | chunkedEncoding: false, audiobookshelf-audiobookshelf-1 | shouldKeepAlive: false, audiobookshelf-audiobookshelf-1 | maxRequestsOnConnectionReached: false, audiobookshelf-audiobookshelf-1 | _defaultKeepAlive: true, audiobookshelf-audiobookshelf-1 | useChunkedEncodingByDefault: false, audiobookshelf-audiobookshelf-1 | sendDate: false, audiobookshelf-audiobookshelf-1 | _removedConnection: false, audiobookshelf-audiobookshelf-1 | _removedContLen: false, audiobookshelf-audiobookshelf-1 | _removedTE: false, audiobookshelf-audiobookshelf-1 | strictContentLength: false, audiobookshelf-audiobookshelf-1 | _contentLength: 0, audiobookshelf-audiobookshelf-1 | _hasBody: true, audiobookshelf-audiobookshelf-1 | _trailer: '', audiobookshelf-audiobookshelf-1 | finished: true, audiobookshelf-audiobookshelf-1 | _headerSent: true, audiobookshelf-audiobookshelf-1 | _closed: false, audiobookshelf-audiobookshelf-1 | socket: [TLSSocket], audiobookshelf-audiobookshelf-1 | _header: 'GET /books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api HTTP/1.1\r\n' + audiobookshelf-audiobookshelf-1 | 'Accept: application/json, text/plain, */*\r\n' + audiobookshelf-audiobookshelf-1 | 'User-Agent: axios/0.27.2\r\n' + audiobookshelf-audiobookshelf-1 | 'Host: books.google.com\r\n' + audiobookshelf-audiobookshelf-1 | 'Connection: close\r\n' + audiobookshelf-audiobookshelf-1 | '\r\n', audiobookshelf-audiobookshelf-1 | _keepAliveTimeout: 0, audiobookshelf-audiobookshelf-1 | _onPendingData: [Function: nop], audiobookshelf-audiobookshelf-1 | agent: [Agent], audiobookshelf-audiobookshelf-1 | socketPath: undefined, audiobookshelf-audiobookshelf-1 | method: 'GET', audiobookshelf-audiobookshelf-1 | maxHeaderSize: undefined, audiobookshelf-audiobookshelf-1 | insecureHTTPParser: undefined, audiobookshelf-audiobookshelf-1 | path: '/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api', audiobookshelf-audiobookshelf-1 | _ended: false, audiobookshelf-audiobookshelf-1 | res: null, audiobookshelf-audiobookshelf-1 | aborted: false, audiobookshelf-audiobookshelf-1 | timeoutCb: null, audiobookshelf-audiobookshelf-1 | upgradeOrConnect: false, audiobookshelf-audiobookshelf-1 | parser: null, audiobookshelf-audiobookshelf-1 | maxHeadersCount: null, audiobookshelf-audiobookshelf-1 | reusedSocket: false, audiobookshelf-audiobookshelf-1 | host: 'books.google.com', audiobookshelf-audiobookshelf-1 | protocol: 'https:', audiobookshelf-audiobookshelf-1 | _redirectable: [Circular *1], audiobookshelf-audiobookshelf-1 | [Symbol(kCapture)]: false, audiobookshelf-audiobookshelf-1 | [Symbol(kBytesWritten)]: 0, audiobookshelf-audiobookshelf-1 | [Symbol(kEndCalled)]: true, audiobookshelf-audiobookshelf-1 | [Symbol(kNeedDrain)]: false, audiobookshelf-audiobookshelf-1 | [Symbol(corked)]: 0, audiobookshelf-audiobookshelf-1 | [Symbol(kOutHeaders)]: [Object: null prototype], audiobookshelf-audiobookshelf-1 | [Symbol(kUniqueHeaders)]: null audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | _currentUrl: 'https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api', audiobookshelf-audiobookshelf-1 | _timeout: null, audiobookshelf-audiobookshelf-1 | [Symbol(kCapture)]: false audiobookshelf-audiobookshelf-1 | } audiobookshelf-audiobookshelf-1 | } (fileUtils.js:221) audiobookshelf-audiobookshelf-1 | [2023-09-30 23:54:08] ERROR: [CoverManager] Download image file failed for "https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api" AxiosError: getaddrinfo ENOTFOUND books.google.com audiobookshelf-audiobookshelf-1 | at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:109:26) { audiobookshelf-audiobookshelf-1 | hostname: 'books.google.com', audiobookshelf-audiobookshelf-1 | syscall: 'getaddrinfo', audiobookshelf-audiobookshelf-1 | code: 'ENOTFOUND', audiobookshelf-audiobookshelf-1 | errno: -3007, audiobookshelf-audiobookshelf-1 | config: { audiobookshelf-audiobookshelf-1 | transitional: { audiobookshelf-audiobookshelf-1 | silentJSONParsing: true, audiobookshelf-audiobookshelf-1 | forcedJSONParsing: true, audiobookshelf-audiobookshelf-1 | clarifyTimeoutError: false audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | adapter: [Function: httpAdapter], audiobookshelf-audiobookshelf-1 | transformRequest: [ [Function: transformRequest] ], audiobookshelf-audiobookshelf-1 | transformResponse: [ [Function: transformResponse] ], audiobookshelf-audiobookshelf-1 | timeout: 30000, audiobookshelf-audiobookshelf-1 | xsrfCookieName: 'XSRF-TOKEN', audiobookshelf-audiobookshelf-1 | xsrfHeaderName: 'X-XSRF-TOKEN', audiobookshelf-audiobookshelf-1 | maxContentLength: -1, audiobookshelf-audiobookshelf-1 | maxBodyLength: -1, audiobookshelf-audiobookshelf-1 | env: { FormData: [Function] }, audiobookshelf-audiobookshelf-1 | validateStatus: [Function: validateStatus], audiobookshelf-audiobookshelf-1 | headers: { audiobookshelf-audiobookshelf-1 | Accept: 'application/json, text/plain, */*', audiobookshelf-audiobookshelf-1 | 'User-Agent': 'axios/0.27.2' audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | url: 'https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api', audiobookshelf-audiobookshelf-1 | method: 'get', audiobookshelf-audiobookshelf-1 | responseType: 'stream', audiobookshelf-audiobookshelf-1 | data: undefined audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | request: <ref *1> Writable { audiobookshelf-audiobookshelf-1 | _writableState: WritableState { audiobookshelf-audiobookshelf-1 | objectMode: false, audiobookshelf-audiobookshelf-1 | highWaterMark: 16384, audiobookshelf-audiobookshelf-1 | finalCalled: false, audiobookshelf-audiobookshelf-1 | needDrain: false, audiobookshelf-audiobookshelf-1 | ending: false, audiobookshelf-audiobookshelf-1 | ended: false, audiobookshelf-audiobookshelf-1 | finished: false, audiobookshelf-audiobookshelf-1 | destroyed: false, audiobookshelf-audiobookshelf-1 | decodeStrings: true, audiobookshelf-audiobookshelf-1 | defaultEncoding: 'utf8', audiobookshelf-audiobookshelf-1 | length: 0, audiobookshelf-audiobookshelf-1 | writing: false, audiobookshelf-audiobookshelf-1 | corked: 0, audiobookshelf-audiobookshelf-1 | sync: true, audiobookshelf-audiobookshelf-1 | bufferProcessing: false, audiobookshelf-audiobookshelf-1 | onwrite: [Function: bound onwrite], audiobookshelf-audiobookshelf-1 | writecb: null, audiobookshelf-audiobookshelf-1 | writelen: 0, audiobookshelf-audiobookshelf-1 | afterWriteTickInfo: null, audiobookshelf-audiobookshelf-1 | buffered: [], audiobookshelf-audiobookshelf-1 | bufferedIndex: 0, audiobookshelf-audiobookshelf-1 | allBuffers: true, audiobookshelf-audiobookshelf-1 | allNoop: true, audiobookshelf-audiobookshelf-1 | pendingcb: 0, audiobookshelf-audiobookshelf-1 | constructed: true, audiobookshelf-audiobookshelf-1 | prefinished: false, audiobookshelf-audiobookshelf-1 | errorEmitted: false, audiobookshelf-audiobookshelf-1 | emitClose: true, audiobookshelf-audiobookshelf-1 | autoDestroy: true, audiobookshelf-audiobookshelf-1 | errored: null, audiobookshelf-audiobookshelf-1 | closed: false, audiobookshelf-audiobookshelf-1 | closeEmitted: false, audiobookshelf-audiobookshelf-1 | [Symbol(kOnFinished)]: [] audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | _events: [Object: null prototype] { audiobookshelf-audiobookshelf-1 | response: [Function: handleResponse], audiobookshelf-audiobookshelf-1 | error: [Function: handleRequestError], audiobookshelf-audiobookshelf-1 | socket: [Array] audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | _eventsCount: 3, audiobookshelf-audiobookshelf-1 | _maxListeners: undefined, audiobookshelf-audiobookshelf-1 | _options: { audiobookshelf-audiobookshelf-1 | maxRedirects: 21, audiobookshelf-audiobookshelf-1 | maxBodyLength: 10485760, audiobookshelf-audiobookshelf-1 | protocol: 'https:', audiobookshelf-audiobookshelf-1 | path: '/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api', audiobookshelf-audiobookshelf-1 | method: 'GET', audiobookshelf-audiobookshelf-1 | headers: [Object], audiobookshelf-audiobookshelf-1 | agent: undefined, audiobookshelf-audiobookshelf-1 | agents: [Object], audiobookshelf-audiobookshelf-1 | auth: undefined, audiobookshelf-audiobookshelf-1 | hostname: 'books.google.com', audiobookshelf-audiobookshelf-1 | port: null, audiobookshelf-audiobookshelf-1 | nativeProtocols: [Object], audiobookshelf-audiobookshelf-1 | pathname: '/books/content', audiobookshelf-audiobookshelf-1 | search: '?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api' audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | _ended: true, audiobookshelf-audiobookshelf-1 | _ending: true, audiobookshelf-audiobookshelf-1 | _redirectCount: 0, audiobookshelf-audiobookshelf-1 | _redirects: [], audiobookshelf-audiobookshelf-1 | _requestBodyLength: 0, audiobookshelf-audiobookshelf-1 | _requestBodyBuffers: [], audiobookshelf-audiobookshelf-1 | _onNativeResponse: [Function (anonymous)], audiobookshelf-audiobookshelf-1 | _currentRequest: ClientRequest { audiobookshelf-audiobookshelf-1 | _events: [Object: null prototype], audiobookshelf-audiobookshelf-1 | _eventsCount: 7, audiobookshelf-audiobookshelf-1 | _maxListeners: undefined, audiobookshelf-audiobookshelf-1 | outputData: [], audiobookshelf-audiobookshelf-1 | outputSize: 0, audiobookshelf-audiobookshelf-1 | writable: true, audiobookshelf-audiobookshelf-1 | destroyed: false, audiobookshelf-audiobookshelf-1 | _last: true, audiobookshelf-audiobookshelf-1 | chunkedEncoding: false, audiobookshelf-audiobookshelf-1 | shouldKeepAlive: false, audiobookshelf-audiobookshelf-1 | maxRequestsOnConnectionReached: false, audiobookshelf-audiobookshelf-1 | _defaultKeepAlive: true, audiobookshelf-audiobookshelf-1 | useChunkedEncodingByDefault: false, audiobookshelf-audiobookshelf-1 | sendDate: false, audiobookshelf-audiobookshelf-1 | _removedConnection: false, audiobookshelf-audiobookshelf-1 | _removedContLen: false, audiobookshelf-audiobookshelf-1 | _removedTE: false, audiobookshelf-audiobookshelf-1 | strictContentLength: false, audiobookshelf-audiobookshelf-1 | _contentLength: 0, audiobookshelf-audiobookshelf-1 | _hasBody: true, audiobookshelf-audiobookshelf-1 | _trailer: '', audiobookshelf-audiobookshelf-1 | finished: true, audiobookshelf-audiobookshelf-1 | _headerSent: true, audiobookshelf-audiobookshelf-1 | _closed: false, audiobookshelf-audiobookshelf-1 | socket: [TLSSocket], audiobookshelf-audiobookshelf-1 | _header: 'GET /books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api HTTP/1.1\r\n' + audiobookshelf-audiobookshelf-1 | 'Accept: application/json, text/plain, */*\r\n' + audiobookshelf-audiobookshelf-1 | 'User-Agent: axios/0.27.2\r\n' + audiobookshelf-audiobookshelf-1 | 'Host: books.google.com\r\n' + audiobookshelf-audiobookshelf-1 | 'Connection: close\r\n' + audiobookshelf-audiobookshelf-1 | '\r\n', audiobookshelf-audiobookshelf-1 | _keepAliveTimeout: 0, audiobookshelf-audiobookshelf-1 | _onPendingData: [Function: nop], audiobookshelf-audiobookshelf-1 | agent: [Agent], audiobookshelf-audiobookshelf-1 | socketPath: undefined, audiobookshelf-audiobookshelf-1 | method: 'GET', audiobookshelf-audiobookshelf-1 | maxHeaderSize: undefined, audiobookshelf-audiobookshelf-1 | insecureHTTPParser: undefined, audiobookshelf-audiobookshelf-1 | path: '/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api', audiobookshelf-audiobookshelf-1 | _ended: false, audiobookshelf-audiobookshelf-1 | res: null, audiobookshelf-audiobookshelf-1 | aborted: false, audiobookshelf-audiobookshelf-1 | timeoutCb: null, audiobookshelf-audiobookshelf-1 | upgradeOrConnect: false, audiobookshelf-audiobookshelf-1 | parser: null, audiobookshelf-audiobookshelf-1 | maxHeadersCount: null, audiobookshelf-audiobookshelf-1 | reusedSocket: false, audiobookshelf-audiobookshelf-1 | host: 'books.google.com', audiobookshelf-audiobookshelf-1 | protocol: 'https:', audiobookshelf-audiobookshelf-1 | _redirectable: [Circular *1], audiobookshelf-audiobookshelf-1 | [Symbol(kCapture)]: false, audiobookshelf-audiobookshelf-1 | [Symbol(kBytesWritten)]: 0, audiobookshelf-audiobookshelf-1 | [Symbol(kEndCalled)]: true, audiobookshelf-audiobookshelf-1 | [Symbol(kNeedDrain)]: false, audiobookshelf-audiobookshelf-1 | [Symbol(corked)]: 0, audiobookshelf-audiobookshelf-1 | [Symbol(kOutHeaders)]: [Object: null prototype], audiobookshelf-audiobookshelf-1 | [Symbol(kUniqueHeaders)]: null audiobookshelf-audiobookshelf-1 | }, audiobookshelf-audiobookshelf-1 | _currentUrl: 'https://books.google.com/books/content?id=qaKkenvL29UC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api', audiobookshelf-audiobookshelf-1 | _timeout: null, audiobookshelf-audiobookshelf-1 | [Symbol(kCapture)]: false audiobookshelf-audiobookshelf-1 | } audiobookshelf-audiobookshelf-1 | } (CoverManager.js:288) audiobookshelf-audiobookshelf-1 | /server/scanner/BookScanner.js:1114 audiobookshelf-audiobookshelf-1 | Logger.error(`[Scanner] Failed to download cover from url "${results[i]}" | Attempt ${i + 1}`, result.error) audiobookshelf-audiobookshelf-1 | ^ audiobookshelf-audiobookshelf-1 | audiobookshelf-audiobookshelf-1 | ReferenceError: Logger is not defined audiobookshelf-audiobookshelf-1 | at BookScanner.searchForCover (/server/scanner/BookScanner.js:1114:11) audiobookshelf-audiobookshelf-1 | at runMicrotasks (<anonymous>) audiobookshelf-audiobookshelf-1 | at processTicksAndRejections (node:internal/process/task_queues:96:5) audiobookshelf-audiobookshelf-1 | at async BookScanner.scanNewBookLibraryItem (/server/scanner/BookScanner.js:469:32) audiobookshelf-audiobookshelf-1 | at async LibraryItemScanner.scanNewLibraryItem (/server/scanner/LibraryItemScanner.js:181:24) audiobookshelf-audiobookshelf-1 | at async LibraryScanner.scanFolderUpdates (/server/scanner/LibraryScanner.js:517:30) audiobookshelf-audiobookshelf-1 | at async LibraryScanner.scanFilesChanged (/server/scanner/LibraryScanner.js:346:33) ``` ### Steps to reproduce the issue 1. start uploading 5 books at once using the upload folder function 2. go to bed 3. wake up to audiobookshelf being dead ### Audiobookshelf version v2.4.4 ### How are you running audiobookshelf? Docker
adam added the bug label 2026-04-24 23:45:08 +02:00
adam closed this issue 2026-04-24 23:45:08 +02:00
Author
Owner

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

Fixed in v2.5.0

@advplyr commented on GitHub (Oct 29, 2023): Fixed in [v2.5.0](https://github.com/advplyr/audiobookshelf/releases/tag/v2.5.0)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#1428