One more thing. Can you update the KIP accordingly. It still says:

 - Compatibility check: we will use a network client for this purpose,
as it is a one-time thing.

Additionally, I think we should add a "admin." prefix that allows to set
certain config parameters for the admin client only. Similar to
producer/consumer.

Can we add this to the KIP?


-Matthias

On 11/14/17 2:51 PM, Matthias J. Sax wrote:
> Thanks for looking into this into details!
> 
> As mentioned, I would like to keep the check, but if it's too much
> overhead, I agree that it's not worth it.
> 
> Thanks.
> 
> -Matthias
> 
> On 11/14/17 10:00 AM, Guozhang Wang wrote:
>> I looked into how to use a NetworkClient to replace StreamsKafkaClient to
>> do this one-time checking, and the complexity is actually pretty high:
>> since it is a barebone NetworkClient, we have to handle the connection /
>> readiness / find a broker to send to / etc logic plus introducing all these
>> dependencies into KafkaStreams class. So I have decided to not do this in
>> this KIP. If people feel strongly about this let's discuss more.
>>
>>
>> I'll start the voting process on the mailing list now.
>>
>>
>> Guozhang
>>
>> On Fri, Nov 10, 2017 at 11:47 AM, Bill Bejeck <bbej...@gmail.com> wrote:
>>
>>> I'm leaning towards option 3, although option 2 is a reasonable tradeoff
>>> between the two.
>>>
>>> Overall I'm leaning towards option 3 because:
>>>
>>>    1. As Guozhang has said we are failing "fast enough" with an Exception
>>>    from the first rebalance.
>>>    2. Less complexity/maintenance cost by not having a transient network
>>>    client
>>>    3. Ideally, this check should be on the AdminClient itself but adding
>>>    such a check creates "scope creep" for this KIP.
>>>
>>> IMHO the combination of these reasons makes option 3 my preferred approach.
>>>
>>> Thanks,
>>> Bill
>>>
>>> On Tue, Nov 7, 2017 at 12:48 PM, Guozhang Wang <wangg...@gmail.com> wrote:
>>>
>>>> Here is what I'm thinking about this trade-off: we want to fail fast when
>>>> brokers do not yet support the requested API version, with the cost that
>>> we
>>>> need to do this one-time thing with an expensed NetworkClient plus a bit
>>>> longer starting up latency. Here are a few different options:
>>>>
>>>> 1) we ask all the brokers: this is one extreme of the trade-off, we still
>>>> need to handle UnsupportedApiVersionsException since brokers can
>>>> downgrade.
>>>> 2) we ask a random broker: this is what we did, and a bit weaker than 1)
>>>> but saves on latency.
>>>> 3) we do not ask anyone: this is the other extreme of the trade-off.
>>>>
>>>> To me I think 1) is an overkill, so I did not include that in my
>>> proposals.
>>>> Between 2) and 3) I'm slightly preferring 3) since even under this case
>>> we
>>>> are sort of failing fast because we will throw the exception at the first
>>>> rebalance, but I can still see the value of option 2). Ideally we can
>>> have
>>>> some APIs from AdminClient to check API versions but this does not exist
>>>> today and I do not want to drag too long with growing scope on this KIP,
>>> so
>>>> the current proposal's implementation uses expendable Network which is a
>>>> bit fuzzy.
>>>>
>>>>
>>>> Guozhang
>>>>
>>>>
>>>> On Tue, Nov 7, 2017 at 2:07 AM, Matthias J. Sax <matth...@confluent.io>
>>>> wrote:
>>>>
>>>>> I would prefer to keep the current check. We could even improve it, and
>>>>> do the check to more than one brokers (even all provided
>>>>> bootstrap.servers) or some random servers after we got all meta data
>>>>> about the cluster.
>>>>>
>>>>>
>>>>> -Matthias
>>>>>
>>>>> On 11/7/17 1:01 AM, Guozhang Wang wrote:
>>>>>> Hello folks,
>>>>>>
>>>>>> One update I'd like to propose regarding "compatibility checking":
>>>>>> currently we create a single StreamsKafkaClient at the beginning to
>>>> issue
>>>>>> an ApiVersionsRequest to a random broker and then check on its
>>>> versions,
>>>>>> and fail if it does not satisfy the version (0.10.1+ without EOS,
>>>> 0.11.0
>>>>>> with EOS); after this check we throw this client away. My original
>>> plan
>>>>> is
>>>>>> to replace this logic with the NetworkClient's own apiVersions, but
>>>> after
>>>>>> some digging while working on the PR I found that exposing this
>>>>> apiVersions
>>>>>> variable from NetworkClient through AdminClient is not very straight
>>>>>> forward, plus it would need an API change on the AdminClient itself
>>> as
>>>>> well
>>>>>> to expose the versions information.
>>>>>>
>>>>>> On the other hand, this one-time compatibility checking's benefit may
>>>> be
>>>>>> not significant: 1) it asks a random broker upon starting up, and
>>> hence
>>>>>> does not guarantee all broker's support the corresponding API
>>> versions
>>>> at
>>>>>> that time; 2) brokers can still be upgraded / downgraded after the
>>>>> streams
>>>>>> app is up and running, and hence we still need to handle
>>>>>> UnsupportedVersionExceptions thrown from the producer / consumer /
>>>> admin
>>>>>> client during the runtime anyways.
>>>>>>
>>>>>> So I'd like to propose two options in this KIP:
>>>>>>
>>>>>> 1) we remove this one-time compatibility check on Streams starting up
>>>> in
>>>>>> this KIP, and solely rely on handling producer / consumer / admin
>>>>> client's
>>>>>> API UnsupportedVersionException throwable exceptions. Please share
>>> your
>>>>>> thoughts about this.
>>>>>>
>>>>>> 2) we create a one-time NetworkClient upon starting up, send the
>>>>>> ApiVersionsRequest and get the response and do the checking; after
>>> that
>>>>>> throw this client away.
>>>>>>
>>>>>> Please let me know what do you think. Thanks!
>>>>>>
>>>>>>
>>>>>> Guozhang
>>>>>>
>>>>>>
>>>>>> On Mon, Nov 6, 2017 at 7:56 AM, Matthias J. Sax <
>>> matth...@confluent.io
>>>>>
>>>>>> wrote:
>>>>>>
>>>>>>> Thanks for the update and clarification.
>>>>>>>
>>>>>>> Sounds good to me :)
>>>>>>>
>>>>>>>
>>>>>>> -Matthias
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 11/6/17 12:16 AM, Guozhang Wang wrote:
>>>>>>>> Thanks Matthias,
>>>>>>>>
>>>>>>>> 1) Updated the KIP page to include KAFKA-6126.
>>>>>>>> 2) For passing configs, I agree, will make a pass over the existing
>>>>>>> configs
>>>>>>>> passed to StreamsKafkaClient and update the wiki page accordingly,
>>> to
>>>>>>>> capture all changes that would happen for the replacement in this
>>>>> single
>>>>>>>> KIP.
>>>>>>>> 3) For internal topic purging, I'm not sure if we need to include
>>>> this
>>>>>>> as a
>>>>>>>> public change since internal topics are meant for abstracted away
>>>> from
>>>>>>> the
>>>>>>>> Streams users; they should not leverage such internal topics
>>>> elsewhere
>>>>>>>> themselves. The only thing I can think of is for Kafka operators
>>> this
>>>>>>> would
>>>>>>>> mean that such internal topics would be largely reduced in their
>>>>>>> footprint,
>>>>>>>> but that would not be needed in the KIP as well.
>>>>>>>>
>>>>>>>>
>>>>>>>> Guozhang
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sat, Nov 4, 2017 at 9:00 AM, Matthias J. Sax <
>>>> matth...@confluent.io
>>>>>>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I like this KIP. Can you also link to
>>>>>>>>> https://issues.apache.org/jira/browse/KAFKA-6126 in the KIP?
>>>>>>>>>
>>>>>>>>> What I am wondering though: if we start to partially (ie, step by
>>>>> step)
>>>>>>>>> replace the existing StreamsKafkaClient with Java AdminClient,
>>> don't
>>>>> we
>>>>>>>>> need more KIPs? For example, if we use purge-api for internal
>>>> topics,
>>>>> it
>>>>>>>>> seems like a change that requires a KIP. Similar for passing
>>> configs
>>>>> --
>>>>>>>>> the old client might have different config than the old client?
>>> Can
>>>> we
>>>>>>>>> double check this?
>>>>>>>>>
>>>>>>>>> Thus, it might make sense to replace the old client with the new
>>> one
>>>>> in
>>>>>>>>> one shot.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> -Matthias
>>>>>>>>>
>>>>>>>>> On 11/4/17 4:01 AM, Ted Yu wrote:
>>>>>>>>>> Looks good overall.
>>>>>>>>>>
>>>>>>>>>> bq. the creation within StreamsPartitionAssignor
>>>>>>>>>>
>>>>>>>>>> Typo above: should be StreamPartitionAssignor
>>>>>>>>>>
>>>>>>>>>> On Fri, Nov 3, 2017 at 4:49 PM, Guozhang Wang <
>>> wangg...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hello folks,
>>>>>>>>>>>
>>>>>>>>>>> I have filed a new KIP on adding AdminClient into Streams for
>>>>> internal
>>>>>>>>>>> topic management.
>>>>>>>>>>>
>>>>>>>>>>> Looking for feedback on
>>>>>>>>>>>
>>>>>>>>>>> *https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>>>>>>>>>>> 220%3A+Add+AdminClient+into+Kafka+Streams%27+ClientSupplier
>>>>>>>>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>>>>>>>>>>> 220%3A+Add+AdminClient+into+Kafka+Streams%27+ClientSupplier>*
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> -- Guozhang
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> -- Guozhang
>>>>
>>>
>>
>>
>>
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to