bq. The most flexible option is to add overloads to the consumer

This option is flexible.

Looking at the tail of SPARK-18057, Spark dev voiced the same choice.

+1 for adding overload with timeout parameter.

Cheers

On Mon, Mar 5, 2018 at 2:42 PM, Jason Gustafson <ja...@confluent.io> wrote:

> @Guozhang I probably have suggested all options at some point or another,
> including most recently, the current KIP! I was thinking that practically
> speaking, the request timeout defines how long the user is willing to wait
> for a response. The consumer doesn't really have a complex send process
> like the producer for any of these APIs, so I wasn't sure how much benefit
> there would be from having more granular control over timeouts (in the end,
> KIP-91 just adds a single timeout to control the whole send). That said, it
> might indeed be better to avoid overloading the config as you suggest since
> at least it avoids inconsistency with the producer's usage.
>
> The most flexible option is to add overloads to the consumer so that users
> can pass the timeout directly. I'm not sure if that is more or less
> annoying than a new config, but I've found config timeouts a little
> constraining in practice. For example, I could imagine users wanting to
> wait longer for an offset commit operation than a position lookup; if the
> latter isn't timely, users can just pause the partition and continue
> fetching on others. If you cannot commit offsets, however, it might be
> safer for an application to wait availability of the coordinator than
> continuing.
>
> -Jason
>
> On Sun, Mar 4, 2018 at 10:14 PM, Guozhang Wang <wangg...@gmail.com> wrote:
>
> > Hello Richard,
> >
> > Thanks for the proposed KIP. I have a couple of general comments:
> >
> > 1. I'm not sure if piggy-backing the timeout exception on the
> > existing requestTimeoutMs configured in "request.timeout.ms" is a good
> > idea
> > since a) it is a general config that applies for all types of requests,
> and
> > 2) using it to cover all the phases of an API call, including network
> round
> > trip and potential metadata refresh is shown to not be a good idea, as
> > illustrated in KIP-91:
> >
> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> > 91+Provide+Intuitive+User+Timeouts+in+The+Producer
> >
> > In fact, I think in KAFKA-4879 which is aimed for the same issue as
> > KAFKA-6608,
> > Jason has suggested we use a new config for the API. Maybe this would be
> a
> > more intuitive manner than reusing the request.timeout.ms config.
> >
> >
> > 2. Besides the Consumer.position() call, there are a couple of more
> > blocking calls today that could result in infinite blocking:
> > Consumer.commitSync() and Consumer.committed(), should they be considered
> > in this KIP as well?
> >
> > 3. There are a few other APIs that are today relying on
> request.timeout.ms
> > already for breaking the infinite blocking, namely
> Consumer.partitionFor(),
> > Consumer.OffsetAndTimestamp() and Consumer.listTopics(), if we are making
> > the other blocking calls to be relying a new config as suggested in 1)
> > above, should we also change the semantics of these API functions for
> > consistency?
> >
> >
> > Guozhang
> >
> >
> >
> >
> > On Sun, Mar 4, 2018 at 11:13 AM, Richard Yu <yohan.richard...@gmail.com>
> > wrote:
> >
> > > Hi all,
> > >
> > > I would like to discuss a potential change which would be made to
> > > KafkaConsumer:
> > > https://cwiki.apache.org/confluence/pages/viewpage.
> > action?pageId=75974886
> > >
> > > Thanks,
> > > Richard Yu
> > >
> >
> >
> >
> > --
> > -- Guozhang
> >
>

Reply via email to