Yes, I will update the KIP accordingly. Thanks. On Tue, Nov 14, 2017 at 2:56 PM, Matthias J. Sax <matth...@confluent.io> wrote:
> 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 > >>>> > >>> > >> > >> > >> > > > > -- -- Guozhang