The PR should be ready. I have removed the old merge() method for 1.0.0.
On Tue, Sep 19, 2017 at 4:22 PM, Guozhang Wang <wangg...@gmail.com> wrote: > I'd like to make an exception for this KIP if it's PR can get in before the > the code freeze date, as it's a low risk small KIP that is unlikely to > introduce regression. > > > Guozhang > > On Wed, Sep 20, 2017 at 2:01 AM, Matthias J. Sax <matth...@confluent.io> > wrote: > > > @Damian, this KIP goes into 1.1 but not 1.0, so we need to go the > > deprecation way... > > > > I would be happy to get it into 1.0 and avoid the deprecation. But > > strictly speaking, the KIP vote deadline passed already... Not sure if > > there is any exception from this. > > > > > > -Matthias > > > > On 9/19/17 12:17 AM, Damian Guy wrote: > > > Hi Richard, > > > > > > Thanks for the KIP. Looks good, just one thing: we don't need to > > deprecate > > > StreamBuilder#merge as it has been added during this release cycle. It > > can > > > just be removed. > > > > > > Thanks, > > > Damian > > > > > > On Mon, 18 Sep 2017 at 23:22 Richard Yu <yohan.richard...@gmail.com> > > wrote: > > > > > >> The discussion should not stay idle. Since this issue is so small, we > > >> should move it into the voting phase. > > >> > > >> On Sun, Sep 17, 2017 at 1:39 PM, Matthias J. Sax < > matth...@confluent.io > > > > > >> wrote: > > >> > > >>> Thanks for updating the KIP. > > >>> > > >>> You are of course right, that we internally need access to > > >>> InternalStreamBuilder, but that should not be too hard and > effectively > > >>> be an internal implementation detail. > > >>> > > >>> > > >>> Two more comments: > > >>> > > >>> the new method should be > > >>> > > >>>> KStream<K,V> merge(KStream<K,V> stream); > > >>> > > >>> and not > > >>> > > >>>> <K,V> KStream<K,V> merge(KStream<K,V> streams); > > >>> > > >>> as in the KIP? The prefix `<K,V>` is not required for non-static > > methods > > >>> and it should be singular (not plural) as parameter name? > > >>> > > >>> Can you also add an explicit sentence, that the new method does not > use > > >>> varargs anymore but a single KStream parameter (in contrast to the > old > > >>> method). And mention that this is no limitation as calls to new > merge() > > >>> can be chained. > > >>> > > >>> > > >>> > > >>> Thanks a lot! > > >>> > > >>> -Matthias > > >>> > > >>> > > >>> > > >>> On 9/17/17 10:32 AM, Richard Yu wrote: > > >>>> Correction: When the current merge() method is called with multiple > > >>>> streams, a warning will be printed (or logged), but this should not > > >>> hinder > > >>>> ability to read the log. > > >>>> There is a missing unchecked warning suppression for the old method. > > >>>> However, it is not high priority due to deprecation of the old > merge() > > >>>> method. > > >>>> > > >>>> > > >>>> On Sun, Sep 17, 2017 at 9:37 AM, Richard Yu < > > >> yohan.richard...@gmail.com> > > >>>> wrote: > > >>>> > > >>>>> With regards to Xavier's comment, this practice I do no think > applies > > >> to > > >>>>> this PR. There is not much potential here for warnings to be > thrown. > > >>> Note > > >>>>> that in StreamsBuilder's merge, their is no > > >>> @SuppressWarnings("unchecked")--indicating > > >>>>> that warnings is sparse, if not nonexistent. > > >>>>> > > >>>>> > > >>>>> On Sun, Sep 17, 2017 at 9:10 AM, Richard Yu < > > >> yohan.richard...@gmail.com > > >>>> > > >>>>> wrote: > > >>>>> > > >>>>>> KIP-202 has been changed according to the conditions of your > > >>> suggestion. > > >>>>>> > > >>>>>> On Sun, Sep 17, 2017 at 8:51 AM, Richard Yu < > > >>> yohan.richard...@gmail.com> > > >>>>>> wrote: > > >>>>>> > > >>>>>>> I added StreamsBuilder under the assumption that > > >> InternalStreamBuilder > > >>>>>>> would be required to merge > > >>>>>>> two streams. However, if that is not the case, then I would still > > >>> need a > > >>>>>>> couple of things: > > >>>>>>> > > >>>>>>> 1) An InternalStreamBuilder instance to instantiate a new KStream > > >>>>>>> > > >>>>>>> 2) The merge_name that the merged streams will be given > > >>>>>>> > > >>>>>>> 3) Need access to the corresponding InternalStreamBuilder's > > >>>>>>> InternalTopologyBuilder to add a processor (for the new KStreams) > > >>>>>>> > > >>>>>>> All these parameters are associated with InternalStreamsBuilder, > > >> thus > > >>> it > > >>>>>>> is essential towards merging the streams. > > >>>>>>> We are left with three options (taking into account the > restriction > > >>> that > > >>>>>>> InternalStreamsBuilder's reference scope is mostly limited to > > within > > >>> the > > >>>>>>> org.apache.kafka.streams.kstream.internals package): > > >>>>>>> > > >>>>>>> a) Find a way to pass InternalStreamsBuilder indirectly into the > > >>> class. > > >>>>>>> (using StreamsBuilder) > > >>>>>>> > > >>>>>>> b) Find the matching InternalStreamBuilder within the method that > > >>>>>>> corresponds to the streams about to be merged. > > >>>>>>> > > >>>>>>> or c) Use the local InternalStreamsBuilder inherited from > > >>>>>>> AbstractStream, assuming that it is the correct builder > > >>>>>>> > > >>>>>>> From your suggestion, that would mean using the c option I > > mentioned > > >>>>>>> earlier. This choice of implementation works, but it could also > > >>> include the > > >>>>>>> risk that the local InternalStreamsBuilder might not be the > correct > > >>> one > > >>>>>>> (just something one might want to keep in mind, since I will > change > > >>> it) > > >>>>>>> > > >>>>>>> On Sun, Sep 17, 2017 at 12:06 AM, Matthias J. Sax < > > >>> matth...@confluent.io > > >>>>>>>> wrote: > > >>>>>>> > > >>>>>>>> Hi Richard, > > >>>>>>>> > > >>>>>>>> Thanks a lot for the KIP! > > >>>>>>>> > > >>>>>>>> I have three question: > > >>>>>>>> - why is the new merge() method static? > > >>>>>>>> - why does the new merge() method take StreamsBuilder as a > > >>> parameter? > > >>>>>>>> - did you think about Xavier's comment (see the JIRA in case > you > > >> did > > >>>>>>>> not notice it yet) about varargs vs adding some overloads to > merge > > >>>>>>>> stream? > > >>>>>>>> > > >>>>>>>> My personal take is that merge() should not be static and not > take > > >>>>>>>> StreamsBuilder. The idea of the JIRA was to get a more natural > > API: > > >>>>>>>> > > >>>>>>>> // old > > >>>>>>>> KStream merged = StreamsBuilder.merge(stream1, stream2); > > >>>>>>>> // new > > >>>>>>>> KStream merge = stream1.merge(stream2); > > >>>>>>>> > > >>>>>>>> > > >>>>>>>> Having pointed out the second pattern, it should actually be > fine > > >> to > > >>> get > > >>>>>>>> rid of varargs in merger() at all, as users could chain multiple > > >>> calls > > >>>>>>>> to merge() after each other: > > >>>>>>>> > > >>>>>>>> KStream multiMerged = stream1.merge(s2).merge(s3).merge(s4); > > >>>>>>>> > > >>>>>>>> > > >>>>>>>> > > >>>>>>>> > > >>>>>>>> -Matthias > > >>>>>>>> > > >>>>>>>> On 9/16/17 9:36 PM, Richard Yu wrote: > > >>>>>>>>> Hi, > > >>>>>>>>> Please take a look at: > > >>>>>>>>> > > >>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP- > > >>>>>>>>> 202+Move+merge%28%29+from+StreamsBuilder+to+KStream > > >>>>>>>>> > > >>>>>>>>> Thanks > > >>>>>>>>> > > >>>>>>>> > > >>>>>>>> > > >>>>>>> > > >>>>>> > > >>>>> > > >>>> > > >>> > > >>> > > >> > > > > > > > > > > -- > -- Guozhang >