Upgrading from 1.97.0 to 1.98.2 gives me: overlaps with invalid duplicate tuple at offset errors at startup. #2550

Closed
opened 2026-02-05 06:11:36 +03:00 by OVERLORD · 0 comments
Owner

Originally created by @florihupf on GitHub (Mar 12, 2024).

The bug

Hi there,

upgrading from 1.97.0 to 1.98.2 gives me errors like:

immich_microservices     | [Nest] 7  - 03/12/2024, 6:17:42 AM     LOG [CommunicationRepository] Initialized websocket server
immich_server            | [Nest] 7  - 03/12/2024, 6:17:42 AM     LOG [CommunicationRepository] Initialized websocket server
immich_postgres          | 2024-03-12 06:17:43.099 UTC [100] ERROR:  canceling autovacuum task
immich_postgres          | 2024-03-12 06:17:43.099 UTC [100] CONTEXT:  while vacuuming index "IDX_month" of relation "public.assets"
immich_postgres          |      automatic vacuum of table "immich.public.assets"
immich_postgres          | 2024-03-12 06:17:44.072 UTC [105] ERROR:  table tid from new index tuple (1976,14) overlaps with invalid duplicate tuple at offset 46 of block 1746 in index "IDX_originalPath_libraryId"
immich_postgres          | 2024-03-12 06:17:44.072 UTC [105] STATEMENT:
immich_postgres          |            WITH extension AS (WITH cte AS (SELECT a.id, STRING_TO_ARRAY(a."originalPath", '.')::TEXT[] AS arr
immich_postgres          |            FROM assets a)
immich_postgres          |            SELECT cte.id, cte.arr[ARRAY_UPPER(cte.arr, 1)] AS "ext"
immich_postgres          |            FROM cte)
immich_postgres          |            UPDATE assets
immich_postgres          |            SET "originalFileName" = assets."originalFileName" || '.' || extension."ext"
immich_postgres          |            FROM extension
immich_postgres          |            WHERE assets.id = extension.id;
immich_postgres          |
immich_microservices     | Migration "AddExtensionToOriginalFileName1709763765506" failed, error: table tid from new index tuple (1976,14) overlaps with invalid duplicate tuple at offset 46 of block 1746 in index "IDX_originalPath_libraryId"
immich_microservices     | /usr/src/app/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:219
immich_microservices     |             throw new QueryFailedError_1.QueryFailedError(query, parameters, err);
immich_microservices     |                   ^
immich_microservices     |
immich_microservices     | QueryFailedError: table tid from new index tuple (1976,14) overlaps with invalid duplicate tuple at offset 46 of block 1746 in index "IDX_originalPath_libraryId"
immich_microservices     |     at PostgresQueryRunner.query (/usr/src/app/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:219:19)
immich_microservices     |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
immich_microservices     |     at async AddExtensionToOriginalFileName1709763765506.up (/usr/src/app/dist/infra/migrations/1709763765506-AddExtensionToOriginalFileName.js:6:9)
immich_microservices     |     at async MigrationExecutor.executePendingMigrations (/usr/src/app/node_modules/typeorm/migration/MigrationExecutor.js:225:17)
immich_microservices     |     at async DataSource.runMigrations (/usr/src/app/node_modules/typeorm/data-source/DataSource.js:265:35)
immich_microservices     |     at async DatabaseRepository.runMigrations (/usr/src/app/dist/infra/repositories/database.repository.js:177:9)
immich_microservices     |     at async /usr/src/app/dist/domain/database/database.service.js:52:13
immich_microservices     |     at async /usr/src/app/dist/infra/repositories/database.repository.js:185:23 {
immich_microservices     |   query: '\n' +
immich_microservices     |     `      WITH extension AS (WITH cte AS (SELECT a.id, STRING_TO_ARRAY(a."originalPath", '.')::TEXT[] AS arr\n` +
immich_microservices     |     '      FROM assets a)\n' +
immich_microservices     |     '      SELECT cte.id, cte.arr[ARRAY_UPPER(cte.arr, 1)] AS "ext"\n' +
immich_microservices     |     '      FROM cte)\n' +
immich_microservices     |     '      UPDATE assets\n' +
immich_microservices     |     `      SET "originalFileName" = assets."originalFileName" || '.' || extension."ext"\n` +
immich_microservices     |     '      FROM extension\n' +
immich_microservices     |     '      WHERE assets.id = extension.id;\n' +
immich_microservices     |     '      ',
immich_microservices     |   parameters: undefined,
immich_microservices     |   driverError: error: table tid from new index tuple (1976,14) overlaps with invalid duplicate tuple at offset 46 of block 1746 in index "IDX_originalPath_libraryId"
immich_microservices     |       at /usr/src/app/node_modules/pg/lib/client.js:526:17
immich_microservices     |       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
immich_microservices     |       at async PostgresQueryRunner.query (/usr/src/app/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:184:25)
immich_microservices     |       at async AddExtensionToOriginalFileName1709763765506.up (/usr/src/app/dist/infra/migrations/1709763765506-AddExtensionToOriginalFileName.js:6:9)
immich_microservices     |       at async MigrationExecutor.executePendingMigrations (/usr/src/app/node_modules/typeorm/migration/MigrationExecutor.js:225:17)
immich_microservices     |       at async DataSource.runMigrations (/usr/src/app/node_modules/typeorm/data-source/DataSource.js:265:35)
immich_microservices     |       at async DatabaseRepository.runMigrations (/usr/src/app/dist/infra/repositories/database.repository.js:177:9)
immich_microservices     |       at async /usr/src/app/dist/domain/database/database.service.js:52:13
immich_microservices     |       at async /usr/src/app/dist/infra/repositories/database.repository.js:185:23 {
immich_microservices     |     length: 206,
immich_microservices     |     severity: 'ERROR',
immich_microservices     |     code: 'XX002',
immich_microservices     |     detail: undefined,
immich_microservices     |     hint: undefined,
immich_microservices     |     position: undefined,
immich_microservices     |     internalPosition: undefined,
immich_microservices     |     internalQuery: undefined,
immich_microservices     |     where: undefined,
immich_microservices     |     schema: undefined,
immich_microservices     |     table: undefined,
immich_microservices     |     column: undefined,
immich_microservices     |     dataType: undefined,
immich_microservices     |     constraint: undefined,
immich_microservices     |     file: 'nbtinsert.c',
immich_microservices     |     line: '1182',
immich_microservices     |     routine: '_bt_insertonpg'
immich_microservices     |   },
immich_microservices     |   length: 206,
immich_microservices     |   severity: 'ERROR',
immich_microservices     |   code: 'XX002',
immich_microservices     |   detail: undefined,
immich_microservices     |   hint: undefined,
immich_microservices     |   position: undefined,
immich_microservices     |   internalPosition: undefined,
immich_microservices     |   internalQuery: undefined,
immich_microservices     |   where: undefined,
immich_microservices     |   schema: undefined,
immich_microservices     |   table: undefined,
immich_microservices     |   column: undefined,
immich_microservices     |   dataType: undefined,
immich_microservices     |   constraint: undefined,
immich_microservices     |   file: 'nbtinsert.c',
immich_microservices     |   line: '1182',
immich_microservices     |   routine: '_bt_insertonpg'
immich_microservices     | }
immich_microservices     |
immich_microservices     | Node.js v20.11.1

