mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-21 21:22:11 -03:00
feat(metadata): clear stale cache entries when metadata is empty
Update metadata registry to remove cache entries when node metadata becomes empty instead of keeping stale data. This prevents accumulation of unused cache entries and ensures cache only contains valid metadata. Added test case to verify cache behavior when LoRA configurations are removed.
This commit is contained in:
@@ -196,9 +196,11 @@ class MetadataRegistry:
|
||||
node_metadata[category] = {}
|
||||
node_metadata[category][node_id] = current_metadata[category][node_id]
|
||||
|
||||
# Save to cache if we have any metadata for this node
|
||||
# Save new metadata or clear stale cache entries when metadata is empty
|
||||
if any(node_metadata.values()):
|
||||
self.node_cache[cache_key] = node_metadata
|
||||
else:
|
||||
self.node_cache.pop(cache_key, None)
|
||||
|
||||
def clear_unused_cache(self):
|
||||
"""Clean up node_cache entries that are no longer in use"""
|
||||
|
||||
@@ -124,3 +124,40 @@ def test_metadata_registry_caches_and_rehydrates(populated_registry):
|
||||
|
||||
registry.clear_metadata("promptA")
|
||||
assert "promptA" not in registry.prompt_metadata
|
||||
|
||||
|
||||
def test_lora_manager_cache_updates_when_loras_removed(metadata_registry):
|
||||
import nodes
|
||||
|
||||
class LoraManagerLoader: # type: ignore[too-many-ancestors]
|
||||
__name__ = "LoraManagerLoader"
|
||||
|
||||
nodes.NODE_CLASS_MAPPINGS["LoraManagerLoader"] = LoraManagerLoader
|
||||
|
||||
prompt_graph = {
|
||||
"lora_node": {"class_type": "LoraManagerLoader", "inputs": {}},
|
||||
}
|
||||
prompt = SimpleNamespace(original_prompt=prompt_graph)
|
||||
cache_key = "lora_node:LoraManagerLoader"
|
||||
|
||||
metadata_registry.start_collection("prompt1")
|
||||
metadata_registry.set_current_prompt(prompt)
|
||||
metadata_registry.record_node_execution(
|
||||
"lora_node",
|
||||
"LoraManagerLoader",
|
||||
{"loras": [[{"name": "foo", "strength": 0.8, "active": True}]]},
|
||||
None,
|
||||
)
|
||||
assert cache_key in metadata_registry.node_cache
|
||||
|
||||
metadata_registry.start_collection("prompt2")
|
||||
metadata_registry.set_current_prompt(prompt)
|
||||
metadata_registry.record_node_execution("lora_node", "LoraManagerLoader", {"loras": [[]]}, None)
|
||||
|
||||
assert cache_key not in metadata_registry.node_cache
|
||||
|
||||
metadata_registry.start_collection("prompt3")
|
||||
metadata_registry.set_current_prompt(prompt)
|
||||
metadata = metadata_registry.get_metadata("prompt3")
|
||||
|
||||
assert "lora_node" not in metadata[LORAS]
|
||||
|
||||
Reference in New Issue
Block a user