[BUG] local duplicates after local edit #1694

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

Originally created by @jkumeboshi on GitHub (Nov 26, 2023).

The bug

After an asset has been been uploaded by mobile app backup function, if I locally modify that asset I get a duplicate in the timeline: one pic on the server (with cloud only icon) and the modified one only locally (with barred cloud icon)

The OS that Immich Server is running on

Ubuntu 23.04 with Docker

Version of Immich Server

1.88.2

Version of Immich Mobile App

1.88.2

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

version: "3.8"

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: [ "start.sh", "immich" ]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
      - typesense
    restart: unless-stopped

  immich-microservices:
    container_name: immich_microservices
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: [ "start.sh", "microservices" ]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - ./reverse-geocoding-dump:/usr/src/app/.reverse-geocoding-dump
    env_file:
      - .env
    depends_on:
      - redis
      - database
      - typesense
    restart: unless-stopped

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    volumes:
      - ./model-cache:/cache
    env_file:
      - .env
    restart: unless-stopped


  typesense:
    container_name: immich_typesense
    image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
    environment:
      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
      - TYPESENSE_DATA_DIR=/data
    volumes:
      - ./tsdata:/data
    restart: unless-stopped

  redis:
    container_name: immich_redis
    image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
    restart: unless-stopped
    volumes:
      - ./redis:/data

  database:
    container_name: immich_postgres
    image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    restart: unless-stopped

Your .env content

DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich

REDIS_HOSTNAME=immich_redis

UPLOAD_LOCATION=./uploads/

PUBLIC_LOGIN_PAGE_MESSAGE=

IMMICH_WEB_URL=http://immich-web:3000
IMMICH_SERVER_URL=http://immich-server:3001
IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003

TZ=Europe/Rome
PUID=1000
PGID=1000

Reproduction steps

1. upload all asset on the server using the mobile app backup function
2. modify an asset locally, such as editing EXIF data, leaving unchanged the file name and location
3. check out on timeline the duplicate

Additional information

What's is the expected behavior when the user locally edits an already uploaded asset?
I would expect the file would be uploaded again, overwriting corresponding remote asset.
But IMHO the best solution would be having a conflicts manager that would let you decide what to do with each conflict

Originally created by @jkumeboshi on GitHub (Nov 26, 2023). ### The bug After an asset has been been uploaded by mobile app backup function, if I locally modify that asset I get a duplicate in the timeline: one pic on the server (with cloud only icon) and the modified one only locally (with barred cloud icon) ### The OS that Immich Server is running on Ubuntu 23.04 with Docker ### Version of Immich Server 1.88.2 ### Version of Immich Mobile App 1.88.2 ### Platform with the issue - [ ] Server - [ ] Web - [X] Mobile ### Your docker-compose.yml content ```YAML version: "3.8" services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} command: [ "start.sh", "immich" ] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload env_file: - .env ports: - 2283:3001 depends_on: - redis - database - typesense restart: unless-stopped immich-microservices: container_name: immich_microservices image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} command: [ "start.sh", "microservices" ] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - ./reverse-geocoding-dump:/usr/src/app/.reverse-geocoding-dump env_file: - .env depends_on: - redis - database - typesense restart: unless-stopped immich-machine-learning: container_name: immich_machine_learning image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} volumes: - ./model-cache:/cache env_file: - .env restart: unless-stopped typesense: container_name: immich_typesense image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd environment: - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - TYPESENSE_DATA_DIR=/data volumes: - ./tsdata:/data restart: unless-stopped redis: container_name: immich_redis image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 restart: unless-stopped volumes: - ./redis:/data database: container_name: immich_postgres image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441 env_file: - .env environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} volumes: - ./pgdata:/var/lib/postgresql/data restart: unless-stopped ``` ### Your .env content ```Shell DB_HOSTNAME=immich_postgres DB_USERNAME=postgres DB_PASSWORD=postgres DB_DATABASE_NAME=immich REDIS_HOSTNAME=immich_redis UPLOAD_LOCATION=./uploads/ PUBLIC_LOGIN_PAGE_MESSAGE= IMMICH_WEB_URL=http://immich-web:3000 IMMICH_SERVER_URL=http://immich-server:3001 IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003 TZ=Europe/Rome PUID=1000 PGID=1000 ``` ### Reproduction steps ```bash 1. upload all asset on the server using the mobile app backup function 2. modify an asset locally, such as editing EXIF data, leaving unchanged the file name and location 3. check out on timeline the duplicate ``` ### Additional information What's is the expected behavior when the user locally edits an already uploaded asset? I would expect the file would be uploaded again, overwriting corresponding remote asset. But IMHO the best solution would be having a conflicts manager that would let you decide what to do with each conflict
Author
Owner

@alextran1502 commented on GitHub (Nov 26, 2023):

Hello, this is working as intended. If you edit an image, it will have a different file content, which is indicated as a different file. This is the current deduplication mechanism we are using. Maybe in the future, we can add additional detection mechanisms like similarity between images.

@alextran1502 commented on GitHub (Nov 26, 2023): Hello, this is working as intended. If you edit an image, it will have a different file content, which is indicated as a different file. This is the current deduplication mechanism we are using. Maybe in the future, we can add additional detection mechanisms like similarity between images.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#1694