Skip to content

feat(server)!: promote server-ng to the Apache Iggy server - #3856

Merged
hubcio merged 3 commits into
masterfrom
feat/promote-server-ng
Aug 11, 2026
Merged

feat(server)!: promote server-ng to the Apache Iggy server#3856
hubcio merged 3 commits into
masterfrom
feat/promote-server-ng

Conversation

@hubcio

@hubcio hubcio commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Maintaining two servers meant every protocol change, config knob
and test lane got built twice, and the vsr feature let the
replicated paths drop out of a default build silently. Every SDK
and CI lane already targets the VSR server, so the fork can go.

VSR is now unconditional: the feature is gone, classic TCP, QUIC
and WebSocket framing is deleted, and the integration harness
always spawns the VSR server with a 3-node default cluster. The
legacy server, its compat lane, bdd compose flavor and config
modules are removed, and server-ng takes over the server package,
the iggy-server binary, the configs tree and the systemd
sd-notify integration. The published Dockerfile gains the
license generation stage ASF requires.

Restart scenarios are pinned to one node because a 3-node
topology trips a pre-existing partitions-plane view-change stall,
proven present at the base commit and tracked separately. The
cutover is also the only free moment to rotate the JWT
key-derivation context, so it is renamed here before the string
re-freezes.

BREAKING CHANGE: the wire protocol changed, so older SDKs and
CLIs cannot connect. The --fresh and
--with-default-root-credentials flags are gone, leaving
--replica-id. The -p server-ng and --bin iggy-server-ng cargo
targets no longer exist, and the SDK crate no longer has a vsr
feature.

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

codecov Bot commented Aug 10, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.46971% with 140 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.98%. Comparing base (91672aa) to head (2666e5e).

Files with missing lines Patch % Lines
core/configs/src/common/validators.rs 64.24% 67 Missing and 2 partials ⚠️
core/configs/src/server_config/validators.rs 89.92% 30 Missing and 8 partials ⚠️
core/configs/src/common/displays.rs 91.20% 8 Missing ⚠️
core/configs/src/server_config/sharding.rs 95.62% 8 Missing ⚠️
core/sdk/src/tcp/tcp_client.rs 69.23% 7 Missing and 1 partial ⚠️
core/configs/src/server_config/server.rs 88.88% 3 Missing and 1 partial ⚠️
core/configs/src/server_config/quic.rs 96.90% 3 Missing ⚠️
core/configs/src/server_config/message_bus.rs 90.90% 1 Missing ⚠️
core/sdk/src/quic/quic_client.rs 66.66% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #3856      +/-   ##
============================================
+ Coverage     76.91%   81.98%   +5.06%     
- Complexity     1021     1296     +275     
============================================
  Files          1363     1199     -164     
  Lines        175833   159943   -15890     
  Branches     146279   129651   -16628     
============================================
- Hits         135243   131126    -4117     
+ Misses        36715    25248   -11467     
+ Partials       3875     3569     -306     
Components Coverage Δ
Rust Core 83.21% <90.46%> (+7.12%) ⬆️
Java SDK 66.15% <ø> (+2.92%) ⬆️
C# SDK 60.75% <ø> (-14.92%) ⬇️
Python SDK 89.98% <ø> (ø)
PHP SDK 84.26% <ø> (ø)
Node SDK 96.25% <ø> (ø)
Go SDK 68.60% <ø> (ø)
Files with missing lines Coverage Δ
core/binary_protocol/src/consensus/command.rs 100.00% <ø> (ø)
core/binary_protocol/src/framing.rs 94.72% <ø> (-1.06%) ⬇️
...nary_protocol/src/requests/users/login_register.rs 98.46% <ø> (-1.54%) ⬇️
...ocol/src/requests/users/login_register_with_pat.rs 100.00% <ø> (ø)
...ary_protocol/src/responses/users/login_register.rs 100.00% <ø> (ø)
core/common/src/error/eviction.rs 90.47% <ø> (+42.85%) ⬆️
.../common/src/traits/binary_impls/consumer_groups.rs 100.00% <ø> (ø)
core/common/src/traits/binary_impls/messages.rs 85.84% <ø> (-11.66%) ⬇️
core/common/src/traits/binary_impls/mod.rs 92.50% <ø> (-4.17%) ⬇️
.../src/traits/binary_impls/personal_access_tokens.rs 100.00% <ø> (ø)
... and 63 more

