Failed to change Date/Time on video #4354

Closed
opened 2026-02-05 10:13:20 +03:00 by OVERLORD · 1 comment
Owner

Originally created by @IAmMadfly on GitHub (Sep 17, 2024).

The bug

When attempting to change the date on a video (it seemed to fail to extract the Date information from the video earlier), then changing the date on the video causes this error on the Server.

The OS that Immich Server is running on

Ubuntu 24.04 LTS

Version of Immich Server

v1.115.0

Version of Immich Mobile App

v1.115.0

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#

name: personal

services:
  immich-server:
    container_name: personal_immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    # extends:
    #   file: hwaccel.transcoding.yml
    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

  immich-machine-learning:
    container_name: personal_immich_machine_learning
    hostname: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
    #   file: hwaccel.ml.yml
    #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always

  redis:
    container_name: personal_immich_redis
    hostname: immich_redis
    image: docker.io/redis:6.2-alpine@sha256:d6c2911ac51b289db208767581a5d154544f2b2fe4914ea5056443f62dc6e900
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  database:
    container_name: personal_immich_postgres
    hostname: immich_postgres
    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    healthcheck:
      test: pg_isready --dbname='${DB_DATABASE_NAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
      interval: 5m
      start_interval: 30s
      start_period: 5m
    command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
    restart: always

volumes:
  model-cache:

Your .env content

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/NAS/ImmichPersonal
# The location where your database files are stored
DB_DATA_LOCATION=/extra/postgres_data/personal

# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=postgres

# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

IMMICH_LOG_LEVEL=debug

Reproduction steps

  1. Upload video (if sample video is required to test, please message me)
  2. Once Jobs complete, attempt to change date
  3. Witness the date on video has not changed

Relevant log output

[Nest] 17  - 09/17/2024, 1:12:25 AM   DEBUG [Api:LoggingInterceptor~na9oql8d] PUT /api/assets/a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f 200 17.78ms 192.168.0.89
personal_immich_server            | [Nest] 7  - 09/17/2024, 1:12:26 AM   DEBUG [Microservices:MetadataService] Asset a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f date time is 2024-08-24T17:48:00.000+10:00
personal_immich_server            | [Nest] 7  - 09/17/2024, 1:12:26 AM   ERROR [Microservices:JobService] Unable to run job handler (metadataExtraction/metadata-extraction): TypeError: exifTags.ModifyDate?.toDate is not a function
personal_immich_server            | [Nest] 7  - 09/17/2024, 1:12:26 AM   DEBUG [Microservices:MetadataService] Asset a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f timezone is UTC+10 (via DateTimeOriginal)
personal_immich_server            | [Nest] 7  - 09/17/2024, 1:12:26 AM   DEBUG [Microservices:MetadataService] Asset a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f local time is offset by 600 minutes
personal_immich_server            | [Nest] 7  - 09/17/2024, 1:12:26 AM   ERROR [Microservices:JobService] TypeError: exifTags.ModifyDate?.toDate is not a function
personal_immich_server            |     at MetadataService.getDates (/usr/src/app/dist/services/metadata.service.js:508:46)
personal_immich_server            |     at MetadataService.handleMetadataExtraction (/usr/src/app/dist/services/metadata.service.js:194:80)
personal_immich_server            |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
personal_immich_server            |     at async /usr/src/app/dist/services/job.service.js:148:36
personal_immich_server            |     at async Worker.processJob (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:394:28)
personal_immich_server            |     at async Worker.retryIfFailed (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:581:24)
personal_immich_server            | [Nest] 7  - 09/17/2024, 1:12:26 AM   ERROR [Microservices:JobService] Object:
personal_immich_server            | {
personal_immich_server            |   "id": "a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f",
personal_immich_server            |   "source": "sidecar-write"
personal_immich_server            | }
personal_immich_server            |

Additional information

Video file was downloaded from Google Photos and reuploaded into Immich server

