Test one RAW file with the same decoder outside the queue, then compare worker assignment and job logs to separate format support from execution failure.
The decision matters when original RAW files import successfully but previews remain blank or pending. The two competing states are unsupported or failed RAW decoding and thumbnail queue, worker, permissions, or output-storage failure. Begin with a saved configuration and disposable data, observe one branch at a time, and stop if the test expands data-loss, permission, or availability risk.
Separate Unsupported Or Failed Raw Decoding From Thumbnail Queue, Worker, Permissions, Or Output-Storage Failure
Record the environment before changing anything: software and firmware versions, device identities, mount or network path, free space, permissions, and the observable symptom. The baseline must preserve enough detail to reproduce original RAW files import successfully but previews remain blank or pending.
The first candidate is unsupported or failed RAW decoding. The second is thumbnail queue, worker, permissions, or output-storage failure. The current Immich supported media types defines the mechanism or command boundary used in the test; it does not replace observation from this specific home server.
Write the acceptance condition and stop condition before running the discriminator. A pass must change the evidence predicted by one branch while leaving unrelated services unchanged; a fail must return the system to the saved state rather than trigger a chain of speculative fixes.
Run One Controlled Discriminator
Use this discriminator: run metadata and decode probes on one copied RAW, enqueue one thumbnail job, and trace it from queue to output file. Keep workload, client, path, file set, and timing constant so the result is attributable to the changed variable.
Use libvips decoder support to select the field that can actually separate the branches, then capture its timestamp, exit status, error text, device or snapshot identity, latency, transferred bytes, permissions, and recovery state. A clean command exit is not enough when identity, durability, or application state is the claim under test.
Repeat the test once after a restart, reconnect, remount, or cold cache when that event is part of the original condition. If the first run is destructive or the environment cannot be restored, stop and reproduce on a disposable copy instead.
exiftool sample.CR3
# Decode a copy with the installed image stack, then enqueue one thumbnail job
Interpret Which Branch the Evidence Supports
PASS: the decoder fails before queue work, or decoding succeeds while the worker never writes the derivative. Record the exact version, identity, and workload that passed so the conclusion stays conditional rather than becoming a universal claim.
FAIL: only one camera or compression mode fails, so support must be scoped to that sample. A fail does not automatically prove the opposite branch when network, memory, permissions, or source consistency can influence both; isolate those shared dependencies before escalating.
EXCEPTION OR AMBIGUOUS RESULT: preserve originals, stop retry storms, and keep a known-good JPEG preview path while investigating. Preserve logs and do not run repair, prune, destroy, repartition, or recursive ownership commands until a recoverable copy exists.
Apply the Matched Action and Reproduce the Original Failure
Apply the action matched to the observed branch, then repeat the original condition rather than a reduced substitute. The decision holds only when the decoder fails before queue work, or decoding succeeds while the worker never writes the derivative across two cycles or the relevant reboot, sleep, interruption, or load transition.
Use the read-only Immich libraries to check the nearest dependent workflow, but keep the original trigger unchanged. Unrelated datasets, shares, containers, users, and recovery points must retain their previous access and timing.
The stop boundary is explicit: if only one camera or compression mode fails, so support must be scoped to that sample, return to the last verified configuration, retain the evidence, and escalate to a deeper platform or hardware test only when the branch is repeatable.
After the target result holds, compare it with the thumbnail job scheduling so the fix does not move risk into a neighboring service. A successful target test with a new backup, identity, timeout, or availability failure is still a failed change.
FAQ
For missing RAW preview diagnosis, the remaining searches usually concern why do some raw files from one camera work, can file permissions look correct but workers still fail, and should previews be regenerated library-wide. The answers below keep those edge cases separate from the primary decision.
The acceptance boundary does not move: the decoder fails before queue work, or decoding succeeds while the worker never writes the derivative. If a follow-up condition changes the filesystem, identity, network path, or application version, repeat only the discriminator affected by that change.
Stop broadening the experiment when only one camera or compression mode fails, so support must be scoped to that sample. At that point, preserve originals, stop retry storms, and keep a known-good JPEG preview path while investigating; preserve the evidence before escalating to the platform, storage, or hardware owner.
Why do some RAW files from one camera work?
Camera firmware, compression mode, embedded preview, and decoder version can differ within one extension.
Can file permissions look correct but workers still fail?
Yes. The worker may use a different container path, UID, or output mount.
Should previews be regenerated library-wide?
Not until one sample succeeds and queue plus storage headroom can absorb the work.
The diagnosis is finished when the same workload makes the evidence follow unsupported or failed RAW decoding or thumbnail queue, worker, permissions, or output-storage failure, and the matched action removes the original symptom without creating a second one. If neither branch stays repeatable, keep the logs and saved state intact; uncertainty is a reason to escalate, not to stack more fixes.
Support & Tips
More to Read

Live TV Recording Storage Guide for Capacity, Retention, and Cleanup
Measure real recordings, reserve headroom, combine age and capacity limits, and prove the oldest eligible program is removed before storage fills.

Home Media Metadata Recovery Workflow After a Database Restore
Protect the restored state, verify media identity and paths, then repair missing artwork or matches in a pilot library before broad metadata changes.

Jellyfin Client Compatibility Checklist for Audio, Video, and Subtitles
Test representative files one variable at a time and record Direct Play, remux, audio conversion, video transcode, or failure for every client.

