Hi, Jiunn-Yang, JR2. We should try to maintain consistency across our APIs. So, it would be useful to understand if the user-facing part of this KIP is what share consumer wants too. It would be problematic if we proceed with this approach only for the share consumer to choose a different one later.
JR3. I was thinking that if we add the NewPartitions field in GroupHeartbeatResponse, there is no need to expose the group/partition creation timestamp to other RPCs and the Cli. JR5. Since this changes the on-disk data format for PartitionRecord, we need to gate this by a new MV. It also changes the format of ConsumerGroupMetadataValue, so we need to gate it too. I'm not sure if this requires a new MV or a new GV. Thanks, Jun On Thu, Jun 25, 2026 at 5:52 AM 黃竣陽 <[email protected]> wrote: > Hello Jun, chia, > > Thanks for your feedback. > > JR3 JR4 I have updated the KIP. > > JR2 The new-partition detection mechanism is reusable. The coordinator > already has > access to both timestamps required for classification, so the > determination can be made > server-side without introducing any new RPCs. The main difference is where > the policy is > enforced: modern consumer resolves it on the client, whereas a share group > resolves the > starting offset on the partition leader. As a result, the classification > decision would need to > be propagated through the existing share-state initialization path. We > would also need to persist > the group's creation time as part of the share-group state, since that > information is not stored today. > > None of this is a blocker, but it does require changes to the share-state > format and introduces > a share-specific configuration. Given that additional scope, I would > prefer to keep share groups out > of scope for this KIP and address them in a follow-up effort, while > documenting the relevant reuse > opportunities here. > > Best Regards, > Jiunn-Yang > > > Chia-Ping Tsai <[email protected]> 於 2026年6月25日 下午1:31 寫道: > > > >> It inspires me to think about mirror clusters. What if the mirror group > is created 'after' the expanded partitions? In this scenario, the new > configuration 'max.age.ms' could handle it if users are aware of the > migration and set a suitable time interval. Of course, this would require > both creation times to be exposed to clients. > > > > Thinking more about the mirror cluster scenario we discussed, I realize > it introduces significant complexity. Handling it properly would require a > tolerance time window rather than a strict time interval to account for > replication lag. To prevent scope creep and keep KIP-1327 focused on its > primary goal, I think it would be best to defer the multi-cluster/mirroring > scenario and explore those approaches in a separate KIP > > > > On 2026/06/24 21:29:19 Chia-Ping Tsai wrote: > >> hi all, > >> > >>> JR3. The KIP exposes the group/partition creation time to the client. > I am > >>> not sure if there are other use cases for those timestamps. An > alternative > >>> is to avoid exposing those timestamps to the client. The group > coordinator > >>> will categorize the partitions using those timestamps and include the > >>> categorization in the assigned partitions in GroupHeartbeatResponse. > >> > >> It inspires me to think about mirror clusters. What if the mirror group > is created 'after' the expanded partitions? In this scenario, the new > configuration 'max.age.ms' could handle it if users are aware of the > migration and set a suitable time interval. Of course, this would require > both creation times to be exposed to clients. > >> > >> Best, > >> Chia-Ping > >> > >> On 2026/06/24 20:46:16 Jun Rao via dev wrote: > >>> Hi, Jiunn-Yang, > >>> > >>> Thanks for the updated KIP. > >>> > >>> JR2. Share consumer (KIP-932) states: "If the number of partitions is > >>> increased for a topic with a subscription in a share group, the SPSO > for > >>> the newly created share-partitions is initialized to 0 ". However, this > >>> part has not been implemented yet. Currently, all partitions without > offset > >>> follows the strategy given by share.auto.offset.reset. So, we have an > >>> opportunity to see if it's better to align this KIP's changes with the > >>> share consumer. > >>> JR2.1 The first part is whether customizing the offset for new > partitions > >>> to something other than 0 is useful in the share consumer. It seems > that > >>> the motivation in this KIP applies to share consumer too. > >>> JR2.2 The second part is how new partitions are detected. The mechanism > >>> introduced in this KIP seems quite effective. A group coordinator could > >>> pick up newly created partitions for an existing topic or newly created > >>> topics matching the regex. Those partitions are categorized as new > >>> partitions and will follow the strategy given by > >>> auto.offset.reset.new.partitions. > >>> This makes sense since those partitions typically don't have a large > >>> backlog. A consumer could also additionally subscribe to an existing > topic > >>> in an existing group. Those partitions will be categorized as existing > >>> partitions. This also makes sense since those partitions could have a > large > >>> backlog and it is better to follow the strategy given by > auto.offset.reset. It > >>> will be useful to think through whether the logic for categorizing new > >>> partitions should also be reused in the share consumer. > >>> > >>> JR3. The KIP exposes the group/partition creation time to the client. > I am > >>> not sure if there are other use cases for those timestamps. An > alternative > >>> is to avoid exposing those timestamps to the client. The group > coordinator > >>> will categorize the partitions using those timestamps and include the > >>> categorization in the assigned partitions in GroupHeartbeatResponse. > >>> > >>> JR4. It would be useful to support this feature on existing groups as > well. > >>> For example, any partition without a creation timestamp can always be > >>> categorized as an existing partition. > >>> > >>> Jun > >>> > >>> On Wed, Jun 24, 2026 at 6:12 AM 黃竣陽 <[email protected]> wrote: > >>> > >>>> Hello Andrew, > >>>> > >>>> Thanks for your feedback, > >>>>>> 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. > >>>> > >>>> Could you walk us through the specific area where the mistake was > found? > >>>> That would > >>>> help us assess whether it naturally fits within the scope of KIP-1327 > or > >>>> should be addressed > >>>> separately. > >>>> > >>>> AS1 I have updated the KIP > >>>> > >>>> Best Regards, > >>>> Jiunn-Yang > >>>> > >>>>> Chia-Ping Tsai <[email protected]> 於 2026年6月24日 晚上8:49 寫道: > >>>>> > >>>>> 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 > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>> > >>>> > >>> > >> > >
