[GH-ISSUE #9517] Metadata extraction fails with “BatchCluster has ended” until libimage-exiftool-perl is installed #2093

Closed
opened 2026-02-26 12:51:17 +03:00 by kerem · 7 comments
Owner

Originally created by @JamDaBam on GitHub (Nov 29, 2025).
Original GitHub issue: https://github.com/community-scripts/ProxmoxVE/issues/9517

Originally assigned to: @vhsdream on GitHub.

Have you read and understood the above guidelines?

yes

🔎 Did you run the script with verbose mode enabled?

No (this issue will likely be closed automatically)

📜 What is the name of the script you are using?

Immich

📂 What was the exact command used to execute the script?

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/immich.sh)"

⚙️ What settings are you using?

  • Default Settings
  • Advanced Settings

🖥️ Which Linux distribution are you using?

No response

📈 Which Proxmox version are you on?

pve-manager/9.1.1/42db4a6cf33dac83 (running kernel: 6.17.2-2-pve)

📝 Provide a clear and concise description of the issue.

I searched for this issue but found nothing related to it.
I did run the script in verbose, but the log is too large and i didn't know how to extract it.
If someone can explain it to me, then I can submit it later.

The metadata of my external library was loaded in the web interface, but no metadata was extracted.
The error could be identified in the logs, which is stored in the error log.

In my case i have a priviliged LXC because i had to mount my NAS direct into it.
All my images have XMP files stored alongside them.

I solved the problem as follows.

I had to manually add the dependency libimage-exiftool-perl with apt install -y libimage-exiftool-perl in LXC, after which the metadata extraction worked.

🔄 Steps to reproduce the issue.

Step 1: install as usual bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/immich.sh)" (setup gpu passthrough yes, openvino yes)
Step 2: create an external library
Step 3: link an external library source to it
Step 4: wait for extraction

Paste the full error output (if available).

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 /mnt/bilder/D50_8760.xmp -ignoreMinorErrors -execute at BatchCluster.enqueueTask (/opt/immich/app/node_modules/.pnpm/batch-cluster@15.0.1/node_modules/batch-cluster/dist/BatchCluster.js:150:25)

🖼️ Additional context (optional).

apt install -y libimage-exiftool-perl

    _                     _      __  
   (_)___ ___  ____ ___  (_)____/ /_ 
  / / __ `__ \/ __ `__ \/ / ___/ __ \
 / / / / / / / / / / / / / /__/ / / /
/_/_/ /_/ /_/_/ /_/ /_/_/\___/_/ /_/ 
                                     
  🧩  Using Advanced Settings on node server-geekom
  🖥️  Operating System: debian
  🌟  Version: 13
  📦  Container Type: Privileged
  🔐  Root Password: Automatic Login
  🆔  Container ID: 125
  🏠  Hostname: immich
  💾  Disk Size: 20 GB
  🧠  CPU Cores: 4
  🛠️  RAM Size: 16384 MiB
  🌉  Bridge: vmbr0
  📡  IPv4: DHCP
  📡  IPv6: SLAAC/AUTO
  📡  APT-Cacher IP Address: Default
  ⚙️  Interface MTU Size: Default
  🔍  DNS Search Domain: Host
  📡  DNS Server IP Address: Host
  🏷️  Vlan: Default
  📡  Tags: community-script;photos
  🔑  Root SSH Access: no
  🗂️  Enable FUSE Support: no
  🔍  Verbose Mode: yes
  🚀  Creating a immich LXC using the above advanced settings
Originally created by @JamDaBam on GitHub (Nov 29, 2025). Original GitHub issue: https://github.com/community-scripts/ProxmoxVE/issues/9517 Originally assigned to: @vhsdream on GitHub. ### ✅ Have you read and understood the above guidelines? yes ### 🔎 Did you run the script with verbose mode enabled? No (this issue will likely be closed automatically) ### 📜 What is the name of the script you are using? Immich ### 📂 What was the exact command used to execute the script? bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/immich.sh)" ### ⚙️ What settings are you using? - [ ] Default Settings - [x] Advanced Settings ### 🖥️ Which Linux distribution are you using? _No response_ ### 📈 Which Proxmox version are you on? pve-manager/9.1.1/42db4a6cf33dac83 (running kernel: 6.17.2-2-pve) ### 📝 Provide a clear and concise description of the issue. I searched for this issue but found nothing related to it. I did run the script in verbose, but the log is too large and i didn't know how to extract it. If someone can explain it to me, then I can submit it later. The metadata of my external library was loaded in the web interface, but no metadata was extracted. The error could be identified in the logs, which is stored in the error log. In my case i have a priviliged LXC because i had to mount my NAS direct into it. All my images have XMP files stored alongside them. I solved the problem as follows. I had to manually add the dependency `libimage-exiftool-perl` with `apt install -y libimage-exiftool-perl` in LXC, after which the metadata extraction worked. ### 🔄 Steps to reproduce the issue. Step 1: install as usual `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/immich.sh)"` (setup gpu passthrough yes, openvino yes) Step 2: create an external library Step 3: link an external library source to it Step 4: wait for extraction ### ❌ Paste the full error output (if available). 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 /mnt/bilder/D50_8760.xmp -ignoreMinorErrors -execute at BatchCluster.enqueueTask (/opt/immich/app/node_modules/.pnpm/batch-cluster@15.0.1/node_modules/batch-cluster/dist/BatchCluster.js:150:25) ### 🖼️ Additional context (optional). `apt install -y libimage-exiftool-perl` ``` _ _ __ (_)___ ___ ____ ___ (_)____/ /_ / / __ `__ \/ __ `__ \/ / ___/ __ \ / / / / / / / / / / / / / /__/ / / / /_/_/ /_/ /_/_/ /_/ /_/_/\___/_/ /_/ 🧩 Using Advanced Settings on node server-geekom 🖥️ Operating System: debian 🌟 Version: 13 📦 Container Type: Privileged 🔐 Root Password: Automatic Login 🆔 Container ID: 125 🏠 Hostname: immich 💾 Disk Size: 20 GB 🧠 CPU Cores: 4 🛠️ RAM Size: 16384 MiB 🌉 Bridge: vmbr0 📡 IPv4: DHCP 📡 IPv6: SLAAC/AUTO 📡 APT-Cacher IP Address: Default ⚙️ Interface MTU Size: Default 🔍 DNS Search Domain: Host 📡 DNS Server IP Address: Host 🏷️ Vlan: Default 📡 Tags: community-script;photos 🔑 Root SSH Access: no 🗂️ Enable FUSE Support: no 🔍 Verbose Mode: yes 🚀 Creating a immich LXC using the above advanced settings ```
kerem 2026-02-26 12:51:17 +03:00
Author
Owner

