Skip to content

Metadata extration doesnt work affert delete a photo and upload again with different name #26288

Description

@jotero185

I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.

  • Yes

The bug

Metadata extration doenst work if you detele the same photo before.

Its something that i ussualy do and it works until now

The OS that Immich Server is running on

irrelevant

Version of Immich Server

v2.5.6

Version of Immich Mobile App

irrelevant

Platform with the issue

  • Server
  • Web
  • Mobile

Device make and model

No response

Your docker-compose.yml content

irrelevant

Your .env content

irrelevant

Reproduction steps

  1. Download the photo from the server
  2. Delete the photon the server
  3. Rename the photo
  4. Upload the photo to the server
    ...

Relevant log output

[Nest] 7  - 02/17/2026, 12:45:02 PM    WARN [Microservices:MetadataRepository] Error reading exif data (/usr/src/app/upload/library/admin/2026/2026-02-16/PXL_20260216_214505150.jpg): Error: timeout: waited 120000ms
waited 120000ms
    at #onTimeout (/usr/src/app/server/node_modules/.pnpm/batch-cluster@16.0.0/node_modules/batch-cluster/dist/BatchProcess.js:309:38)
    at Timeout._onTimeout (/usr/src/app/server/node_modules/.pnpm/batch-cluster@16.0.0/node_modules/batch-cluster/dist/BatchProcess.js:230:94)
    at listOnTimeout (node:internal/timers:605:17)
    at process.processTimers (node:internal/timers:541:7)
