Skip to content

0.16.0-rc1 Fix Validation

Not a whole-milestone soak — a per-fix probe round for the specific 0.16 Flight + connector changes, each with a pass/fail threshold, plus a 3.5h drift soak to catch regressions the probes can’t. Run against a live 3-node Cassandra 5.0 cluster.

Verdict: the core read path is ship-grade; two of the three testable fixes don’t work in the field yet. The soak was flawless — ~32 qps for 3.5h with zero errors, flat RSS/fd/threads, zero OOM/restart, byte-exact integrity (1,703,038 rows start == end), and a 0.026% genuine-error SLI (down from 0.15’s 0.89%, now that the abort taxonomy decomposes it). But #2679 split pruning is inert and #2349’s UDT fix is unreachable behind a CQL-parser bug — both new, reproducible, and root-caused (filed #2806, #2807).

Open the full report →

The full report is a self-contained dashboard with four linked views:

  • Verdict — the probe table with evidence.
  • Stability — RSS, fd/thread, egress, admission, and the new 0.16 gauges over the 3.5h soak.
  • Probes — per-fix close-ups (split-pruning differential, UDT parse, abort taxonomy, snapshot grace-sweep).
  • Comparison — 0.16.0-rc1 vs R11b / R12 / 0.15 and the Lane-B goals ladder.
ProbeFix under testVerdict
A#2679 plan-time split pruningREGRESSED — keyed reads still fan out to 13 splits across all pods (identical on/off). Reads an empty constraint.getSummary() instead of the pushed-down filterJson. Correctness fail-safe, optimization dead → #2806
B#2349 UDT registry in both read pathsBLOCKED — every UDT table fails DDL parse (code: Char) at keyspace-qualified type names (frozen<ks.udt>); the decode fix is unreachable → #2807
C#2372 BTI (da) tables over FlightCOULD-NOT-OBSERVE — no BTI corpus on the rig (testbed BTI provisioning is a separate follow-up)
D#2681 do_get abort taxonomyVERIFIEDclient_cancel and admission_shed forced and bucketed; hard errors excluded from the abort SLI; genuine internal errors 0.026% over the soak
Soak~4h drift + integrityVERIFIED — 3.5h @ 32-thr, ~32 qps, 0 errors, flat RSS/fd/threads, 0 OOM/restart, 1,703,038 rows start == end
  • #2679 split pruning is inert — the connector pushes the partition-key predicate into the table handle’s filterJson at applyFilter, so getSplits() sees an empty constraint summary and always falls back to full fan-out. The ~32–39 qps / fan-out-skew ceiling is unrelieved.
  • #2349 is blocked by a parser bugcql_parser.rs parses a UDT type as a single identifier that stops at ., but Cassandra always emits UDT columns keyspace-qualified, so every real UDT table is unreadable via Flight.
  • The rig metrics-pipeline fix is now durable — the soak-0.15 resourcedetection fix was being reverted by kit start/stop (the OTel config regenerates from the built binary); rebuilding the dist makes it hold through kit churn. rate() is per-host_name, no inflation.

Run metadata: 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 (new integrity anchor — #2789 read-time TTL expiry landed in this build) · 2026-07-21.