Some Question abount extract metadata from exif data

Hi immich team, i just curious lately why my photos didnt load the map metadata while upgrading to v2.2.1 . I think this not related with the version, because all my photos map data are not extracted before. And i just got time to check it the log and get this warn log. is there any miss configuration in my side? how i fix it? how i reproduce this 1. open app galery on my ip 13 pm 2. choose a photo (i check the info just to make sure the photo has map data) 3. click share and choose immich 4. click upload and finish at the same time i just check the docker logs and get this.
WARN [Microservices:MetadataRepository] Error reading exif data (/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/8f/a2/8fa2ff49-414c-439f-8086-47374ed80475.jpg): Error: BatchCluster has ended, cannot enqueue -json
-api
struct=1
-use
MWG
-api
geolocation
-api
keepUTCTime
-*Duration*#
-GPSAltitude#
-GPSLatitude#
-GPSLongitude#
-GPSPosition#
-GeolocationPosition#
-Orientation#
-FocalLength#
-FileSize#
-all
/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/8f/a2/8fa2ff49-414c-439f-8086-47374ed80475.jpg
-ignoreMinorErrors
-execute

Error: BatchCluster has ended, cannot enqueue -json
-api
struct=1
-use
MWG
-api
geolocation
-api
keepUTCTime
-*Duration*#
-GPSAltitude#
-GPSLatitude#
-GPSLongitude#
-GPSPosition#
-GeolocationPosition#
-Orientation#
-FocalLength#
-FileSize#
-all
/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/8f/a2/8fa2ff49-414c-439f-8086-47374ed80475.jpg
-ignoreMinorErrors
-execute

at BatchCluster.enqueueTask (/usr/src/app/server/node_modules/.pnpm/batch-cluster@15.0.1/node_modules/batch-cluster/dist/BatchCluster.js:150:25)
at f (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@31.1.0/node_modules/exiftool-vendored/dist/ExifTool.js:440:38)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async g (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@31.1.0/node_modules/exiftool-vendored/dist/AsyncRetry.js:8:20)
WARN [Microservices:MetadataRepository] Error reading exif data (/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/8f/a2/8fa2ff49-414c-439f-8086-47374ed80475.jpg): Error: BatchCluster has ended, cannot enqueue -json
-api
struct=1
-use
MWG
-api
geolocation
-api
keepUTCTime
-*Duration*#
-GPSAltitude#
-GPSLatitude#
-GPSLongitude#
-GPSPosition#
-GeolocationPosition#
-Orientation#
-FocalLength#
-FileSize#
-all
/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/8f/a2/8fa2ff49-414c-439f-8086-47374ed80475.jpg
-ignoreMinorErrors
-execute

Error: BatchCluster has ended, cannot enqueue -json
-api
struct=1
-use
MWG
-api
geolocation
-api
keepUTCTime
-*Duration*#
-GPSAltitude#
-GPSLatitude#
-GPSLongitude#
-GPSPosition#
-GeolocationPosition#
-Orientation#
-FocalLength#
-FileSize#
-all
/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/8f/a2/8fa2ff49-414c-439f-8086-47374ed80475.jpg
-ignoreMinorErrors
-execute

at BatchCluster.enqueueTask (/usr/src/app/server/node_modules/.pnpm/batch-cluster@15.0.1/node_modules/batch-cluster/dist/BatchCluster.js:150:25)
at f (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@31.1.0/node_modules/exiftool-vendored/dist/ExifTool.js:440:38)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async g (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@31.1.0/node_modules/exiftool-vendored/dist/AsyncRetry.js:8:20)
10 Replies
Immich
Immich3w ago
:wave: Hey @Alif Naufal, Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:. References - Container Logs: docker compose logs docs - Container Status: docker ps -a docs - Reverse Proxy: https://immich.app/docs/administration/reverse-proxy - Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJA Checklist I have... 1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time). 2. :ballot_box_with_check: read applicable release notes. 3. :ballot_box_with_check: reviewed the FAQs for known issues. 4. :ballot_box_with_check: reviewed Github for known issues. 5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy). 6. :ballot_box_with_check: uploaded the relevant information (see below). 7. :ballot_box_with_check: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable (an item can be marked as "complete" by reacting with the appropriate number) Information In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider: - Your docker-compose.yml and .env files. - Logs from all the containers and their status (see above). - All the troubleshooting steps you've tried so far. - Any recent changes you've made to Immich or your system. - Details about your system (both software/OS and hardware). - Details about your storage (filesystems, type of disks, output of commands like fdisk -l and df -h). - The version of the Immich server, mobile app, and other relevant pieces. - Any other information that you think might be relevant. Please paste files and logs with proper code formatting, and especially avoid blurry screenshots. Without the right information we can't work out what the problem is. Help us help you ;) If this ticket can be closed you can use the /close command, and re-open it later if needed. Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
Alif Naufal
Alif NaufalOP3w ago
here is the log when i uploaded some photo from browser on my mac
[Nest] 7 - 11/02/2025, 10:03:10 PM WARN [Microservices:MetadataRepository] Error reading exif data (/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/47/ae/47ae1855-f1ed-4aa0-ad94-61afdc07e1e3.jpeg): Error: BatchCluster has ended, cannot enqueue -json
-api
struct=1
-use
MWG
-api
geolocation
-api
keepUTCTime
-*Duration*#
-GPSAltitude#
-GPSLatitude#
-GPSLongitude#
-GPSPosition#
-GeolocationPosition#
-Orientation#
-FocalLength#
-FileSize#
-all
/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/47/ae/47ae1855-f1ed-4aa0-ad94-61afdc07e1e3.jpeg
-ignoreMinorErrors
-execute

