Works for me.

On 7/22/18 9:48 AM, Guozhang Wang wrote:
> 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
>>>>>
>>>>
>>>
>>>
>>
> 
> 
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to