This is an automated email from the ASF dual-hosted git repository. mmodzelewski pushed a commit to branch advertised_ip in repository https://gitbox.apache.org/repos/asf/iggy.git
commit 0584cf881fd031160ef5f83ea2c6ca0e73f76e67 Merge: 96a90b4f4 40d1e356e Author: Maciej Modzelewski <[email protected]> AuthorDate: Mon Jul 27 21:41:04 2026 +0200 Merge branch 'master' into advertised_ip core/common/src/types/identifier/mod.rs | 16 +- core/configs/src/server_ng_config/cluster.rs | 15 +- core/configs/src/server_ng_config/validators.rs | 80 +++--- .../tests/sdk/consumer_group_membership.rs | 102 ++++++++ core/metadata/src/stm/consumer_group.rs | 281 ++++++++++++++++++--- core/metadata/src/stm/result.rs | 71 +++++- core/metadata/src/stm/snapshot.rs | 8 +- core/metadata/src/stm/stream.rs | 34 ++- core/sdk/src/clients/consumer.rs | 7 +- core/server-ng/config.toml | 15 +- core/server-ng/src/bootstrap.rs | 203 +++++++++++---- core/server-ng/src/partition_reconciler.rs | 24 +- core/server-ng/src/server_error.rs | 10 +- .../src/workload/ops/delete_consumer_group.rs | 34 ++- 14 files changed, 737 insertions(+), 163 deletions(-) diff --cc core/server-ng/config.toml index a4d709f87,2bed5b4b3..67b995f76 --- a/core/server-ng/config.toml +++ b/core/server-ng/config.toml @@@ -640,12 -642,12 +642,21 @@@ ca_file = " # flag, which selects the entry in this list that describes the current # node. All other entries are remote peers. # -# 'ip' is the address the cluster advertises for the node (cluster metadata, -# follower-to-primary HTTP forwarding); it is not the bind interface for -# quic/http/websocket, which comes from each transport's own 'address' -# setting above. 'ports' is the single source of listener ports in cluster -# mode: every enabled transport needs an explicit per-node port, otherwise -# the server refuses to start. ++# 'ip' is the node's roster address. Replica-to-replica traffic, ++# follower-to-primary HTTP forwarding, and the TCP listener use it. It is not ++# the bind interface for quic/http/websocket, which comes from each transport's ++# own 'address' setting above. ++# +# Each node may also set 'advertised_address': the client-facing address +# handed out in cluster metadata and leader redirects. Set it when 'ip' is +# a private replica-network address unreachable by clients (Docker, +# Kubernetes, NAT). Accepts a literal IPv4/IPv6 address or a DNS hostname +# (RFC 1123: ASCII letters, digits, '-' and '.'; no port, no trailing dot). - # Replica-to-replica traffic always uses 'ip'. Unset = clients get 'ip'. ++# When unset, clients receive 'ip'. ++# ++# In cluster mode, 'ports' is the single source of listener ports: every ++# enabled transport needs an explicit per-node port, otherwise the server ++# refuses to start. [[cluster.nodes]] name = "iggy-node-1" ip = "127.0.0.1" @@@ -662,9 -664,8 +673,9 @@@ ports = { tcp = 8091, quic = 8081, htt # [[cluster.nodes]] # name = "iggy-node-3" # ip = "192.168.1.100" +# advertised_address = "iggy-node-3.example.com" # replica_id = 2 - # ports = { tcp = 8092, http = 3002, tcp_replica = 9092 } + # ports = { tcp = 8092, quic = 8082, http = 3002, websocket = 8094, tcp_replica = 9092 } # Sharding configuration [system.sharding]