Error: BatchCluster has ended, cannot enqueue -json
-api
struct=1
-use
MWG
-api
geolocation
-api
keepUTCTime
-*Duration*#
-GPSAltitude#
-GPSLatitude#
-GPSLongitude#
-GPSPosition#
-GeolocationPosition#
-Orientation#
-FocalLength#
-FileSize#
-all
/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/47/ae/47ae1855-f1ed-4aa0-ad94-61afdc07e1e3.jpeg
-ignoreMinorErrors
-execute

at BatchCluster.enqueueTask (/usr/src/app/server/node_modules/.pnpm/batch-cluster@15.0.1/node_modules/batch-cluster/dist/BatchCluster.js:150:25)
at f (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@31.1.0/node_modules/exiftool-vendored/dist/ExifTool.js:440:38)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async g (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@31.1.0/node_modules/exiftool-vendored/dist/AsyncRetry.js:8:20)
[Nest] 7 - 11/02/2025, 10:03:12 PM LOG [Microservices:PersonService] Detected 1 new faces in asset cc4fe91d-7d27-456c-941b-2ea388b6ad69
[Nest] 7 - 11/02/2025, 10:03:10 PM WARN [Microservices:MetadataRepository] Error reading exif data (/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/47/ae/47ae1855-f1ed-4aa0-ad94-61afdc07e1e3.jpeg): Error: BatchCluster has ended, cannot enqueue -json
-api
struct=1
-use
MWG
-api
geolocation
-api
keepUTCTime
-*Duration*#
-GPSAltitude#
-GPSLatitude#
-GPSLongitude#
-GPSPosition#
-GeolocationPosition#
-Orientation#
-FocalLength#
-FileSize#
-all
/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/47/ae/47ae1855-f1ed-4aa0-ad94-61afdc07e1e3.jpeg
-ignoreMinorErrors
-execute

Error: BatchCluster has ended, cannot enqueue -json
-api
struct=1
-use
MWG
-api
geolocation
-api
keepUTCTime
-*Duration*#
-GPSAltitude#
-GPSLatitude#
-GPSLongitude#
-GPSPosition#
-GeolocationPosition#
-Orientation#
-FocalLength#
-FileSize#
-all
/usr/src/app/upload/upload/faaf8292-ccea-423f-8f90-a39c10616bf7/47/ae/47ae1855-f1ed-4aa0-ad94-61afdc07e1e3.jpeg
-ignoreMinorErrors
-execute

at BatchCluster.enqueueTask (/usr/src/app/server/node_modules/.pnpm/batch-cluster@15.0.1/node_modules/batch-cluster/dist/BatchCluster.js:150:25)
at f (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@31.1.0/node_modules/exiftool-vendored/dist/ExifTool.js:440:38)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async g (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@31.1.0/node_modules/exiftool-vendored/dist/AsyncRetry.js:8:20)
[Nest] 7 - 11/02/2025, 10:03:12 PM LOG [Microservices:PersonService] Detected 1 new faces in asset cc4fe91d-7d27-456c-941b-2ea388b6ad69
Sergey Katsubo
Hey - Please provide info about your setup as per "Information" section in the auto-post above. - Have you tried to restart Immich container?
Zeus
Zeus3w ago
FYI when you "share" to immich I believe the exif data may get stripped
Sergey Katsubo
^^ https://immich.app/cursed-knowledge
GPS sharing on mobile is cursed Some phones will silently strip GPS data from images when apps without location permission try to access them.
Alif Naufal
Alif NaufalOP3w ago
i installed immich using docker compose in my proxmox container here the yaml
name: immich

services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
user: "1000:1000"
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false

immich-machine-learning:
container_name: 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
healthcheck:
disable: false

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

database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --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:
name: immich

services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
user: "1000:1000"
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false

immich-machine-learning:
container_name: 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
healthcheck:
disable: false

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

database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
test: >-
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --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:
with this env
# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/Smart240GB/immich
# The location where your database files are stored
DB_DATA_LOCATION=../apps-data/immich

# 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=Asia/Jakarta

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

# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=xxx

# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=xxx
DB_DATABASE_NAME=xxx
# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/Smart240GB/immich
# The location where your database files are stored
DB_DATA_LOCATION=../apps-data/immich

# 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=Asia/Jakarta

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

# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=xxx

# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=xxx
DB_DATABASE_NAME=xxx
i've restart the docker of immich_server and now it works. before this i just try to restart the proxmox container and didnt solve this. So should i doing restart everytime after upgrading the version? if you ask how i upgrade is i pull the latest image first, and doing compose up to refresh the docker to use new version
Sergey Katsubo
using docker compose in my proxmox container
LXC?
should i doing restart everytime
If it's not LXC and if it occurs repeatedly then let us now, this is not expected. Exiftool in batch mode uses forking, typically it just works. (We've seen all kinds of weird non-reproducible issues in LXC therefore it is not officially recommended https://docs.immich.app/install/requirements#hardware)
Alif Naufal
Alif NaufalOP3w ago
yes proxmox LXC oww, i see, thanks for the help luckily this setup was my testing before i buy a big storage for a real use. i will considering it for the next setup. Thanks
Sergey Katsubo
Let us know if you want to discuss that. Otherwise you can use /close to end this topic
Immich
Immich3w ago
This thread has been closed. To re-open, use the button below.

Did you find this page helpful?