Hi all, I’d like to manually bump this thread.
Best Regards, Jiunn-Yang > 黃竣陽 <[email protected]> 於 2026年5月1日 晚上10:37 寫道: > > Hello all, > > Thanks for the feedback. > > DJ01/DJ02: > > MetadataResponse bumps from v13 to v14. The PartitionMetadata struct gains a > new > field PartitionAgeMs (int64, default -1), computed server-side by the broker > as > broker_current_time - partition_creation_time. > > Also add the consumer heartbeat flow. when MembershipManager detects a newly > assigned > partition, it explicitly invalidates the metadata for the affected topic and > forces a fresh MetadataRequest > before making the offset reset decision, even if the topic ID is already in > the cache. > > MB0: > > The consumer learns the broker's maximum supported MetadataResponse version > via the > ApiVersions negotiation at connection time. If the negotiated version is > unsupported, the consumer > knows the broker does not support PartitionAgeMs at all and can throw an > UnsupportedVersionException > immediately, rather than silently falling back to latest and risking data > loss without any operator-visible signal. > > MB1/MB2/MB3: > > I have addressed these changes in the KIP. > > Best Regards, > Jiunn-Yang > >> Chia-Ping Tsai <[email protected]> 於 2026年4月29日 下午4:04 寫道: >> >> hi David >> >> I agree with the direction of moving the 'age' resolution from the Heartbeat >> API to the Metadata API to keep the control plane clean. The main trade-off, >> as we noted before, is introducing inter-broker clock skew. The Group >> Coordinator approach provided a single source of truth for time. >> >> However, realistically, this time skew should be negligible. Given that the >> max.age threshold will likely be configured in minutes or hours, a typical >> NTP skew (in milliseconds) between brokers won't impact the fallback >> decision. >> >> Best, >> Chia-Ping >> >>> David Jacot via dev <[email protected]> 於 2026年4月29日 下午3:29 寫道: >>> >>> Hi all, >>> >>> Thanks for the KIP! >>> >>> Sorry, I haven't really followed the previous conversation but I took a >>> quick look at this one. >>> >>> DJ01: I don't clearly understand the flow with the ConsumerGroupHeartbeat >>> API after reading the KIP. There is a new boolean; the KIP states that >>> partition ages are returned only when this boolean is set. Implicitly, this >>> means that when the consumer receives a new partition, it will issue a new >>> HB request with the boolean set to receive the ages. Is my understanding >>> correct? We should perhaps clarify the flow and also explain how it fits >>> into the existing flow (e.g. list offsets, fetch offsets, etc.). >>> DJ02: It my understanding is correct, I wonder if >>> the ConsumerGroupHeartbeat API is the right place for this given that a new >>> round trip is done anyway. Alternatively, it could simply include the >>> metadata. Generally, we should be rather cautious about not overloading >>> the ConsumerGroupHeartbeat API with unrelated concepts. The API is a >>> control plane API for assigning or revoking partitions. The fact that we >>> don't want to add it to the corresponding Streams API also suggests >>> something is not quite right. What would we do if we want to support >>> Streams in the future? >>> >>> Best, >>> David >>> >>>> On Wed, Apr 29, 2026 at 12:28 AM Muralidhar Basani via dev < >>>> [email protected]> wrote: >>>> >>>> Hi Jiunn, >>>> >>>> Thank you for this great kip. Good to know about the gap. >>>> >>>> mb-0 - why a new v2 version bump for RequestPartitionAges field. Can a >>>> tagged field (for ex: on response, PartitionAges on TopicPartitions) be >>>> used here and avoid version bump? >>>> >>>> mb-1 - For the new config, is there a recommended value or a ConfigDef >>>> validator? Probably it should based on the metadata.max.age.ms ? Sizing >>>> instructions can be part of javadocs I guess. >>>> >>>> mb-2 - (minor) As there are no changes to Kafka Streams, would it be better >>>> to add this new config auto.offset.reset.latest.max.age to the >>>> StreamsConfig block list (NON_CONFIGURABLE_CONSUMER_DEFAULT_CONFIGS) for a >>>> clear warning, incase users configure it? This is the most familiar >>>> consumer config and users might easily mistakenly configure it. Or may be >>>> it's not worth it to add. >>>> >>>> mb-3 - (minor) The phrasing "the consumer falls back to earliest" reads as >>>> if the config were being changed per-partition which isn't supported. May >>>> be rephrasing to something like "consumer resolves the initial position to >>>> start offset for that partition" as if earliest was applied to that >>>> partition only and auto.offset.reset config is unchanged. >>>> >>>> Thanks, >>>> Murali >>>> >>>>> On Tue, Apr 28, 2026 at 2:48 PM 黃竣陽 <[email protected]> wrote: >>>>> >>>>> Hi chia, >>>>> >>>>> I have updated the KIP to include this change. >>>>> >>>>> Best Regards, >>>>> Jiunn-Yang >>>>> >>>>>> Chia-Ping Tsai <[email protected]> 於 2026年4月28日 晚上8:03 寫道: >>>>>> >>>>>> hi Jiunn-Yang >>>>>> >>>>>> chia_0: Should we expose the partition creation time via the Admin API? >>>>> I assume it would be valuable for users to diagnose and troubleshoot the >>>>> behavior of auto.offset.reset.latest.max.age >>>>>> >>>>>> Best, >>>>>> Chia-Ping >>>>>> >>>>>> On 2026/04/28 10:47:58 黃竣陽 wrote: >>>>>>> Hello everyone, >>>>>>> >>>>>>> I would like to start a discussion on KIP-1327 Prevent Hot Data Loss >>>> on >>>>> Partition Expansion for Latest Policy >>>>>>> < >>>> https://urldefense.com/v3/__https://cwiki.apache.org/confluence/x/KY4mGQ__;!!Ayb5sqE7!qF4q1QzF1RRgP61D7A2xuEai1ky7fepKDKFFvpNBuePikH-ULmT87TvuuZzy5kau5E4y5zMZAmfQQiwZomM$ >>>>> >>>>>>> >>>>>>> This proposal aims to introduces auto.offset.reset.latest.max.age, a >>>>> consumer config that lets the >>>>>>> latest reset policy distinguish newly expanded (hot) partitions from >>>>> long-existing (cold) ones. Partitions >>>>>>> younger than the configured threshold automatically fall back to >>>>> earliest, preventing silent data loss >>>>>>> during topic expansion without forcing a full historical reprocess. >>>>>>> >>>>>>> Best regards, >>>>>>> Jiunn-Yang >>>>> >>>>> >>>> >
