I think I can be convinced with deprecating topics() to keep API minimal. About renaming the others with `XXNames()`: well, to me it feels still not very worthy since although it is not a big burden, it seems also not a big "return" if we name the newly added function `topicSet()`.
Guozhang On Fri, Jul 20, 2018 at 7:38 PM, Nishanth Pradeep <nishanth...@gmail.com> wrote: > I definitely agree with you on deprecating topics(). > > I also think changing the method names for consistency is reasonable, since > there is no functionality change. Although, I can be convinced either way > on this one. > > Best, > Nishanth Pradeep > On Fri, Jul 20, 2018 at 12:15 PM Matthias J. Sax <matth...@confluent.io> > wrote: > > > I would still deprecate existing `topics()` method. If users need a > > String, they can call `topicSet().toString()`. > > > > It's just a personal preference, because I believe it's good to keep the > > API "minimal". > > > > About renaming the other methods: I thinks it's a very small burden to > > deprecate the existing methods and add them with new names. Also just my > > 2 cents. > > > > Would be good to see what others think. > > > > > > -Matthias > > > > On 7/19/18 6:20 PM, Nishanth Pradeep wrote: > > > Understood, Guozhang. > > > > > > Thanks for the help, everyone! I have updated the KIP. Let me know if > you > > > any other thoughts or suggestions. > > > > > > Best, > > > Nishanth Pradeep > > > > > > On Thu, Jul 19, 2018 at 7:33 PM Guozhang Wang <wangg...@gmail.com> > > wrote: > > > > > >> I see. > > >> > > >> Well, I think if we add a new function like topicSet() it is less > > needed to > > >> deprecate topics() as it returns "{topic1, topic2, ..}" which is sort > of > > >> non-overlapping in usage with the new API. > > >> > > >> > > >> Guozhang > > >> > > >> On Thu, Jul 19, 2018 at 5:31 PM, Nishanth Pradeep < > > nishanth...@gmail.com> > > >> wrote: > > >> > > >>> That is what I meant. I will add topicSet() instead of changing the > > >>> signature of topics() for compatibility reasons. But should we not > add > > a > > >>> @deprecated flag for topics() or do you want to keep it around for > the > > >> long > > >>> run? > > >>> > > >>> On Thu, Jul 19, 2018 at 7:27 PM Guozhang Wang <wangg...@gmail.com> > > >> wrote: > > >>> > > >>>> We cannot change the signature of the function named "topics" from > > >>> "String" > > >>>> to "Set<String>", as Matthias mentioned it is a compatibility > breaking > > >>>> change. > > >>>> > > >>>> That's why I was proposing add a new function like "Set<String> > > >>>> topicSet()", while keeping "String topics()" as is. > > >>>> > > >>>> Guozhang > > >>>> > > >>>> On Thu, Jul 19, 2018 at 5:22 PM, Nishanth Pradeep < > > >> nishanth...@gmail.com > > >>>> > > >>>> wrote: > > >>>> > > >>>>> Right, adding topicNames() instead of changing the return type of > > >>>> topics() > > >>>>> in order preserve backwards compatibility is a good idea. But is it > > >> not > > >>>>> better to depreciate topics() because it would be redundant? In our > > >>> case, > > >>>>> it would only be calling topicNames/topicSet#toString(). > > >>>>> > > >>>>> I still agree that perhaps changing the other API's might be > > >>> unnecessary > > >>>>> since it's only a name change. > > >>>>> > > >>>>> I have made the change to the KIP to only add, not change, > > >> preexisting > > >>>>> APIs. But where do we stand on deprecating topics()? > > >>>>> > > >>>>> Best, > > >>>>> Nishanth Pradeep > > >>>>> > > >>>>> On Thu, Jul 19, 2018 at 1:44 PM Guozhang Wang <wangg...@gmail.com> > > >>>> wrote: > > >>>>> > > >>>>>> Personally I'd prefer to keep the deprecation-related changes as > > >>> small > > >>>> as > > >>>>>> possible unless they are really necessary, and hence I'd prefer to > > >>> just > > >>>>> add > > >>>>>> > > >>>>>> List<String> topicList() /* or Set<String> topicSet() */ > > >>>>>> > > >>>>>> in addition to topicPattern to Source, in addition to > > >>>>> `topicNameExtractor` > > >>>>>> to Sink, and leaving the current APIs as-is. > > >>>>>> > > >>>>>> Guozhang > > >>>>>> > > >>>>>> On Thu, Jul 19, 2018 at 10:36 AM, Matthias J. Sax < > > >>>> matth...@confluent.io > > >>>>>> > > >>>>>> wrote: > > >>>>>> > > >>>>>>> Thanks for updating the KIP. > > >>>>>>> > > >>>>>>> The current `Source` interface has a method `String topics()` > > >> atm. > > >>>>> Thus, > > >>>>>>> we cannot just add `Set<String> Source#topics()` because this > > >> would > > >>>>>>> replace the existing method and would be an incompatible change. > > >>>>>>> > > >>>>>>> I think, we should deprecate `String topics()` and add a method > > >>> with > > >>>>>>> different name: > > >>>>>>> > > >>>>>>> `Set<String> Source#topicNames()` > > >>>>>>> > > >>>>>>> The method name `topicNames` is more appropriate anyway, as we > > >>>> return a > > >>>>>>> set of String (ie, names) but no `Topic` objects. This raises one > > >>>> more > > >>>>>>> thought: we might want to rename `Processor#stores()` to > > >>>>>>> `Processor#storeNames()` as well ass `Sink#topic()` to > > >>>>>>> `Sink#topicName()`, too. This would keep the naming in the API > > >>>>>> consistent. > > >>>>>>> > > >>>>>>> > > >>>>>>> WDYT? Hope that other can chime in as well. > > >>>>>>> > > >>>>>>> > > >>>>>>> -Matthias > > >>>>>>> > > >>>>>>> On 7/18/18 7:49 PM, Nishanth Pradeep wrote: > > >>>>>>>> I have revised the KIP > > >>>>>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP- > > >>>>> 321%3A+Update+ > > >>>>>>> TopologyDescription+to+better+represent+Source+and+Sink+Nodes>. > > >>>>>>>> Here is a summary of the changes. > > >>>>>>>> > > >>>>>>>> 1. Changed return type from String to Set<String> for > > >>>>>> Source#topics(). > > >>>>>>>> > > >>>>>>>> Set<String> Source#topics() > > >>>>>>>> > > >>>>>>>> 2. Added method in TopologyDescription#Source to return the > > >>>>> Pattern > > >>>>>>> used > > >>>>>>>> by the Source node. > > >>>>>>>> > > >>>>>>>> Pattern Source#topicPattern() > > >>>>>>>> > > >>>>>>>> 3. Changed return type of Sink#topicNameExtractor from > > >> Class<? > > >>>>>> extends > > >>>>>>>> TopicNameExtractor> to just TopicNameExtractor. > > >>>>>>>> > > >>>>>>>> TopicNameExtractor Sink#topicNameExtractor() > > >>>>>>>> > > >>>>>>>> Best, > > >>>>>>>> Nishanth Pradeep > > >>>>>>>> > > >>>>>>>> On Sun, Jul 15, 2018 at 11:24 PM Guozhang Wang < > > >>> wangg...@gmail.com > > >>>>> > > >>>>>>> wrote: > > >>>>>>>> > > >>>>>>>>> Hi Nishanth, > > >>>>>>>>> > > >>>>>>>>> Since even combining these two the scope is still relatively > > >>> small > > >>>>> I'd > > >>>>>>>>> suggest just do it in one KIP if you're willing to work on > > >> them. > > >>>> If > > >>>>>> you > > >>>>>>> do > > >>>>>>>>> not then pleas feel free to create the JIRA for the second > > >> step > > >>> so > > >>>>>> that > > >>>>>>>>> others can pick it up. > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> Guozhang > > >>>>>>>>> > > >>>>>>>>> On Sun, Jul 15, 2018 at 6:14 PM, Matthias J. Sax < > > >>>>>> matth...@confluent.io > > >>>>>>>> > > >>>>>>>>> wrote: > > >>>>>>>>> > > >>>>>>>>>> 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 > > >>>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> -- > > >>>>>>>>> -- Guozhang > > >>>>>>>>> > > >>>>>>>> > > >>>>>>> > > >>>>>>> > > >>>>>> > > >>>>>> > > >>>>>> -- > > >>>>>> -- Guozhang > > >>>>>> > > >>>>> > > >>>> > > >>>> > > >>>> > > >>>> -- > > >>>> -- Guozhang > > >>>> > > >>> > > >> > > >> > > >> > > >> -- > > >> -- Guozhang > > >> > > > > > > > > -- -- Guozhang