Sounds good to me too.

As far as deprecating goes -- should the topics() method removed completely
or should it have a @deprecated annotation for removal in some future
version?

Best,
Nishanth Pradeep

On Sun, Jul 22, 2018 at 1:32 PM Matthias J. Sax <matth...@confluent.io>
wrote:

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

Reply via email to