fix(persistent-cache): persist scanner cache after model deletion

After deleting a model, the in-memory scanner cache was updated but the
SQLite persistent cache was not. On server restart, the stale persistent
cache caused check_model_version_exists() to return True, blocking
re-download with 'Model version already exists'.

Add _persist_current_cache() calls in both deletion paths:
- ModelLifecycleService.delete_model() (used by versions tab delete)
- delete_model_version handler in MiscHandlers
This commit is contained in:
Will Miao
2026-05-12 22:50:10 +08:00
parent 86118d0654
commit b4f7dd75af
2 changed files with 16 additions and 0 deletions

View File

@@ -2139,6 +2139,17 @@ class ModelLibraryHandler:
] ]
await found_cache.resort() await found_cache.resort()
scanner_map = {
"lora": lora_scanner,
"checkpoint": checkpoint_scanner,
"embedding": embedding_scanner,
}
scanner = scanner_map.get(found_type)
if scanner:
persist = getattr(scanner, "_persist_current_cache", None)
if callable(persist):
await persist()
history_service = await self._get_download_history_service() history_service = await self._get_download_history_service()
await history_service.mark_not_downloaded(found_type, model_version_id) await history_service.mark_not_downloaded(found_type, model_version_id)

View File

@@ -111,6 +111,11 @@ class ModelLifecycleService:
self._scanner._hash_index.remove_by_path(file_path) self._scanner._hash_index.remove_by_path(file_path)
await self._sync_update_for_model(model_id) await self._sync_update_for_model(model_id)
persist_current_cache = getattr(self._scanner, "_persist_current_cache", None)
if callable(persist_current_cache):
await persist_current_cache()
return {"success": True, "deleted_files": deleted_files} return {"success": True, "deleted_files": deleted_files}
@staticmethod @staticmethod