Skip to content

feat(server-ng): harden configuration surface - #3756

Merged
hubcio merged 1 commit into
masterfrom
feat/server-ng-config-hardening
Jul 28, 2026
Merged

feat(server-ng): harden configuration surface#3756
hubcio merged 1 commit into
masterfrom
feat/server-ng-config-hardening

Conversation

@hubcio

@hubcio hubcio commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Make VSR timing and capacity tunables configurable and close the
config-audit findings on the configuration plane: reject configs that
cannot work at runtime (zero rebalancing and heartbeat durations, zero
or panic-prone WebSocket size pairs, out-of-bounds repair_chunk_max on
a single node), warn on parsed-but-inert knobs and annotate them in
the shipped config, and move live WebSocket frame tuning to
[websocket].

Old [message_bus] ws_* keys are ignored; cluster roster websocket
ports now bind the actual listener; listener backlog follows SOMAXCONN
and the HTTP TLS handshake budget tracks handshake_grace.

@github-actions github-actions Bot added the S-waiting-on-review PR is waiting on a reviewer label Jul 27, 2026
@codecov

codecov Bot commented Jul 27, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 87.91103% with 125 lines in your changes missing coverage. Please review.
✅ Project coverage is 60.94%. Comparing base (8904577) to head (eb4c262).

Files with missing lines Patch % Lines
core/server-ng/src/bootstrap.rs 78.35% 42 Missing ⚠️
core/server-ng/src/http/reads.rs 61.53% 15 Missing ⚠️
core/server-ng/src/http/tls.rs 0.00% 14 Missing ⚠️
core/message_bus/src/config.rs 21.42% 3 Missing and 8 partials ⚠️
core/shard/src/lib.rs 35.29% 11 Missing ⚠️
core/server-ng/src/http.rs 0.00% 8 Missing ⚠️
core/consensus/src/impls.rs 89.06% 7 Missing ⚠️
core/server-ng/src/http/handlers.rs 0.00% 6 Missing ⚠️
core/configs/src/server_ng_config/validators.rs 97.56% 3 Missing and 1 partial ⚠️
core/metadata/src/impls/metadata.rs 0.00% 3 Missing ⚠️
... and 2 more
Additional details and impacted files
@@              Coverage Diff              @@
##             master    #3756       +/-   ##
=============================================
- Coverage     74.78%   60.94%   -13.85%     
  Complexity      969      969               
=============================================
  Files          1306     1306               
  Lines        151353   139787    -11566     
  Branches     126785   115293    -11492     
=============================================
- Hits         113196    85194    -28002     
- Misses        34644    50995    +16351     
- Partials       3513     3598       +85     
Components Coverage Δ
Rust Core 58.27% <87.91%> (-16.87%) ⬇️
Java SDK 62.71% <ø> (ø)
C# SDK 71.13% <ø> (-1.08%) ⬇️
Python SDK 92.27% <ø> (ø)
PHP SDK 84.52% <ø> (ø)
Node SDK 92.20% <ø> (-0.05%) ⬇️
Go SDK 43.08% <ø> (ø)
Files with missing lines Coverage Δ
core/configs/src/server_ng_config/cluster.rs 97.64% <100.00%> (+0.90%) ⬆️
core/configs/src/server_ng_config/defaults.rs 100.00% <100.00%> (ø)
core/configs/src/server_ng_config/displays.rs 0.00% <ø> (ø)
core/configs/src/server_ng_config/message_bus.rs 97.61% <ø> (-0.85%) ⬇️
core/configs/src/server_ng_config/metadata.rs 96.03% <100.00%> (+2.70%) ⬆️
core/configs/src/server_ng_config/partition.rs 100.00% <100.00%> (ø)
core/configs/src/server_ng_config/server_ng.rs 47.05% <ø> (ø)
core/configs/src/server_ng_config/websocket.rs 0.00% <ø> (ø)
core/consensus/src/client_table.rs 92.88% <100.00%> (+0.24%) ⬆️
core/consensus/src/lib.rs 0.00% <ø> (ø)
... and 20 more

... and 261 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Make VSR timing and capacity tunables configurable and close the
config-audit findings on the configuration plane: reject configs that
cannot work at runtime (zero rebalancing and heartbeat durations, zero
or panic-prone WebSocket size pairs, out-of-bounds repair_chunk_max on
a single node), warn on parsed-but-inert knobs and annotate them in
the shipped config, and move live WebSocket frame tuning to
[websocket].

Old [message_bus] ws_* keys are ignored; cluster roster websocket
ports now bind the actual listener; listener backlog follows SOMAXCONN
and the HTTP TLS handshake budget tracks handshake_grace.
@hubcio
hubcio force-pushed the feat/server-ng-config-hardening branch from 66fd320 to eb4c262 Compare July 28, 2026 09:52
@hubcio
hubcio merged commit f88e8a8 into master Jul 28, 2026
99 checks passed
@hubcio
hubcio deleted the feat/server-ng-config-hardening branch July 28, 2026 10:48
@github-actions github-actions Bot removed the S-waiting-on-review PR is waiting on a reviewer label Jul 28, 2026
numinnex added a commit that referenced this pull request Jul 28, 2026
Master's clients_table_max knob (#3756) calls set_capacity after
install_client_table, but WAL-replay recovery repopulates the table
before bootstrap reaches either call, so every restart with a
registered client tripped the "set_capacity must run before any
client registers" assert and the node refused to boot. Order the
capacity set before the install, build the recovered table at the
configured capacity instead of the compile-time default, and plumb
the same knob into the shard's state-transfer decode so an installed
table never falls back to the default either.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

3 participants