Merging new face to existing user via name match throws a 400 error, but still merges #2048

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

Originally created by @undaunt on GitHub (Jan 23, 2024).

The bug

When attempting to merge an unknown face with a named person from the people page, by clicking 'Change Name' instead of 'Merge' and typing the exact name of the existing person, the normal merge popup appears confirming the merge, but throws a 400 error when clicking merge.

The photos do still merge under the original person. The 400 error does not appear when using the 'Merge' button or when merging from an actual person at /people/xxxxxxxx.

The OS that Immich Server is running on

Ubuntu 22.04 LTS

Version of Immich Server

v1.93.3

Version of Immich Mobile App

v1.93.2 build.135

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

services:
  immich-server:
    container_name: immich-server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    restart: unless-stopped
    profiles: ["all","photos"]
    networks:
      - $PROXY_NETWORK
      - $APP_NETWORK
    security_opt:
      - no-new-privileges:true
    depends_on:
      - immich-redis
      - immich-db
    #deploy:
    #  resources:
    #    limits:
    #      #cpus: '0.50'
    #      memory: 8G
    command: [ "start.sh", "immich" ]
    volumes:
      - $MEDIADIR/photos/immich:/usr/src/app/upload
      - /mnt/media/photos/icloud:/icloud:ro
      #- /mnt/users/user2/Pictures:/sync
      - $DOCKERDIR/photos/immich/auth-user1.yml:/root/.config/immich/auth.yml:ro
      #- $DOCKERDIR/photos/immich/auth-user2.yml:/root/.config/immich/auth.yml:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - DB_HOSTNAME=${POSTGRES_IMMICH_HOST}
      - DB_DATABASE_NAME=${POSTGRES_IMMICH_DB}
      - DB_USERNAME=${POSTGRES_IMMICH_USER}
      - DB_PASSWORD=${POSTGRES_IMMICH_PASS}
      - REDIS_HOSTNAME=${IMMICH_REDIS_HOSTNAME}
    labels:
      - traefik.enable=true
      - traefik.external.cname=true
      - traefik.http.routers.immich.entrypoints=https
      - traefik.http.routers.immich.rule=Host(`photos.$DOMAINNAME`)
      - traefik.http.routers.immich.middlewares=chain-base@file
      - traefik.http.services.immich.loadbalancer.server.port=3001

  immich-microservices:
    container_name: immich-microservices
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    restart: unless-stopped
    profiles: ["all","photos"]
    networks:
      - $APP_NETWORK
    security_opt:
      - no-new-privileges:true
    depends_on:
      - immich-redis
      - immich-db
    cpus: 5
    devices:
      - /dev/dri:/dev/dri
    command: [ "start.sh", "microservices" ]
    volumes:
      - $MEDIADIR/photos/immich:/usr/src/app/upload
      - /mnt/media/photos/icloud:/icloud:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - DB_HOSTNAME=${POSTGRES_IMMICH_HOST}
      - DB_DATABASE_NAME=${POSTGRES_IMMICH_DB}
      - DB_USERNAME=${POSTGRES_IMMICH_USER}
      - DB_PASSWORD=${POSTGRES_IMMICH_PASS}
      - REDIS_HOSTNAME=${IMMICH_REDIS_HOSTNAME}

  immich-machine-learning:
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    container_name: immich-machine-learning
    volumes:
      - $DOCKERDIR/photos/immich/models:/cache
    restart: unless-stopped
    profiles: ["all","photos"]
    networks:
      - $APP_NETWORK
    security_opt:
      - no-new-privileges:true

  immich-redis:
    image: redis:6.2-alpine@sha256:b6124ab2e45cc332e16398022a411d7e37181f21ff7874835e0180f56a09e82a
    container_name: immich-redis
    restart: unless-stopped
    profiles: ["all","photos"]
    networks:
      - $APP_NETWORK
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
      start_period: 20s
      interval: 30s
      retries: 5
      timeout: 3s
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro

  immich-db:
    image: tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee
    container_name: immich-db
    restart: unless-stopped
    profiles: ["all","photos"]
    networks:
      - $APP_NETWORK
    security_opt:
      - no-new-privileges:true
    environment:
      - POSTGRES_PASSWORD=${POSTGRES_IMMICH_PASS}
      - POSTGRES_USER=${POSTGRES_IMMICH_USER}
      - POSTGRES_DB=${POSTGRES_IMMICH_DB}
    volumes:
      - $DOCKERDIR/photos/immich/db:/var/lib/postgresql/data

Your .env content

N/A - using declared variables in compose

Reproduction steps

1. Go to the /people page.
2. Go to an unnamed face and click 'change name' from the menu.
3. Type the name of an existing named face.
4. At the merge prompt popup, merge them.
5. Review error + console errors

Additional information

No response

