You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(cache): HTTP conditional revalidation via /init-request validators
Result-cache conditional revalidation (304 / not_modified) now works over
HTTP, not just subprocess. The validators (vgi.cache.if_none_match /
if_modified_since) rode the first producer tick, which reaches the worker
before it produces on subprocess. Over HTTP the first producer turn folds
into the /init request, so the tick arrived too late and the worker always
recomputed.
Fix: on the HTTP path, attach the validators to the /init request's
custom_metadata. SerializeRpcRequest gains an optional extra_metadata
param; HttpFunctionConnection::PerformInit passes the armed validators
(guarded by cond_sent_ for single delivery). Subprocess is unchanged
(keeps first-tick delivery). Detection/consumption is already
transport-agnostic — the worker's 0-row not_modified batch comes back in
the /init response buffer and flows through GetLastCacheControl →
MaybeSlideRevalidatedEntry → CachedReplayConnection swap, exactly as on
subprocess.
The worker side is handled in vgi-rpc (surfacing init-request metadata to
the producer's first process()); the vgi-python worker needs no change
(TableProducerState.process already reads the validators). revalidate.test
now `require httpfs` so it runs on HTTP; full cache suite green subprocess
(727) + HTTP (668, revalidate included).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments