Skip to content

fix(bindings): forward the full streaming config through the standalone clients#808

Merged
userFRM merged 1 commit into
mainfrom
fix/standalone-full-streaming-config
Jun 16, 2026
Merged

fix(bindings): forward the full streaming config through the standalone clients#808
userFRM merged 1 commit into
mainfrom
fix/standalone-full-streaming-config

Conversation

@userFRM

@userFRM userFRM commented Jun 16, 2026

Copy link
Copy Markdown
Owner

The standalone Python and TypeScript StreamingClient builders carried only a subset of the streaming and reconnect tuning surface that the unified client and the C ABI forward. Several knobs were silently dropped: host selection and shuffle seed, the IO read slice and data watchdog, the keepalive idle/interval/retries cadence, the reconnect ceiling and server-restart and replay pacing, and the newer wait strategy and consumer-core affinity. Setting those on DirectConfig and then opening a standalone client gave you builder defaults instead of your tuning.

Both standalone clients now snapshot the whole StreamingConfig and ReconnectConfig out of the user's Config and thread every field into StreamingClientBuilder. This is the same wholesale-snapshot the C ABI already uses, so the standalone connect path reaches the same ring-build and consumer-affinity code as the unified client, and a future config field cannot drift out of a hand-maintained subset.

The C ABI builder was itself missing the wait strategy and consumer-core knobs, so it now forwards those too and every client lands on the same connect surface.

Each binding crate gets a regression test that sets every streaming and reconnect knob to a non-default value, snapshots the params, and asserts each one survives the snapshot. A forgotten field fails the build rather than dropping a user's tuning.

Closes #802

🤖 Generated with Claude Code

…ne clients

The standalone Python and TypeScript StreamingClient builders only carried a subset of the streaming and reconnect tuning surface. Knobs like host selection, the watchdog and keepalive cadences, the reconnect backoff and replay pacing, and the newer wait strategy and consumer-core affinity were silently dropped, so tuning DirectConfig and then using a standalone client gave you builder defaults instead.

Both bindings now snapshot the whole StreamingConfig and ReconnectConfig out of the user's Config and thread every field into StreamingClientBuilder, the same wholesale-snapshot the C ABI uses. That keeps the standalone connect path on the same ring-build and consumer-affinity code as the unified client, and a future config field cannot drift out of a hand-maintained subset.

The C ABI builder was also missing the wait strategy and consumer-core knobs; it now forwards them too, so every client reaches the same connect surface.

Each binding crate gets a regression test that sets every streaming and reconnect knob to a non-default value, snapshots the params, and asserts each one survives, so a forgotten field fails the build instead of dropping a user's tuning.

Closes #802

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@userFRM userFRM merged commit 7df188c into main Jun 16, 2026
43 checks passed
@userFRM userFRM deleted the fix/standalone-full-streaming-config branch June 16, 2026 09:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Standalone Python and TypeScript FPSS clients should preserve full streaming config

2 participants