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
Cluster + protocol robustness: validation, anchored substrings, IPv6 zones
Six client-layer correctness gaps closed in one bundle:
- protocol.interrupt() drain now treats ResultResponse and
EmptyResponse as terminal. The EXEC / EXEC_SQL done-callback
emits ResultResponse before the EmptyResponse acknowledgement
when the interrupted statement is on the EXEC side; without this
branch a cancel landing on EXEC poisoned the wire with "Expected
EmptyResponse" ProtocolError.
- protocol.prepare() now cross-validates StmtResponse.db_id against
the requested db_id. Mismatch is a ProtocolError that invalidates
the connection — silent registry drift would route writes to the
wrong DB.
- NO_TRANSACTION_MESSAGE_SUBSTRINGS: drop the bare "cannot rollback"
token. The remaining "no transaction is active" anchor covers
both upstream wordings ("cannot rollback - no transaction is
active" and "cannot commit - no transaction is active") and is
not subject to the DQLITE_ERROR=1 / SQLITE_ERROR=1 collision —
any unrelated code-1 message containing "cannot rollback" was
previously triggering silent-swallow.
- MemoryNodeStore now strips/dedups/rejects empty seed entries.
A typoed "localhost:9001\n" used to leak ValueError through
find_leader's narrow exception filter; duplicates inflated the
probe count and the per-node error lines.
- _parse_address rejects pathological IPv6 zone-id shapes (empty,
whitespace-containing, slash-containing) at the strict-bracket
parser instead of letting them slip past to the regex-fallback's
"not a valid hostname or IP literal" diagnostic.
- README documents fork-after-init contract (gunicorn --preload,
multiprocessing, Celery prefork pool guidance); pool.initialize()
docstring documents the parallel-warm-up shape and the
leader-side serialisation cost.
Tests updated for the anchored-substring contract.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments