Hi All,

I have made a minor update to the KIP.
Since we are deprecating the OffsetResetStrategy enum, I have deprecated
the `MockConsumer(OffsetResetStrategy offsetResetStrategy)` constructor
and added a new constructor.


Thanks,


On Thu, Nov 14, 2024 at 10:25 AM Manikumar <manikumar.re...@gmail.com>
wrote:

> Hi Jun,
>
> JR10: Yes, we can remove the name field. Updated the KIP.
>
>
> Thanks,
>
> On Thu, Nov 14, 2024 at 3:57 AM Jun Rao <j...@confluent.io.invalid> wrote:
>
>> Hi, Manikumar,
>>
>> Thanks for the explanation. We can follow the existing KStreams pattern.
>>
>> Could AutoOffsetReset(String name, long duration) just
>> be AutoOffsetReset(long duration)?
>>
>> Jun
>>
>> On Wed, Nov 13, 2024 at 11:53 AM Manikumar <manikumar.re...@gmail.com>
>> wrote:
>>
>> > HI Jun,
>> >
>> > JR10: I was trying to follow KS conventions where we use non-public
>> > sub-class with necessary getters.
>> > Please check Matthias's suggestion here:
>> > https://lists.apache.org/thread/mln783cbswgj14wt4hykcks4kfyl9zpf
>> > There will be an AutoOffsetResetInternal class which will have getter
>> > method.
>> > We can follow your suggestions if we do not use Internal class approach,
>> >
>> >
>> > Thanks,
>> >
>> > On Wed, Nov 13, 2024 at 11:12 PM Jun Rao <j...@confluent.io.invalid>
>> wrote:
>> >
>> > > Hi, Manikumar,
>> > >
>> > > Thanks for the updated KIP.
>> > >
>> > > JR10. The new AutoOffsetReset class. Could the following constructors
>> be
>> > > private?
>> > >     protected AutoOffsetReset(String name, long duration)
>> > >     protected AutoOffsetReset(String name)
>> > > Could AutoOffsetReset(String name, long duration) just
>> > > be AutoOffsetReset(long duration)?
>> > > Do we need the following field?
>> > >     protected final String name;
>> > > Instead of the following field, is it better to expose it through a
>> > public
>> > > method?
>> > >     protected final Optional<Long> duration;
>> > >
>> > > Jun
>> > >
>> > > On Tue, Nov 12, 2024 at 9:41 PM Manikumar <manikumar.re...@gmail.com>
>> > > wrote:
>> > >
>> > > > Hi Matthias.
>> > > >
>> > > > Thanks for the review
>> > > >
>> > > > 1. looks like the majority of us are leaning towards BY_DURATION
>> > naming.
>> > > I
>> > > > have updated the same in the KIP.
>> > > >
>> > > > 2. Thanks. Updated the KIP to remove private/internal
>> implementation.
>> > > >
>> > > >
>> > > > Thanks,
>> > > >
>> > > > On Wed, Nov 13, 2024 at 6:28 AM Matthias J. Sax <mj...@apache.org>
>> > > wrote:
>> > > >
>> > > > > Thanks for updating the KIP.
>> > > > >
>> > > > >
>> > > > >
>> > > > > I am happy to see that we seem to align to use a single config
>> only
>> > :)
>> > > > >
>> > > > > Obviously, I need to bikeshed on the format: `BACK:<duration>`
>> does
>> > not
>> > > > > read well IMHO, and I think
>> `auto.offset.reset="BACK_BY:<duration>"`
>> > > > > would read much better. Andrew's suggestion of
>> > `BY_DURATION:<duration>`
>> > > > > might even be better (but I would be ok with either one).
>> > > > >
>> > > > > (I would not use `DURATION:<duration>` personally -- similar to
>> > > > > `BACK:<duration>` is does not read well from my POV).
>> > > > >
>> > > > >
>> > > > >
>> > > > > About KS related changes. Overall LGTM. What is the reason for
>> having
>> > > > >
>> > > > >    AutoOffsetReset.LATEST
>> > > > >    AutoOffsetReset.EARLIEST
>> > > > >
>> > > > > as `public` variables? Seems we don't need them, but that they are
>> > > > > rather an internal implementation detail?
>> > > > >
>> > > > > In general, I would recommend to omit everything `private` on the
>> KIP
>> > > > > (including method implementations), as it's not user facing, but
>> only
>> > > > > have method signatures in the KIP.
>> > > > >
>> > > > > What I believe we need to add is a `protected` constructor (for
>> the
>> > > > > internal sub-class):
>> > > > >
>> > > > >     protected AutoOffsetReset(AutoOffsetReset autoOffsetReset);
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > > -Matthias
>> > > > >
>> > > > > On 11/12/24 6:09 AM, Apoorv Mittal wrote:
>> > > > > > Thanks Manikumar for explaining, sounds good to me.
>> > > > > >
>> > > > > > Regards,
>> > > > > > Apoorv Mittal
>> > > > > >
>> > > > > >
>> > > > > > On Tue, Nov 12, 2024 at 1:47 PM Andrew Schofield <
>> > > > > > andrew_schofield_j...@outlook.com> wrote:
>> > > > > >
>> > > > > >> Hi,
>> > > > > >> Looks good now. Just one suggestion.
>> > > > > >>
>> > > > > >> AS8: Instead of "back:30D", I wonder whether the word
>> 'duration'
>> > > ought
>> > > > > to
>> > > > > >> be
>> > > > > >> used to be consistent with kafka-consumer-groups.sh. So,
>> > > > > >> "by-duration:P3D" or "duration:P3D" might be better.
>> > > > > >>
>> > > > > >> The overall idea of merging the configs into one config is
>> fine in
>> > > the
>> > > > > >> current
>> > > > > >> text of the KIP.
>> > > > > >>
>> > > > > >> Thanks,
>> > > > > >> Andrew
>> > > > > >>
>> > > > > >> ________________________________________
>> > > > > >> From: Manikumar <manikumar.re...@gmail.com>
>> > > > > >> Sent: 12 November 2024 13:30
>> > > > > >> To: dev@kafka.apache.org <dev@kafka.apache.org>
>> > > > > >> Subject: Re: [DISCUSS] KIP-1106: Add duration based offset
>> reset
>> > > > option
>> > > > > >> for consumer clients
>> > > > > >>
>> > > > > >> Hi Apoorv,
>> > > > > >>
>> > > > > >> AM7: AutoOffsetReset.java is for Kafka Streams API. I am not
>> > > proposing
>> > > > > any
>> > > > > >> public Interface/class for Kafka Consumer.
>> > > > > >> As mentioned in the KIP, even though OffsetResetStrategy is a
>> > public
>> > > > > class,
>> > > > > >> it's not used in any public APIs. I think new internal classes
>> > > should
>> > > > be
>> > > > > >> sufficient.
>> > > > > >>
>> > > > > >> AM8: Fixed
>> > > > > >>
>> > > > > >> AM9: This class is for kafka streams API
>> > > > > >>
>> > > > > >> AM10: I was using the EARLIEST_TIMESTAMP, LATEST_TIMESTAMP
>> > constant
>> > > > > values
>> > > > > >> from ListOffsetsRequest
>> > > > > >> <
>> > > > > >>
>> > > > >
>> > > >
>> > >
>> >
>> https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/common/requests/ListOffsetsRequest.java#L41
>> > > > > >>>
>> > > > > >>
>> > > > > >> But yes, we can use Optional in AutoOffsetReset class. Updated
>> the
>> > > > KIP.
>> > > > > >>
>> > > > > >>
>> > > > > >> Thanks.
>> > > > > >>
>> > > > > >>
>> > > > > >>
>> > > > > >> On Tue, Nov 12, 2024 at 6:15 PM Apoorv Mittal <
>> > > > apoorvmitta...@gmail.com
>> > > > > >
>> > > > > >> wrote:
>> > > > > >>
>> > > > > >>> Hi,
>> > > > > >>> I read the changes for single configuration and deprecated
>> > > > > >>> OffsetResetStrategy.java.
>> > > > > >>>
>> > > > > >>> AM7: Question: The KIP says that previous supported values
>> were
>> > > > > >>> earliest/latest/none and new back:<duration> config would be
>> > added.
>> > > > We
>> > > > > >> have
>> > > > > >>> no definition of "none" in the newly introduced
>> > > AutoOffsetReset.java
>> > > > > >> class
>> > > > > >>> hence I am assuming that if "none" is specified as a config
>> > option
>> > > > then
>> > > > > >>> that config will be ignored, correct? Or are we deprecating
>> the
>> > > usage
>> > > > > of
>> > > > > >>> "none" altogether?
>> > > > > >>>
>> > > > > >>> AM8: Minor: The new class AutoOffsetReset under interfaces
>> > mentions
>> > > > the
>> > > > > >>> name as OffsetResetStrategy.java. This requires correction.
>> > > > > >>>
>> > > > > >>> AM9: Is the package name correct for AutoOffsetReset as
>> > > > > >>> org.apache.kafka.streams, shouldn't it be under clients
>> package?
>> > > > > >>>
>> > > > > >>> AM10: What does -1L and -2L mean as long for latest and
>> earliest
>> > in
>> > > > > >>> AutoOffsetReset.java? Is it just a long placeholder which will
>> > > never
>> > > > be
>> > > > > >>> used elsewhere for latest and earliest? If yes then does it
>> make
>> > > > sense
>> > > > > to
>> > > > > >>> keep long as Optional, and use Optional.empty() for latest and
>> > > > > earliest?
>> > > > > >>>
>> > > > > >>> Regards,
>> > > > > >>> Apoorv Mittal
>> > > > > >>>
>> > > > > >>>
>> > > > > >>> On Tue, Nov 12, 2024 at 12:06 PM Manikumar <
>> > > > manikumar.re...@gmail.com>
>> > > > > >>> wrote:
>> > > > > >>>
>> > > > > >>>> Thanks Ismael and Lianet for the reviews.
>> > > > > >>>>
>> > > > > >>>> Based on suggestions, I have updated the KIP to in favour of
>> > > having
>> > > > a
>> > > > > >>>> single config (auto.offset.reset).
>> > > > > >>>> I have also adopted the Lianet's suggestion on naming.
>> > > > > >>>>
>> > > > > >>>> auto.offset.reset=back:P3D -> reset back 3 days
>> > > > > >>>>
>> > > > > >>>>
>> > > > > >>>> Let me know if there are any concerns.
>> > > > > >>>>
>> > > > > >>>>
>> > > > > >>>> Thanks,
>> > > > > >>>>
>> > > > > >>>>
>> > > > > >>>> On Sat, Nov 9, 2024 at 10:06 PM Lianet M. <
>> liane...@gmail.com>
>> > > > wrote:
>> > > > > >>>>>
>> > > > > >>>>> Hi all. Thanks Manikumar for the nice improvement, useful
>> > indeed.
>> > > > > >>>>>
>> > > > > >>>>> I also lean towards having a single config given that it's
>> all
>> > > > about
>> > > > > >>> the
>> > > > > >>>>> reset policy, seems all the same "what" (auto reset policy)
>> and
>> > > we
>> > > > > >> are
>> > > > > >>>>> just extending the with a new behaviour. Regarding the
>> naming
>> > > > (agree
>> > > > > >> on
>> > > > > >>>>> duration being confusing), what about something to show that
>> > it's
>> > > > > >>> simply
>> > > > > >>>>> about how far back to reset:
>> > > > > >>>>>
>> > > > > >>>>> auto.offset.reset=EARLIEST
>> > > > > >>>>> auto.offset.reset=BACK:P3D -> reset back 3 days (combined
>> with
>> > > > > >> ISO8601
>> > > > > >>>>> seems really easy to read/understand from the config
>> definition
>> > > > > >> itself)
>> > > > > >>>>>
>> > > > > >>>>> Something like that would definitely break consistency with
>> the
>> > > > > >> command
>> > > > > >>>>> line tool argument "by_duration", but if it seems clearer we
>> > > should
>> > > > > >>>>> consider the tradeoff and not penalize the consumer
>> > API/configs.
>> > > > > >>>>>
>> > > > > >>>>> Thanks!
>> > > > > >>>>>
>> > > > > >>>>> Lianet
>> > > > > >>>>>
>> > > > > >>>>>
>> > > > > >>>>> On Sat, Nov 9, 2024 at 2:47 AM Ismael Juma <
>> m...@ismaeljuma.com>
>> > > > > >> wrote:
>> > > > > >>>>>
>> > > > > >>>>>> Thanks for the KIP, this is useful. A comment below.
>> > > > > >>>>>>
>> > > > > >>>>>> On Thu, Nov 7, 2024 at 4:51 PM Matthias J. Sax <
>> > > mj...@apache.org>
>> > > > > >>>> wrote:
>> > > > > >>>>>>
>> > > > > >>>>>>> I am personally not convinced that adding a new config
>> > > > > >>>>>>> `auto.offset.reset.by.duration` is the best way. Kafka in
>> > > > > >> general
>> > > > > >>>> has
>> > > > > >>>>>>> way too many configs and trying to avoid adding more
>> configs
>> > > > > >> seems
>> > > > > >>>> to be
>> > > > > >>>>>>> desirable?  -- It seems this might be a point of
>> contention,
>> > > and
>> > > > > >> if
>> > > > > >>>> the
>> > > > > >>>>>>> majority of people wants this new config so be it. I just
>> > > wanted
>> > > > > >> to
>> > > > > >>>>>>> stress my concerns about it.
>> > > > > >>>>>>
>> > > > > >>>>>>
>> > > > > >>>>>> I agree that we don't need a new config. We can simply use
>> a
>> > > value
>> > > > > >>> for
>> > > > > >>>> the
>> > > > > >>>>>> existing config. I think a prefix followed by the relevant
>> > > ISO8601
>> > > > > >>>> string
>> > > > > >>>>>> would be clear enough. For example, "by-duration:P23DT23H"
>> or
>> > > > > >>> something
>> > > > > >>>>>> along those lines. I do find the "by-duration" description
>> a
>> > bit
>> > > > > >>>> confusing
>> > > > > >>>>>> for what we're doing here (i.e. current time - duration)
>> > > although
>> > > > > >>>> there is
>> > > > > >>>>>> precedent in the reset offsets tool.
>> > > > > >>>>>>
>> > > > > >>>>>> Ismael
>> > > > > >>>>>>
>> > > > > >>>>
>> > > > > >>>
>> > > > > >>
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>

Reply via email to