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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to