hi Andrew Yes, we are on the same page :)
Best, Chia-Ping > Andrew Schofield <[email protected]> 於 2026年7月8日 晚上10:47 寫道: > > Hi, > I'd like to confirm what is happening with this KIP for AK 4.4. I think the > answer is that we've decided to improve the docs (I see a PR) and leave it at > that for now. Do I understand correctly? > > Thanks, > Andrew > >> On 2026/07/08 01:32:41 Chia-Ping Tsai wrote: >> hi all, >> >> While I agree we shouldn't surprise the majority of users, relying solely on >> documentation means some users will still fall into this trap. Realizing >> this limitation only when data is silently lost during a partition expansion >> is a truly frustrating experience. >> >> Since we've reached the KIP freeze for 4.4.0, I recommend we focus on >> updating the docs first. >> >> We can put this KIP on hold for now and revisit it after Community Over >> Code. IIRC, Jiunn-Yang is going to share this specific issue at the event >> with other Kafka users and providers. Hopefully, we can gather some fresh >> perspectives and inspiration from the community there. >> >> Best, >> Chia-Ping >> >>> On 2026/07/07 21:38:22 Jun Rao via dev wrote: >>> Hi, Jiunn-Yang, >>> >>> Thanks for the reply. >>> >>> Changing the default value only makes sense if it benefits most users. >>> Most users >>> probably never increase the number of partitions. Changing the default >>> config value gives them no benefit and only introduces a probably >>> surprising behavior >>> change. >>> >>> Jun >>> >>>> On Tue, Jul 7, 2026 at 1:22 PM Chia-Ping Tsai <[email protected]> wrote: >>> >>>> hi Jiunn >>>> >>>> +1 to Approach A :) >>>> >>>> Best, >>>> Chia-Ping >>>> >>>> On 2026/07/07 11:55:14 黃竣陽 wrote: >>>>> Hi Jun, Chia-Ping, >>>>> >>>>> I'd like to first explain why I believe changing the default is >>>> worthwhile. >>>>> >>>>> Documentation can only help users who already know about the problem. >>>>> Because the failure mode is silent, most users discover it only after >>>> data has >>>>> already been missed. A safer default such as by_duration:PT5S protects >>>> users >>>>> automatically, without requiring prior awareness of the issue. >>>>> >>>>> Given that, the question is not whether the issue exists, but how best >>>> to introduce >>>>> a safer default. >>>>> >>>>> Approach A — Follow a deprecation cycle and land the change in 5.0 >>>>> - Keep the current default (`latest`) in upcoming 4.x releases, but emit >>>> a warning that >>>>> the default will change to `by_duration:PT5S` in 5.0 and explain how >>>> users can retain >>>>> the current behavior explicitly. >>>>> - Change the default to `by_duration:PT5S` in 5.0. >>>>> - Update shell tools (for example, the console consumer) to explicitly >>>> use `latest`, preserving >>>>> the expected "show only new messages" behavior. >>>>> >>>>> Approach B — Change the default in a 4.4 minor release >>>>> - Change the default to `by_duration:PT5S` in a 4.x minor release. >>>>> - Leave shell tools unchanged. >>>>> - Emit a warning explaining the change and how users can explicitly >>>> restore `latest`. >>>>> >>>>> I favor Approach B: >>>>> >>>>> Silent data loss during partition expansion is a correctness issue, not >>>> a usability issue. >>>>> Delaying the safer default until 5.0 leaves users relying on the >>>> implicit default exposed unnecessarily. >>>>> Users who need latest can simply pin it explicitly. >>>>> I don't think shell tools need special handling. by_duration:PT5S only >>>> replays a few seconds of data, >>>>> which is negligible in practice and preferable to silently missing >>>> records. Keeping the behavior consistent >>>>> is simpler. >>>>> >>>>> Best Regards, >>>>> Jiunn-Yang >>>>> >>>>>> Jun Rao via dev <[email protected]> 於 2026年7月7日 清晨5:49 寫道: >>>>>> >>>>>> Hi, Chia-Ping, >>>>>> >>>>>> I am not sure that we need an out-of-the-box solution. The proposal in >>>> the >>>>>> KIP is also not out-of-the-box and requires users to opt-in. >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Jun >>>>>> >>>>>> On Mon, Jul 6, 2026 at 11:34 AM Chia-Ping Tsai <[email protected]> >>>> wrote: >>>>>> >>>>>>> hi Jun >>>>>>> >>>>>>> Yes, updating the docs requires minimal changes to the codebase, but >>>> it is >>>>>>> not an out-of-the-box solution. From my perspective, this issue can be >>>>>>> addressed by setting the console consumer's policy back to latest. >>>>>>> >>>>>>> Let's see what Jiunn thinks >>>>>>> >>>>>>> Best, >>>>>>> Chia-Ping >>>>>>> >>>>>>> On 2026/07/06 15:59:37 Jun Rao via dev wrote: >>>>>>>> Hi, Chia-Ping, >>>>>>>> >>>>>>>> One potential downside of changing the default is that some existing >>>>>>> tools >>>>>>>> (e.g. console consumer) may depend on this behavior. For example, a >>>> user >>>>>>>> testing the system may expect to see only new messages and could be >>>>>>>> surprised by the change. Another option is to leave the default >>>>>>> unchanged, >>>>>>>> but document clearly how to prevent losing messages on new partitions >>>>>>>> through by_duration. The users can then make the corresponding config >>>>>>>> changes if needed. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Jun >>>>>>>> >>>>>>>> On Wed, Jul 1, 2026 at 9:39 AM Chia-Ping Tsai <[email protected]> >>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi Jun, >>>>>>>>> >>>>>>>>> Thanks for the feedback. I agree with your conclusion. It would be >>>>>>> better >>>>>>>>> to "make haste" with a new KIP to address this. We can focus the >>>>>>> discussion >>>>>>>>> on the following points: >>>>>>>>> >>>>>>>>> 1) Should we change the default reset policy to by_duration for all >>>>>>>>> consumers? >>>>>>>>> 2) What is the optimal duration to prevent data loss while avoiding >>>>>>> large >>>>>>>>> backlogs? Note that the classic consumer has a 3-second heartbeat >>>>>>> interval, >>>>>>>>> whereas the async consumer uses 5 seconds. >>>>>>>>> 3) What are the potential side effects of replacing latest with >>>>>>>>> by_duration as the default behavior? >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> Chia-Ping >>>>>>>>> >>>>>>>>> On 2026/06/30 20:39:24 Jun Rao via dev wrote: >>>>>>>>>> Hi, Chia-Ping, >>>>>>>>>> >>>>>>>>>> I agree that using by_duration with a value of 5s to 10s addresses >>>>>>> most >>>>>>>>>> common issues with expanded partitions, given the default >>>>>>>>>> heartbeat.interval.ms is 3 seconds. We can consider setting that >>>> as >>>>>>> the >>>>>>>>> new >>>>>>>>>> default. The current proposal may address some other rarer cases, >>>>>>> but it >>>>>>>>>> feels a bit like over engineering. >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Jun >>>>>>>>>> >>>>>>>>>> On Tue, Jun 30, 2026 at 5:58 AM Chia-Ping Tsai < >>>> [email protected]> >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> - Short durations fail during extended downtimes, leading to the >>>>>>> exact >>>>>>>>>>> silent data >>>>>>>>>>> loss this KIP aims to prevent. >>>>>>>>>>> >>>>>>>>>>> Losing the records produced to expanded partitions during a >>>>>>> downtime is >>>>>>>>>>> actually the expected behavior for the latest policy. This is >>>>>>> exactly >>>>>>>>> why, >>>>>>>>>>> in the current KIP proposal, we prefer by_duration over earliest >>>>>>> for >>>>>>>>> the >>>>>>>>>>> expanded partitions—we want to avoid forcing users to consume a >>>>>>> massive >>>>>>>>>>> accumulated backlog just because a partition is technically "new". >>>>>>>>>>> >>>>>>>>>>> To quote my previous comment from May 15: >>>>>>>>>>> "...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." >>>>>>>>>>> >>>>>>>>>>> On 2026/06/30 12:12:47 黃竣陽 wrote: >>>>>>>>>>>> Hello all, >>>>>>>>>>>> >>>>>>>>>>>> The metadata blindness and consumer downtime windows are >>>>>>> inherently >>>>>>>>>>>> unpredictable, making a fixed by_duration approach unviable. No >>>>>>>>> static >>>>>>>>>>>> duration can accommodate both extremes: >>>>>>>>>>>> >>>>>>>>>>>> - Short durations fail during extended downtimes, leading to the >>>>>>>>> exact >>>>>>>>>>> silent data >>>>>>>>>>>> loss this KIP aims to prevent. >>>>>>>>>>>> - Long durations (calibrated for worst-case scenarios) cause >>>>>>> routine >>>>>>>>>>> restarts to >>>>>>>>>>>> trigger unnecessary mass replays, undermining the latest offset >>>>>>> reset >>>>>>>>>>> policy. >>>>>>>>>>>> >>>>>>>>>>>> This is why the proposed solution uses creation time. It >>>>>>> provides a >>>>>>>>>>> discrete, >>>>>>>>>>>> deterministic signal—verifying whether a partition is actually >>>>>>> newer >>>>>>>>>>> than the group, >>>>>>>>>>>> rather than relying on an arbitrary time window that has no >>>>>>>>> correlation >>>>>>>>>>> with the consumer’s >>>>>>>>>>>> actual downtime. >>>>>>>>>>>> >>>>>>>>>>>> Best Regards, >>>>>>>>>>>> Jiunn-Yang >>>>>>>>>>>> >>>>>>>>>>>>> Chia-Ping Tsai <[email protected]> 於 2026年6月30日 下午3:05 寫道: >>>>>>>>>>>>> >>>>>>>>>>>>> Hi all, >>>>>>>>>>>>> >>>>>>>>>>>>> I'd like to revisit Jun previous comment about using >>>>>>>>> by_duration=5s. I >>>>>>>>>>> realize now that having a small backlog is actually an acceptable >>>>>>>>>>> trade-off, especially since the latest policy inherently brings a >>>>>>> tiny >>>>>>>>>>> backlog to starting consumers anyway due to the time gap between >>>>>>>>> fetching >>>>>>>>>>> the offset and actually consuming. >>>>>>>>>>>>> >>>>>>>>>>>>> If we bring the simple by_duration=5s solution back to the >>>>>>> KIP, I'd >>>>>>>>>>> like to discuss a further step: Should we just change the default >>>>>>>>> policy >>>>>>>>>>> from latest to by_duration=5s specifically for the new consumer >>>> and >>>>>>>>> share >>>>>>>>>>> consumer? >>>>>>>>>>>>> >>>>>>>>>>>>> Best, >>>>>>>>>>>>> Chia-Ping >>>>>>>>>>>>> >>>>>>>>>>>>> On 2026/06/15 17:39:19 Chia-Ping Tsai 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 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, 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 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 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.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.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.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.partitions as an >>>>>>>>>>> internal >>>>>>>>>>>>>>>>>>>>>>>>>> configuration. auto.offset.reset.new >>>>>>>>> .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 >>>>>>> .partitions >>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>>>>>> auto.offset.reset.latest.max.age.ms, 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 >>>>>>>>> .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.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 >>>>>>>>>>>>>>>> .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 >>>>>>>>>>>>>>>>>>>>>>>>>> ? >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 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 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>>> >>>> >>> >>