... and 345 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.

@hubcio
hubcio force-pushed the feat/promote-server-ng branch from 0266839 to a8c82b0 Compare August 10, 2026 18:51
Comment thread core/server/src/args.rs
Maintaining two servers meant every protocol change, config knob
and test lane got built twice, and the vsr feature let the
replicated paths drop out of a default build silently. Every SDK
and CI lane already targets the VSR server, so the fork can go.

VSR is now unconditional: the feature is gone, classic TCP, QUIC
and WebSocket framing is deleted, and the integration harness
always spawns the VSR server with a 3-node default cluster. The
legacy server, its compat lane, bdd compose flavor and config
modules are removed, and server-ng takes over the server package,
the iggy-server binary, the configs tree and the systemd
sd-notify integration. The published Dockerfile gains the
license generation stage ASF requires.

Restart scenarios are pinned to one node because a 3-node
topology trips a pre-existing partitions-plane view-change stall,
proven present at the base commit and tracked separately. The
cutover is also the only free moment to rotate the JWT
key-derivation context, so it is renamed here before the string
re-freezes.

BREAKING CHANGE: the wire protocol changed, so older SDKs and
CLIs cannot connect. The --fresh and
--with-default-root-credentials flags are gone, leaving
--replica-id. The -p server-ng and --bin iggy-server-ng cargo
targets no longer exist, and the SDK crate no longer has a vsr
feature.
@hubcio
hubcio force-pushed the feat/promote-server-ng branch from a8c82b0 to 12d393b Compare August 11, 2026 10:00
The legacy server's two dev flags died with it, leaving thirteen
doc sites instructing arguments clap now rejects and no way to
get a deterministic dev login without exporting env vars. Both
return with their legacy semantics: --fresh wipes system.path
before boot (allowed in cluster mode with a loud warning, since a
wiped replica rejoins via the tested state-transfer path) and
--with-default-root-credentials fills whichever IGGY_ROOT_* env
var is unset, env always winning.

Three adjacent defects are fixed in the same lines. The cluster
root-credential guard ran after recover() had already seeded the
root user, so it could never fire and a fresh cluster minted a
different random password per replica; it now runs before shards
spawn, gated on a missing metadata dir so healthy restarts boot
without env vars. A half-set or out-of-range credential pair
panicked a shard thread through asserts and now fails boot as a
typed error. The generated root password only reached stdout and
now also lands in the persistent log via tracing.

Wipe failure aborts boot instead of continuing on a partially
deleted directory, which the recovery pairing check would have
misread as a durability violation. Args are parsed and .env
loaded before the executor spawns, so the credential env writes
happen single-threaded, which also makes .env-provided
IGGY_SHARD_RUNTIME_CAPACITY effective for the first time.
@hubcio
hubcio force-pushed the feat/promote-server-ng branch 2 times, most recently from 71f119c to 916abf6 Compare August 11, 2026 12:40
@hubcio
hubcio force-pushed the feat/promote-server-ng branch from 916abf6 to 2666e5e Compare August 11, 2026 13:40
@hubcio
hubcio merged commit 9cfb2d9 into master Aug 11, 2026
101 checks passed
@hubcio
hubcio deleted the feat/promote-server-ng branch August 11, 2026 14:48
@github-actions github-actions Bot removed the S-waiting-on-review PR is waiting on a reviewer label Aug 11, 2026
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