In ComfyUI's cache, exactly what happens when a node's IS_CHANGED / fingerprint_inputs returns NaN, raises, or returns a changing value, and does it affect downstream nodes?
At the pinned commit the fingerprint value is one component of each node's signature, and the signature of a node also contains its ancestors' fingerprints. A NaN, a fresh float NaN produced by an exception, or any value that differs between prompts therefore gives a different cache key, so the node and everything downstream of it is not found in the output cache and runs again. The docs state this for NaN (NaN is unequal to anything); the code and a maintainers' comment agree, but the mechanism is Python equality/hash of nested frozensets, which was read, not run. One edge is inferred from code reading only: a NaN object that is the same object every run could compare equal by identity.
Structured fields
{
"citations": [
{
"url": "https://github.com/Comfy-Org/docs/blob/98a69a152ca4b8cb91c19f7a4574f3b5e1907a6f/custom-nodes/backend/server_overview.mdx",
"note": "ComfyUI b1a247c9 comfy_execution/caching.py L102-L128"
},
{
"url": "https://github.com/Comfy-Org/ComfyUI/blob/1a82e6d01f395b43275c77acd289af1eb7090bb9/execution.py",
"note": "ComfyUI b1a247c9 comfy_execution/caching.py L102-L128"
},
{
"url": "https://github.com/Comfy-Org/ComfyUI/blob/1a82e6d01f395b43275c77acd289af1eb7090bb9/comfy_execution/caching.py",
"note": "ComfyUI b1a247c9 comfy_execution/caching.py L102-L128"
},
{
"url": "https://github.com/Comfy-Org/ComfyUI/blob/1a82e6d01f395b43275c77acd289af1eb7090bb9/comfy_execution/cache_provider.py",
"note": "ComfyUI b1a247c9 comfy_execution/caching.py L102-L128"
},
{
"url": "https://github.com/Comfy-Org/docs/blob/98a69a152ca4b8cb91c19f7a4574f3b5e1907a6f/custom-nodes/v3_migration.mdx",
"note": "ComfyUI b1a247c9 comfy_execution/caching.py L102-L128"
}
]
}Evidence claims
- [sourced_fact] At the pinned commit the fingerprint value is one component of each node's signature, and the signature of a node also contains its ancestors' fingerprints. A NaN, a fresh float NaN produced by an exception, or any value that differs between prompts therefore gives a different cache key, so the node and everything downstream of it is not found in the output cache and runs again. The docs state this for NaN (NaN is unequal to anything); the code and a maintainers' comment agree, but the mechanism is Python equality/hash of nested frozensets, which was read, not run. One edge is inferred from code reading only: a NaN object that is the same object every run could compare equal by identity. · locator: ComfyUI b1a247c9 comfy_execution/caching.py L102-L128 source
Rights
| component | license | hosting | redistribution | modification | training | Evidence and notes |
|---|---|---|---|---|---|---|
| documentation | unknown | permitted | permitted | unknown | unknown | Applies to this original summary only, not to the cited sources. |
Linked records
- cites → https://github.com/Comfy-Org/ComfyUI/blob/1a82e6d01f395b43275c77acd289af1eb7090bb9/comfy_execution/cache_provider.py
- cites → https://github.com/Comfy-Org/ComfyUI/blob/1a82e6d01f395b43275c77acd289af1eb7090bb9/comfy_execution/caching.py
- cites → https://github.com/Comfy-Org/ComfyUI/blob/1a82e6d01f395b43275c77acd289af1eb7090bb9/execution.py
- cites → https://github.com/Comfy-Org/docs/blob/98a69a152ca4b8cb91c19f7a4574f3b5e1907a6f/custom-nodes/backend/server_overview.mdx
- cites → https://github.com/Comfy-Org/docs/blob/98a69a152ca4b8cb91c19f7a4574f3b5e1907a6f/custom-nodes/v3_migration.mdx