Originally created by @undaunt on GitHub (Jan 23, 2024). ### The bug When attempting to merge an unknown face with a named person from the people page, by clicking 'Change Name' instead of 'Merge' and typing the exact name of the existing person, the normal merge popup appears confirming the merge, but throws a 400 error when clicking merge. The photos do still merge under the original person. The 400 error does not appear when using the 'Merge' button or when merging from an actual person at /people/xxxxxxxx. ### The OS that Immich Server is running on Ubuntu 22.04 LTS ### Version of Immich Server v1.93.3 ### Version of Immich Mobile App v1.93.2 build.135 ### Platform with the issue - [X] Server - [X] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML services: immich-server: container_name: immich-server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} restart: unless-stopped profiles: ["all","photos"] networks: - $PROXY_NETWORK - $APP_NETWORK security_opt: - no-new-privileges:true depends_on: - immich-redis - immich-db #deploy: # resources: # limits: # #cpus: '0.50' # memory: 8G command: [ "start.sh", "immich" ] volumes: - $MEDIADIR/photos/immich:/usr/src/app/upload - /mnt/media/photos/icloud:/icloud:ro #- /mnt/users/user2/Pictures:/sync - $DOCKERDIR/photos/immich/auth-user1.yml:/root/.config/immich/auth.yml:ro #- $DOCKERDIR/photos/immich/auth-user2.yml:/root/.config/immich/auth.yml:ro - /etc/localtime:/etc/localtime:ro environment: - DB_HOSTNAME=${POSTGRES_IMMICH_HOST} - DB_DATABASE_NAME=${POSTGRES_IMMICH_DB} - DB_USERNAME=${POSTGRES_IMMICH_USER} - DB_PASSWORD=${POSTGRES_IMMICH_PASS} - REDIS_HOSTNAME=${IMMICH_REDIS_HOSTNAME} labels: - traefik.enable=true - traefik.external.cname=true - traefik.http.routers.immich.entrypoints=https - traefik.http.routers.immich.rule=Host(`photos.$DOMAINNAME`) - traefik.http.routers.immich.middlewares=chain-base@file - traefik.http.services.immich.loadbalancer.server.port=3001 immich-microservices: container_name: immich-microservices image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} restart: unless-stopped profiles: ["all","photos"] networks: - $APP_NETWORK security_opt: - no-new-privileges:true depends_on: - immich-redis - immich-db cpus: 5 devices: - /dev/dri:/dev/dri command: [ "start.sh", "microservices" ] volumes: - $MEDIADIR/photos/immich:/usr/src/app/upload - /mnt/media/photos/icloud:/icloud:ro - /etc/localtime:/etc/localtime:ro environment: - DB_HOSTNAME=${POSTGRES_IMMICH_HOST} - DB_DATABASE_NAME=${POSTGRES_IMMICH_DB} - DB_USERNAME=${POSTGRES_IMMICH_USER} - DB_PASSWORD=${POSTGRES_IMMICH_PASS} - REDIS_HOSTNAME=${IMMICH_REDIS_HOSTNAME} immich-machine-learning: image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} container_name: immich-machine-learning volumes: - $DOCKERDIR/photos/immich/models:/cache restart: unless-stopped profiles: ["all","photos"] networks: - $APP_NETWORK security_opt: - no-new-privileges:true immich-redis: image: redis:6.2-alpine@sha256:b6124ab2e45cc332e16398022a411d7e37181f21ff7874835e0180f56a09e82a container_name: immich-redis restart: unless-stopped profiles: ["all","photos"] networks: - $APP_NETWORK security_opt: - no-new-privileges:true healthcheck: test: ["CMD-SHELL", "redis-cli ping | grep PONG"] start_period: 20s interval: 30s retries: 5 timeout: 3s volumes: - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro immich-db: image: tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee container_name: immich-db restart: unless-stopped profiles: ["all","photos"] networks: - $APP_NETWORK security_opt: - no-new-privileges:true environment: - POSTGRES_PASSWORD=${POSTGRES_IMMICH_PASS} - POSTGRES_USER=${POSTGRES_IMMICH_USER} - POSTGRES_DB=${POSTGRES_IMMICH_DB} volumes: - $DOCKERDIR/photos/immich/db:/var/lib/postgresql/data ``` ### Your .env content ```Shell N/A - using declared variables in compose ``` ### Reproduction steps ```bash 1. Go to the /people page. 2. Go to an unnamed face and click 'change name' from the menu. 3. Type the name of an existing named face. 4. At the merge prompt popup, merge them. 5. Review error + console errors ``` ### Additional information _No response_
Author
Owner

@undaunt commented on GitHub (Jan 23, 2024):

Specifically, this is the error:

Not found or no person.read access - 400 - Bad Request undefined

@undaunt commented on GitHub (Jan 23, 2024): Specifically, this is the error: `Not found or no person.read access - 400 - Bad Request undefined`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#2048