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