0.16.0-rc1 targeted fix-validation · flight 0.16.0-rc1@sha256:79c7907d (multi-arch INDEX, src f4f13a7cb) · connector 0.16.0-rc1 · Trino 481 · Cassandra 5.0.8 RF=3 · 3× i4i.xlarge · ~1.70M partitions/node, 2 SSTable gens · 2026-07-21
Differential over 20 distinct point-read keys (do_get counter deltas via VictoriaMetrics), split
counts from EXPLAIN ANALYZE:
| Config | Source-stage splits | do_get/query | Pods hit | Rows |
|---|---|---|---|---|
split-pruning-enabled=true | 13 | 5.7 | 3 / 3 | 1 (correct) |
split-pruning-enabled=false | 13 | 5.7 | 3 / 3 | 1 (correct) |
Identical both ways. PASS threshold was 1 split for a fully-bound point read. Connector DEBUG on
every query: Split pruning skipped … constraint summary binds no columns. The predicate is
pushed into the handle's filterJson by applyFilter, so
getSplits() sees an empty constraint.getSummary() and fail-safes to full
fan-out. Correctness intact (identical row sets); the optimization never fires. → #2806.
All three UDT-column shapes fail identically at the keyspace-qualified type name — before any read path runs:
list<frozen<addr>> (nested list<text>) → FAIL at <frozen<cassandra_easy_stress.addr>>
list<frozen<simpleaddr>> (no nesting) → FAIL at <frozen<cassandra_easy_stress.simpleaddr>>
frozen<simpleaddr> (bare scalar) → FAIL at <cassandra_easy_stress.simpleaddr>
invalid ddl: Schema error: Failed to parse CQL schema: Error { ... code: Char }
sstabledump confirms the data on disk is correct (u1=2 addrs, u2=1, u3=empty). The connector's
cql_parser.rs parses a UDT type as a single identifier (stops at .),
but Cassandra always emits the type keyspace-qualified. Every real UDT table is unreadable via Flight,
which makes #2349's decode fix unreachable. → #2807.
| abort_reason | count (soak end) | how forced |
|---|---|---|
client_cancel | 127,215 | kill_query + driver per-cycle cancels (category=cancelled) |
admission_shed | 49 | 100-thread full-SELECT-* flood > limit 64 (category=cancelled) |
internal | 106 | the genuine-error SLI — 0.026% of 402,932 queries |
(none, category=query) | 4 | UDT get_schema hard errors — correctly NOT tagged as an abort |
snapshot_retired / superseded_split / ticket_invalid were not
force-tested (infeasible in a short probe / no in-field trigger via Trino); none surfaced under the
sustained soak either.
At soak end 312 cqlite- snapshots/node; after +6min quiet with zero queries,
312→172/node on the background sweep alone (the R12 query-triggered regression stays fixed). 172/node
is within the documented bound (retire-grace / reuse-window = 600000/3000 = 200 per table
per host) — bounded retention by design, not a leak; would clear at the 6h TTL backstop if idle.