Thanks Nishanth,

I've taken a look at the updated KIP and it looks good to me. I think you
can start a new VOTE thread on the current proposal.


Guozhang

On Tue, Jul 24, 2018 at 5:56 PM, Nishanth Pradeep <nishanth...@gmail.com>
wrote:

> I have updated the KIP
> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-321%3A+Update+
> TopologyDescription+to+better+represent+Source+and+Sink+Nodes>
> .
>
> Changes to the KIP:
>
>    - Removed topics() from the Public Interface and Proposed Changes
>    sections.
>    - Added topics() to the Deprecation plan.
>
> Thanks again for the feedback.
>
> Best,
> Nishanth Pradeep
>
> On Tue, Jul 24, 2018 at 11:21 AM Guozhang Wang <wangg...@gmail.com> wrote:
>
> > We should not remove it immediately in the up coming 2.1 release. Usually
> > we first mark an API as deprecated, and consider removing it only after
> it
> > has been deprecated for at least one major release period.
> >
> >
> > Guozhang
> >
> > On Mon, Jul 23, 2018 at 7:40 PM, Nishanth Pradeep <nishanth...@gmail.com
> >
> > wrote:
> >
> > > 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
> > > > >>>>>
> > > > >>>>
> > > > >>>
> > > > >>>
> > > > >>
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> >
> >
> >
> > --
> > -- Guozhang
> >
>



-- 
-- Guozhang

Reply via email to