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

Reply via email to