Thanks for the detailed explanation, Rajini. I think it makes sense not to
make the protocol change for them. I'll revert those changes.

Jon

On Mon, May 7, 2018 at 6:42 AM, Rajini Sivaram <rajinisiva...@gmail.com>
wrote:

> Hi Jon,
>
> Thanks for the explanation. We had deliberately avoided adding
> throttle_time_ms to LeaderAndIsrResponse,UpdateMetadataResponse,
> SaslAuthenticateResponse and SaslHandshakeResponse since clients
> (producer/consumer/admin client) would never get throttled on these.
> Clients don't use LeaderAndIsr and UpdateMetadata requests, clients never
> send SaslAuthenticate and SaslHandshake requests after the initial
> authentication. We do throttle these, but that is to prevent DoS attacks or
> requests from clients that were not implemented correctly. In these cases,
> we would rely on muting on the broker-side to enforce quotas rather than
> have clients mute themselves. So perhaps we don't need the protocol change?
>
>
> On Sat, May 5, 2018 at 12:49 AM, Jonghyun Lee <jonghy...@gmail.com> wrote:
>
> > Per Rajini's request, I'd like to add one more discussion item.
> >
> > I added the THROTTLE_TIME_MS field to LeaderAndIsrResponse,
> > UpdateMetadataResponse, SaslAuthenticateResponse and
> SaslHandshakeResponse.
> > These are cluster actions and normally not throttled, but they can
> actually
> > be throttled on errors (cluster authorization failure for the first two
> and
> > requests coming in after authorization is done for the last two) for
> > request quota violation. And when they are throttled, I want throttle
> time
> > to be passed back to the client so that the client can refrain from
> sending
> > more requests to the broker until the throttle time is over.
> > For non-error cases, they won't be throttled as before and there are no
> > behavior changes (except that the response will have a zero throttle
> time).
> > If we do not include THROTTLE_TIME_MS in those responses like before,
> they
> > will still be throttled on the broker side, but the client won't know
> that
> > and can keep sending requests to the broker while throttling is in
> > progress. I assume this is not a big concern for these API types, though.
> >
> > Please let me know what you think, and if we decide to keep this change,
> > I'll update the KIP.
> >
> > Thanks,
> > Jon
> >
> >
> > On Wed, May 2, 2018 at 12:08 PM, Jonghyun Lee <jonghy...@gmail.com>
> wrote:
> >
> > > Hi Magnus and Jun, do you have any feedback on this?
> > >
> > > Since two of the original voters (Becket and Rajini) showed a
> preference
> > > for bumping up all request versions, I'll wait till tomorrow and start
> > > implementing it unless someone expresses different opinions.
> > >
> > > As for the implementation, the current plan is to add a method to
> > > AbstractResponse which tells whether or not client should throttle and
> > have
> > > an implementation in each response type based on its version.
> > >
> > > Thanks,
> > > Jon
> > >
> > >
> > > On Mon, Apr 30, 2018 at 9:15 AM, Jonghyun Lee <jonghy...@gmail.com>
> > wrote:
> > >
> > >> Hi Rajini,
> > >>
> > >> Thanks for letting me know the SASL use case. I think this is a
> similar
> > >> point that Becket raised (creating dependency between different
> > requests)
> > >> and it makes sense to me.
> > >>
> > >> Will wait for some more feedback and finalize.
> > >>
> > >> Thanks,
> > >> Jon
> > >>
> > >>
> > >>
> > >> On Mon, Apr 30, 2018 at 3:46 AM, Rajini Sivaram <
> > rajinisiva...@gmail.com>
> > >> wrote:
> > >>
> > >>> Hi Jon,
> > >>>
> > >>> We currently send two ApiVersions requests for SASL, the first with
> > >>> version
> > >>> 0 to get the request versions for SASL and another after
> > authentication.
> > >>> You are currently using the second and basing all throttling
> decisions
> > on
> > >>> that. This may get in the way if we wanted to change this code in the
> > >>> future (e.g. throttle SASL requests or combine the two ApiVersions
> > >>> requests
> > >>> into one). So if it is easy enough to check request versions against
> an
> > >>> immutable map rather than track broker ApiVersions in a mutable set,
> > >>> perhaps that would be better?
> > >>>
> > >>> Hi Magnus, It will be good to know what works better for non-Java
> > >>> clients.
> > >>>
> > >>>
> > >>> On Fri, Apr 27, 2018 at 8:34 PM, Jonghyun Lee <jonghy...@gmail.com>
> > >>> wrote:
> > >>>
> > >>> > Thanks, Becket.
> > >>> >
> > >>> > Assuming that requiring new client implementations to issue
> > >>> > ApiVersionsRequest before issuing any other requests is reasonable
> as
> > >>> you
> > >>> > mentioned, I am wondering if keeping track of brokers that support
> > >>> KIP-219
> > >>> > is actually simpler than keeping a map from each request type to
> its
> > >>> min
> > >>> > version number supporting KIP-219 and checking the version of every
> > >>> single
> > >>> > request to see whether or not to throttle from the client side. To
> > me,
> > >>> it
> > >>> > looks like a broker property that can be cached, and checking every
> > >>> single
> > >>> > request seems excessive.
> > >>> >
> > >>> > Thanks,
> > >>> > Jon
> > >>> >
> > >>> >
> > >>> >
> > >>> >
> > >>> > On Fri, Apr 27, 2018 at 11:36 AM, Becket Qin <becket....@gmail.com
> >
> > >>> wrote:
> > >>> >
> > >>> > > The reason we wanted to bump up all the request versions was let
> > the
> > >>> > > clients know whether the broker has already throttled the request
> > or
> > >>> not.
> > >>> > > This avoids double throttling in both brokers and clients, if the
> > >>> clients
> > >>> > > implementation supports KIP-219.
> > >>> > >
> > >>> > > The new change uses only ApiVersionRequest, instead of all the
> > >>> requests,
> > >>> > to
> > >>> > > indicate whether the brokers have applied throttling or not. The
> > >>> > difference
> > >>> > > is that all the clients must issue ApiVersionRequest first before
> > >>> issuing
> > >>> > > any other requests. This has no impact on the existing clients.
> But
> > >>> for
> > >>> > > clients implementation that wants to support KIP-219, they need
> to
> > >>> follow
> > >>> > > this practice, which seems to be reasonable.
> > >>> > > Initially I thought the change is fine. However, thinking about
> > this
> > >>> > again,
> > >>> > > that means the clients implementation needs to remember the
> > >>> ApiVersions
> > >>> > of
> > >>> > > each broker, which may have some complexity. Also this seems
> > >>> introduces
> > >>> > the
> > >>> > > behavior dependency between different requests, which seems
> > >>> unnecessary.
> > >>> > >
> > >>> > > Due to the above reasons, I think it might be better to bump up
> all
> > >>> the
> > >>> > > request versions.
> > >>> > >
> > >>> > > Thanks,
> > >>> > >
> > >>> > > Jiangjie (Becket) Qin
> > >>> > >
> > >>> > >
> > >>> > > On Wed, Apr 25, 2018 at 3:19 PM, Jonghyun Lee <
> jonghy...@gmail.com
> > >
> > >>> > wrote:
> > >>> > >
> > >>> > > > Hello,
> > >>> > > >
> > >>> > > > Per Ismael's suggestion, I'd like to get comments from the
> > original
> > >>> > > voters
> > >>> > > > for KIP-219 (Becket, Jun, Rajini) and others about the new
> > >>> interface
> > >>> > > change
> > >>> > > > proposed in the discussion thread (
> > >>> > > > https://markmail.org/search/?q=kafka+KIP-219#query:kafka%
> > >>> > > > 20KIP-219+page:1+mid:5rwju2gwpicojr3f+state:results).
> > >>> > > > Would you let me know?
> > >>> > > >
> > >>> > > > Thanks,
> > >>> > > > Jon
> > >>> > > >
> > >>> > > >
> > >>> > > > On Wed, Apr 25, 2018 at 2:43 PM, Dong Lin <lindon...@gmail.com
> >
> > >>> wrote:
> > >>> > > >
> > >>> > > > > +Jon
> > >>> > > > >
> > >>> > > > > On Mon, 22 Jan 2018 at 10:38 AM Becket Qin <
> > becket....@gmail.com
> > >>> >
> > >>> > > wrote:
> > >>> > > > >
> > >>> > > > >> Thanks for the discussion and voting.
> > >>> > > > >>
> > >>> > > > >> KIP-219 has passed with +3 binding votes (Becket, Jun,
> > Rajini).
> > >>> > > > >>
> > >>> > > > >> On Thu, Jan 18, 2018 at 1:32 AM, Rajini Sivaram <
> > >>> > > > rajinisiva...@gmail.com>
> > >>> > > > >> wrote:
> > >>> > > > >>
> > >>> > > > >> > Hi Becket,
> > >>> > > > >> >
> > >>> > > > >> > Thanks for the update. Yes, it does address my concern.
> > >>> > > > >> >
> > >>> > > > >> > +1 (binding)
> > >>> > > > >> >
> > >>> > > > >> > Regards,
> > >>> > > > >> >
> > >>> > > > >> > Rajini
> > >>> > > > >> >
> > >>> > > > >> > On Wed, Jan 17, 2018 at 5:24 PM, Becket Qin <
> > >>> becket....@gmail.com
> > >>> > >
> > >>> > > > >> wrote:
> > >>> > > > >> >
> > >>> > > > >> > > Actually returning an empty fetch request may still be
> > >>> useful to
> > >>> > > > >> reduce
> > >>> > > > >> > the
> > >>> > > > >> > > throttle time due to request quota violation because the
> > >>> > > > FetchResponse
> > >>> > > > >> > send
> > >>> > > > >> > > time will be less. I just updated the KIP.
> > >>> > > > >> > >
> > >>> > > > >> > > Rajini, does that address your concern?
> > >>> > > > >> > >
> > >>> > > > >> > > On Tue, Jan 16, 2018 at 7:01 PM, Becket Qin <
> > >>> > becket....@gmail.com
> > >>> > > >
> > >>> > > > >> > wrote:
> > >>> > > > >> > >
> > >>> > > > >> > > > Thanks for the reply, Jun.
> > >>> > > > >> > > >
> > >>> > > > >> > > > Currently the byte rate quota does not apply to
> > >>> > > HeartbeatRequest,
> > >>> > > > >> > > > JoinGroupRequest/SyncGroupRequest. So the only case
> > those
> > >>> > > > requests
> > >>> > > > >> are
> > >>> > > > >> > > > throttled is because the request quota is violated. In
> > >>> that
> > >>> > > case,
> > >>> > > > >> the
> > >>> > > > >> > > > throttle time does not really matter whether we
> return a
> > >>> full
> > >>> > > > >> > > FetchResponse
> > >>> > > > >> > > > or an empty one. Would it be more consistent if we
> > >>> throttle
> > >>> > > based
> > >>> > > > on
> > >>> > > > >> > the
> > >>> > > > >> > > > actual throttle time / channel mute time?
> > >>> > > > >> > > >
> > >>> > > > >> > > > Thanks,
> > >>> > > > >> > > >
> > >>> > > > >> > > > Jiangjie (Becket) Qin
> > >>> > > > >> > > >
> > >>> > > > >> > > > On Tue, Jan 16, 2018 at 3:45 PM, Jun Rao <
> > >>> j...@confluent.io>
> > >>> > > > wrote:
> > >>> > > > >> > > >
> > >>> > > > >> > > >> Hi, Jiangjie,
> > >>> > > > >> > > >>
> > >>> > > > >> > > >> You are right that the heartbeat is done in a channel
> > >>> > different
> > >>> > > > >> from
> > >>> > > > >> > the
> > >>> > > > >> > > >> fetch request. I think it's still useful to return an
> > >>> empty
> > >>> > > fetch
> > >>> > > > >> > > response
> > >>> > > > >> > > >> when the quota is violated. This way, the throttle
> time
> > >>> for
> > >>> > the
> > >>> > > > >> > > heartbeat
> > >>> > > > >> > > >> request won't be large. I agree that we can just mute
> > the
> > >>> > > channel
> > >>> > > > >> for
> > >>> > > > >> > > the
> > >>> > > > >> > > >> fetch request for the throttle time computed based
> on a
> > >>> full
> > >>> > > > fetch
> > >>> > > > >> > > >> response. This probably also partially addresses
> > >>> Rajini's #1
> > >>> > > > >> concern.
> > >>> > > > >> > > >>
> > >>> > > > >> > > >> Thanks,
> > >>> > > > >> > > >>
> > >>> > > > >> > > >> Jun
> > >>> > > > >> > > >>
> > >>> > > > >> > > >> On Mon, Jan 15, 2018 at 9:27 PM, Becket Qin <
> > >>> > > > becket....@gmail.com>
> > >>> > > > >> > > wrote:
> > >>> > > > >> > > >>
> > >>> > > > >> > > >> > Hi Rajini,
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > Thanks for the comments. Pleas see the reply
> inline.
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > Hi Jun,
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > Thinking about the consumer rebalance case a bit
> > more,
> > >>> I am
> > >>> > > not
> > >>> > > > >> sure
> > >>> > > > >> > > if
> > >>> > > > >> > > >> we
> > >>> > > > >> > > >> > need to worry about the delayed rebalance due to
> > quota
> > >>> > > > violation
> > >>> > > > >> or
> > >>> > > > >> > > not.
> > >>> > > > >> > > >> > The rebalance actually uses a separate channel to
> > >>> > > coordinator.
> > >>> > > > >> > > Therefore
> > >>> > > > >> > > >> > unless the request quota is hit, the rebalance
> won't
> > be
> > >>> > > > >> throttled.
> > >>> > > > >> > > Even
> > >>> > > > >> > > >> if
> > >>> > > > >> > > >> > request quota is hit, it seems unlikely to be
> delayed
> > >>> long.
> > >>> > > So
> > >>> > > > it
> > >>> > > > >> > > looks
> > >>> > > > >> > > >> > that we don't need to unmute the channel earlier
> than
> > >>> > needed.
> > >>> > > > >> Does
> > >>> > > > >> > > this
> > >>> > > > >> > > >> > address your concern?
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > Thanks,
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > Jiangjie (Becket) Qin
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > On Mon, Jan 15, 2018 at 4:22 AM, Rajini Sivaram <
> > >>> > > > >> > > >> rajinisiva...@gmail.com>
> > >>> > > > >> > > >> > wrote:
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > > Hi Becket,
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > > A few questions:
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > > 1. KIP says: *Although older client
> implementations
> > >>> > (prior
> > >>> > > to
> > >>> > > > >> > > >> knowledge
> > >>> > > > >> > > >> > of
> > >>> > > > >> > > >> > > this KIP) will immediately send the next request
> > >>> after
> > >>> > the
> > >>> > > > >> broker
> > >>> > > > >> > > >> > responds
> > >>> > > > >> > > >> > > without paying attention to the throttle time
> > field,
> > >>> the
> > >>> > > > >> broker is
> > >>> > > > >> > > >> > > protected by virtue of muting the channel for
> time
> > X.
> > >>> > i.e.,
> > >>> > > > the
> > >>> > > > >> > next
> > >>> > > > >> > > >> > > request will not be processed until the channel
> is
> > >>> > > unmuted. *
> > >>> > > > >> > > >> > > For fetch requests, the response is sent
> > immediately
> > >>> and
> > >>> > > the
> > >>> > > > >> mute
> > >>> > > > >> > > >> time on
> > >>> > > > >> > > >> > > the broker based on empty fetch response will
> often
> > >>> be
> > >>> > zero
> > >>> > > > >> > (unlike
> > >>> > > > >> > > >> the
> > >>> > > > >> > > >> > > throttle time returned to the client based on
> > >>> non-empty
> > >>> > > > >> response).
> > >>> > > > >> > > >> Won't
> > >>> > > > >> > > >> > > that lead to a tight loop of fetch requests from
> > old
> > >>> > > clients
> > >>> > > > >> > > >> > (particularly
> > >>> > > > >> > > >> > > expensive with SSL)? Wouldn't it be better to
> > retain
> > >>> > > current
> > >>> > > > >> > > behaviour
> > >>> > > > >> > > >> > for
> > >>> > > > >> > > >> > > old clients? Also, if we change the behaviour for
> > old
> > >>> > > > clients,
> > >>> > > > >> > > client
> > >>> > > > >> > > >> > > metrics that track throttle time will report a
> lot
> > of
> > >>> > > > throttle
> > >>> > > > >> > > >> unrelated
> > >>> > > > >> > > >> > to
> > >>> > > > >> > > >> > >  actual throttle time.
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > For consumers, if quota is violated, the throttle
> > time
> > >>> on
> > >>> > the
> > >>> > > > >> broker
> > >>> > > > >> > > >> will
> > >>> > > > >> > > >> > not be 0. It is just that the throttle time will
> not
> > be
> > >>> > > > >> increasing
> > >>> > > > >> > > >> because
> > >>> > > > >> > > >> > the consumer will return an empty response in this
> > >>> case. So
> > >>> > > > there
> > >>> > > > >> > > should
> > >>> > > > >> > > >> > not be a tight loop.
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > > 2. KIP says: *The usual idle timeout i.e.,
> > >>> > > > >> > connections.max.idle.ms
> > >>> > > > >> > > >> > > <http://connections.max.idle.ms> will still be
> > >>> honored
> > >>> > > > during
> > >>> > > > >> the
> > >>> > > > >> > > >> > throttle
> > >>> > > > >> > > >> > > time X. This makes sure that the brokers will
> > detect
> > >>> > client
> > >>> > > > >> > > connection
> > >>> > > > >> > > >> > > closure in a bounded time.*
> > >>> > > > >> > > >> > > Wouldn't it be better to bound maximum throttle
> > time
> > >>> to
> > >>> > > > >> > > >> > > *connections.max.idle.ms
> > >>> > > > >> > > >> > > <http://connections.max.idle.ms>*? If we mute
> for
> > a
> > >>> time
> > >>> > > > >> greater
> > >>> > > > >> > > than
> > >>> > > > >> > > >> > > *connections.max.idle.ms
> > >>> > > > >> > > >> > > <http://connections.max.idle.ms>* and then
> close a
> > >>> > client
> > >>> > > > >> > > connection
> > >>> > > > >> > > >> > > simply
> > >>> > > > >> > > >> > > because we had muted it on the broker for a
> longer
> > >>> > throttle
> > >>> > > > >> time,
> > >>> > > > >> > we
> > >>> > > > >> > > >> > force
> > >>> > > > >> > > >> > > a reconnection and read the next request from the
> > new
> > >>> > > > >> connection
> > >>> > > > >> > > >> straight
> > >>> > > > >> > > >> > > away. This feels the same as a bound on the quota
> > of
> > >>> *
> > >>> > > > >> > > >> > > connections.max.idle.ms
> > >>> > > > >> > > >> > > <http://connections.max.idle.ms>*, but with
> added
> > >>> load
> > >>> > on
> > >>> > > > the
> > >>> > > > >> > > broker
> > >>> > > > >> > > >> for
> > >>> > > > >> > > >> > > authenticating another connection (expensive with
> > >>> SSL).
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > I think we need to think about the consumer prior
> to
> > >>> and
> > >>> > > after
> > >>> > > > >> this
> > >>> > > > >> > > KIP
> > >>> > > > >> > > >> > separately.
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > For consumer prior to this KIP, even if we unmute
> the
> > >>> > channel
> > >>> > > > >> after
> > >>> > > > >> > > >> > connection.max.idle.ms, it is likely that the
> > >>> consumers
> > >>> > have
> > >>> > > > >> > already
> > >>> > > > >> > > >> > reached request.timeout.ms before that and has
> > >>> reconnected
> > >>> > > to
> > >>> > > > >> the
> > >>> > > > >> > > >> broker.
> > >>> > > > >> > > >> > So there is no real difference whether we close the
> > >>> > throttled
> > >>> > > > >> > channel
> > >>> > > > >> > > or
> > >>> > > > >> > > >> > not.
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > For consumers after the KIP, because they will
> honor
> > >>> the
> > >>> > > > throttle
> > >>> > > > >> > > time,
> > >>> > > > >> > > >> > they will back off until throttle time is reached.
> If
> > >>> that
> > >>> > > > >> throttle
> > >>> > > > >> > > >> time is
> > >>> > > > >> > > >> > longer than connection.max.idle.ms, it seems not a
> > big
> > >>> > > > overhead
> > >>> > > > >> > > because
> > >>> > > > >> > > >> > there will only be one connection re-establishment
> in
> > >>> > quite a
> > >>> > > > few
> > >>> > > > >> > > >> minutes.
> > >>> > > > >> > > >> > Compared with such overhead, it seems more
> important
> > to
> > >>> > honor
> > >>> > > > the
> > >>> > > > >> > > quota
> > >>> > > > >> > > >> so
> > >>> > > > >> > > >> > the broker can survive.
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > > 3. Are we changing the behaviour of network
> > bandwidth
> > >>> > quota
> > >>> > > > for
> > >>> > > > >> > > >> > > Produce/Fetch and retaining current behaviour for
> > >>> request
> > >>> > > > >> quotas?
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > This is going to be applied to all the quota.
> > Including
> > >>> > > request
> > >>> > > > >> > > quotas.
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > > Thanks,
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > > Rajini
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > > On Wed, Jan 10, 2018 at 10:29 PM, Jun Rao <
> > >>> > > j...@confluent.io>
> > >>> > > > >> > wrote:
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> > > > Hi, Jiangjie,
> > >>> > > > >> > > >> > > >
> > >>> > > > >> > > >> > > > Thanks for the updated KIP. +1
> > >>> > > > >> > > >> > > >
> > >>> > > > >> > > >> > > > Jun
> > >>> > > > >> > > >> > > >
> > >>> > > > >> > > >> > > > On Mon, Jan 8, 2018 at 7:45 PM, Becket Qin <
> > >>> > > > >> > becket....@gmail.com>
> > >>> > > > >> > > >> > wrote:
> > >>> > > > >> > > >> > > >
> > >>> > > > >> > > >> > > > > Thanks for the comments, Jun.
> > >>> > > > >> > > >> > > > >
> > >>> > > > >> > > >> > > > > 1. Good point.
> > >>> > > > >> > > >> > > > > 2. Also makes sense. Usually the
> > >>> > > connection.max.idle.ms
> > >>> > > > is
> > >>> > > > >> > high
> > >>> > > > >> > > >> > enough
> > >>> > > > >> > > >> > > > so
> > >>> > > > >> > > >> > > > > the throttling is impacted.
> > >>> > > > >> > > >> > > > >
> > >>> > > > >> > > >> > > > > I have updated the KIP to reflect the
> changes.
> > >>> > > > >> > > >> > > > >
> > >>> > > > >> > > >> > > > > Thanks,
> > >>> > > > >> > > >> > > > >
> > >>> > > > >> > > >> > > > > Jiangjie (Becket) Qin
> > >>> > > > >> > > >> > > > >
> > >>> > > > >> > > >> > > > >
> > >>> > > > >> > > >> > > > > On Mon, Jan 8, 2018 at 6:30 PM, Jun Rao <
> > >>> > > > j...@confluent.io>
> > >>> > > > >> > > wrote:
> > >>> > > > >> > > >> > > > >
> > >>> > > > >> > > >> > > > > > Hi, Jiangjie,
> > >>> > > > >> > > >> > > > > >
> > >>> > > > >> > > >> > > > > > Sorry for the late response. The proposal
> > >>> sounds
> > >>> > good
> > >>> > > > >> > > overall. A
> > >>> > > > >> > > >> > > couple
> > >>> > > > >> > > >> > > > > of
> > >>> > > > >> > > >> > > > > > minor comments below.
> > >>> > > > >> > > >> > > > > >
> > >>> > > > >> > > >> > > > > > 1. For throttling a fetch request, we could
> > >>> > > potentially
> > >>> > > > >> just
> > >>> > > > >> > > >> send
> > >>> > > > >> > > >> > an
> > >>> > > > >> > > >> > > > > empty
> > >>> > > > >> > > >> > > > > > response. We can return a throttle time
> > >>> calculated
> > >>> > > > from a
> > >>> > > > >> > full
> > >>> > > > >> > > >> > > > response,
> > >>> > > > >> > > >> > > > > > but only mute the channel on the server
> based
> > >>> on a
> > >>> > > > >> throttle
> > >>> > > > >> > > time
> > >>> > > > >> > > >> > > > > calculated
> > >>> > > > >> > > >> > > > > > based on the empty response. This has the
> > >>> benefit
> > >>> > > that
> > >>> > > > >> the
> > >>> > > > >> > > >> server
> > >>> > > > >> > > >> > > will
> > >>> > > > >> > > >> > > > > mute
> > >>> > > > >> > > >> > > > > > the channel much shorter, which will
> prevent
> > >>> the
> > >>> > > > consumer
> > >>> > > > >> > from
> > >>> > > > >> > > >> > > > > rebalancing
> > >>> > > > >> > > >> > > > > > when throttled.
> > >>> > > > >> > > >> > > > > >
> > >>> > > > >> > > >> > > > > > 2. The wiki says "connections.max.idle.ms
> > >>> should
> > >>> > be
> > >>> > > > >> ignored
> > >>> > > > >> > > >> during
> > >>> > > > >> > > >> > > the
> > >>> > > > >> > > >> > > > > > throttle time X." This has the potential
> > issue
> > >>> > that a
> > >>> > > > >> server
> > >>> > > > >> > > may
> > >>> > > > >> > > >> > not
> > >>> > > > >> > > >> > > > > detect
> > >>> > > > >> > > >> > > > > > that a client connection is already gone
> > until
> > >>> > after
> > >>> > > an
> > >>> > > > >> > > >> arbitrary
> > >>> > > > >> > > >> > > > amount
> > >>> > > > >> > > >> > > > > of
> > >>> > > > >> > > >> > > > > > time. Perhaps we could still just close a
> > >>> > connection
> > >>> > > if
> > >>> > > > >> the
> > >>> > > > >> > > >> server
> > >>> > > > >> > > >> > > has
> > >>> > > > >> > > >> > > > > > muted it for longer than
> > >>> connections.max.idle.ms.
> > >>> > > This
> > >>> > > > >> will
> > >>> > > > >> > > at
> > >>> > > > >> > > >> > least
> > >>> > > > >> > > >> > > > > bound
> > >>> > > > >> > > >> > > > > > the time for a server to detect closed
> client
> > >>> > > > >> connections.
> > >>> > > > >> > > >> > > > > >
> > >>> > > > >> > > >> > > > > > Thanks,
> > >>> > > > >> > > >> > > > > >
> > >>> > > > >> > > >> > > > > > Jun
> > >>> > > > >> > > >> > > > > >
> > >>> > > > >> > > >> > > > > >
> > >>> > > > >> > > >> > > > > > On Mon, Nov 20, 2017 at 5:30 PM, Becket
> Qin <
> > >>> > > > >> > > >> becket....@gmail.com>
> > >>> > > > >> > > >> > > > > wrote:
> > >>> > > > >> > > >> > > > > >
> > >>> > > > >> > > >> > > > > > > Hi,
> > >>> > > > >> > > >> > > > > > >
> > >>> > > > >> > > >> > > > > > > We would like to start the voting thread
> > for
> > >>> > > KIP-219.
> > >>> > > > >> The
> > >>> > > > >> > > KIP
> > >>> > > > >> > > >> > > > proposes
> > >>> > > > >> > > >> > > > > to
> > >>> > > > >> > > >> > > > > > > improve the quota communication between
> the
> > >>> > brokers
> > >>> > > > and
> > >>> > > > >> > > >> clients,
> > >>> > > > >> > > >> > > > > > especially
> > >>> > > > >> > > >> > > > > > > for cases of long throttling time.
> > >>> > > > >> > > >> > > > > > >
> > >>> > > > >> > > >> > > > > > > The KIP wiki is following:
> > >>> > > > >> > > >> > > > > > > https://cwiki.apache.org/
> > >>> > > > confluence/display/KAFKA/KIP-
> > >>> > > > >> > > >> > > > > > 219+-+Improve+quota+
> > >>> > > > >> > > >> > > > > > > communication
> > >>> > > > >> > > >> > > > > > >
> > >>> > > > >> > > >> > > > > > > The discussion thread is here:
> > >>> > > > >> > > >> > > > > > > http://markmail.org/search/?q=
> > >>> > > > >> kafka+KIP-219#query:kafka%
> > >>> > > > >> > > >> > > > > > > 20KIP-219+page:1+mid:
> > >>> > > ooxabguy7nz7l7zy+state:results
> > >>> > > > >> > > >> > > > > > >
> > >>> > > > >> > > >> > > > > > > Thanks,
> > >>> > > > >> > > >> > > > > > >
> > >>> > > > >> > > >> > > > > > > Jiangjie (Becket) Qin
> > >>> > > > >> > > >> > > > > > >
> > >>> > > > >> > > >> > > > > >
> > >>> > > > >> > > >> > > > >
> > >>> > > > >> > > >> > > >
> > >>> > > > >> > > >> > >
> > >>> > > > >> > > >> >
> > >>> > > > >> > > >>
> > >>> > > > >> > > >
> > >>> > > > >> > > >
> > >>> > > > >> > >
> > >>> > > > >> >
> > >>> > > > >>
> > >>> > > > >
> > >>> > > >
> > >>> > >
> > >>> >
> > >>>
> > >>
> > >>
> > >
> >
>

Reply via email to