If there is no objections on this, I will go ahead and make the
corresponding changes before the code freeze of 0.11.0.0.

Guozhang

On Wed, May 17, 2017 at 11:24 PM, Guozhang Wang <wangg...@gmail.com> wrote:

> Re store API: Maybe classes like `Stores` need to be modified, so I agree
> it's safer to maintain it as Evolving.
>
>
>
> Guozhang
>
>
> On Tue, May 16, 2017 at 3:57 PM, Matthias J. Sax <matth...@confluent.io>
> wrote:
>
>> About Windows:
>>
>> We got the request to add TimeWindows etc to public API anyway. I guess
>> it's helpful for people adding their own window aggregates using
>> low-level API.
>>
>> But as mentioned already, it was just a thought, and I am also not 100%
>> sure if we would gain much by changing the return type. Thus, if we
>> don't see any advantage, we can just keep it as is.
>>
>>
>> Same for stores: if you think the store API is stable, we don't need
>> @Envolving -- we just got couple of KIPs about store API lately, so I
>> wanted to double check only :)
>>
>>
>> -Matthias
>>
>> On 5/16/17 3:49 PM, Guozhang Wang wrote:
>> > Hello Matthias,
>> >
>> > Reply inlined.
>> >
>> > On Sat, May 13, 2017 at 1:40 PM, Matthias J. Sax <matth...@confluent.io
>> >
>> > wrote:
>> >
>> >> +1 for the overall proposal.
>> >>
>> >> Some comments:
>> >>
>> >> Currently, `Windowed#window()` returns type `Window` and I am wondering
>> >> if we should improve type safety here and return the actual window type
>> >> (ie, TimeWindow, SessionWindow, JoinWindow) etc.
>> >>
>> >> If this would be a useful improvement (frankly speaking, I am not 100%
>> >> sure if we need this), we should mark `Windowed` as @evolving, too.
>> >>
>> >>
>> > Hmm, I'm not sure, since TimeWindow / etc are internal classes. If we
>> want
>> > to expose them I need to expose all these internal classes as part of
>> the
>> > public APIs. But these internal classes do not expose any more functions
>> > for users to call either.
>> >
>> >
>> >>
>> >> I am also no 100% sure about package `state` (or did you mean "top
>> level
>> >> package "o.a.k.streams" as you mention "StreamsMetric" in the same
>> >> paragraph) -- are we sure it's stable enough to remove the annotation?
>> >> Or should we use @evolving here, too?
>> >>
>> >>
>> > Which class are you mostly concerning about?
>> >
>> >
>> >> With KIP-120 in the pipeline, we should also add @evolving to
>> >> KafkaStreams IMHO.
>> >>
>> >>
>> > Yeah I forgot to mention that for the top-level classes  should be
>> > @evolving, including StreamsMetrics (I was wrong in the previous email,
>> it
>> > is not in `o.a.k.streams.state`)
>> >
>> >
>> >>
>> >> -Matthias
>> >>
>> >> On 5/11/17 3:48 AM, Eno Thereska wrote:
>> >>> Sounds reasonable.
>> >>>
>> >>> Thanks,
>> >>> Eno
>> >>>> On May 11, 2017, at 7:39 AM, Ismael Juma <ism...@juma.me.uk> wrote:
>> >>>>
>> >>>> Thanks for the proposal Guozhang. This sounds good to me.
>> >>>>
>> >>>> Ismael
>> >>>>
>> >>>> On Thu, May 11, 2017 at 6:02 AM, Guozhang Wang <wangg...@gmail.com>
>> >> wrote:
>> >>>>
>> >>>>> Hello folks,
>> >>>>>
>> >>>>> As we are approaching the feature freeze deadline of 0.11.0.0, one
>> >> thing I
>> >>>>> realized is that currently the Streams public APIs are still marked
>> as
>> >>>>> "Unstable", which is to indicate that the API itself does not
>> provide
>> >>>>> guarantees about backward compatibility across releases. On the
>> other
>> >> hand,
>> >>>>> since Streams have now been widely adopted in production use cases
>> by
>> >> many
>> >>>>> organizations, we are in fact evolving its APIs in a much stricter
>> >> manner
>> >>>>> than "Unstable" allows us: for all the current Streams related KIP
>> >>>>> proposals under discussions right now [1], people have been working
>> >> hard to
>> >>>>> make sure none of them are going to break backward compatibility in
>> the
>> >>>>> coming releases. So I think it would be a good timing to change the
>> >> Streams
>> >>>>> API annotations.
>> >>>>>
>> >>>>> My proposal would be the following:
>> >>>>>
>> >>>>> 1. For "o.a.k.streams.errors" and "o.a.k.streams.state" packages:
>> >> remove
>> >>>>> the annotations except `StreamsMetrics`.
>> >>>>>
>> >>>>> 2. For "o.a.k.streams.kstream": remove the annotations except
>> >> "KStream",
>> >>>>> "KTable", "GroupedKStream", "GroupedKTable", "GlobalKTable" and
>> >>>>> "KStreamBuilder".
>> >>>>>
>> >>>>> 3. For all the other public classes, including
>> >> "o.a.k.streams.processor"
>> >>>>> and the above mentioned classes, change the annotation to
>> "Evolving",
>> >> which
>> >>>>> means "we might break compatibility at minor releases (i.e. 0.12.x,
>> >> 0.13.x,
>> >>>>> 1.0.x etc) only".
>> >>>>>
>> >>>>>
>> >>>>> The ultimate goal is to make sure we won't break anything going
>> >> forward,
>> >>>>> hence in the future we should remove all the annotations to make
>> that
>> >>>>> clear. The above changes in 0.11.0.0 is to give us some "buffer
>> time"
>> >> in
>> >>>>> case there are some major API change proposals after the release.
>> >>>>>
>> >>>>> Would love to hear your thoughts.
>> >>>>>
>> >>>>>
>> >>>>> [1]
>> >>>>>
>> >>>>> KIP-95: Incremental Batch Processing for Kafka Streams
>> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>> >>>>> 95%3A+Incremental+Batch+Processing+for+Kafka+Streams>
>> >>>>>
>> >>>>> KIP-120: Cleanup Kafka Streams builder API
>> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>> >>>>> 120%3A+Cleanup+Kafka+Streams+builder+API>
>> >>>>>
>> >>>>> KIP-123: Allow per stream/table timestamp extractor
>> >>>>> <https://cwiki.apache.org/confluence/pages/viewpage.
>> >> action?pageId=68714788
>> >>>>>>
>> >>>>>
>> >>>>> KIP 130: Expose states of active tasks to KafkaStreams public API
>> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP+
>> >>>>> 130%3A+Expose+states+of+active+tasks+to+KafkaStreams+public+API>
>> >>>>>
>> >>>>> KIP-132: Augment KStream.print to allow extra parameters in the
>> printed
>> >>>>> string
>> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>> >>>>> 132+-+Augment+KStream.print+to+allow+extra+parameters+in+
>> >>>>> the+printed+string>
>> >>>>>
>> >>>>> KIP-138: Change punctuate semantics
>> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>> >>>>> 138%3A+Change+punctuate+semantics>
>> >>>>>
>> >>>>> KIP-147: Add missing type parameters to StateStoreSupplier factories
>> >> and
>> >>>>> KGroupedStream/Table methods
>> >>>>> <https://cwiki.apache.org/confluence/pages/viewpage.
>> >> action?pageId=69408481
>> >>>>>>
>> >>>>>
>> >>>>> KIP-149: Enabling key access in ValueTransformer, ValueMapper, and
>> >>>>> ValueJoiner
>> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>> >>>>> 149%3A+Enabling+key+access+in+ValueTransformer%2C+ValueMappe
>> r%2C+and+
>> >>>>> ValueJoiner#KIP-149:EnablingkeyaccessinValueTransformer,
>> ValueMapper,
>> >>>>> andValueJoiner-RejectedAlternatives>
>> >>>>>
>> >>>>> KIP-150 - Kafka-Streams Cogroup
>> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>> >>>>> 150+-+Kafka-Streams+Cogroup>
>> >>>>>
>> >>>>> KIP 155 - Add range scan for windowed state stores
>> >>>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP+
>> >>>>> 155+-+Add+range+scan+for+windowed+state+stores>
>> >>>>>
>> >>>>> KIP 156 Add option "dry run" to Streams application reset tool
>> >>>>> <https://cwiki.apache.org/confluence/pages/viewpage.
>> >> action?pageId=69410150
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>>> --
>> >>>>> -- Guozhang
>> >>>>>
>> >>>
>> >>
>> >>
>> >
>> >
>>
>>
>
>
> --
> -- Guozhang
>



-- 
-- Guozhang

Reply via email to