Hi, Chia-Ping,

Thanks for the reply.

I agree that we should only add new options that cover a common use case.
For auto.offset.reset.latest.max.age, it would be useful to compare it with
by_duration.

Jun

On Sat, Apr 25, 2026 at 4:30 AM Chia-Ping Tsai <[email protected]> wrote:

> hi Jun
>
> Honestly, we've seen a similar "case storm" in our local community
> discussions. Some feel a new policy could revolutionize existing pipelines,
> while others find it overly complicated to mentally juggle all these offset
> edge cases.
>
> I also realize that introducing a completely new policy just to overcome
> the "data loss on partition expansion" issue might be a bit overkill for
> now. We can always revisit a brand-new policy later.
>
> For now, I'd like to pivot back to the original pain point: how to avoid
> losing "hot" records from newly expanded partitions when using the latest
> policy. The tricky part is that expanded partitions aren't always "hot" to
> consumers. For instance, if a partition is expanded while the consumer is
> offline for a long period, the user would likely prefer to skip to the end
> upon resuming, as those records are no longer fresh.
>
> Therefore, I'd like to propose a new consumer config:
> auto.offset.reset.latest.max.age (Ryan's discussion inspires it). When a
> consumer is using the latest policy, it can rely on this threshold to
> determine its behavior on partitions without a committed offset. If the
> partition's "age" is within this threshold (i.e., it's a recently expanded
> partition), we fall back to earliest to catch the hot data. If it exceeds
> the age, or if the age is unavailable (e.g., older broker versions), it
> strictly adheres to latest.
>
> This partition "age" could be returned via the consumer heartbeat. The age
> would be calculated server-side by the coordinator: coordinator's current
> time - partition creation time. This inherently means we would need to
> modify the partition records to store the creation time, as well as update
> the heartbeat RPC to pass this relative age.
>
> We plan to draft a separate KIP for auto.offset.reset.latest.max.age and
> start a new thread for it to keep things focused. We can leave this current
> thread open for any broader discussions on completely new policies.
>
> Any feedback on this new direction is highly welcome. Thanks everyone for
> the incredible brainstorming session!
>
> Best,
> Chia-Ping
>
> On 2026/04/23 20:44:41 Jun Rao via dev wrote:
> > Hi, Chia-Ping,
> >
> > Thanks for the reply.
> >
> > "read all records produced since the group's birth."
> > Let's consider this requirement a bit more. For CDC use cases, users
> don't
> > want to lose any data. The easiest option is to consume data with the
> > earliest offset. Sometimes, there are good reasons to skip the backlog.
> For
> > example, the downstream system already obtains a database snapshot
> through
> > another channel. However, in this case, the user usually needs to set the
> > initial offsets carefully to match the snapshot's timestamp and avoid
> data
> > loss. Starting from the group creation time doesn't seem to meet the
> > business need in this case.
> >
> > Jun
> >
> >
> > On Thu, Apr 23, 2026 at 11:49 AM Chia-Ping Tsai <[email protected]>
> wrote:
> >
> > > hi Jun
> > >
> > > > This seems to
> > > fit the current auto.offset.reset framework more naturally.
> > >
> > > Your point about the existing framework is well-taken, but it
> highlights a
> > > key distinction this KIP aims to address.
> > >
> > > If a user simply wants a "Smarter Latest" (one that avoids data loss
> from
> > > extended partitions), they could indeed use by_duration=5mins as a
> > > reasonable workaround.
> > >
> > > However, there is currently no workaround for a policy that guarantees
> > > "read all records produced since the group's birth." > This is a
> critical
> > > requirement for data pipelines like OLTP (MySQL/Postgres) -> Kafka ->
> OLAP
> > > (ClickHouse/Snowflake). These users often use latest initially to
> avoid a
> > > massive historical backlog, but they have a "Zero Data Loss"
> requirement
> > > once the pipeline is active.
> > >
> > > When these users encounter an "out-of-range" error, they want to
> consume
> > > every surviving record in Kafka that belongs to their group's
> lifetime. If
> > > we force them to jump to the end, it means they have to manually
> re-load
> > > and backfill significantly more "lost records" from the source OLTP,
> which
> > > is a high-cost operational burden.
> > >
> > > In short, the policy offered by this KIP is not just another option; it
> > > provides a deterministic lifecycle anchor that cannot be emulated by
> the
> > > current policies.
> > >
> > > Jun Rao via dev <[email protected]> 於 2026年4月24日週五 上午1:38寫道:
> > >
> > >> Hi, Chia-Ping, Jiunn-Yang, and Jian,
> > >>
> > >> Thanks for the reply. I appreciate your effort in trying to address a
> > >> common issue.
> > >>
> > >> To me, history and data are the same as the backlog. It's just that
> the
> > >> amount of backlog can vary. When the group is first created or when
> the
> > >> offset is out of range, the backlog is large. When a new partition is
> > >> created and discovered by the consumer, the backlog is small (5
> seconds of
> > >> data for the new consumer, 5 minutes for the classic consumer). The
> > >> question is how much backlog a user can tolerate. The to_start_time
> option
> > >> implicitly assumes that a user can tolerate 0 backlog in one case but
> 5
> > >> seconds or 5 minutes in another. This may or may not be what a user
> wants,
> > >> but at least it seems inconsistent. An alternative is to document all
> > >> cases
> > >> where a backlog can occur and let the user choose how much backlog
> they
> > >> can
> > >> tolerate, configuring it with the existing by_during option. This
> seems to
> > >> fit the current auto.offset.reset framework more naturally.
> > >>
> > >> Jun
> > >>
> > >>
> > >> On Thu, Apr 23, 2026 at 6:23 AM jian fu <[email protected]> wrote:
> > >>
> > >> > Hi All:
> > >> >
> > >> > Since Jun Yang referenced my earlier discussion, I’d also like to
> join
> > >> in
> > >> > and share some of my thoughts.
> > >> >
> > >> > The key area of minor divergence is this case's handle:
> > >> > " When the user starts the group for the first time, it faces a
> choice
> > >> on
> > >> > whether to process the backlog or not. When the offset is
> out-of-range,
> > >> the
> > >> > user faces the same
> > >> > choice regarding backlog processing. "
> > >> >
> > >> > so I think we have four options to handle two key choice:
> > >> > 1 latest:  drop history + drop the data
> > >> > 2 earliest:  not drop history + not drop the data
> > >> > 3 the KIP propose mode:   drop history + not drop the data
> > >> > 4 unreasonable mode:   not drop history + drop the data
> > >> >
> > >> > I think the 3 is reasonable mode for user (not consider the naming
> or
> > >> > implement). Image one case in life. you may subscribe one magazine
> > >> without
> > >> > buy the older magazines. but you must don't to lost some magazine
> after
> > >> > subscribe due to you don't buy history.
> > >> >
> > >> > Regards
> > >> > Jian
> > >> >
> > >> >
> > >> > 黃竣陽 <[email protected]> 于2026年4月23日周四 19:17写道:
> > >> >
> > >> > > Hello all,
> > >> > >
> > >> > > Thanks for the feedback. I'd like to advocate for keeping the
> original
> > >> > > to_start_time semantics.
> > >> > >
> > >> > > Earlier in this thread, both Jian and Ryan highlighted that
> branched
> > >> > logic
> > >> > > is the main UX concern:
> > >> > >
> > >> > > Jian: "If we can define one basic rule… it would make it easier
> for
> > >> > >         everyone to stay on the same page."
> > >> > > Ryan: "The documentation might be difficult if it has to
> > >> > >         list and explain all the cases."
> > >> > > Chia-Ping: "Having an opinionated config with branched logic
> makes it
> > >> > hard
> > >> > >         to document and reason about."
> > >> > >
> > >> > > to_start_time already follows this principle, it consistently
> issues a
> > >> > > ListOffsets request
> > >> > > anchored to the group creation timestamp. Differences in outcome
> are
> > >> > > simply due to what
> > >> > > data the broker retains, not different rules being applied.
> Changing
> > >> > > out-of-range to latest
> > >> > > would be the real inconsistency, since the policy would then
> branch
> > >> based
> > >> > > on the reset
> > >> > > scenario.
> > >> > >
> > >> > > Additionally, out-of-range and no-offset (group GC'd) are
> > >> fundamentally
> > >> > > different situations.
> > >> > > When the group exists, the creation timestamp is available and
> should
> > >> be
> > >> > > honored. When
> > >> > > the group is GC'd, the metadata is gone, this is an orthogonal
> problem
> > >> > > that affects all reset
> > >> > > policies equally.
> > >> > >
> > >> > > The strength of to_start_time is precisely its single, clean rule:
> > >> > "Always
> > >> > > seek to the group’s
> > >> > > creation time, and let ListOffsets resolve the rest."
> > >> > >
> > >> > > Best Regards,
> > >> > > Jiunn-Yang
> > >> > >
> > >> > > > Chia-Ping Tsai <[email protected]> 於 2026年4月23日 下午3:24 寫道:
> > >> > > >
> > >> > > > Hi all,
> > >> > > >
> > >> > > > BTW, regardless of where we land on the "out-of-range" debate,
> the
> > >> > > underlying infrastructure of persisting the "group creation time"
> is
> > >> > still
> > >> > > highly valuable and worth merging.
> > >> > > >
> > >> > > > From my conversations with users, there are diverse needs: some
> love
> > >> > the
> > >> > > "better earliest" idea to safely skip massive historical backlogs,
> > >> while
> > >> > > others only care about fixing the data loss in latest during
> partition
> > >> > > expansion.
> > >> > > >
> > >> > > > Simply having the creation time persisted and exposed is
> already a
> > >> > > massive step forward, as it gives users a reliable, objective
> anchor
> > >> to
> > >> > > manually fix the issue via a ConsumerRebalanceListener. However,
> much
> > >> > like
> > >> > > the concept of a DLQ (Dead Letter Queue) while users could
> implement
> > >> it
> > >> > > manually, providing a built-in reset policy makes the developer
> > >> > experience
> > >> > > significantly more convenient, robust, and out-of-the-box.
> > >> > > >
> > >> > > > I believe Ken might chime in later with a different perspective
> as
> > >> well
> > >> > > :)
> > >> > > >
> > >> > > > Best,
> > >> > > > Chia-Ping
> > >> > > >
> > >> > > >
> > >> > > >> Chia-Ping Tsai <[email protected]> 於 2026年4月23日 凌晨3:59 寫道:
> > >> > > >>
> > >> > > >> Hi Jun,
> > >> > > >>
> > >> > > >> Thanks for the feedback. I agree that shifting this policy
> toward a
> > >> > > "Smarter Latest" (rather than a better Earliest) is a more elegant
> > >> path.
> > >> > > >>
> > >> > > >> The refined behavior would be:
> > >> > > >>
> > >> > > >> Out-of-range: Strictly follow latest semantics. This ensures a
> > >> > > predictable "skip to end" behavior when users fall behind
> retention.
> > >> > > >>
> > >> > > >> No-offset (Initial Start & Expansion): Leverage Group Creation
> Time
> > >> > for
> > >> > > lookup.
> > >> > > >>
> > >> > > >> • For new groups, this naturally results in latest behavior
> since
> > >> > > creation time is "now".
> > >> > > >>
> > >> > > >> • For existing groups discovering new partitions, this results
> in
> > >> > > earliest behavior for those specific partitions.
> > >> > > >>
> > >> > > >> Group GC: If a group is purged, it is treated as a brand-new
> group
> > >> > with
> > >> > > a creation time of "now," consistently skipping to the end.
> > >> > > >>
> > >> > > >> WDYT?
> > >> > > >>
> > >> > > >>
> > >> > > >>> Jun Rao via dev <[email protected]> 於 2026年4月23日 凌晨1:34
> 寫道:
> > >> > > >>>
> > >> > > >>> Hi, Chia-Ping,
> > >> > > >>>
> > >> > > >>> Thanks for the reply.
> > >> > > >>>
> > >> > > >>> Let's try to understand from the user's perspective. When the
> user
> > >> > > starts
> > >> > > >>> the group for the first time, it faces a choice on whether to
> > >> process
> > >> > > the
> > >> > > >>> backlog or not. When the offset is out-of-range, the user
> faces
> > >> the
> > >> > > same
> > >> > > >>> choice regarding backlog processing. It seems that most users
> > >> want to
> > >> > > make
> > >> > > >>> the same choice regarding backlog processing.
> > >> > > >>>
> > >> > > >>> "Users who explicitly choose the to_start_time policy do so
> > >> precisely
> > >> > > >>> because they do not want to skip any records when
> encountering an
> > >> > > >>> out-of-range scenario."
> > >> > > >>> This argument is weak because that's how to_start_time is
> > >> designed,
> > >> > > but we
> > >> > > >>> need to justify why it is a good choice in the first place.
> > >> > > >>>
> > >> > > >>> Jun
> > >> > > >>>
> > >> > > >>>>> On Tue, Apr 21, 2026 at 12:35 PM Chia-Ping Tsai <
> > >> > [email protected]>
> > >> > > wrote:
> > >> > > >>>>
> > >> > > >>>> Hi Jun,
> > >> > > >>>>
> > >> > > >>>> Thanks for the clarification. I think I misunderstood your
> > >> previous
> > >> > > point.
> > >> > > >>>> Let me summarize the scenarios to ensure we are fully
> aligned.
> > >> > > >>>>
> > >> > > >>>> There are essentially three scenarios when a consumer needs
> to
> > >> reset
> > >> > > >>>> offsets:
> > >> > > >>>>
> > >> > > >>>> 1.
> > >> > > >>>>
> > >> > > >>>> Out-of-range (The group exists, but the offset has expired).
> > >> > > >>>> 2.
> > >> > > >>>>
> > >> > > >>>> Extended partition (The group exists, but encounters a newly
> > >> added
> > >> > > >>>> partition with no committed offset).
> > >> > > >>>> 3.
> > >> > > >>>>
> > >> > > >>>> No-offset (The group is completely new, or an existing group
> was
> > >> > > >>>> deleted by the GC).
> > >> > > >>>>
> > >> > > >>>> We all agree that the primary goal of this KIP is to catch
> up on
> > >> all
> > >> > > >>>> records for scenario 2. There are no objections here.
> > >> > > >>>>
> > >> > > >>>> Regarding the inconsistency you pointed out between 1) and 3)
> > >> under
> > >> > > the
> > >> > > >>>> current to_start_time design, I completely see your point. If
> > >> users
> > >> > > are
> > >> > > >>>> not fully aware that to_start_time is designed to read all
> > >> records
> > >> > > since
> > >> > > >>>> the creation of the group, they might get confused.
> > >> > > >>>>
> > >> > > >>>> However, to me, this "inconsistency" is actually a matter of
> > >> > > >>>> predictability. Users who explicitly choose the to_start_time
> > >> policy
> > >> > > do
> > >> > > >>>> so precisely because they do not want to skip any records
> when
> > >> > > encountering
> > >> > > >>>> an out-of-range scenario.
> > >> > > >>>>
> > >> > > >>>> (I would prefer to set aside the topic of group GC for a
> moment.
> > >> It
> > >> > is
> > >> > > >>>> much more important that we first focus our discussion on the
> > >> > > >>>> "out-of-range" scenario)
> > >> > > >>>>
> > >> > > >>>> Best,
> > >> > > >>>>
> > >> > > >>>> Chia-Ping
> > >> > > >>>>
> > >> > > >>>> Jun Rao via dev <[email protected]> 於 2026年4月22日週三
> 上午1:13寫道:
> > >> > > >>>>
> > >> > > >>>>> Hi, Chia-Ping,
> > >> > > >>>>>
> > >> > > >>>>> Hmm, is that true? With the earliest policy, we treat an
> > >> > out-of-range
> > >> > > >>>>> offset the same as no offset (because the group is deleted)
> and
> > >> > > always set
> > >> > > >>>>> it to the earliest offset, right? With to_start_time, an
> > >> > out-of-range
> > >> > > >>>>> offset is treated differently from no offset.
> > >> > > >>>>>
> > >> > > >>>>> Thanks,
> > >> > > >>>>>
> > >> > > >>>>> Jun
> > >> > > >>>>>
> > >> > > >>>>> On Tue, Apr 21, 2026 at 12:54 AM Chia-Ping Tsai <
> > >> > [email protected]
> > >> > > >
> > >> > > >>>>> wrote:
> > >> > > >>>>>
> > >> > > >>>>>> hi Jun
> > >> > > >>>>>>
> > >> > > >>>>>> Nice point. Group GC is definitely an issue for
> to_start_time,
> > >> but
> > >> > > it is
> > >> > > >>>>>> actually an issue for other policies as well.
> > >> > > >>>>>>
> > >> > > >>>>>> For example, a consumer using the earliest policy will
> suddenly
> > >> > > read all
> > >> > > >>>>>> historical records from scratch if it sleeps for a long
> while
> > >> and
> > >> > > gets
> > >> > > >>>>>> GC'd; otherwise, it just resumes from previous offsets if
> the
> > >> > group
> > >> > > >>>>> still
> > >> > > >>>>>> exists. It is equally hard to explain to users: "Oh, your
> group
> > >> > was
> > >> > > >>>>> GC'd,
> > >> > > >>>>>> so your offset behavior changed."
> > >> > > >>>>>>
> > >> > > >>>>>> Therefore, it seems to me the right approach to fix this
> > >> > > "inconsistency"
> > >> > > >>>>>> is to offer a group-level GC timeout in a future KIP,
> allowing
> > >> > > users to
> > >> > > >>>>>> explicitly protect critical groups from GC. This saves not
> only
> > >> > > >>>>>> to_start_time, but all other reset policies too.
> > >> > > >>>>>>
> > >> > > >>>>>> Best,
> > >> > > >>>>>> Chia-Ping
> > >> > > >>>>>>
> > >> > > >>>>>> On 2026/04/20 20:19:47 Jun Rao via dev wrote:
> > >> > > >>>>>>> Hi, Jiunn-Yang and Chia-Ping,
> > >> > > >>>>>>>
> > >> > > >>>>>>> Thanks for the reply.
> > >> > > >>>>>>>
> > >> > > >>>>>>> The main concern I see with to_start_time is that its
> > >> behavoir on
> > >> > > how
> > >> > > >>>>>> much
> > >> > > >>>>>>> data to consume when the offset is out of range is not
> > >> consistent
> > >> > > and
> > >> > > >>>>> is
> > >> > > >>>>>>> hard to explain. If the group still exists, it will read
> from
> > >> the
> > >> > > >>>>>> earliest
> > >> > > >>>>>>> offset. Otherwise, it will read from the latest.
> > >> > > >>>>>>>
> > >> > > >>>>>>> Jun
> > >> > > >>>>>>>
> > >> > > >>>>>>> On Mon, Apr 20, 2026 at 10:13 AM Chia-Ping Tsai <
> > >> > > [email protected]>
> > >> > > >>>>>> wrote:
> > >> > > >>>>>>>
> > >> > > >>>>>>>> hi all,
> > >> > > >>>>>>>>
> > >> > > >>>>>>>> Just a note for a potential latest_v2:
> > >> > > >>>>>>>>
> > >> > > >>>>>>>> Since the purpose is to read all records from extended
> > >> > partitions,
> > >> > > >>>>> we
> > >> > > >>>>>>>> could leverage the group creation time to compare
> against the
> > >> > > >>>>> earliest
> > >> > > >>>>>>>> record of a partition when there is no committed offset.
> If
> > >> the
> > >> > > >>>>> group
> > >> > > >>>>>>>> creation time is larger than the earliest record's
> > >> timestamp, we
> > >> > > >>>>>> assume it
> > >> > > >>>>>>>> is not an extended partition. Otherwise, we treat it as
> an
> > >> > > extended
> > >> > > >>>>>>>> partition.
> > >> > > >>>>>>>>
> > >> > > >>>>>>>> This approach allows us to catch all "possible" extended
> > >> > > partitions,
> > >> > > >>>>>> which
> > >> > > >>>>>>>> includes both "true" extended partitions and old but
> > >> truncated
> > >> > > >>>>>> partitions.
> > >> > > >>>>>>>> While there is a rare edge case where the cost is
> > >> reprocessing
> > >> > > some
> > >> > > >>>>>> records
> > >> > > >>>>>>>> we don't necessarily want, it is very easy to implement
> and
> > >> > > >>>>> guarantees
> > >> > > >>>>>> we
> > >> > > >>>>>>>> will never miss the actual extended partitions.
> > >> > > >>>>>>>>
> > >> > > >>>>>>>> Best,
> > >> > > >>>>>>>> Chia-Ping
> > >> > > >>>>>>>>
> > >> > > >>>>>>>> On 2026/04/20 13:33:31 黃竣陽 wrote:
> > >> > > >>>>>>>>> Hello all,
> > >> > > >>>>>>>>>
> > >> > > >>>>>>>>> I have added a new "Future Work: latest_strict Policy"
> > >> section
> > >> > to
> > >> > > >>>>> the
> > >> > > >>>>>>>> KIP.
> > >> > > >>>>>>>>> The idea is a future policy that uses latest semantics
> by
> > >> > default
> > >> > > >>>>> but
> > >> > > >>>>>>>> falls
> > >> > > >>>>>>>>> back to the group creation timestamp specifically for
> newly
> > >> > added
> > >> > > >>>>>>>> partitions
> > >> > > >>>>>>>>> during partition expansion. This would reuse the group
> > >> creation
> > >> > > >>>>> time
> > >> > > >>>>>>>> anchor
> > >> > > >>>>>>>>> introduced by this KIP, making it a natural extension
> with
> > >> > > minimal
> > >> > > >>>>>>>> additional
> > >> > > >>>>>>>>> protocol changes.
> > >> > > >>>>>>>>>
> > >> > > >>>>>>>>> Best Regards,
> > >> > > >>>>>>>>> Jiunn-Yang
> > >> > > >>>>>>>>>
> > >> > > >>>>>>>>>> Chia-Ping Tsai <[email protected]> 於 2026年4月18日
> 下午4:09
> > >> 寫道:
> > >> > > >>>>>>>>>>
> > >> > > >>>>>>>>>> Hi all,
> > >> > > >>>>>>>>>>
> > >> > > >>>>>>>>>> It is practically NP-hard to guess everyone's ideal use
> > >> case
> > >> > > >>>>> right
> > >> > > >>>>>> now.
> > >> > > >>>>>>>>>> Also, I believe we all want to avoid falling back to
> the
> > >> > > >>>>> intricate
> > >> > > >>>>>>>>>> multi-policy approach proposed in KIP-842.
> > >> > > >>>>>>>>>>
> > >> > > >>>>>>>>>> I prefer to keep this KIP focused and discuss a "v2
> latest"
> > >> > > >>>>> policy
> > >> > > >>>>>> in a
> > >> > > >>>>>>>>>> separate KIP. That future policy could build upon the
> > >> > > >>>>> to_start_time
> > >> > > >>>>>>>> anchor
> > >> > > >>>>>>>>>> to fix data loss specifically for extended partitions.
> We
> > >> > could
> > >> > > >>>>>> call it
> > >> > > >>>>>>>>>> something like latest_strict.
> > >> > > >>>>>>>>>>
> > >> > > >>>>>>>>>> Thoughts?
> > >> > > >>>>>>>>>>
> > >> > > >>>>>>>>>>
> > >> > > >>>>>>>>>> 黃竣陽 <[email protected]> 於 2026年4月18日週六 下午3:24寫道:
> > >> > > >>>>>>>>>>
> > >> > > >>>>>>>>>>> Hello Jun,
> > >> > > >>>>>>>>>>>
> > >> > > >>>>>>>>>>> Thanks for the reply,
> > >> > > >>>>>>>>>>>
> > >> > > >>>>>>>>>>> When the offset goes out of range, the user faces two
> > >> > options:
> > >> > > >>>>>>>>>>>
> > >> > > >>>>>>>>>>> 1. Skip to the end (latest behavior) — risk losing
> data
> > >> that
> > >> > > >>>>> was
> > >> > > >>>>>>>> produced
> > >> > > >>>>>>>>>>> during
> > >> > > >>>>>>>>>>> the group's lifetime but not yet consumed.
> > >> > > >>>>>>>>>>> 2. Seek back to the group creation time (to_start_time
> > >> > > >>>>> behavior) —
> > >> > > >>>>>>>>>>> potentially
> > >> > > >>>>>>>>>>> reprocess some data, but guarantee no data from the
> > >> group's
> > >> > > >>>>>> lifetime
> > >> > > >>>>>>>> is
> > >> > > >>>>>>>>>>> silently lost.
> > >> > > >>>>>>>>>>>
> > >> > > >>>>>>>>>>> to_start_time chooses option 2 because its core
> promise is
> > >> > > >>>>> "never
> > >> > > >>>>>>>> silently
> > >> > > >>>>>>>>>>> lose data
> > >> > > >>>>>>>>>>> produced after the group started." If we fell back to
> > >> latest
> > >> > on
> > >> > > >>>>>>>>>>> out-of-range, we would
> > >> > > >>>>>>>>>>> break this guarantee.
> > >> > > >>>>>>>>>>>
> > >> > > >>>>>>>>>>> I consider users who prefer option 1 can simply use
> > >> > > >>>>>>>>>>> auto.offset.reset=latest.
> > >> > > >>>>>>>>>>>
> > >> > > >>>>>>>>>>> Best Regards,
> > >> > > >>>>>>>>>>> Jiunn-Yang
> > >> > > >>>>>>>>>>>
> > >> > > >>>>>>>>>>>> Jun Rao via dev <[email protected]> 於 2026年4月18日
> > >> 凌晨1:57
> > >> > > >>>>> 寫道:
> > >> > > >>>>>>>>>>>>
> > >> > > >>>>>>>>>>>> Hi, Jiunn-Yang and Chia-Ping,
> > >> > > >>>>>>>>>>>>
> > >> > > >>>>>>>>>>>> Thanks for the reply.
> > >> > > >>>>>>>>>>>>
> > >> > > >>>>>>>>>>>> "The core semantic of to_start_time is to read all
> > >> records
> > >> > > >>>>> since
> > >> > > >>>>>> the
> > >> > > >>>>>>>>>>>> creation of the group."
> > >> > > >>>>>>>>>>>>
> > >> > > >>>>>>>>>>>> I am just questioning whether this actually covers a
> > >> common
> > >> > > >>>>> use
> > >> > > >>>>>>>> case. If
> > >> > > >>>>>>>>>>>> the offset doesn't go out of range, the logic makes
> > >> sense to
> > >> > > >>>>> me.
> > >> > > >>>>>> I'm
> > >> > > >>>>>>>> not
> > >> > > >>>>>>>>>>>> sure about the logic if the offset is out of range.
> If a
> > >> > user
> > >> > > >>>>>>>> chooses to
> > >> > > >>>>>>>>>>>> skip the historical data when starting the group, it
> > >> seems
> > >> > the
> > >> > > >>>>>> user
> > >> > > >>>>>>>>>>> likely
> > >> > > >>>>>>>>>>>> wants to do the same if the offset is out of range.
> > >> > > >>>>>>>>>>>>
> > >> > > >>>>>>>>>>>> Jun
> > >> > > >>>>>>>>>>>>
> > >> > > >>>>>>>>>>>> On Fri, Apr 17, 2026 at 5:23 AM 黃竣陽 <
> [email protected]>
> > >> > > >>>>> wrote:
> > >> > > >>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>> Hello Jun,
> > >> > > >>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>> Thank for the feedback,
> > >> > > >>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>> Adding to the points above:
> > >> > > >>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>> Regarding by_duration as an alternative to Scenario
> 1:
> > >> > beyond
> > >> > > >>>>>> clock
> > >> > > >>>>>>>> skew
> > >> > > >>>>>>>>>>>>> and retry issues, there is also a usability concern.
> > >> > > >>>>> by_duration
> > >> > > >>>>>>>>>>> requires
> > >> > > >>>>>>>>>>>>> users
> > >> > > >>>>>>>>>>>>> to reason about operational timing — "how long does
> > >> > partition
> > >> > > >>>>>>>> discovery
> > >> > > >>>>>>>>>>>>> take
> > >> > > >>>>>>>>>>>>> in my environment?”, and then translate that into a
> > >> > > >>>>>> configuration
> > >> > > >>>>>>>> value.
> > >> > > >>>>>>>>>>>>> to_start_time
> > >> > > >>>>>>>>>>>>> requires no such reasoning. It simply anchors to the
> > >> group
> > >> > > >>>>>> creation
> > >> > > >>>>>>>> time
> > >> > > >>>>>>>>>>>>> recorded
> > >> > > >>>>>>>>>>>>> by the broker.
> > >> > > >>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>> Regarding Scenario 2: I'd also like to clarify that
> > >> > > >>>>>> to_start_time
> > >> > > >>>>>>>> does
> > >> > > >>>>>>>>>>> not
> > >> > > >>>>>>>>>>>>> branch between
> > >> > > >>>>>>>>>>>>> "use latest" and "use earliest." It applies the same
> > >> > > >>>>>>>> ListOffsetsRequest
> > >> > > >>>>>>>>>>>>> with the group creation
> > >> > > >>>>>>>>>>>>> timestamp in all cases. The difference in outcome:
> > >> > > >>>>>>>>>>>>> - skipping old data on first start
> > >> > > >>>>>>>>>>>>> - consuming surviving data after truncation
> > >> > > >>>>>>>>>>>>> is a natural consequence of what data exists in the
> > >> > > >>>>> partition at
> > >> > > >>>>>>>> that
> > >> > > >>>>>>>>>>>>> point, not a different policy
> > >> > > >>>>>>>>>>>>> being applied. The rule is always the same.
> > >> > > >>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>> Best Regards,
> > >> > > >>>>>>>>>>>>> Jiunn-Yang
> > >> > > >>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>>> Chia-Ping Tsai <[email protected]> 於 2026年4月17日
> > >> 上午9:48
> > >> > 寫道:
> > >> > > >>>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>>>> Jun Rao via dev <[email protected]> 於
> 2026年4月17日
> > >> > 凌晨4:57
> > >> > > >>>>>> 寫道:
> > >> > > >>>>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>>>> Also, a group is deleted after the consumer has
> been
> > >> idle
> > >> > > >>>>>> longer
> > >> > > >>>>>>>>>>>>>>> than offsets.retention.minutes. What's the
> semantic of
> > >> > > >>>>>>>> to_start_time
> > >> > > >>>>>>>>>>> if
> > >> > > >>>>>>>>>>>>> the
> > >> > > >>>>>>>>>>>>>>> group creation time is unavailable?
> > >> > > >>>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>>> If the group is recreated, a new creation time
> will be
> > >> > > >>>>>> recorded.
> > >> > > >>>>>>>> Hence,
> > >> > > >>>>>>>>>>>>> it acts like a new group. Plus, it throws an
> exception
> > >> > > >>>>> directly
> > >> > > >>>>>> if
> > >> > > >>>>>>>> the
> > >> > > >>>>>>>>>>>>> group truly has no creation time.
> > >> > > >>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>>>
> > >> > > >>>>>>>>>>>
> > >> > > >>>>>>>>>>>
> > >> > > >>>>>>>>>
> > >> > > >>>>>>>>>
> > >> > > >>>>>>>>
> > >> > > >>>>>>>
> > >> > > >>>>>>
> > >> > > >>>>>
> > >> > > >>>>
> > >> > >
> > >> > >
> > >> >
> > >>
> > >
> >
>

Reply via email to