hi Andrew

> I've discovered that we made a mistake implementing KIP-932 in this area,
so we'll rectify that and check whether it's really tight enough not to
require KIP-1327.

Would you mind sharing more details about that? If it's not anything close
to NP-hard, we could definitely look into covering it within KIP-1327

Best,
Chia-Ping


Andrew Schofield <[email protected]> 於 2026年6月24日週三 下午7:49寫道:

> Hi Jiunn-Yang,
> I've just been re-reading this KIP to ensure that share group support is
> not needed. I've discovered that we made a mistake implementing KIP-932 in
> this area, so we'll rectify that and check whether it's really tight enough
> not to require KIP-1327.
>
> One trivial comments for consistency.
>
> AS1: In kafka-consumer-groups.sh, unknown column data is represented by
> "-", not "N/A". In kafka-topics.sh, we do use "N/A".
>
> Thanks,
> Andrew
>
> On 2026/06/23 23:23:38 黃竣陽 wrote:
> > Hi all,
> >
> > Manually bumping this thread.
> >
> > Best Regards,
> > Jiunn-Yang
> >
> > > 黃竣陽 <[email protected]> 於 2026年6月17日 晚上9:17 寫道:
> > >
> > > Hello chia,
> > >
> > > Thanks for the feedback, I have updated the KIP.
> > >
> > > Best Regards,
> > > Jiunn-Yang
> > >
> > >> Chia-Ping Tsai <[email protected]> 於 2026年6月17日 凌晨12:47 寫道:
> > >>
> > >> hi Jiunn-Yang
> > >>
> > >>> When the config is set on a cluster that has not yet been
> upgraded... classification cannot occur... the consumer falls back to the
> base auto.offset.reset for the affected partitions. No exception is thrown,
> and no operational disruption results.
> > >>
> > >> Existing group can't take advantage of this excellent new
> configuration. Allowing users to modify the group creation time might be
> overkill. Instead, we could print a useful warning message to guide users.
> For example, we can suggest that they re-create the group with their
> existing committed offsets
> > >>
> > >>> Protocol changes
> > >>
> > >> Would you mind listing those RPC changes in a table format?
> > >>
> > >>> The full interaction matrix between the base policy and the
> new-partition policy is:
> > >>
> > >> Please add a filed to describe the target scenario when using these
> policies
> > >>
> > >> Best,
> > >> Chia-Ping
> > >>
> > >>
> > >> On 2026/06/16 16:14:49 黃竣陽 wrote:
> > >>> Hello Jun, chia,
> > >>>
> > >>> Thanks for the feedback, I have updated the KIP for the new
> > >>> approach, PTAL
> > >>>
> > >>> Best Regards,
> > >>> Jiunn-Yang
> > >>>
> > >>>> Chia-Ping Tsai <[email protected]> 於 2026年6月16日 上午8:23 寫道:
> > >>>>
> > >>>> hi Jun
> > >>>>
> > >>>> Yes, your approach is great. I think the combination of latest (for
> existing partitions) and by_duration (for new partitions) can address 99%
> of the complaints I have heard regarding this issue.
> > >>>>
> > >>>> Also, leveraging the group creation time here opens the door to
> implementing a new policy based on timestamp seek in the future, should the
> community want to pursue that.
> > >>>>
> > >>>> Thanks for your patience and constructive feedback. We will update
> the KIP accordingly.
> > >>>>
> > >>>> Best, Chia-Ping
> > >>>>
> > >>>>> Jun Rao via dev <[email protected]> 於 2026年6月16日 清晨5:11 寫道:
> > >>>>>
> > >>>>> Hi, Chia-Ping,
> > >>>>>
> > >>>>> Thanks for the reply.
> > >>>>>
> > >>>>> I agree that it's probably useful to allow a user to configure a
> different
> > >>>>> offset policy for existing partitions vs new partitions. However,
> using
> > >>>>> group creation time to capture that seems more intuitive. Here is
> another
> > >>>>> proposal: remove auto.offset.reset.max.age.ms and categorize new
> partitions
> > >>>>> based on group creation time. Introduce
> > >>>>> a new config auto.offset.reset.new.partitions whose values can be
> earliest,
> > >>>>> latest and by_duration, the same as auto.offset.reset. Users can
> set
> > >>>>> `auto.offset.reset.new.partitions` to `earliest` if they want to
> guarantee
> > >>>>> no data loss on new partitions. They can also use by_duration to
> set an
> > >>>>> upper bound on the backlog replayed, which can be different from
> that of
> > >>>>> the existing partitions. This will address your concern about too
> much
> > >>>>> backlog being replayed when the offsets are lost. What do you
> think?
> > >>>>>
> > >>>>> Jun
> > >>>>>
> > >>>>>
> > >>>>>> On Mon, Jun 15, 2026 at 10:39 AM Chia-Ping Tsai <
> [email protected]> wrote:
> > >>>>>>
> > >>>>>> hi Jun
> > >>>>>>
> > >>>>>> The most important part of this story is how users should expect
> the data
> > >>>>>> they can see when using the latest or by_duration policy with
> expanded
> > >>>>>> partitions.
> > >>>>>>
> > >>>>>> Yes, the by_duration policy can minimize data loss, but it is
> > >>>>>> non-deterministic, which means users will either read too many
> historical
> > >>>>>> records from existing partitions or lose some records from
> expanded
> > >>>>>> partitions.
> > >>>>>>
> > >>>>>> Also, I agree that auto.offset.reset.max.age.ms
> > >>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.max.age.ms__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpwnwknH$
> >
> > >>>>>> is a bit hard to understand, and that is why I preferred having a
> whole new
> > >>>>>> policy based entirely on group creation time (KIP-1282)
> > >>>>>>
> > >>>>>> Best,
> > >>>>>> Chia-Ping
> > >>>>>>
> > >>>>>> Jun Rao via dev <[email protected]> 於 2026年6月16日週二 上午1:08寫道:
> > >>>>>>
> > >>>>>>> Hi, Chia-Ping and Jiunn-Yang,
> > >>>>>>>
> > >>>>>>> Thanks for the reply. I am still trying to understand the value
> of the new
> > >>>>>>> configs with the KIP.
> > >>>>>>>
> > >>>>>>> The motivation of the KIP is that a user doesn't want to miss
> the data if
> > >>>>>>> the backlog is small. The backlog of the existing partition is
> easy to
> > >>>>>>> understand because it relates to retention time. The backlog for
> the new
> > >>>>>>> partition is a bit subtle to understand since it depends on the
> metadata
> > >>>>>>> refresh delay. To set auto.offset.reset.max.age.ms
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.max.age.ms__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpwnwknH$
> >,
> > >>>>>>> the user needs to
> > >>>>>>> understand the metadata refresh delay on the consumer side and
> use it to
> > >>>>>>> set the config.
> > >>>>>>>
> > >>>>>>> Now, let's consider the alternative: setting the same value for
> the
> > >>>>>>> existing by_duration policy. The KIP lists three issues with this
> > >>>>>>> approach.
> > >>>>>>> 1. It computes the seek target client-side as now() - duration,
> which
> > >>>>>>> introduces clock skew across consumers and forces operators to
> choose
> > >>>>>>> overly large durations, causing unnecessary reprocessing.
> > >>>>>>> 2. The target timestamp is recomputed on each retry, so failed
> > >>>>>>> ListOffsetsRequest retries can shift the target forward and
> potentially
> > >>>>>>> miss records produced between attempts.
> > >>>>>>> 3. It applies uniformly to all partitions without committed
> offsets, and
> > >>>>>>> cannot distinguish newly expanded partitions from long-existing
> partitions
> > >>>>>>> newly assigned to the group, leading to unnecessary replay.
> > >>>>>>>
> > >>>>>>> Issues 1 and 2 are uncommon and can be mitigated by adding a bit
> buffer to
> > >>>>>>> the metadata refresh delay. We could also consider improving the
> > >>>>>>> implementation. For issue 3, the metadata refresh delay is
> typically low
> > >>>>>>> (in the order of minutes with the classic consumer and tens of
> seconds
> > >>>>>>> with
> > >>>>>>> the new consumer). If a user is ok with reading that much
> backlog for new
> > >>>>>>> partitions, it seems they will be ok doing the same for existing
> > >>>>>>> partitions.
> > >>>>>>>
> > >>>>>>> So, instead of introducing a new config, could we just reuse the
> existing
> > >>>>>>> config with better documentation and/or implementation?
> > >>>>>>>
> > >>>>>>> Jun
> > >>>>>>>
> > >>>>>>>
> > >>>>>>>> On Sat, Jun 13, 2026 at 12:19 AM 黃竣陽 <[email protected]>
> wrote:
> > >>>>>>>
> > >>>>>>>> Hello Jun,
> > >>>>>>>>
> > >>>>>>>> You're right that group creation time is the more intuitive
> answer at
> > >>>>>>>> first glance,
> > >>>>>>>> the KIP's own motivation talks about partitions that "predate
> the group"
> > >>>>>>>> vs partitions
> > >>>>>>>> "created during group runtime," which directly points to a
> > >>>>>>> group-lifecycle
> > >>>>>>>> classifier.
> > >>>>>>>> I'd like to walk through why we landed on partition age, and the
> > >>>>>>>> trade-offs we considered.
> > >>>>>>>>
> > >>>>>>>> We evaluated three candidate signals:
> > >>>>>>>>
> > >>>>>>>> 1. `by_duration:5secs`
> > >>>>>>>>
> > >>>>>>>> This covers the metadata blindness window, but has issues the
> KIP
> > >>>>>>>> currently documents
> > >>>>>>>> under "Why not use `by_duration`?":
> > >>>>>>>>
> > >>>>>>>> - Client-side `now() - duration` introduces clock skew across
> consumers.
> > >>>>>>>> - `ListOffsets` retries shift the target forward, potentially
> missing
> > >>>>>>>> records produced between
> > >>>>>>>> attempts.
> > >>>>>>>> - It applies uniformly to all partitions without committed
> offsets,
> > >>>>>>>> including pre-existing partitions
> > >>>>>>>> newly assigned to the group, causing unnecessary replay.
> > >>>>>>>>
> > >>>>>>>> 2. Group creation time as classifier
> > >>>>>>>>
> > >>>>>>>> This works cleanly when the consumer is actively running. Our
> concern
> > >>>>>>>> is the idle / late-rejoin case:
> > >>>>>>>>
> > >>>>>>>> T=0:         Group created.
> > >>>>>>>> T=1..T=100:  Consumer idle (down, disconnected, etc.).
> > >>>>>>>> T=50:        Partition added during the idle window.
> > >>>>>>>> T=100:       Consumer resumes.
> > >>>>>>>>
> > >>>>>>>> Under group creation time, the new partition is classified as
> new
> > >>>>>>>> (`50 > 0`) and reset to `earliest`, replaying everything from
> T=50.
> > >>>>>>>> But during `[T=1, T=100]`, base partitions also accumulated
> data that
> > >>>>>>>> the consumer accepts as lost — that is precisely the contract of
> > >>>>>>>> `auto.offset.reset=latest`. There is no principled reason to
> treat
> > >>>>>>>> the new partition differently; both contain backlog accumulated
> during
> > >>>>>>>> the same idle window.
> > >>>>>>>>
> > >>>>>>>> This aligns with the "backlog is backlog” principle you raised
> in
> > >>>>>>>> the KIP-1282 thread: a `latest` user has tolerated some backlog
> on
> > >>>>>>>> every other partition during the same idle period; forcing
> 0-backlog
> > >>>>>>>> tolerance only on new partitions would be inconsistent with that
> > >>>>>>>> tolerance.
> > >>>>>>>>
> > >>>>>>>> 3. Partition age vs threshold
> > >>>>>>>>
> > >>>>>>>> Partition age corresponds to the actual silent data loss window,
> > >>>>>>>> the gap between partition creation and the consumer’s metadata
> > >>>>>>>> refresh. Within this window, data loss is genuinely silent: the
> > >>>>>>>> consumer had no opportunity to know about the partition.
> Outside this
> > >>>>>>>> window, missing data reflects either:
> > >>>>>>>>
> > >>>>>>>> - (a) the user’s tolerated cost of running with idle consumers,
> or
> > >>>>>>>> - (b) an operational issue to surface via monitoring, not via
> reset
> > >>>>>>> policy.
> > >>>>>>>>
> > >>>>>>>> We did not choose partition age because it is more elegant than
> group
> > >>>>>>>> creation time — we chose it because its failure mode (requires a
> > >>>>>>>> threshold) is
> > >>>>>>>> less invasive than the failure mode of group creation time
> (overrides
> > >>>>>>>> user-stated
> > >>>>>>>> `latest` intent during idle periods).
> > >>>>>>>>
> > >>>>>>>> Best Regards,
> > >>>>>>>> Jiunn-Yang
> > >>>>>>>>
> > >>>>>>>>> Chia-Ping Tsai <[email protected]> 於 2026年6月13日 上午11:52 寫道:
> > >>>>>>>>>
> > >>>>>>>>> Hi Jun,
> > >>>>>>>>>
> > >>>>>>>>> Relying on both creation times will create an inconsistent
> scenario. A
> > >>>>>>>>> consumer that lost all offsets due to a long sleep will seek
> to the
> > >>>>>>>>> beginning for the partitions created later than the group.
> > >>>>>>>>>
> > >>>>>>>>> That is why we initially proposed KIP-1282 to fix the
> inconsistency
> > >>>>>>>> using a
> > >>>>>>>>> whole new policy. Since KIP-1282 couldn't reach a consensus,
> KIP-1327
> > >>>>>>>> goes
> > >>>>>>>>> back to using flexible configurations to prevent users from
> falling
> > >>>>>>> into
> > >>>>>>>>> that pitfall.
> > >>>>>>>>>
> > >>>>>>>>> Best, Chia-Ping
> > >>>>>>>>>
> > >>>>>>>>> Jun Rao via dev <[email protected]> 於 2026年6月13日週六
> 上午6:49寫道:
> > >>>>>>>>>
> > >>>>>>>>>> Hi, Jiunn-Yang,
> > >>>>>>>>>>
> > >>>>>>>>>> Thanks for the reply and sorry for the late reply.
> > >>>>>>>>>>
> > >>>>>>>>>> JR1. The design of auto.offset.reset.max.age.ms
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.max.age.ms__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpwnwknH$
> >
> > >>>>>>> still feels weird to
> > >>>>>>>> me.
> > >>>>>>>>>> It
> > >>>>>>>>>> categorizes partitions as new or existing based on the
> partition
> > >>>>>>>> creation
> > >>>>>>>>>> time. Intuitively, the categorization should be based on the
> group
> > >>>>>>>> creation
> > >>>>>>>>>> time: all partitions existing when the group is created are
> existing
> > >>>>>>> and
> > >>>>>>>>>> all partitions created after the group creation are new
> partitions.
> > >>>>>>>>>>
> > >>>>>>>>>> Jun
> > >>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>> On Tue, Jun 9, 2026 at 8:51 AM 黃竣陽 <[email protected]>
> wrote:
> > >>>>>>>>>>
> > >>>>>>>>>>> Hi all,
> > >>>>>>>>>>>
> > >>>>>>>>>>> Manually bumping this thread. If there is no further
> > >>>>>>>>>>> discussion, I will close the vote.
> > >>>>>>>>>>>
> > >>>>>>>>>>> Best Regards,
> > >>>>>>>>>>> Jiunn-Yang
> > >>>>>>>>>>>
> > >>>>>>>>>>>> 黃竣陽 <[email protected]> 於 2026年6月1日 晚上7:16 寫道:
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Hello Jian,
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Thanks for your feedback,
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Agreed, partition expansion is a common operational task,
> not an
> > >>>>>>> edge
> > >>>>>>>>>>>> case. I've updated the Motivation section accordingly.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Best Regards,
> > >>>>>>>>>>>> Jiunn-Yang
> > >>>>>>>>>>>>
> > >>>>>>>>>>>>> jian fu <[email protected]> 於 2026年6月1日 下午5:49 寫道:
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Hi Jiunn-Yang:
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Thanks for the KIP. I think it would be useful to clarify
> that
> > >>>>>>> this
> > >>>>>>>>>> is a
> > >>>>>>>>>>>>> common scenario rather than an edge case, which further
> > >>>>>>> demonstrates
> > >>>>>>>>>> the
> > >>>>>>>>>>>>> need for this optimization. For example:
> > >>>>>>>>>>>>> A partition expansion is a common operational task in
> Kafka: To
> > >>>>>>>>>> balance
> > >>>>>>>>>>>>> resource utilization and cost, topics are typically
> created with a
> > >>>>>>>>>>> moderate
> > >>>>>>>>>>>>> default partition count. However, as traffic grows over
> time, it
> > >>>>>>> is
> > >>>>>>>>>>> often
> > >>>>>>>>>>>>> necessary to increase the number of partitions to
> accommodate the
> > >>>>>>>>>> higher
> > >>>>>>>>>>>>> workload.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Regards
> > >>>>>>>>>>>>> Jian
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> 黃竣陽 <[email protected]> 于2026年5月30日周六 22:31写道:
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Hello chia,
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Thanks for the comments, I have updated the KIP!
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Best Regards,
> > >>>>>>>>>>>>>> Jiunn-Yang
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Chia-Ping Tsai <[email protected]> 於 2026年5月30日 晚上8:29
> 寫道:
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Hi Jiunn-Yang,
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Would you mind removing the terms "hot" and "cold" when
> > >>>>>>> describing
> > >>>>>>>>>>>>>>> partitions in the KIP? I understand you are using them to
> > >>>>>>> describe
> > >>>>>>>>>> the
> > >>>>>>>>>>>>>>> "freshness" or the users' need for the records, but
> applying
> > >>>>>>> these
> > >>>>>>>>>>> terms
> > >>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>> the partition itself feels a bit unnatural.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> After all, in this scenario, users don't really care
> whether a
> > >>>>>>>>>>> partition
> > >>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>> newly expanded or not. Their only expectation is that
> they won't
> > >>>>>>>>>>> silently
> > >>>>>>>>>>>>>>> lose any live records produced to the topic during their
> active
> > >>>>>>>>>>>>>> consumption.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Best, Chia-Ping
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> 黃竣陽 <[email protected]> 於 2026年5月30日週六 下午12:30寫道:
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Hello Jun,
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Thanks for the feedback, I have updated the KIP
> motivation
> > >>>>>>>> section.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Best Regards,
> > >>>>>>>>>>>>>>>> Jiunn-Yang
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Jun Rao via dev <[email protected]> 於 2026年5月30日
> 凌晨1:12
> > >>>>>>> 寫道:
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Hi, Jiunn-Yang,
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Thanks for the reply. I think we need a stronger
> motivation
> > >>>>>>> for
> > >>>>>>>>>> the
> > >>>>>>>>>>>>>> KIP.
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> The KIP says "The core insight is that not all
> partitions
> > >>>>>>> without
> > >>>>>>>>>> a
> > >>>>>>>>>>>>>>>>> committed offset are the same. A newly expanded
> partition
> > >>>>>>> (hot)
> > >>>>>>>> is
> > >>>>>>>>>>>>>>>>> fundamentally different from a partition the consumer
> has
> > >>>>>>> never
> > >>>>>>>>>> seen
> > >>>>>>>>>>>>>>>>> because it predates the group (cold)." Why is the hot
> > >>>>>>> partition
> > >>>>>>>>>>>>>>>>> fundamentally different from the cold?
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> The KIP says "The existing by_duration policy is also
> > >>>>>>>> insufficient
> > >>>>>>>>>>>>>>>> because:
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> - The calculated seek time (now() - duration) varies
> across
> > >>>>>>> nodes
> > >>>>>>>>>>> due
> > >>>>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>>> clock skew. To be safe, users must set an overly large
> > >>>>>>> duration,
> > >>>>>>>>>>>>>>>> causing
> > >>>>>>>>>>>>>>>>> unnecessary reprocessing.
> > >>>>>>>>>>>>>>>>> - On network errors, the client recalculates the seek
> time on
> > >>>>>>>>>> retry,
> > >>>>>>>>>>>>>>>>> shifting the target timestamp forward and risking data
> loss."
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> However, both of these situations are rare. If these
> issues
> > >>>>>>>>>> persist,
> > >>>>>>>>>>>>>> more
> > >>>>>>>>>>>>>>>>> severe problems likely exist elsewhere. Rare
> situations don't
> > >>>>>>>>>> need a
> > >>>>>>>>>>>>>>>> common
> > >>>>>>>>>>>>>>>>> solution. If users care about those rare situations,
> they can
> > >>>>>>>>>>> implement
> > >>>>>>>>>>>>>>>>> customized logic using
> > >>>>>>>>>>>>>> ConsumerRebalanceListener.onPartitionsAssigned().
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> Jun
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> On Sun, May 17, 2026 at 6:50 AM 黃竣陽 <
> [email protected]>
> > >>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> Hello chia,
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> Thanks for the feedback,
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> If the creation time exists, the returned value
> should
> > >>>>>>> always
> > >>>>>>>> be
> > >>>>>>>>>>>>>>>> greater
> > >>>>>>>>>>>>>>>>>> than or equal to zero, right?
> > >>>>>>>>>>>>>>>>>> I have explicitly mentioned this in the KIP.
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> New  Old (MetadataResponse v0–13)    positive
>   any
> > >>>>>>>>>>> field
> > >>>>>>>>>>>>>>>>>> absent    UnsupportedVersionException
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> The earliest point at which we can detect the version
> > >>>>>>> mismatch
> > >>>>>>>> is
> > >>>>>>>>>>>>>> during
> > >>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>> first metadata fetch after assignment, which occurs
> inside
> > >>>>>>>>>> poll().
> > >>>>>>>>>>>>>>>>>> Therefore, the
> > >>>>>>>>>>>>>>>>>> user would encounter an UnsupportedVersionException
> from
> > >>>>>>> poll().
> > >>>>>>>>>>> I’ll
> > >>>>>>>>>>>>>>>>>> clarify this in the KIP.
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> Best Regards,
> > >>>>>>>>>>>>>>>>>> Jiunn-Yang
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Chia-Ping Tsai <[email protected]> 於 2026年5月17日
> 下午4:50
> > >>>>>>> 寫道:
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> hi Jiunn
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> PartitionAgeMs (int64, default -1): The age of this
> > >>>>>>> partition
> > >>>>>>>>>> in
> > >>>>>>>>>>>>>>>>>> milliseconds, computed server-side by the broker as
> > >>>>>>>>>>>>>> broker_current_time
> > >>>>>>>>>>>>>>>> -
> > >>>>>>>>>>>>>>>>>> partition_creation_time. Returns -1 if the broker
> does not
> > >>>>>>>>>> support
> > >>>>>>>>>>>>>> this
> > >>>>>>>>>>>>>>>>>> feature or the partition creation time is unknown.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> If the creation time exists, the returned value
> should
> > >>>>>>> always
> > >>>>>>>> be
> > >>>>>>>>>>>>>>>> greater
> > >>>>>>>>>>>>>>>>>> than or equal to zero, right?
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> New  Old (MetadataResponse v0–13)    positive
>   any
> > >>>>>>>>>>> field
> > >>>>>>>>>>>>>>>>>> absent    UnsupportedVersionException
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Will user encounter UnsupportedVersionException when
> calling
> > >>>>>>>>>>>>>> `poll()`?
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>> Chia-Ping
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> On 2026/05/16 04:30:49 黃竣陽 wrote:
> > >>>>>>>>>>>>>>>>>>>> Hello Jun, chia,
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> I've updated KIP-1327 with a design change based on
> the
> > >>>>>>>>>>> discussion
> > >>>>>>>>>>>>>>>>>>>> feedback.
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> The updated design decouples the new-partition reset
> > >>>>>>> behavior
> > >>>>>>>>>>> from
> > >>>>>>>>>>>>>>>>>>>> the base auto.offset.reset policy:
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> - auto.offset.reset.max.age.ms
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.max.age.ms__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpwnwknH$
> >
> > >>>>>>> now applies to all
> > >>>>>>>>>>> auto.offset.reset
> > >>>>>>>>>>>>>>>>>> values
> > >>>>>>>>>>>>>>>>>>>> (latest, earliest, by_duration, none).
> > >>>>>>>>>>>>>>>>>>>> - For new ("hot") partitions, the consumer resets to
> > >>>>>>>>>>>>>>>>>> auto.offset.reset.new
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.new__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpDMjdw3$
> >
> > >>>>>>> .partitions
> > >>>>>>>>>>>>>>>>>>>> config setting
> > >>>>>>>>>>>>>>>>>>>> - For existing ("cold") partitions, the base
> > >>>>>>> auto.offset.reset
> > >>>>>>>>>>>>>> policy
> > >>>>>>>>>>>>>>>>>> continues
> > >>>>>>>>>>>>>>>>>>>> to apply unchanged.
> > >>>>>>>>>>>>>>>>>>>> - The new-partition reset behavior is represented
> by a
> > >>>>>>>> separate
> > >>>>>>>>>>>>>>>>>> internal config
> > >>>>>>>>>>>>>>>>>>>> (auto.offset.reset.new
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.new__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpDMjdw3$
> >.partitions,
> > >>>>>>> currently fixed to
> > >>>>>>>>>> earliest).
> > >>>>>>>>>>>>>> This
> > >>>>>>>>>>>>>>>>>> decoupled design makes
> > >>>>>>>>>>>>>>>>>>>> it straightforward to promote the behavior to a
> public
> > >>>>>>>>>>> user-facing
> > >>>>>>>>>>>>>>>>>> configuration in a future KIP.
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> Best Regards,
> > >>>>>>>>>>>>>>>>>>>> Jiunn-Yang
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> Chia-Ping Tsai <[email protected]> 於 2026年5月16日
> 清晨7:46
> > >>>>>>> 寫道:
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> hi Jun
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> I see what you mean now. The proposal from me is
> listed
> > >>>>>>>> below:
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> 1) Add auto.offset.reset.new
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.new__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpDMjdw3$
> >.partitions
> > >>>>>>> with a default value
> > >>>>>>>>>> of
> > >>>>>>>>>>>>>>>>>> earliest. It fixes the data loss from both
> by_duration and
> > >>>>>>>>>> latest,
> > >>>>>>>>>>> and
> > >>>>>>>>>>>>>>>> it
> > >>>>>>>>>>>>>>>>>> does not change the logic of
> auto.offset.reset=earliest.
> > >>>>>>>>>>>>>>>>>>>>> 2) Mark auto.offset.reset.new
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.new__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpDMjdw3$
> >.partitions
> > >>>>>>> as an internal
> > >>>>>>>>>>>>>>>>>> configuration. auto.offset.reset.new
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.new__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpDMjdw3$
> >
> > >>>>>>> .partitions=earliest
> > >>>>>>>> already
> > >>>>>>>>>>>>>>>>>> addresses the issue, and we can discuss the use cases
> of
> > >>>>>>> other
> > >>>>>>>>>>> values
> > >>>>>>>>>>>>>>>> in a
> > >>>>>>>>>>>>>>>>>> separate KIP.
> > >>>>>>>>>>>>>>>>>>>>> 3) Both configs, auto.offset.reset.new
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.new__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpDMjdw3$
> >.partitions
> > >>>>>>> and
> > >>>>>>>>>>>>>>>>>> auto.offset.reset.latest.max.age.ms
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.latest.max.age.ms__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfu9JSP4l$
> >,
> > >>>>>>> will be applied to all for
> > >>>>>>>>>>>>>>>>>> consistency.
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> WDYT?
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> On 2026/05/15 20:53:20 Jun Rao via dev wrote:
> > >>>>>>>>>>>>>>>>>>>>>> Hi, Chia-Ping,
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> Thanks for the reply.
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> 1. In the motivation section, the KIP says "When
> a Kafka
> > >>>>>>>>>> topic
> > >>>>>>>>>>> is
> > >>>>>>>>>>>>>>>>>> expanded
> > >>>>>>>>>>>>>>>>>>>>>> with new partitions, consumers using the latest
> auto
> > >>>>>>> offset
> > >>>>>>>>>>> reset
> > >>>>>>>>>>>>>>>>>> policy
> > >>>>>>>>>>>>>>>>>>>>>> will silently miss all records produced to those
> > >>>>>>> partitions
> > >>>>>>>>>>> before
> > >>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>> consumer discovers them.". If a user sets
> > >>>>>>>>>>>>>>>>>>>>>> auto.offset.reset=by_duration=1sec, the same
> record loss
> > >>>>>>>>>> issue
> > >>>>>>>>>>>>>> could
> > >>>>>>>>>>>>>>>>>> also
> > >>>>>>>>>>>>>>>>>>>>>> happen, right?
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> 2. I was thinking auto.offset.reset.new
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.new__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpDMjdw3$
> >.partitions
> > >>>>>>> will
> > >>>>>>>> take
> > >>>>>>>>>>> the
> > >>>>>>>>>>>>>>>> same
> > >>>>>>>>>>>>>>>>>>>>>> values as auto.offset.reset. So a user could set
> it
> > >>>>>>>>>>> by_duration if
> > >>>>>>>>>>>>>>>>>> needed.
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> Jun
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> On Thu, May 14, 2026 at 4:06 PM Chia-Ping Tsai <
> > >>>>>>>>>>>>>> [email protected]
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> hi Jun
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> Thanks for the feedback. I might be missing
> something
> > >>>>>>>>>>> important
> > >>>>>>>>>>>>>>>> from
> > >>>>>>>>>>>>>>>>>> your
> > >>>>>>>>>>>>>>>>>>>>>>> suggestion, so please bear with me as I try to
> clarify
> > >>>>>>> with
> > >>>>>>>>>> a
> > >>>>>>>>>>> few
> > >>>>>>>>>>>>>>>>>> questions:
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> 1. Is there a strong use case for extending this
> logic
> > >>>>>>> to
> > >>>>>>>>>>> other
> > >>>>>>>>>>>>>>>> reset
> > >>>>>>>>>>>>>>>>>>>>>>> policies? Unlike latest, policies like earliest
> or
> > >>>>>>>>>> by_duration
> > >>>>>>>>>>>>>>>> don't
> > >>>>>>>>>>>>>>>>>> seem
> > >>>>>>>>>>>>>>>>>>>>>>> to suffer from the same silent data loss issue
> when a
> > >>>>>>>>>>> partition
> > >>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>>>> expanded.
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> 2. What values would we expect users to
> configure for
> > >>>>>>>>>>>>>>>>>>>>>>> auto.offset.reset.new
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.new__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpDMjdw3$
> >.partitions?
> > >>>>>>> If they set it to
> > >>>>>>>>>> earliest
> > >>>>>>>>>>> or
> > >>>>>>>>>>>>>>>>>> latest,
> > >>>>>>>>>>>>>>>>>>>>>>> we might run into the exact same edge cases. For
> > >>>>>>> example,
> > >>>>>>>>>> if a
> > >>>>>>>>>>>>>>>>>> consumer is
> > >>>>>>>>>>>>>>>>>>>>>>> offline for a while and a new partition is
> created
> > >>>>>>> during
> > >>>>>>>>>> that
> > >>>>>>>>>>>>>>>>>> downtime,
> > >>>>>>>>>>>>>>>>>>>>>>> the user might actually want to skip to latest
> when
> > >>>>>>>>>> resuming,
> > >>>>>>>>>>>>>>>> rather
> > >>>>>>>>>>>>>>>>>> than
> > >>>>>>>>>>>>>>>>>>>>>>> reading from earliest just because the partition
> is
> > >>>>>>>>>>> technically
> > >>>>>>>>>>>>>>>>>> "new" to
> > >>>>>>>>>>>>>>>>>>>>>>> the group.
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> This is exactly why we opted for introducing a
> max.age
> > >>>>>>>>>>> threshold.
> > >>>>>>>>>>>>>>>> It
> > >>>>>>>>>>>>>>>>>> gives
> > >>>>>>>>>>>>>>>>>>>>>>> users a time-bound way to define what is
> genuinely
> > >>>>>>>> "hot/new"
> > >>>>>>>>>>> and
> > >>>>>>>>>>>>>>>>>> what is
> > >>>>>>>>>>>>>>>>>>>>>>> just an old partition they haven't seen yet.
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>>>> Chia-Ping
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> On 2026/05/14 20:48:09 Jun Rao via dev wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>> Hi, Jiunn-Yang,
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> Thanks for the KIP.
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> I find auto.offset.reset.latest.max.age a bit
> weird. It
> > >>>>>>>>>> only
> > >>>>>>>>>>>>>>>>>> applies when
> > >>>>>>>>>>>>>>>>>>>>>>>> auto.offset.reset is latest. However, it seems
> that the
> > >>>>>>>>>>>>>> motivation
> > >>>>>>>>>>>>>>>>>>>>>>> equally
> > >>>>>>>>>>>>>>>>>>>>>>>> applies when auto.offset.reset is set to other
> values
> > >>>>>>> like
> > >>>>>>>>>>>>>>>>>> by_duration.
> > >>>>>>>>>>>>>>>>>>>>>>> The
> > >>>>>>>>>>>>>>>>>>>>>>>> intention is that we want to have a separate
> way to
> > >>>>>>>> control
> > >>>>>>>>>>>>>> newly
> > >>>>>>>>>>>>>>>>>> created
> > >>>>>>>>>>>>>>>>>>>>>>>> partitions vs existing partitions when the group
> > >>>>>>> starts.
> > >>>>>>>>>>> Have we
> > >>>>>>>>>>>>>>>>>>>>>>> considered
> > >>>>>>>>>>>>>>>>>>>>>>>> adding a new config like auto.offset.reset.new
> > >>>>>>> <
> https://urldefense.com/v3/__http://auto.offset.reset.new__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkfpDMjdw3$
> >
> > >>>>>>>> .partitions?
> > >>>>>>>>>>> If
> > >>>>>>>>>>>>>>>> this
> > >>>>>>>>>>>>>>>>>> new
> > >>>>>>>>>>>>>>>>>>>>>>>> config is not set, the offset reset policy
> defaults to
> > >>>>>>> the
> > >>>>>>>>>>>>>> policy
> > >>>>>>>>>>>>>>>>>> used
> > >>>>>>>>>>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>>>>> existing partitions. The user could set it
> explicitly
> > >>>>>>> to
> > >>>>>>>>>>>>>> customize
> > >>>>>>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>>>>>>>>>>> behavior for new partitions.
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> Jun
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>> On Thu, May 7, 2026 at 5:07 AM 黃竣陽 <
> [email protected]
> > >>>>>>>>
> > >>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>> 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
> > >>>>>>> <
> https://urldefense.com/v3/__http://metadata.max.age.ms__;!!Ayb5sqE7!ryUSIElKDF-DJJHgYwYXwp4XEBXpXuBOnZd18PJoMNH4LZ1gc-pDbbdfb2eme_dRSvdvI3bkflKEb5SK$
> >
> > >>>>>>>>>>>>>>>>>> ?
> > >>>>>>>>>>>>>>>>>>>>>>>>> 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
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>
> > >>>>>>
> > >>>
> > >>>
> > >>>
> > >
> >
> >
> >
>

Reply via email to