The OS that Immich Server is running on

Debian

Version of Immich Server

1.98.2

Version of Immich Mobile App

1.98.2

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

stock

Your .env content

stock

Reproduction steps

1. Stop running instance.
2. Upgrade to 1.98.2 from 1.97.0
3. Restart server via docker compose.

Additional information

This instance has been upgraded via the last 20-30 releases or so and had > 100k assets.

Not sure if that is important.

Let me know if there is anything else I can provide.

Also: It is super great that I can just downgrade to 1.97.0 again and things work! Thank you so much!

Originally created by @florihupf on GitHub (Mar 12, 2024). ### The bug Hi there, upgrading from 1.97.0 to 1.98.2 gives me errors like: ``` immich_microservices | [Nest] 7 - 03/12/2024, 6:17:42 AM LOG [CommunicationRepository] Initialized websocket server immich_server | [Nest] 7 - 03/12/2024, 6:17:42 AM LOG [CommunicationRepository] Initialized websocket server immich_postgres | 2024-03-12 06:17:43.099 UTC [100] ERROR: canceling autovacuum task immich_postgres | 2024-03-12 06:17:43.099 UTC [100] CONTEXT: while vacuuming index "IDX_month" of relation "public.assets" immich_postgres | automatic vacuum of table "immich.public.assets" immich_postgres | 2024-03-12 06:17:44.072 UTC [105] ERROR: table tid from new index tuple (1976,14) overlaps with invalid duplicate tuple at offset 46 of block 1746 in index "IDX_originalPath_libraryId" immich_postgres | 2024-03-12 06:17:44.072 UTC [105] STATEMENT: immich_postgres | WITH extension AS (WITH cte AS (SELECT a.id, STRING_TO_ARRAY(a."originalPath", '.')::TEXT[] AS arr immich_postgres | FROM assets a) immich_postgres | SELECT cte.id, cte.arr[ARRAY_UPPER(cte.arr, 1)] AS "ext" immich_postgres | FROM cte) immich_postgres | UPDATE assets immich_postgres | SET "originalFileName" = assets."originalFileName" || '.' || extension."ext" immich_postgres | FROM extension immich_postgres | WHERE assets.id = extension.id; immich_postgres | immich_microservices | Migration "AddExtensionToOriginalFileName1709763765506" failed, error: table tid from new index tuple (1976,14) overlaps with invalid duplicate tuple at offset 46 of block 1746 in index "IDX_originalPath_libraryId" immich_microservices | /usr/src/app/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:219 immich_microservices | throw new QueryFailedError_1.QueryFailedError(query, parameters, err); immich_microservices | ^ immich_microservices | immich_microservices | QueryFailedError: table tid from new index tuple (1976,14) overlaps with invalid duplicate tuple at offset 46 of block 1746 in index "IDX_originalPath_libraryId" immich_microservices | at PostgresQueryRunner.query (/usr/src/app/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:219:19) immich_microservices | at process.processTicksAndRejections (node:internal/process/task_queues:95:5) immich_microservices | at async AddExtensionToOriginalFileName1709763765506.up (/usr/src/app/dist/infra/migrations/1709763765506-AddExtensionToOriginalFileName.js:6:9) immich_microservices | at async MigrationExecutor.executePendingMigrations (/usr/src/app/node_modules/typeorm/migration/MigrationExecutor.js:225:17) immich_microservices | at async DataSource.runMigrations (/usr/src/app/node_modules/typeorm/data-source/DataSource.js:265:35) immich_microservices | at async DatabaseRepository.runMigrations (/usr/src/app/dist/infra/repositories/database.repository.js:177:9) immich_microservices | at async /usr/src/app/dist/domain/database/database.service.js:52:13 immich_microservices | at async /usr/src/app/dist/infra/repositories/database.repository.js:185:23 { immich_microservices | query: '\n' + immich_microservices | ` WITH extension AS (WITH cte AS (SELECT a.id, STRING_TO_ARRAY(a."originalPath", '.')::TEXT[] AS arr\n` + immich_microservices | ' FROM assets a)\n' + immich_microservices | ' SELECT cte.id, cte.arr[ARRAY_UPPER(cte.arr, 1)] AS "ext"\n' + immich_microservices | ' FROM cte)\n' + immich_microservices | ' UPDATE assets\n' + immich_microservices | ` SET "originalFileName" = assets."originalFileName" || '.' || extension."ext"\n` + immich_microservices | ' FROM extension\n' + immich_microservices | ' WHERE assets.id = extension.id;\n' + immich_microservices | ' ', immich_microservices | parameters: undefined, immich_microservices | driverError: error: table tid from new index tuple (1976,14) overlaps with invalid duplicate tuple at offset 46 of block 1746 in index "IDX_originalPath_libraryId" immich_microservices | at /usr/src/app/node_modules/pg/lib/client.js:526:17 immich_microservices | at process.processTicksAndRejections (node:internal/process/task_queues:95:5) immich_microservices | at async PostgresQueryRunner.query (/usr/src/app/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:184:25) immich_microservices | at async AddExtensionToOriginalFileName1709763765506.up (/usr/src/app/dist/infra/migrations/1709763765506-AddExtensionToOriginalFileName.js:6:9) immich_microservices | at async MigrationExecutor.executePendingMigrations (/usr/src/app/node_modules/typeorm/migration/MigrationExecutor.js:225:17) immich_microservices | at async DataSource.runMigrations (/usr/src/app/node_modules/typeorm/data-source/DataSource.js:265:35) immich_microservices | at async DatabaseRepository.runMigrations (/usr/src/app/dist/infra/repositories/database.repository.js:177:9) immich_microservices | at async /usr/src/app/dist/domain/database/database.service.js:52:13 immich_microservices | at async /usr/src/app/dist/infra/repositories/database.repository.js:185:23 { immich_microservices | length: 206, immich_microservices | severity: 'ERROR', immich_microservices | code: 'XX002', immich_microservices | detail: undefined, immich_microservices | hint: undefined, immich_microservices | position: undefined, immich_microservices | internalPosition: undefined, immich_microservices | internalQuery: undefined, immich_microservices | where: undefined, immich_microservices | schema: undefined, immich_microservices | table: undefined, immich_microservices | column: undefined, immich_microservices | dataType: undefined, immich_microservices | constraint: undefined, immich_microservices | file: 'nbtinsert.c', immich_microservices | line: '1182', immich_microservices | routine: '_bt_insertonpg' immich_microservices | }, immich_microservices | length: 206, immich_microservices | severity: 'ERROR', immich_microservices | code: 'XX002', immich_microservices | detail: undefined, immich_microservices | hint: undefined, immich_microservices | position: undefined, immich_microservices | internalPosition: undefined, immich_microservices | internalQuery: undefined, immich_microservices | where: undefined, immich_microservices | schema: undefined, immich_microservices | table: undefined, immich_microservices | column: undefined, immich_microservices | dataType: undefined, immich_microservices | constraint: undefined, immich_microservices | file: 'nbtinsert.c', immich_microservices | line: '1182', immich_microservices | routine: '_bt_insertonpg' immich_microservices | } immich_microservices | immich_microservices | Node.js v20.11.1 ``` ### The OS that Immich Server is running on Debian ### Version of Immich Server 1.98.2 ### Version of Immich Mobile App 1.98.2 ### Platform with the issue - [X] Server - [ ] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML stock ``` ### Your .env content ```Shell stock ``` ### Reproduction steps ```bash 1. Stop running instance. 2. Upgrade to 1.98.2 from 1.97.0 3. Restart server via docker compose. ``` ### Additional information This instance has been upgraded via the last 20-30 releases or so and had > 100k assets. Not sure if that is important. Let me know if there is anything else I can provide. Also: It is super great that I can just downgrade to 1.97.0 again and things work! Thank you so much!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#2550