Yes, thank you everyone for your input!

I will incorporate the latest round of test revisions
and submit a VOTE thread later today :)

> On Feb 8, 2017, at 10:48 AM, Eno Thereska <eno.there...@gmail.com> wrote:
> 
> Steven,
> 
> Sounds like we can start a VOTE thread on this? Is the KIP up to date with 
> all the latest comments?
> 
> Thanks
> Eno
>> On 8 Feb 2017, at 18:05, Matthias J. Sax <matth...@confluent.io> wrote:
>> 
>> I like this idea. But to get clean and concise PRs, I would prefer to
>> have a JIRA and extra PR for this.
>> 
>> WDYT?
>> 
>> 
>> -Matthias
>> 
>> On 2/8/17 9:35 AM, Guozhang Wang wrote:
>>> The KIP proposal LGTM, thanks Steven!
>>> 
>>> One meta comment on the PR itself: I'm wondering if we could refactoring
>>> the implementation of `KStream.print() / writeAsText()` to just be a
>>> special impl of `peek()` then, like we did for `count` as for `aggregate`?
>>> I.e. we can replace the `KeyValuePrinter` class with an internal ForEach
>>> impl within `peek()`.
>>> 
>>> 
>>> Guozhang
>>> 
>>> 
>>> On Tue, Feb 7, 2017 at 11:09 AM, Gwen Shapira <g...@confluent.io> wrote:
>>> 
>>>> Far better! Thank you!
>>>> 
>>>> On Tue, Feb 7, 2017 at 10:19 AM, Steven Schlansker
>>>> <sschlans...@opentable.com> wrote:
>>>>> Thanks for the feedback.  I improved the javadoc a bit, do you like it
>>>> better?
>>>>> 
>>>>>   /**
>>>>>    * Perform an action on each record of {@code KStream}.
>>>>>    * This is a stateless record-by-record operation (cf. {@link
>>>> #process(ProcessorSupplier, String...)}).
>>>>>    *
>>>>>    * Peek is a non-terminal operation that triggers a side effect
>>>> (such as logging or statistics collection)
>>>>>    * and returns an unchanged stream.
>>>>>    *
>>>>>    * Note that since this operation is stateless, it may execute
>>>> multiple times for a single record in failure cases.
>>>>>    *
>>>>>    * @param action an action to perform on each record
>>>>>    * @see #process(ProcessorSupplier, String...)
>>>>>    */
>>>>>   KStream<K, V> peek(final ForeachAction<? super K, ? super V> action);
>>>>> 
>>>>> Updated in-place on the PR.
>>>>> 
>>>>>> On Feb 7, 2017, at 2:19 AM, Michael Noll <mich...@confluent.io> wrote:
>>>>>> 
>>>>>> Many thanks for the KIP and the PR, Steven!
>>>>>> 
>>>>>> My opinion, too, is that we should consider including this.
>>>>>> 
>>>>>> One thing that I would like to see clarified is the difference between
>>>> the
>>>>>> proposed peek() and existing functions map() and foreach(), for
>>>> instance.
>>>>>> My understanding (see also the Java 8 links below) is that:
>>>>>> 
>>>>>> - Like `map`, `peek` will return a KStream.  This also means that,
>>>> unlike
>>>>>> `foreach`, `peek` is not a terminal operation.
>>>>>> - The main purpose of `peek` is, similar to `foreach`, the *side
>>>> effects*
>>>>>> (such as the metrics counter example in the KIP) -- and, on a related
>>>> note,
>>>>>> also to express your *intent* to achieve such side effects in the first
>>>>>> place (which is similar to when to use `foreach` rather than `map`); and
>>>>>> typically you should not (must not?) modify the underlying stream itself
>>>>>> (unlike `map`, which is supposed to do exactly that).
>>>>>> 
>>>>>> For reference, here are the descriptions of peek, map, foreach in Java
>>>> 8.
>>>>>> I could have also included links to StackOverflow questions where people
>>>>>> were confused about when (not) to use peek. ;-)
>>>>>> 
>>>>>> https://docs.oracle.com/javase/8/docs/api/java/util/
>>>> stream/Stream.html#peek-java.util.function.Consumer-
>>>>>> https://docs.oracle.com/javase/8/docs/api/java/util/
>>>> stream/Stream.html#map-java.util.function.Function-
>>>>>> https://docs.oracle.com/javase/8/docs/api/java/util/
>>>> stream/Stream.html#forEach-java.util.function.Consumer-
>>>>>> 
>>>>>> Best wishes,
>>>>>> Michael
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Tue, Feb 7, 2017 at 10:37 AM, Damian Guy <damian....@gmail.com>
>>>> wrote:
>>>>>> 
>>>>>>> Hi Steven,
>>>>>>> Thanks for the KIP. I think this is a worthy addition to the API.
>>>>>>> 
>>>>>>> Thanks,
>>>>>>> Damian
>>>>>>> 
>>>>>>> On Tue, 7 Feb 2017 at 09:30 Eno Thereska <eno.there...@gmail.com>
>>>> wrote:
>>>>>>> 
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> I like the proposal, thank you. I have found it frustrating myself
>>>> not to
>>>>>>>> be able to understand simple things, like how many records have been
>>>>>>>> currently processed. The peek method would allow those kinds of
>>>>>>> diagnostics
>>>>>>>> and debugging.
>>>>>>>> 
>>>>>>>> Gwen, it is possible to do this with the existing functionality like
>>>> map,
>>>>>>>> but you'd have to fake the map method. Also, it is not great using map
>>>>>>> for
>>>>>>>> things it was not intended for. Having an explicit peek makes it
>>>> clearer
>>>>>>> in
>>>>>>>> my opinion.
>>>>>>>> 
>>>>>>>> Thanks
>>>>>>>> Eno
>>>>>>>> 
>>>>>>>>> On 7 Feb 2017, at 03:20, Gwen Shapira <g...@confluent.io> wrote:
>>>>>>>>> 
>>>>>>>>> I've read the wiki and am unclear about the proposal. Can you provide
>>>>>>>>> something like a Javadoc for peek()? What would this method do?
>>>>>>>>> 
>>>>>>>>> Also, forgive me if I'm missing an important point here, but can't I
>>>>>>>>> put the println statement in a map()?
>>>>>>>>> 
>>>>>>>>> On Mon, Feb 6, 2017 at 5:48 PM, Matthias J. Sax <
>>>> matth...@confluent.io
>>>>>>>> 
>>>>>>>> wrote:
>>>>>>>>>> Steven,
>>>>>>>>>> 
>>>>>>>>>> Thanks for your KIP. I move this discussion to dev mailing list --
>>>>>>> KIPs
>>>>>>>>>> need to be discussed there (and can be cc'ed to user list).
>>>>>>>>>> 
>>>>>>>>>> Can you also add the KIP to the table "KIPs under discussion":
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/
>>>>>>> Kafka+Improvement+Proposals#KafkaImprovementProposals-
>>>> KIPsunderdiscussion
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Thanks.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> -Matthias
>>>>>>>>>> 
>>>>>>>>>> On 2/6/17 3:35 PM, Steven Schlansker wrote:
>>>>>>>>>>> Hello users@kafka,
>>>>>>>>>>> 
>>>>>>>>>>> I would like to propose a small KIP on the Streams framework
>>>>>>>>>>> that simply adds a KStream#peek implementation.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-
>>>>>>> 121%3A+Add+KStream+peek+method
>>>>>>>>>>> https://issues.apache.org/jira/browse/KAFKA-4720
>>>>>>>>>>> https://github.com/apache/kafka/pull/2493
>>>>>>>>>>> 
>>>>>>>>>>> Please consider my contribution and hopefully you all like it and
>>>>>>>> agree that it should be merged into 0.10.3 :)
>>>>>>>>>>> If not, be gentle, this is my first KIP!
>>>>>>>>>>> 
>>>>>>>>>>> Happy Monday,
>>>>>>>>>>> Steven
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> --
>>>>>>>>> Gwen Shapira
>>>>>>>>> Product Manager | Confluent
>>>>>>>>> 650.450.2760 <(650)%20450-2760> | @gwenshap
>>>>>>>>> Follow us: Twitter | blog
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> --
>>>> Gwen Shapira
>>>> Product Manager | Confluent
>>>> 650.450.2760 | @gwenshap
>>>> Follow us: Twitter | blog
>>>> 
>>> 
>>> 
>>> 
>> 
> 

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to