Hello All,

Bumping this one again to see if folks have any other comments/observations.

Thanks!
Sagar.

On Wed, Jul 27, 2022 at 4:03 PM Sagar <sagarmeansoc...@gmail.com> wrote:

> Thanks Walker for the comments
>
> I have updated the KIP with all the suggestions.
>
> Thanks!
>
> On Tue, Jul 12, 2022 at 10:59 PM Walker Carlson
> <wcarl...@confluent.io.invalid> wrote:
>
>> Hi Sagar,
>>
>> I just finished reading the KIP and this seems to be a great addition.
>>
>> I agree with Matthias that the interface with a default implementation and
>> deprecating partition() does seem cleaner. It has been a pattern that we
>> have followed in the past. How I would handle a custom streams partitioner
>> is just always call partitions(). If it is implemented then we ignore the
>> partition() and if not the default implementation should just wrap the
>> deprecated method in a list.
>>
>> Despite that I think your concerns are valid about this causing some
>> confusion. To avoid that in the past we have just made sure we updated the
>> depreciation message very cleanly and also include that implementing the
>> new method will override the old one in the description. All those docs
>> plus good logging has worked well. We had a very similar situation when
>> adding a new exception handler for streams back for 2.8 and these
>> precautions seemed to be enough.
>>
>> thanks for the kip!
>> Walker
>>
>> On Sun, Jul 10, 2022 at 1:22 PM Sagar <sagarmeansoc...@gmail.com> wrote:
>>
>> > Hi Matthias,
>> >
>> > I agree that working with interfaces is cleaner. As such, there's not
>> much
>> > value in keeping both the methods. So, we can go down the route of
>> > deprecating partition(). The only question I have is till deprecation
>> if we
>> > get both partition() and partitions() implemented, we may need to give
>> > precedence to partitions() method, right?
>> >
>> > Also, in IQ and FK-join the runtime check you proposed seems good to me
>> and
>> > your suggestion on broadcast makes sense as well.
>> >
>> > Lastly, I am leaning towards the interface approach now. Let's see if
>> other
>> > have any questions/comments.
>> >
>> > Thanks!
>> > Sagar.
>> >
>> >
>> > On Fri, Jul 8, 2022 at 4:31 AM Matthias J. Sax <mj...@apache.org>
>> wrote:
>> >
>> > > Thanks for explaining you reasoning.
>> > >
>> > > I agree that it might not be ideal to have both methods implemented,
>> but
>> > > if we deprecate the exiting one, it would only be an issue until we
>> > > remove the old one? Or do we see value to keep both methods?
>> > >
>> > > In general, working with interfaces is cleaner than with abstract
>> > > classed, that is why I proposed it.
>> > >
>> > > In the end, I don't have too strong of an opinion what the better
>> option
>> > > would be. Maybe others can chime in and share their thoughts?
>> > >
>> > > -Matthias
>> > >
>> > > On 7/1/22 10:54 PM, Sagar wrote:
>> > > > Hi Matthias,
>> > > >
>> > > > Thanks for your review. The reason I chose to introduce a new
>> abstract
>> > > > class is that, while it doesn't entail any changes in the
>> > > StreamPartitioner
>> > > > interface, I also disabled the partition() method in that class.
>> Reason
>> > > to
>> > > > do that is that I didn't want a scenario where a user implements
>> both
>> > > > partition and partitions methods which could lead to confusion. With
>> > the
>> > > > approach you suggested, while the interface still remains
>> functional,
>> > > users
>> > > > get the option to implement either methods which is what I wanted to
>> > > avoid.
>> > > > Let me know if that makes sense.
>> > > >
>> > > > Regarding extending StreamsPartitioner, we could expose  net new
>> to()
>> > > > methods taking in this new class devoid of any StreamPartitioner. I
>> > just
>> > > > thought it's cleaner to keep it this way as StreamPartitioner
>> already
>> > > > dpes the partitioning. Let me know what you think.
>> > > >
>> > > > Thanks!
>> > > > Sagar.
>> > > >
>> > > > On Wed, Jun 29, 2022 at 5:34 AM Matthias J. Sax <mj...@apache.org>
>> > > wrote:
>> > > >
>> > > >> Thanks for the KIP. Overall a good addition.
>> > > >>
>> > > >> I am actually not sure if we need to add a new class? From my
>> > > >> understanding, if there is exactly one abstract method, the
>> interface
>> > is
>> > > >> still functional? Thus, we could add a new method to
>> > > >> `StreamsPartitioner` with a default implementation (that calls the
>> > > >> existing `partition()` method and wraps the result into a singleton
>> > > list)?
>> > > >>
>> > > >> Not sure what the pros/cons for both approaches would be?
>> > > >>
>> > > >> If we really add a new class, I am wondering if it should inherit
>> from
>> > > >> `StreamsPartitioner` at all? Or course, if it does not, it's more
>> > stuff
>> > > >> we need to change, but the proposed overwrite of `partition()` that
>> > > >> throws also does not seem to be super clean? -- I am even
>> wondering if
>> > > >> we should aim to deprecate the existing `partition()` and only
>> offer
>> > > >> `partitions()` in the future?
>> > > >>
>> > > >> For the broadcast option, I am wondering if returning `null` (not
>> an
>> > > >> singleton with `-1`) might be a clear option to encode it? Empty
>> list
>> > > >> would still be valid as "send to no partition".
>> > > >>
>> > > >> Btw: The `StreamPartitioner` interface is also used for IQ. For
>> both
>> > IQ
>> > > >> and FK-join, it seem ok to just add a runtime check that the
>> returned
>> > > >> list is a singleton (in case we don't add a new class)?
>> > > >>
>> > > >>
>> > > >> -Matthias
>> > > >>
>> > > >>
>> > > >> On 6/26/22 7:55 AM, Sagar wrote:
>> > > >>> Hi Florin,
>> > > >>>
>> > > >>> Thanks for the comment! You brought up a very good point..
>> Actually I
>> > > was
>> > > >>> focussed too much on the multicast operation and didn't pay
>> attention
>> > > to
>> > > >>> the other places where StramPartitioner is being used. TBH, I
>> wasn't
>> > > even
>> > > >>> aware that the StreamPartitioner is being used for FK joins so
>> thanks
>> > > >>> definitely for pointing that out!
>> > > >>>
>> > > >>> Regarding how we handle that, I think since the FK join uses the
>> > > >> partition
>> > > >>> number info for subscription/message passing semantics, I would
>> > > basically
>> > > >>> like to propose that we can throw an Exception when  a user tries
>> to
>> > > pass
>> > > >>> an object which is an instance of MulticastPartitioner. This would
>> > keep
>> > > >>> things simple IMO because adding multicast keys to FK would just
>> make
>> > > it
>> > > >>> all the more complicated.
>> > > >>>
>> > > >>> Other than that, the usages/implementations of StreamPartitioner
>> are
>> > on
>> > > >>> tests which would be taken care of if needed.
>> > > >>> Let me know what you think.
>> > > >>>
>> > > >>> Thanks!
>> > > >>> Sagar.
>> > > >>>
>> > > >>>
>> > > >>> On Sat, Jun 25, 2022 at 5:11 PM Florin Akermann <
>> > > >> florin.akerm...@gmail.com>
>> > > >>> wrote:
>> > > >>>
>> > > >>>> Hi Sagar,
>> > > >>>>
>> > > >>>> Thanks for the KIP.
>> > > >>>>
>> > > >>>> I am wondering about the following. What about other classes than
>> > the
>> > > >>>> org.apache.kafka.streams.processor.internals.RecordCollectorImpl.
>> > > Would
>> > > >>>> they still call .partition(...) and just crash? Or is it a given
>> > that
>> > > >> they
>> > > >>>> never receive a reference to a Partitioner of
>> > > >>>> type MultiCastStreamPartitioner?
>> > > >>>>
>> > > >>>> Florin
>> > > >>>>
>> > > >>>>
>> > > >>>> On Sat, 28 May 2022 at 05:44, Sagar <sagarmeansoc...@gmail.com>
>> > > wrote:
>> > > >>>>
>> > > >>>>> Hi All,
>> > > >>>>>
>> > > >>>>> I’m thinking to move this KIP to vote section if there aren’t
>> any
>> > > >>>>> objections.
>> > > >>>>>
>> > > >>>>> Plz let me know if I that’s ok.
>> > > >>>>>
>> > > >>>>> Thanks!
>> > > >>>>> Sagar.
>> > > >>>>>
>> > > >>>>> On Tue, 24 May 2022 at 10:32 PM, Sagar <
>> sagarmeansoc...@gmail.com>
>> > > >>>> wrote:
>> > > >>>>>
>> > > >>>>>> Hi All,
>> > > >>>>>>
>> > > >>>>>> Bumping this discussion thread again to see if there are any
>> > > >>>>>> comments/concerns on this.
>> > > >>>>>>
>> > > >>>>>> Thanks!
>> > > >>>>>> Sagar.
>> > > >>>>>>
>> > > >>>>>> On Wed, May 18, 2022 at 11:44 PM Sagar <
>> sagarmeansoc...@gmail.com
>> > >
>> > > >>>>> wrote:
>> > > >>>>>>
>> > > >>>>>>> Hi All,
>> > > >>>>>>>
>> > > >>>>>>> I would like to open a discussion thread on
>> > > >>>>>>>
>> > > >>>>>
>> > > >>>>
>> > > >>
>> > >
>> >
>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=211883356
>> > > >>>>>>> .
>> > > >>>>>>>
>> > > >>>>>>> Thanks!
>> > > >>>>>>> Sagar.
>> > > >>>>>>>
>> > > >>>>>>
>> > > >>>>>
>> > > >>>>
>> > > >>>
>> > > >>
>> > > >
>> > >
>> >
>>
>

Reply via email to