feat(server)!: promote server-ng to the Apache Iggy server - #3856
Merged
Conversation
Codecov Report❌ Patch coverage is 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
🚀 New features to boost your workflow:
|
hubcio
force-pushed
the
feat/promote-server-ng
branch
from
August 10, 2026 18:51
0266839 to
a8c82b0
Compare
numinnex
reviewed
Aug 11, 2026
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
force-pushed
the
feat/promote-server-ng
branch
from
August 11, 2026 10:00
a8c82b0 to
12d393b
Compare
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
force-pushed
the
feat/promote-server-ng
branch
2 times, most recently
from
August 11, 2026 12:40
71f119c to
916abf6
Compare
hubcio
force-pushed
the
feat/promote-server-ng
branch
from
August 11, 2026 13:40
916abf6 to
2666e5e
Compare
mmodzelewski
approved these changes
Aug 11, 2026
numinnex
approved these changes
Aug 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.