Hey Becket,

Thanks for the KIP. As I understand, the intention is to preserve the
current behavior with a timestamp of -1 indicating latest timestamp and -2
indicating earliest timestamp. So users can query these offsets using the
offsetsForTimes API if they know the magic values. I'm wondering if it
would make the usage a little nicer to have a separate API instead for
these special cases? Sort of in the way that we expose a generic seek() and
a seekToBeginning(), maybe we could have an earliestOffset() in addition to
offsetsForTimes()?

Thanks,
Jason

On Wed, Sep 7, 2016 at 10:04 AM, Becket Qin <becket....@gmail.com> wrote:

> Thanks everyone for all the feedback.
>
> If there is no further concerns or comments I will start a voting thread on
> this KIP tomorrow.
>
> Thanks,
>
> Jiangjie (Becket) Qin
>
> On Tue, Sep 6, 2016 at 9:48 AM, Becket Qin <becket....@gmail.com> wrote:
>
> > Hi Magnus,
> >
> > Thanks for the comments. I agree that querying messages within a time
> > range is a valid use case (actually this is an example use case in my
> > previous email). The current proposal can achieve this by having two
> > ListOffsetRequest, right? I think the current API already supports the
> use
> > cases that require the offsets for multiple timestamps. The question is
> > that whether it is worth adding more complexity to the protocol to make
> it
> > easier for multiple timestamp query. Personally I think given that query
> > multiple timestamps is likely an infrequent operation, there is no need
> to
> > optimize for it and complicates the protocol.
> >
> > Thanks,
> >
> > Jiangjie (Becket) Qin
> >
> > On Mon, Sep 5, 2016 at 11:21 PM, Magnus Edenhill <mag...@edenhill.se>
> > wrote:
> >
> >> Good write-up Qin, the API looks promising.
> >>
> >> I have one comment:
> >>
> >> 2016-09-03 5:20 GMT+02:00 Becket Qin <becket....@gmail.com>:
> >>
> >> > The currently offsetsForTimes() API obviously does not support
> querying
> >> > multiple timestamps for the same partition. It doesn't seems a feature
> >> for
> >> > ListOffsetRequest v0 either (sounds more like a bug). My intuition is
> >> that
> >> > it's a rare use case. Given it does not exist before and we don't see
> a
> >> > strong need from the community either, maybe it is better to keep it
> >> simple
> >> > for ListOffsetRequest v1. We can add it later if it turns out to be a
> >> > useful feature (that may need a interface change, but I honestly do
> not
> >> > think people would frequently query many different timestamps for the
> >> same
> >> > partition)
> >> >
> >>
> >> I argue that the current behaviour of OffsetRequest with regards to
> >> duplicate partitions is a bug
> >> and think it would be a mistake to move the same semantics over to thew
> >> new
> >> ListOffset API.
> >> One use case is that an application may want to know the offset range
> >> between two timestamps,
> >> e.g., for reprocessing, batching, searching, etc.
> >>
> >>
> >> Thanks,
> >> Magnus
> >>
> >>
> >>
> >> >
> >> > Have a good long weekend!
> >> >
> >> > Thanks,
> >> >
> >> > Jiangjie (Becket) Qin
> >> >
> >> >
> >> >
> >> >
> >> > On Fri, Sep 2, 2016 at 6:10 PM, Ismael Juma <ism...@juma.me.uk>
> wrote:
> >> >
> >> > > Thanks for the proposal Becket. Looks good overall, a few comments:
> >> > >
> >> > > ListOffsetResponse => [TopicName [PartitionOffsets]]
> >> > > >   PartitionOffsets => Partition ErrorCode Timestamp [Offset]
> >> > > >   Partition => int32
> >> > > >   ErrorCode => int16
> >> > > >   Timestamp => int64
> >> > > >   Offset => int
> >> > >
> >> > >
> >> > > It should be int64 for `Offset` right?
> >> > >
> >> > > Implementation wise, we will migrate to o.a.k.common.requests.
> >> > > ListOffsetRequest
> >> > > > class on the broker side.
> >> > >
> >> > >
> >> > > Could you clarify what you mean here? We already
> >> > > use o.a.k.common.requests.ListOffsetRequest in KafkaApis.
> >> > >
> >> > > long offset = consumer.offsetForTime(Collections.singletonMap(
> >> > > topicPartition,
> >> > > > targetTime)).offset;
> >> > >
> >> > >
> >> > > The result of `offsetForTime` is a Map, so we can't just call
> >> `offset` on
> >> > > it. You probably meant something like:
> >> > >
> >> > > long offset = consumer.offsetForTime(Collections.singletonMap(
> >> > > topicPartition,
> >> > > targetTime)).get(topicPartition).offset;
> >> > >
> >> > > Test searchByTimestamp with CreateTime and LogAppendTime
> >> > > >
> >> > >
> >> > > Do you mean `Test offsetForTime`?
> >> > >
> >> > > And:
> >> > >
> >> > > 1. In KAFKA-1588, the following issue was described "When performing
> >> an
> >> > > OffsetRequest, if you request the same topic and partition
> combination
> >> > in a
> >> > > single request more than once (for example, if you want to get both
> >> the
> >> > > head and tail offsets for a partition in the same request), you will
> >> get
> >> > a
> >> > > response for both, but they will be the same offset". Will the new
> >> > request
> >> > > version support the use case where multiple timestamps are passed
> for
> >> the
> >> > > same topic partition? And if we do support it at the protocol level,
> >> do
> >> > we
> >> > > also want to support it at the API level or do we think the
> additional
> >> > > complexity is not worth it?
> >> > >
> >> > > 2. Is `offsetForTime` the right method name given that we are
> getting
> >> > > multiple offsets? Maybe it should be `offsetsForTimes` or something
> >> like
> >> > > that.
> >> > >
> >> > > Ismael
> >> > >
> >> > > On Wed, Aug 31, 2016 at 4:38 AM, Becket Qin <becket....@gmail.com>
> >> > wrote:
> >> > >
> >> > > > Hi Kafka devs,
> >> > > >
> >> > > > I created KIP-79 to allow consumer to precisely query the offsets
> >> based
> >> > > on
> >> > > > timestamp.
> >> > > >
> >> > > > In short we propose to :
> >> > > > 1. add a ListOffsetRequest/ListOffsetResponse v1, and
> >> > > > 2. add an offsetForTime() method in new consumer.
> >> > > >
> >> > > > The KIP wiki is the following:
> >> > > > https://cwiki.apache.org/confluence/pages/viewpage.
> >> > > action?pageId=65868090
> >> > > >
> >> > > > Comments are welcome.
> >> > > >
> >> > > > Thanks,
> >> > > >
> >> > > > Jiangjie (Becket) Qin
> >> > > >
> >> > >
> >> >
> >>
> >
> >
>

Reply via email to