This is an automated email from the ASF dual-hosted git repository. hubcio pushed a commit to branch feat/partition-routing in repository https://gitbox.apache.org/repos/asf/iggy.git
commit 5c9a54f12cdc304d9ef958688d4c4f854682eab3 Author: Hubert Gruszecki <[email protected]> AuthorDate: Tue Oct 13 18:26:42 2026 +0200 docs(cluster): describe routing compatibility changes Replica control frames and client route replies both changed. Document the coordinated upgrade requirement and the metadata exposed by an authorized route lookup. --- core/binary_protocol/src/consensus/header.rs | 13 ++++++++++--- .../src/requests/messages/get_partition_route.rs | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/binary_protocol/src/consensus/header.rs b/core/binary_protocol/src/consensus/header.rs index 3eafdf431..afccb0cba 100644 --- a/core/binary_protocol/src/consensus/header.rs +++ b/core/binary_protocol/src/consensus/header.rs @@ -44,9 +44,16 @@ //! Older replicas cannot report live sessions to a new primary, which would //! expire their consumer-group memberships after the configured timeout. //! -//! `Prepare`, `Request`, `Reply`, and `Eviction` are unaffected. Prepares keep -//! `checksum` as their view-independent identity, and the three client-facing -//! headers are sealed on neither side, so SDKs are untouched. +//! Session retirement progress (31), forwarding completion (32), and the +//! partition incarnation fields in control headers also require matching +//! replicas. The incarnation occupies bytes older builds treated as reserved; +//! a mixed cluster cannot safely identify the partition history of a frame. +//! +//! Frame sealing does not change `Prepare`, `Request`, `Reply`, or `Eviction`. +//! Prepares keep `checksum` as their view-independent identity, and the three +//! client-facing headers are sealed on neither side. Separate client protocol +//! changes, including partition routes and replica IDs in cluster metadata, +//! require a coordinated SDK upgrade as well. use super::{Command, ConsensusError, Operation}; use crate::WireIdentifier; diff --git a/core/binary_protocol/src/requests/messages/get_partition_route.rs b/core/binary_protocol/src/requests/messages/get_partition_route.rs index 137262341..b6b74c9e9 100644 --- a/core/binary_protocol/src/requests/messages/get_partition_route.rs +++ b/core/binary_protocol/src/requests/messages/get_partition_route.rs @@ -21,7 +21,7 @@ use crate::codec::{WireDecode, WireEncode, read_u32_le}; use crate::{WireError, WireIdentifier}; /// Route lookup for one partition, authorized by send or poll permission on its -/// topic, without exposing topic details. The reply is a +/// topic. The reply includes the partition count, view and primary in a /// [`PartitionRouteResponse`](crate::responses::messages::PartitionRouteResponse). #[derive(Debug, Clone, PartialEq, Eq)] pub struct GetPartitionRouteRequest {
