Hi Collin and Guozhang,

I see. But even if the fall-back logic goes into AdminClient and
ConsumerClient, it still have to be somehow type specific right?
So either way, there will be api-specific process code somewhere?

Thanks,
Yishun


On Tue, Sep 4, 2018 at 5:46 PM Colin McCabe <co...@cmccabe.xyz> wrote:
>
> Hi Yishun,
>
> I agree with Guozhang.  NetworkClient is the wrong place to put things
which are specific to a particular message type.  NetworkClient should not
have to care what the type of the message is that it is sending.
>
> Adding type-specific handling is much more "ugly and dirty" than adding
some compatibility code to AdminClient and ConsumerClient.  It is true that
there is some code duplication, but I think it will be minimal in this case.
>
> best,
> Colin
>
>
> On Tue, Sep 4, 2018, at 13:28, Guozhang Wang wrote:
> > Hello Yishun,
> >
> > I reviewed the latest wiki page, and noticed that the special handling
> > logic needs to be in the NetworkClient.
> >
> > Comparing it with another alternative way, i.e. we add the fall-back
logic
> > in the AdminClient, as well as in the ConsumerClient to capture the
> > UnsupportedException and fallback, because the two of them are possibly
> > sending FindCoordinatorRequest (though for consumers today we do not
expect
> > it to send for more than one coordinator); personally I think the
current
> > approach is better, but I'd like to hear other people's opinion as well
> > (cc'ed Colin, who implemented the AdminClient).
> >
> >
> > Guozhang
> >
> >
> > On Mon, Sep 3, 2018 at 11:57 AM, Yishun Guan <gyis...@gmail.com> wrote:
> >
> > > Hi Guozhang,
> > >
> > > Yes, I totally agree with you. Like I said, I think it is an overkill
> > > for now, to make so many changes for a small improvement.
> > > And like you said, the only way to do this is the "ugly and dirty"
> > > way, do you think we should still apply this improvement?
> > >
> > > I updated a new BuildToList() (method name pending) and add a check
> > > condition in the doSend().
> > > This is the KIP:https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> > > 347%3A++Enable+batching+in+FindCoordinatorRequest
> > >
> > > Let me know what you think.
> > >
> > > Thanks,
> > > Yishun
> > > On Sun, Sep 2, 2018 at 10:02 PM Guozhang Wang <wangg...@gmail.com>
wrote:
> > > >
> > > > Hi Yishun,
> > > >
> > > > I was actually not suggesting we should immediately make such
dramatic
> > > > change on the AbstractRequest APIs which will affect all requests
types,
> > > > just clarifying if it is your intent or not, since your code
snippet in
> > > the
> > > > KIP has "@Override"  :)
> > > >
> > > > I think an alternative way is to add such a function for for
> > > > FindCoordinator only, i.e. besides the overridden `public
> > > > FindCoordinatorRequest build(short version)` we can have one more
> > > function
> > > > (note the function name need to be different since Java type erasure
> > > caused
> > > > it to not able to differentiate these two otherwise, but we can
consider
> > > a
> > > > better name: buildMulti is only for illustration)
> > > >
> > > > public List<FindCoordinatorRequest> buildMulti(short version)
> > > >
> > > >
> > > > It does mean that we now need to special-handle
> > > > FindCoordinatorRequestBuilder in all callers from other requests,
which
> > > is
> > > > also a bit "ugly and dirty", but the change scope may be smaller.
General
> > > > changes on the AbstractRequestBuilder could be delayed until we
realize
> > > > this is a common usage for some other requests in their newer
versions as
> > > > well.
> > > >
> > > >
> > > > Guozhang
> > > >
> > > >
> > > > On Sun, Sep 2, 2018 at 4:10 PM, Yishun Guan <gyis...@gmail.com>
wrote:
> > > >
> > > > > Hi Guozhang,
> > > > >
> > > > > Yes, you are right. I didn't notice T build() is bounded to <T
extends
> > > > > AbstractRequest>.
> > > > > I was originally thinking T could be an AbstractedRequest or
List<>
> > > > > but I was wrong. Now the return type has to change from T build()
to
> > > > > List<T> build
> > > > > where <T extends AbstractRequest>. As you mentioned,
> > > > > this required a change for all the requests, probably need
> > > > > a new KIP too, do you think. I will update this KIP accordingly
first.
> > > > >
> > > > > However, do you see other benefits of changing the return type for
> > > build()?
> > > > > The original improvement that we want is this:
> > > > > https://issues.apache.org/jira/browse/KAFKA-6788.
> > > > > It seems like we have to make a lot of structural changes for this
> > > > > small improvement.
> > > > > I think changing the return type might benefit the project in the
> > > future,
> > > > > but I don't know the project enough to say so. I would love to
keep
> > > > > working on this,
> > > > > but do you see all these changes are worth for this story,
> > > > > and if not, is there another way out?
> > > > >
> > > > > Thanks,
> > > > > Yishun
> > > > > On Sat, Sep 1, 2018 at 11:04 AM Guozhang Wang <wangg...@gmail.com>
> > > wrote:
> > > > > >
> > > > > > Hello Yishun,
> > > > > >
> > > > > > Thanks for the updated KIP. I think option 1), i.e. return
multiple
> > > > > > requests from build() call is okay. Just to clarify: you are
going to
> > > > > > change `AbstractRequest#build(short version)` signature, and
hence
> > > all
> > > > > > requests need to be updated accordingly, but only
FindCoordinator
> > > for may
> > > > > > return multiple requests in the list, while all others will
return
> > > > > > singleton list, right?
> > > > > >
> > > > > >
> > > > > > Guozhang
> > > > > >
> > > > > >
> > > > > > On Fri, Aug 31, 2018 at 10:51 AM, Yishun Guan <gyis...@gmail.com
>
> > > wrote:
> > > > > >
> > > > > > > @Guozhang Wang Could you review this again when you have time?
> > > Thanks!
> > > > > > > -Yishun
> > > > > > > On Wed, Aug 29, 2018 at 11:57 AM Yishun Guan <
gyis...@gmail.com>
> > > > > wrote:
> > > > > > > >
> > > > > > > > Hi, because I have made some significant changes on this
design,
> > > so I
> > > > > > > > want to reopen the discussion on this KIP:
> > > > > > > > https://cwiki.apache.org/confluence/x/CgZPBQ
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Yishun
> > > > > > > > On Thu, Aug 16, 2018 at 5:06 PM Yishun Guan <
gyis...@gmail.com>
> > > > > wrote:
> > > > > > > > >
> > > > > > > > > I see! Thanks!
> > > > > > > > >
> > > > > > > > > On Thu, Aug 16, 2018, 4:35 PM Guozhang Wang <
> > > wangg...@gmail.com>
> > > > > > > wrote:
> > > > > > > > >>
> > > > > > > > >> It is not implemented, but should not be hard to do so
(and
> > > again
> > > > > you
> > > > > > > do
> > > > > > > > >> NOT have to do that in this KIP, I'm bringing this up so
that
> > > you
> > > > > can
> > > > > > > help
> > > > > > > > >> thinking about the process).
> > > > > > > > >>
> > > > > > > > >> Quoting from Colin's comment:
> > > > > > > > >>
> > > > > > > > >> "
> > > > > > > > >> The pattern is that you would try to send a request for
more
> > > than
> > > > > one
> > > > > > > > >> group, and then you would get an
UnsupportedVersionException
> > > > > (nothing
> > > > > > > would
> > > > > > > > >> be sent on the wire, this is purely internal to the
code).
> > > > > > > > >> Then your code would handle the UVE by creating requests
with
> > > an
> > > > > older
> > > > > > > > >> version that only had one group each.
> > > > > > > > >> "
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >> Guozhang
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >> On Wed, Aug 15, 2018 at 4:44 PM, Yishun Guan <
> > > gyis...@gmail.com>
> > > > > > > wrote:
> > > > > > > > >>
> > > > > > > > >> > Hi, I am looking into AdminClient.scala and
> > > AdminClient.java,
> > > > > and
> > > > > > > also
> > > > > > > > >> > looking into ApiVersionRequest.java and
> > > ApiVersionResponse.java,
> > > > > > > but I
> > > > > > > > >> > don't see anywhere contains to logic of the one-to-one
> > > mapping
> > > > > from
> > > > > > > version
> > > > > > > > >> > to version, am i looking at the right place?
> > > > > > > > >> >
> > > > > > > > >> > On Mon, Aug 13, 2018 at 1:30 PM Guozhang Wang <
> > > > > wangg...@gmail.com>
> > > > > > > wrote:
> > > > > > > > >> >
> > > > > > > > >> > > Regarding 3): Today we do not have this logic with
the
> > > > > existing
> > > > > > > client,
> > > > > > > > >> > > because defer the decision about the version to use
(we
> > > always
> > > > > > > assume
> > > > > > > > >> > that
> > > > > > > > >> > > an new versioned request need to be down-converted
to a
> > > > > single old
> > > > > > > > >> > > versioned request: i.e. an one-to-one mapping), but
in
> > > > > principle,
> > > > > > > we
> > > > > > > > >> > should
> > > > > > > > >> > > be able to modify the client make it work.
> > > > > > > > >> > >
> > > > > > > > >> > > Again this is not necessarily need to be included in
this
> > > KIP,
> > > > > > > but I'd
> > > > > > > > >> > > recommend you to look into AdminClient
implementations
> > > around
> > > > > the
> > > > > > > > >> > > ApiVersionRequest / Response and think about how that
> > > logic
> > > > > can be
> > > > > > > > >> > modified
> > > > > > > > >> > > in the follow-up PR of this KIP.
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > > Guozhang
> > > > > > > > >> > >
> > > > > > > > >> > > On Mon, Aug 13, 2018 at 12:55 PM, Yishun Guan <
> > > > > gyis...@gmail.com>
> > > > > > > wrote:
> > > > > > > > >> > >
> > > > > > > > >> > > > @Guozhang, thank you so much!
> > > > > > > > >> > > > 1. I agree, fixed.
> > > > > > > > >> > > > 2. Added.
> > > > > > > > >> > > > 3. I see, that is something that I haven't think
about.
> > > How
> > > > > > > does Kafka
> > > > > > > > >> > > > handle other api's different version problem now?
So we
> > > > > have a
> > > > > > > specific
> > > > > > > > >> > > > convertor that convect a new version request to a
old
> > > > > version
> > > > > > > one for
> > > > > > > > >> > > each
> > > > > > > > >> > > > API (is this what the ApiVersionsRequest supposed
to do,
> > > > > does
> > > > > > > it only
> > > > > > > > >> > > > handle the detection or it should handle the
conversion
> > > > > too)?
> > > > > > > What will
> > > > > > > > >> > > be
> > > > > > > > >> > > > the consequence of not having such a transformer
but the
> > > > > > > version is
> > > > > > > > >> > > > incompatible?
> > > > > > > > >> > > >
> > > > > > > > >> > > > Best,
> > > > > > > > >> > > > Yishun
> > > > > > > > >> > > >
> > > > > > > > >> > > > On Sat, Aug 11, 2018 at 11:27 AM Guozhang Wang <
> > > > > > > wangg...@gmail.com>
> > > > > > > > >> > > wrote:
> > > > > > > > >> > > >
> > > > > > > > >> > > > > Hello Yishun,
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > Thanks for the proposed KIP. I made a pass over
the
> > > wiki
> > > > > and
> > > > > > > here are
> > > > > > > > >> > > > some
> > > > > > > > >> > > > > comments:
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > 1. "DESCRIBE_GROUPS_RESPONSE_MEMBER_V0", why we
need
> > > to
> > > > > > > encode the
> > > > > > > > >> > full
> > > > > > > > >> > > > > schema for the "COORDINATOR_GROUPIDS_KEY_NAME"
field?
> > > > > Note it
> > > > > > > > >> > includes
> > > > > > > > >> > > a
> > > > > > > > >> > > > > lot of fields such as member id that is not
needed for
> > > > > this
> > > > > > > case. I
> > > > > > > > >> > > > think a
> > > > > > > > >> > > > > "new ArrayOf(String)" for the group ids should be
> > > > > sufficient.
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > 2. "schemaVersions" of the
"FindCoordinatorRequest"
> > > needs
> > > > > to
> > > > > > > include
> > > > > > > > >> > > > > FIND_COORDINATOR_REQUEST_V3 as well.
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > 3. One thing you may need to consider is that,
in the
> > > > > > > adminClient to
> > > > > > > > >> > > > handle
> > > > > > > > >> > > > > broker compatibility, how to transform a new (v3)
> > > request
> > > > > to
> > > > > > > a bunch
> > > > > > > > >> > of
> > > > > > > > >> > > > > (v2) requests if it detects the broker is still
in old
> > > > > > > version and
> > > > > > > > >> > > hence
> > > > > > > > >> > > > > cannot support v3 request (this logic is already
> > > > > implemented
> > > > > > > via
> > > > > > > > >> > > > > ApiVersionsRequest in AdminClient, but may need
to be
> > > > > > > extended to
> > > > > > > > >> > > handle
> > > > > > > > >> > > > > one-to-many mapping of different versions).
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > This is not sth. that you need to implement
under this
> > > > > KIP,
> > > > > > > but I'd
> > > > > > > > >> > > > > recommend you think about this earlier than
later and
> > > see
> > > > > if
> > > > > > > it may
> > > > > > > > >> > > > affect
> > > > > > > > >> > > > > this proposal.
> > > > > > > > >> > > > >
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > Guozhang
> > > > > > > > >> > > > >
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > On Sat, Aug 11, 2018 at 10:54 AM, Yishun Guan <
> > > > > > > gyis...@gmail.com>
> > > > > > > > >> > > wrote:
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > > Hi, thank you Ted! I have addressed your
comments:
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > > 1. Added more descriptions about later
optimization.
> > > > > > > > >> > > > > > 2. Yes, I will implement the V3 later when
this KIP
> > > gets
> > > > > > > accepted.
> > > > > > > > >> > > > > > 3. Fixed.
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > > Thanks,
> > > > > > > > >> > > > > > Yishun
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > > On Fri, Aug 10, 2018 at 3:32 PM Ted Yu <
> > > > > yuzhih...@gmail.com
> > > > > > > >
> > > > > > > > >> > wrote:
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > > > > bq. this is the foundation of some later
possible
> > > > > > > > >> > > > optimizations(enable
> > > > > > > > >> > > > > > > batching in *describeConsumerGroups ...*
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > *Can you say more why this change lays the
> > > foundation
> > > > > for
> > > > > > > the
> > > > > > > > >> > > future
> > > > > > > > >> > > > > > > optimizations ?*
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > *You mentioned **FIND_COORDINATOR_REQUEST_V3
in
> > > the
> > > > > wiki
> > > > > > > but I
> > > > > > > > >> > > don't
> > > > > > > > >> > > > > see
> > > > > > > > >> > > > > > it
> > > > > > > > >> > > > > > > in PR.*
> > > > > > > > >> > > > > > > *I assume you would add that later.*
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > *Please read your wiki and fix grammatical
error
> > > such
> > > > > as
> > > > > > > the
> > > > > > > > >> > > > > following:*
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > bq. that need to be make
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > Thanks
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > On Wed, Aug 8, 2018 at 3:55 PM Yishun Guan <
> > > > > > > gyis...@gmail.com>
> > > > > > > > >> > > > wrote:
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > > > > Hi all,
> > > > > > > > >> > > > > > > >
> > > > > > > > >> > > > > > > > I would like to start a discussion on:
> > > > > > > > >> > > > > > > >
> > > > > > > > >> > > > > > > > KIP-347: Enable batching in
> > > FindCoordinatorRequest
> > > > > > > > >> > > > > > > >
https://cwiki.apache.org/confluence/x/CgZPBQ
> > > > > > > > >> > > > > > > >
> > > > > > > > >> > > > > > > > Thanks @Guozhang Wang <wangg...@gmail.com>
for
> > > his
> > > > > > > help and
> > > > > > > > >> > > > > patience!
> > > > > > > > >> > > > > > > >
> > > > > > > > >> > > > > > > > Thanks,
> > > > > > > > >> > > > > > > > Yishun
> > > > > > > > >> > > > > > > >
> > > > > > > > >> > > > > > >
> > > > > > > > >> > > > > >
> > > > > > > > >> > > > >
> > > > > > > > >> > > > >
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > --
> > > > > > > > >> > > > > -- Guozhang
> > > > > > > > >> > > > >
> > > > > > > > >> > > >
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > > --
> > > > > > > > >> > > -- Guozhang
> > > > > > > > >> > >
> > > > > > > > >> >
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >> --
> > > > > > > > >> -- Guozhang
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > -- Guozhang
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > -- Guozhang
> > >
> >
> >
> >
> > --
> > -- Guozhang

Reply via email to