immich-app / immich

High performance self-hosted photo and video management solution.
https://immich.app
GNU Affero General Public License v3.0
33.03k stars 1.59k forks source link

fix(server): untracked thumbnail and preview images #9126

Closed mertalev closed 2 weeks ago

mertalev commented 2 weeks ago

Description

The ability to choose the format means that it's no longer enough to overwrite a preview or thumbnail asset: in cases where the old path differs from the new, the old file will be left behind. This PR explicitly checks for this case and deletes the old path.

There is a bit of duplication here since the check is added separately for previews and thumbnails. I did this to make the behavior more transparent: the generateThumbnail helper should only generate an image, not have a side effect of deleting another file.

Fixes #8981

How Has This Been Tested?

Tested by checking that there are only a few untracked assets in the repair page, changing the target thumbnail and preview formats, re-running thumbnail generation and confirming there's no explosion of untracked files after thumbnail generation is complete.