Cache positive entry freshness checks

This commit is contained in:
udo
2026-07-19 04:24:45 +00:00
parent d95fb38183
commit 4f010d37a0
8 changed files with 332 additions and 11 deletions
+13 -6
View File
@@ -229,12 +229,19 @@ and whether it used worker memory, serialized code, compilation, or failed.
Absolute source paths and source contents are not exposed. This keeps cold-worker
module latency distinguishable without exposing source paths.
The same snapshot divides pre-dispatch WASM readiness into entry normalization,
mutation freshness, artifact stat, complete dependency freshness, and worker
availability. `ready_check_count` distinguishes the warm one-check path from an
on-demand compile and recheck; repeated snapshot reads retain the initial values.
Freshness still stats every distinct source on every entry check. Exact repeated
load paths are deduplicated before canonicalization, while distinct aliases are
resolved independently so symlink retargets remain immediately visible.
mutation freshness, artifact stat, source-generation lookup, dependency
freshness, and worker availability. `ready_freshness_full_check_us` and
`ready_freshness_cache_hit_count` distinguish full graph validation from a
positive worker-local hit; `ready_freshness_us` remains inclusive.
`ready_check_count` distinguishes the warm one-check path from an on-demand
compile and recheck; repeated snapshot reads retain the initial values.
Read-only HTTP entry checks may reuse a positive result for at most ten seconds
when the source generation and exact Wasm, metadata, and setup-template
identities are unchanged. CLI and mutation requests always validate the complete
graph. Misses, expiry, missing tokens, and changed identities also run the full
check. Exact repeated load paths are then deduplicated before canonicalization,
while distinct aliases are resolved independently so symlink retargets remain
visible by the next hard validation.
When a current serialized module exists, the worker scans wasm section headers
and reads only `dylink.0`, `uce.abi`, and the tiny `uce.module` identity; it does
not fault the code and data bodies into every new worker. A missing/stale/invalid serialized module