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
{{ message }}
Repository navigation
Commit 1d8f0ec
Browse filesBrowse the repository at this point in the historyBrowse files
fix: two cache/rehydrate faults the integration suite caught
Both are mine, both from this release's work, and neither was reachable from
the unit suite — 2,100+ tests passed while the HTTP integration suite failed
174 of 304. Recording that, because it says where the risk in this
optimization work actually sits.
MetaWorker had no `_unwrap_attach_full`. Dropping the decrypted attach from
the call state means the rehydrate path re-opens the sealed envelope on
whatever the transport hands it as the implementation — and under a
MetaWorker that object is not a `Worker`: MetaWorker proxies rather than
subclasses. Every HTTP continuation of a catalog-backed stream died on
`'MetaWorker' object has no attribute '_unwrap_attach_full'`. It now routes
the way `_resolve_function` does, to the sub-worker owning the catalog,
falling back to `_workers[0]` — every sub-worker shares one signing key, as
`_maybe_worker_for_attach` already assumes when it opens envelopes through
`_workers[0]` to read the catalog name. Nothing here drove a MetaWorker over
HTTP, which is why unit coverage said nothing.
`_partition_fields_cached` was keyed on `pa.Schema`, whose `__eq__` and
`__hash__` ignore field metadata — the exact thing the function reads. Its
own docstring said "a pure function of the schema's field metadata" above a
cache that cannot see it. So an annotated schema and an unannotated one of
the same names and types shared an entry and whichever was scanned first
answered for both: a function with no partition annotations inherited a
neighbour's fields, and the `partition_values` contract check passed where it
had to raise. Order-dependent, so it reproduced on one transport and not the
other.
Fixed with a `_SchemaKey` wrapper that keeps the metadata-blind hash — a hash
may collide, it may not lie — and discriminates in `__eq__` via
`equals(check_metadata=True)`, measured at 0.042us, so the optimization
survives. Regression tests cover both cache-population orders, plus the Arrow
equality premise that makes the naive key unsafe in the first place.
Integration green on both transports: subprocess 10,334 assertions, HTTP
10,020, 0 failures.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MS3MkkHgE8pA3Aty7BnZKE
0 commit comments