Query failed : {
  durationMs: 50.76878399960697,
  error: PostgresError: insert or update on table "asset_exif" violates foreign key constraint "asset_exif_assetId_fkey"
      at ErrorResponse (/usr/src/app/server/node_modules/.pnpm/postgres@3.4.8/node_modules/postgres/cjs/src/connection.js:815:30)
      at handle (/usr/src/app/server/node_modules/.pnpm/postgres@3.4.8/node_modules/postgres/cjs/src/connection.js:489:6)
      at Socket.data (/usr/src/app/server/node_modules/.pnpm/postgres@3.4.8/node_modules/postgres/cjs/src/connection.js:324:9)
      at Socket.emit (node:events:508:28)
      at addChunk (node:internal/streams/readable:559:12)
      at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
      at Readable.push (node:internal/streams/readable:390:5)
      at TCP.onStreamRead (node:internal/stream_base_commons:189:23) {
    severity_local: 'ERROR',
    severity: 'ERROR',
    code: '23503',
    detail: 'Key (assetId)=(f4ad6207-7e8c-4758-9f56-7e1f27ac7c1a) is not present in table "asset".',
    schema_name: 'public',
    table_name: 'asset_exif',
    constraint_name: 'asset_exif_assetId_fkey',
    file: 'ri_triggers.c',
    line: '2528',
    routine: 'ri_ReportViolation'
  },
  sql: 'insert into "asset_exif" ("assetId", "dateTimeOriginal", "modifyDate", "timeZone", "latitude", "longitude", "country", "state", "city", "fileSizeInByte", "exifImageHeight", "exifImageWidth", "orientation", "projectionType", "bitsPerSample", "colorspace", "make", "model", "fps", "iso", "exposureTime", "lensModel", "fNumber", "focalLength", "description", "profileDescription", "rating", "livePhotoCID", "autoStackId", "tags") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30) on conflict ("assetId") do update set "description" = case when $31 = any("asset_exif"."lockedProperties") then "asset_exif"."description" else "excluded"."description" end, "exifImageWidth" = case when $32 = any("asset_exif"."lockedProperties") then "asset_exif"."exifImageWidth" else "excluded"."exifImageWidth" end, "exifImageHeight" = case when $33 = any("asset_exif"."lockedProperties") then "asset_exif"."exifImageHeight" else "excluded"."exifImageHeight" end, "fileSizeInByte" = case when $34 = any("asset_exif"."lockedProperties") then "asset_exif"."fileSizeInByte" else "excluded"."fileSizeInByte" end, "orientation" = case when $35 = any("asset_exif"."lockedProperties") then "asset_exif"."orientation" else "excluded"."orientation" end, "dateTimeOriginal" = case when $36 = any("asset_exif"."lockedProperties") then "asset_exif"."dateTimeOriginal" else "excluded"."dateTimeOriginal" end, "modifyDate" = case when $37 = any("asset_exif"."lockedProperties") then "asset_exif"."modifyDate" else "excluded"."modifyDate" end, "timeZone" = case when $38 = any("asset_exif"."lockedProperties") then "asset_exif"."timeZone" else "excluded"."timeZone" end, "latitude" = case when $39 = any("asset_exif"."lockedProperties") then "asset_exif"."latitude" else "excluded"."latitude" end, "longitude" = case when $40 = any("asset_exif"."lockedProperties") then "asset_exif"."longitude" else "excluded"."longitude" end, "projectionType" = case when $41 = any("asset_exif"."lockedProperties") then "asset_exif"."projectionType" else "excluded"."projectionType" end, "city" = case when $42 = any("asset_exif"."lockedProperties") then "asset_exif"."city" else "excluded"."city" end, "livePhotoCID" = case when $43 = any("asset_exif"."lockedProperties") then "asset_exif"."livePhotoCID" else "excluded"."livePhotoCID" end, "autoStackId" = case when $44 = any("asset_exif"."lockedProperties") then "asset_exif"."autoStackId" else "excluded"."autoStackId" end, "state" = case when $45 = any("asset_exif"."lockedProperties") then "asset_exif"."state" else "excluded"."state" end, "country" = case when $46 = any("asset_exif"."lockedProperties") then "asset_exif"."country" else "excluded"."country" end, "make" = case when $47 = any("asset_exif"."lockedProperties") then "asset_exif"."make" else "excluded"."make" end, "model" = case when $48 = any("asset_exif"."lockedProperties") then "asset_exif"."model" else "excluded"."model" end, "lensModel" = case when $49 = any("asset_exif"."lockedProperties") then "asset_exif"."lensModel" else "excluded"."lensModel" end, "fNumber" = case when $50 = any("asset_exif"."lockedProperties") then "asset_exif"."fNumber" else "excluded"."fNumber" end, "focalLength" = case when $51 = any("asset_exif"."lockedProperties") then "asset_exif"."focalLength" else "excluded"."focalLength" end, "iso" = case when $52 = any("asset_exif"."lockedProperties") then "asset_exif"."iso" else "excluded"."iso" end, "exposureTime" = case when $53 = any("asset_exif"."lockedProperties") then "asset_exif"."exposureTime" else "excluded"."exposureTime" end, "profileDescription" = case when $54 = any("asset_exif"."lockedProperties") then "asset_exif"."profileDescription" else "excluded"."profileDescription" end, "colorspace" = case when $55 = any("asset_exif"."lockedProperties") then "asset_exif"."colorspace" else "excluded"."colorspace" end, "bitsPerSample" = case when $56 = any("asset_exif"."lockedProperties") then "asset_exif"."bitsPerSample" else "excluded"."bitsPerSample" end, "rating" = case when $57 = any("asset_exif"."lockedProperties") then "asset_exif"."rating" else "excluded"."rating" end, "fps" = case when $58 = any("asset_exif"."lockedProperties") then "asset_exif"."fps" else "excluded"."fps" end, "tags" = case when $59 = any("asset_exif"."lockedProperties") then "asset_exif"."tags" else "excluded"."tags" end',
  params: [
    'f4ad6207-7e8c-4758-9f56-7e1f27ac7c1a',
    2026-02-16T21:45:05.000Z,
    2026-02-17T09:21:42.000Z,
    null,
    null,
    null,
    null,
    null,
    null,
    2504841,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    '',
    null,
    null,
    null,
    null,
    null,
    'description',
    'exifImageWidth',
    'exifImageHeight',
    'fileSizeInByte',
    'orientation',
    'dateTimeOriginal',
    'modifyDate',
    'timeZone',
    'latitude',
    'longitude',
    'projectionType',
    'city',
    'livePhotoCID',
    'autoStackId',
    'state',
    'country',
    'make',
    'model',
    'lensModel',
    'fNumber',
    'focalLength',
    'iso',
    'exposureTime',
    'profileDescription',
    'colorspace',
    'bitsPerSample',
    'rating',
    'fps',
    'tags'
  ]
}
[Nest] 7  - 02/17/2026, 12:45:02 PM   ERROR [Microservices:{"id":"f4ad6207-7e8c-4758-9f56-7e1f27ac7c1a"}] Unable to run job handler (AssetExtractMetadata): PostgresError: insert or update on table "asset_exif" violates foreign key constraint "asset_exif_assetId_fkey"
PostgresError: insert or update on table "asset_exif" violates foreign key constraint "asset_exif_assetId_fkey"
    at ErrorResponse (/usr/src/app/server/node_modules/.pnpm/postgres@3.4.8/node_modules/postgres/cjs/src/connection.js:815:30)
    at handle (/usr/src/app/server/node_modules/.pnpm/postgres@3.4.8/node_modules/postgres/cjs/src/connection.js:489:6)
    at Socket.data (/usr/src/app/server/node_modules/.pnpm/postgres@3.4.8/node_modules/postgres/cjs/src/connection.js:324:9)
    at Socket.emit (node:events:508:28)
    at addChunk (node:internal/streams/readable:559:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
    at Readable.push (node:internal/streams/readable:390:5)
    at TCP.onStreamRead (node:internal/stream_base_commons:189:23)
[Nest] 7  - 02/17/2026, 12:45:48 PM     LOG [Microservices:PersonService] Detected 1 new faces in asset a95bb0ea-31fc-44d0-9c5e-1fb97b867117
[Nest] 23  - 02/17/2026, 12:45:48 PM     LOG [Api:WebsocketRepository] Websocket Connect:    QpApYxvATpWMcVPQAACR
[Nest] 7  - 02/17/2026, 12:47:56 PM    WARN [Microservices:MetadataRepository] Error reading exif data (/usr/src/app/upload/upload/c0d7f74f-f4e0-4695-be64-f4ef46db9309/3a/45/3a4548ef-6f99-45d9-87d2-c2603011fbdb.jpg): Error: timeout: waited 120000ms
waited 120000ms
    at #onTimeout (/usr/src/app/server/node_modules/.pnpm/batch-cluster@16.0.0/node_modules/batch-cluster/dist/BatchProcess.js:309:38)
    at Timeout._onTimeout (/usr/src/app/server/node_modules/.pnpm/batch-cluster@16.0.0/node_modules/batch-cluster/dist/BatchProcess.js:230:94)
    at listOnTimeout (node:internal/timers:605:17)
    at process.processTimers (node:internal/timers:541:7)
[Nest] 7  - 02/17/2026, 12:48:13 PM    WARN [Microservices:MetadataRepository] Error reading exif data (/usr/src/app/upload/upload/c0d7f74f-f4e0-4695-be64-f4ef46db9309/3a/45/3a4548ef-6f99-45d9-87d2-c2603011fbdb.jpg): Error: timeout: waited 120000ms
waited 120000ms
    at #onTimeout (/usr/src/app/server/node_modules/.pnpm/batch-cluster@16.0.0/node_modules/batch-cluster/dist/BatchProcess.js:309:38)
    at Timeout._onTimeout (/usr/src/app/server/node_modules/.pnpm/batch-cluster@16.0.0/node_modules/batch-cluster/dist/BatchProcess.js:230:94)
    at listOnTimeout (node:internal/timers:605:17)
    at process.processTimers (node:internal/timers:541:7)
[Nest] 7  - 02/17/2026, 12:48:25 PM    WARN [Microservices:MetadataRepository] Error reading exif data (/usr/src/app/upload/upload/c0d7f74f-f4e0-4695-be64-f4ef46db9309/3a/45/3a4548ef-6f99-45d9-87d2-c2603011fbdb.jpg): Error: File not found - /usr/src/app/upload/upload/c0d7f74f-f4e0-4695-be64-f4ef46db9309/3a/45/3a4548ef-6f99-45d9-87d2-c2603011fbdb.jpg
Error: File not found - /usr/src/app/upload/upload/c0d7f74f-f4e0-4695-be64-f4ef46db9309/3a/45/3a4548ef-6f99-45d9-87d2-c2603011fbdb.jpg
    at #parser (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@34.3.0/node_modules/exiftool-vendored/dist/ExifToolTask.js:79:31)
    at ReadTask.parser (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@34.3.0/node_modules/exiftool-vendored/dist/ExifToolTask.js:55:98)
    at #resolve (/usr/src/app/server/node_modules/.pnpm/batch-cluster@16.0.0/node_modules/batch-cluster/dist/Task.js:122:44)
[Nest] 7  - 02/17/2026, 12:48:26 PM     LOG [Microservices:PersonService] Detected 3 new faces in asset 86a8f333-3404-4f7d-b0ba-1eb5953256a7
[Nest] 23  - 02/17/2026, 12:49:04 PM     LOG [Api:WebsocketRepository] Websocket Connect:    cyDNltAiGvTZEwHjAACT
[Nest] 23  - 02/17/2026, 12:51:53 PM     LOG [Api:WebsocketRepository] Websocket Disconnect: cyDNltAiGvTZEwHjAACT
[Nest] 7  - 02/17/2026, 12:52:38 PM    WARN [Microservices:MetadataRepository] Error reading exif data (/usr/src/app/upload/library/admin/2026/2026-02-17/PXL_20260216_214505150.fiesta-de-carnaval-en-el-sector7.jpg): Error: timeout: waited 120000ms
waited 120000ms
    at #onTimeout (/usr/src/app/server/node_modules/.pnpm/batch-cluster@16.0.0/node_modules/batch-cluster/dist/BatchProcess.js:309:38)
    at Timeout._onTimeout (/usr/src/app/server/node_modules/.pnpm/batch-cluster@16.0.0/node_modules/batch-cluster/dist/BatchProcess.js:230:94)
    at listOnTimeout (node:internal/timers:605:17)
    at process.processTimers (node:internal/timers:541:7)

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions