diff --git a/comfy_execution/asset_enrichment.py b/comfy_execution/asset_enrichment.py index 9d46ce34c..d6c59dda5 100644 --- a/comfy_execution/asset_enrichment.py +++ b/comfy_execution/asset_enrichment.py @@ -13,7 +13,7 @@ def enrich_output_with_assets(output_ui: dict) -> dict: """ from comfy.cli_args import args if args.disable_assets: - return output_ui + return dict(output_ui) import folder_paths from app.assets.services.ingest import register_file_in_place, DependencyMissingError diff --git a/server.py b/server.py index 231e1a6f9..330fd03b2 100644 --- a/server.py +++ b/server.py @@ -44,7 +44,7 @@ from comfyui_version import __version__ from app.frontend_management import FrontendManager, parse_version from comfy_api.internal import _ComfyNodeInternal from app.assets.seeder import asset_seeder -from app.assets.api.routes import register_assets_routes +from app.assets.api.routes import register_assets_routes, assets_enabled from app.assets.services.ingest import register_file_in_place from app.assets.services.path_utils import get_known_subfolder_tags from app.assets.services.asset_management import resolve_hash_to_path @@ -523,6 +523,12 @@ class PromptServer(): # node preview, it constructs /view?filename=, so this # endpoint must resolve blake3 hashes to their on-disk file paths. if filename.startswith("blake3:"): + # Hash resolution requires the asset database. When assets + # are disabled (--disable-assets) or unavailable (DB init + # failure) the database was never initialized, so treat the + # hash as unresolvable rather than erroring on a session. + if not assets_enabled(): + return web.Response(status=404) owner_id = self.user_manager.get_request_user_id(request) result = resolve_hash_to_path(filename, owner_id=owner_id) if result is None: diff --git a/tests-unit/assets_test/test_disabled_mode.py b/tests-unit/assets_test/test_disabled_mode.py index cf93b676c..b350426b2 100644 --- a/tests-unit/assets_test/test_disabled_mode.py +++ b/tests-unit/assets_test/test_disabled_mode.py @@ -118,6 +118,12 @@ def test_seed_scan_rejected(disabled_comfy): assert r.status_code == 503 +def test_view_blake3_hash_returns_404(disabled_comfy): + base_url, _ = disabled_comfy + r = requests.get(base_url + "/view", params={"filename": "blake3:" + "0" * 64}, timeout=30) + assert r.status_code == 404 + + def test_upload_image_skips_asset_registration(disabled_comfy): base_url, db_path = disabled_comfy files = {"image": ("disabled-mode-test.png", b"\x89PNG fake bytes", "image/png")}