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 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>> >>>> >>> >>
