Asset requests can fail with AssetNotFoundException after restart or stale client state
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start at BloomFilterAssetAccountTracker.ForAsset, which throws AssetNotFoundException, then trace the calls up through TotalAccountImagesSelectionStrategy.ForAsset, MultiImmichFrameLogicDelegate.GetAsset and AssetController.GetAsset. Decide whether the fix is a durable account lookup or a graceful failure, since the issue lists both without choosing. Done means a stale asset ID after restart no longer produces an unhandled exception, and no repro test exists yet, so one must be written first.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Version
1.0.32.x / current main branch behavior
Deployment Method
Docker container
Description
I hit an unhandled exception during smoke testing when requesting an asset that had previously been listed by the server.
The failing path is:
AssetController.GetAsset(...)MultiImmichFrameLogicDelegate.GetAsset(...)TotalAccountImagesSelectionStrategy.ForAsset(...)BloomFilterAssetAccountTracker.ForAsset(...)
BloomFilterAssetAccountTracker throws AssetNotFoundException when it cannot map the requested asset ID back to an account.
This appears to depend on in-memory tracker state rather than on whether the asset actually exists in Immich. A likely trigger is:
- client holds an older asset ID list,
- server restarts / tracker state is lost,
- client requests
/api/Asset/{id}/Asset, - lookup fails because the asset was never re-recorded in the current process.
So the request can fail even though the asset still exists upstream.
Reproduction
I do not have a minimal deterministic repro yet, but the observed flow was:
- Start the server and client normally.
- Load assets.
- Restart the server or otherwise end up with stale client-side asset references.
- Request an asset by ID from the client.
- Server throws
ImmichFrame.Core.Exceptions.AssetNotFoundExceptionfromBloomFilterAssetAccountTracker.ForAsset.
Expectations
Asset retrieval should not depend solely on transient in-memory tracker state.
A request for an existing asset should either:
- resolve the correct account by a durable lookup path, or
- fail gracefully without an unhandled exception.
Logs
fail: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "...", Request id "...": An unhandled exception was thrown by the application.
ImmichFrame.Core.Exceptions.AssetNotFoundException: Exception of type 'ImmichFrame.Core.Exceptions.AssetNotFoundException' was thrown.
at ImmichFrame.Core.Logic.AccountSelection.BloomFilterAssetAccountTracker.ForAsset[T](String assetId, Func`2 f)
at ImmichFrame.Core.Logic.AccountSelection.TotalAccountImagesSelectionStrategy.ForAsset[T](Guid assetId, Func`2 f)
at ImmichFrame.Core.Logic.MultiImmichFrameLogicDelegate.GetAsset(Guid assetId, Nullable`1 assetType, String rangeHeader)
at ImmichFrame.WebApi.Controllers.AssetController.GetAsset(Guid id, String clientIdentifier, Nullable`1 assetType)
Additional Notes
I checked for duplicates and found other generic "frontend stops at error" / "unhandled exception" issues, but not one for this specific BloomFilterAssetAccountTracker lookup failure.
- Lingua principale
- C#
- Stelle
- 2.4k
- Fork
- 121
- Merge medio
- 18g 20h
- PR unite (30g)
- 1
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di immichFrame/ImmichFrame
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
immichFrame/ImmichFrame#735 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
immichFrame/ImmichFrame#733 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 76/100
immichFrame/ImmichFrame#732 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 22/100
immichFrame/ImmichFrame#731 · 1 reazione ·
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
immichFrame/ImmichFrame#729 ·
Tutte le issue di immichFrame/ImmichFrame
Issue simili
-
Feature needs response
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
Adyen/adyen-dotnet-api-library#1907 ·
I maintainer di solito rispondono entro 5 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
dimitar-radenkov/Pointframe#318 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
DotHarness/dotcraft#546 ·
I maintainer di solito rispondono entro 1 giorno
-
a-corriger bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
christian-raj/S-Aloha#303 · 1 commento ·
-
Input editor says "Apply Changes" even when no changes have been made.Forse già presa @hcooper l’ha presa oggi. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
MobiFlight/MobiFlight-Connector#3526 ·
I maintainer di solito rispondono entro 1 giorno