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 > >> > > > >