There is no general protocol. We can include the changes in the current KIP or do a second KIP.
If you don't want to include the change in this KIP, please create a new JIRA to track the other changes. You can assign the JIRA to yourself and start a second KIP if you want. You can also "link" both JIRAs as related to each other. -Matthias On 7/15/18 12:50 PM, Nishanth Pradeep wrote: > Thank you for the comments! I agree with these changes. > > So is the general protocol to update the same KIP, or is to scrap the > current KIP and create a new one since it's beyond the scope of the > original KIP? I am happy to do either. > > On Wed, Jul 4, 2018 at 1:48 PM Matthias J. Sax <matth...@confluent.io> > wrote: > >> Sounds good to me. >> >> -Matthias >> >> On 7/4/18 10:53 AM, Guozhang Wang wrote: >>> After looked through the current TopologyDescription I think I'd want to >>> combine the suggestions from John and Matthias on the API proposal. The >>> motivations is that we have two relatively different functionalities >>> provided from the APIs today: >>> >>> 1. Each interface's public functions, like >>> SourceNode#topics(), GlobalStore#source(), which returns non-String typed >>> data. The hope was to let users programmatically leverage on those APIs >> for >>> runtime checking. >>> 2. Each interface's impl class also have an implicit toString() >> overridden >>> to print the necessary information. This was designed for debugging >>> purposes only during development cycles. >>> >>> What we've observed so far, though, is that users leverage 2) much more >>> than 1) in practice, since it is more convienent to parse strings than >>> recursively calling the APIs to get non-string fields. On the other hand, >>> the discussion controversy is more around 1), not 2). As for 2) people >> seem >>> to be on the right page anyways: print the topic lists if it is not >>> dynamic, or print extractor string format otherwise. For 1) above we >> should >>> probably have all three `Set<String> topics()`, `Pattern topicPattern()` >>> and `TopicNameExtractor topicExtractor()`; while for 2) I feel >> comfortable >>> relying on the TopicNameExtractor#toString() in `Source#toString()` impl >>> since even if users do not override this function, the default value >>> `className@hashcode` still looks fine to me. >>> >>> >>> Guozhang >>> >>> >>> >>> On Tue, Jul 3, 2018 at 11:22 PM, Matthias J. Sax <matth...@confluent.io> >>> wrote: >>> >>>> I just double checked the discussion thread of KIP-120 that introduced >>>> `TopologyDescription`. Back than the argument was, that using the >>>> simplest option might be sufficient because the description is mostly >>>> used for debugging. >>>> >>>> Not sure if this argument holds. It seem that people built first more >>>> sophisticated tools using TopologyDescription. >>>> >>>> Final note: if we really want to add `topicPattern()` we might want to >>>> deprecate `topic()` and replace with `Set<String> topics()`, because a >>>> source node can take a multiple topics, too. >>>> >>>> Just adding this for completeness of context to the discussion. >>>> >>>> >>>> -Matthias >>>> >>>> On 7/3/18 11:09 PM, Matthias J. Sax wrote: >>>>> John, >>>>> >>>>> I am a little bit on the fence. In retrospective, it might have been >>>>> better to add `topic()` and `topicPattern()` to source node and return >> a >>>>> proper `Pattern` object instead of the pattern as a String. >>>>> >>>>> All other "payload" is just names and thus String naturally. From my >>>>> point of view `TopologyDescription` should represent the `Topology` in >> a >>>>> "machine readable" form plus a default "human readable" from via >>>>> `toString()` -- this does not imply that all return types should be >>>> String. >>>>> >>>>> Let me know what you think. If you agree, we could even add >>>>> `Source#topicPattern()` in another KIP. >>>>> >>>>> >>>>> -Matthias >>>>> >>>>> On 6/26/18 3:45 PM, John Roesler wrote: >>>>>> Sorry for the late comment, >>>>>> >>>>>> Looking at the other pieces of TopologyDescription, I noticed that >>>> pretty >>>>>> much all of the "payload" of these description nodes are strings. >>>> Should we >>>>>> consider returning a string from `topicNameExtractor()` instead? >>>>>> >>>>>> In fact, if we did that, we could consider calling `toString()` on the >>>>>> extractor instead of returning the class name. This would allow >> authors >>>> of >>>>>> the extractors to provide more information about the extractor than >> just >>>>>> its name. This might be especially useful in the case of anonymous >>>>>> implementations. >>>>>> >>>>>> Thanks for the KIP, >>>>>> -John >>>>>> >>>>>> On Mon, Jun 25, 2018 at 11:52 PM Ted Yu <yuzhih...@gmail.com> wrote: >>>>>> >>>>>>> My previous response was talking about the new method in >>>>>>> InternalTopologyBuilder. >>>>>>> The exception just means there is no uniform extractor for all the >>>> sinks. >>>>>>> >>>>>>> On Mon, Jun 25, 2018 at 8:02 PM, Matthias J. Sax < >>>> matth...@confluent.io> >>>>>>> wrote: >>>>>>> >>>>>>>> Ted, >>>>>>>> >>>>>>>> Why? Each sink can have a different TopicNameExtractor. >>>>>>>> >>>>>>>> >>>>>>>> -Matthias >>>>>>>> >>>>>>>> On 6/25/18 5:19 PM, Ted Yu wrote: >>>>>>>>> If there are different TopicNameExtractor classes from multiple >> sink >>>>>>>> nodes, >>>>>>>>> the new method should throw exception alerting user of such >> scenario. >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Jun 25, 2018 at 2:23 PM, Bill Bejeck <bbej...@gmail.com> >>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Thanks for the KIP! >>>>>>>>>> >>>>>>>>>> Overall I'm +1 on the KIP. I have one question. >>>>>>>>>> >>>>>>>>>> The KIP states that the method "topicNameExtractor()" is added to >>>> the >>>>>>>>>> InternalTopologyBuilder.java. >>>>>>>>>> >>>>>>>>>> It could be that I'm missing something, but wow does this work if >> a >>>>>>> user >>>>>>>>>> has provided different TopicNameExtractor instances to multiple >> sink >>>>>>>> nodes? >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Bill >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Mon, Jun 25, 2018 at 1:25 PM Guozhang Wang <wangg...@gmail.com >>> >>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Yup I agree, generally speaking the `toString()` output is not >>>>>>>>>> recommended >>>>>>>>>>> to be relied on programmatically in user's code, but we've >> observed >>>>>>>>>>> convenience-beats-any-other-reasons again and again in >> development >>>>>>>>>>> unfortunately. I think we should still not claiming it is part of >>>> the >>>>>>>>>>> public APIs that would not be changed anyhow in the future, but >>>> just >>>>>>>>>>> mentioning it in the wiki for people to be aware is fine. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Guozhang >>>>>>>>>>> >>>>>>>>>>> On Sun, Jun 24, 2018 at 5:01 PM, Matthias J. Sax < >>>>>>>> matth...@confluent.io> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Thanks for the KIP! >>>>>>>>>>>> >>>>>>>>>>>> I am don't have any further comments. >>>>>>>>>>>> >>>>>>>>>>>> For Guozhang's comment: if we mention anything about >> `toString()`, >>>>>>> we >>>>>>>>>>>> should make explicit that `toString()` output is still not >> public >>>>>>>>>>>> contract and users should not rely on the output. >>>>>>>>>>>> >>>>>>>>>>>> Furhtermore, for the actual uses output, I would replace >> "topic:" >>>> by >>>>>>>>>>>> "extractor class:" to make the difference obvious. >>>>>>>>>>>> >>>>>>>>>>>> I am just hoping that people actually to not rely on >> `toString()` >>>>>>> what >>>>>>>>>>>> defeats the purpose to the `TopologyDescription` class that was >>>>>>>>>>>> introduced to avoid the dependency... (Just a side comment, not >>>>>>> really >>>>>>>>>>>> related to this KIP proposal itself). >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> If there are no further comments in the next days, feel free to >>>>>>> start >>>>>>>>>>>> the VOTE and open a PR. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -Matthias >>>>>>>>>>>> >>>>>>>>>>>> On 6/22/18 6:04 PM, Guozhang Wang wrote: >>>>>>>>>>>>> Thanks for writing the KIP! >>>>>>>>>>>>> >>>>>>>>>>>>> I'm +1 on the proposed changes over all. One minor suggestion: >> we >>>>>>>>>>> should >>>>>>>>>>>>> also mention that the `Sink#toString` will also be updated, in >> a >>>>>>> way >>>>>>>>>>> that >>>>>>>>>>>>> if `topic()` returns null, use the other call, etc. This is >>>> because >>>>>>>>>>>>> although we do not explicitly state the following logic as >> public >>>>>>>>>>>> protocols: >>>>>>>>>>>>> >>>>>>>>>>>>> ``` >>>>>>>>>>>>> >>>>>>>>>>>>> "Sink: " + name + " (topic: " + topic() + ")\n <-- " + >>>>>>>>>>>>> nodeNames(predecessors); >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> ``` >>>>>>>>>>>>> >>>>>>>>>>>>> There are already some users that rely on >>>>>>>>>>> `topology.describe().toString( >>>>>>>>>>>> )` >>>>>>>>>>>>> to have runtime checks on the returned string values, so >> changing >>>>>>>>>> this >>>>>>>>>>>>> means that their app will break and hence need to make code >>>>>>> changes. >>>>>>>>>>>>> >>>>>>>>>>>>> Guozhang >>>>>>>>>>>>> >>>>>>>>>>>>> On Wed, Jun 20, 2018 at 7:20 PM, Nishanth Pradeep < >>>>>>>>>>> nishanth...@gmail.com >>>>>>>>>>>>> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hello Everyone, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I have created a new KIP to discuss extending >>>> TopologyDescription. >>>>>>>>>> You >>>>>>>>>>>> can >>>>>>>>>>>>>> find it here: >>>>>>>>>>>>>> >>>>>>>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP- >>>>>>>>>>>>>> 321%3A+Add+method+to+get+TopicNameExtractor+in+ >>>> TopologyDescription >>>>>>>>>>>>>> >>>>>>>>>>>>>> Please provide any feedback that you might have. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Best, >>>>>>>>>>>>>> Nishanth Pradeep >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> -- Guozhang >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> >>> >>> >> >> >
signature.asc
Description: OpenPGP digital signature