Originally created by @IAmMadfly on GitHub (Sep 17, 2024). ### The bug When attempting to change the date on a video (it seemed to fail to extract the Date information from the video earlier), then changing the date on the video causes this error on the Server. ### The OS that Immich Server is running on Ubuntu 24.04 LTS ### Version of Immich Server v1.115.0 ### Version of Immich Mobile App v1.115.0 ### Platform with the issue - [X] Server - [X] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML # # WARNING: Make sure to use the docker-compose.yml of the current release: # # https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml # # The compose file on main may not be compatible with the latest release. # name: personal services: immich-server: container_name: personal_immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} # extends: # file: hwaccel.transcoding.yml # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro env_file: - .env ports: - 2283:3001 depends_on: - redis - database restart: always immich-machine-learning: container_name: personal_immich_machine_learning hostname: immich_machine_learning # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag. # Example tag: ${IMMICH_VERSION:-release}-cuda image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration # file: hwaccel.ml.yml # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable volumes: - model-cache:/cache env_file: - .env restart: always redis: container_name: personal_immich_redis hostname: immich_redis image: docker.io/redis:6.2-alpine@sha256:d6c2911ac51b289db208767581a5d154544f2b2fe4914ea5056443f62dc6e900 healthcheck: test: redis-cli ping || exit 1 restart: always database: container_name: personal_immich_postgres hostname: immich_postgres image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' volumes: - ${DB_DATA_LOCATION}:/var/lib/postgresql/data healthcheck: test: pg_isready --dbname='${DB_DATABASE_NAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1 interval: 5m start_interval: 30s start_period: 5m command: ["postgres", "-c" ,"shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"] restart: always volumes: model-cache: ``` ### Your .env content ```Shell # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables # The location where your uploaded files are stored UPLOAD_LOCATION=/mnt/NAS/ImmichPersonal # The location where your database files are stored DB_DATA_LOCATION=/extra/postgres_data/personal # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List # TZ=Etc/UTC # The Immich version to use. You can pin this to a specific version like "v1.71.0" IMMICH_VERSION=release # Connection secret for postgres. You should change it to a random password DB_PASSWORD=postgres # The values below this line do not need to be changed ################################################################################### DB_USERNAME=postgres DB_DATABASE_NAME=immich IMMICH_LOG_LEVEL=debug ``` ### Reproduction steps 1. Upload video (if sample video is required to test, please message me) 2. Once Jobs complete, attempt to change date 3. Witness the date on video has not changed ### Relevant log output ```shell [Nest] 17 - 09/17/2024, 1:12:25 AM DEBUG [Api:LoggingInterceptor~na9oql8d] PUT /api/assets/a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f 200 17.78ms 192.168.0.89 personal_immich_server | [Nest] 7 - 09/17/2024, 1:12:26 AM DEBUG [Microservices:MetadataService] Asset a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f date time is 2024-08-24T17:48:00.000+10:00 personal_immich_server | [Nest] 7 - 09/17/2024, 1:12:26 AM ERROR [Microservices:JobService] Unable to run job handler (metadataExtraction/metadata-extraction): TypeError: exifTags.ModifyDate?.toDate is not a function personal_immich_server | [Nest] 7 - 09/17/2024, 1:12:26 AM DEBUG [Microservices:MetadataService] Asset a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f timezone is UTC+10 (via DateTimeOriginal) personal_immich_server | [Nest] 7 - 09/17/2024, 1:12:26 AM DEBUG [Microservices:MetadataService] Asset a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f local time is offset by 600 minutes personal_immich_server | [Nest] 7 - 09/17/2024, 1:12:26 AM ERROR [Microservices:JobService] TypeError: exifTags.ModifyDate?.toDate is not a function personal_immich_server | at MetadataService.getDates (/usr/src/app/dist/services/metadata.service.js:508:46) personal_immich_server | at MetadataService.handleMetadataExtraction (/usr/src/app/dist/services/metadata.service.js:194:80) personal_immich_server | at process.processTicksAndRejections (node:internal/process/task_queues:95:5) personal_immich_server | at async /usr/src/app/dist/services/job.service.js:148:36 personal_immich_server | at async Worker.processJob (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:394:28) personal_immich_server | at async Worker.retryIfFailed (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:581:24) personal_immich_server | [Nest] 7 - 09/17/2024, 1:12:26 AM ERROR [Microservices:JobService] Object: personal_immich_server | { personal_immich_server | "id": "a58ab3bd-91e2-4485-8cf7-2b2bfe57d72f", personal_immich_server | "source": "sidecar-write" personal_immich_server | } personal_immich_server | ``` ### Additional information Video file was downloaded from Google Photos and reuploaded into Immich server
Author
Owner

@bo0tzz commented on GitHub (Sep 17, 2024):

The fix for this has already been merged and will be available in the next release.

@bo0tzz commented on GitHub (Sep 17, 2024): The fix for this has already been merged and will be available in the next release.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#4354