@vhsdream commented on GitHub (Dec 2, 2025):

Whoa looks like you stumbled on a rather new-ish Immich bug - but their fix is to change the metadata.repository.ts file because there's already some variant of exiftool installed via pnpm.

But this is good info in case that fix doesn't work for us. Thanks for making this report and for already having a solution! I'll leave this open until 2.4.0 drops to see what shakes out.

<!-- gh-comment-id:3599606501 --> @vhsdream commented on GitHub (Dec 2, 2025): Whoa looks like you stumbled on a rather new-ish [Immich bug](https://github.com/immich-app/immich/issues/24302) - but their fix is to change the [`metadata.repository.ts`](https://github.com/immich-app/immich/pull/24325/files) file because there's already some variant of exiftool installed via pnpm. But this is good info in case that fix doesn't work for us. Thanks for making this report and for already having a solution! I'll leave this open until 2.4.0 drops to see what shakes out.
Author
Owner

@irishpadres commented on GitHub (Dec 3, 2025):

I tried using the new metadata.repository.ts file and I'm still getting the errors. The exiftool-vendored is 31.3.0 so it might be because it's not at 33.0.0.

<!-- gh-comment-id:3608835585 --> @irishpadres commented on GitHub (Dec 3, 2025): I tried using the new [metadata.repository.ts](https://github.com/immich-app/immich/pull/24325/files) file and I'm still getting the errors. The exiftool-vendored is 31.3.0 so it might be because it's not at 33.0.0.
Author
Owner

@vhsdream commented on GitHub (Dec 3, 2025):

I'm curious how you tested that. Did you grab the file and then build the server again?

Also the issue I linked above was closed, but this one has some good info. You should consider telling them that installing exiftool in Trixie fixed the issue, if you have proof of that. The Immich base-image is built on Trixie, so if it does work, then they might consider adding exiftool as a dependency when they generate the base-images.

<!-- gh-comment-id:3608866751 --> @vhsdream commented on GitHub (Dec 3, 2025): I'm curious how you tested that. Did you grab the file and then build the server again? Also the issue I linked above was closed, but [this one](https://github.com/immich-app/immich/issues/23890) has some good info. You should consider telling them that installing exiftool in Trixie fixed the issue, if you have proof of that. The Immich base-image is built on Trixie, so if it does work, then they might consider adding exiftool as a dependency when they generate the base-images.
Author
Owner

@irishpadres commented on GitHub (Dec 3, 2025):

I just downloaded the file, replaced it in the install directory, and rebooted the web service.

<!-- gh-comment-id:3609007418 --> @irishpadres commented on GitHub (Dec 3, 2025): I just downloaded the file, replaced it in the install directory, and rebooted the web service.
Author
Owner

@michelroegl-brunner commented on GitHub (Dec 4, 2025):

I just downloaded the file, replaced it in the install directory, and rebooted the web service.

Just rebooting the server is not enough, the typscript needs to be compiled agian. You need to rebuild the app for such a change to take effekt.

<!-- gh-comment-id:3611015306 --> @michelroegl-brunner commented on GitHub (Dec 4, 2025): > I just downloaded the file, replaced it in the install directory, and rebooted the web service. Just rebooting the server is not enough, the typscript needs to be compiled agian. You need to rebuild the app for such a change to take effekt.
Author
Owner

@skatsubo commented on GitHub (Dec 4, 2025):

and rebooted the web service.

Actually this is the workaround: restart Immich server after encountering "BatchCluster has ended". I believe this is what fixed the issue in the first place.

Btw, the upstream bug in exiftool-vendored/batch-cluster was promptly fixed 🎉

<!-- gh-comment-id:3611811508 --> @skatsubo commented on GitHub (Dec 4, 2025): > and rebooted the web service. Actually this is the workaround: restart Immich server after encountering "BatchCluster has ended". I believe this is what fixed the issue in the first place. Btw, the upstream bug in exiftool-vendored/batch-cluster was promptly fixed 🎉 - https://github.com/photostructure/exiftool-vendored.js/issues/312
Author
Owner

@vhsdream commented on GitHub (Dec 4, 2025):

Nice. Gonna close this as eventually the fix will work it's way to us.

<!-- gh-comment-id:3612080507 --> @vhsdream commented on GitHub (Dec 4, 2025): Nice. Gonna close this as eventually the fix will work it's way to us.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ProxmoxVE#2093
No description provided.