William,

thanks for the KIP. LGMT. Feel free to start a vote.


-Matthias


On 7/4/20 10:14 AM, John Roesler wrote:
> Hi Richard,
> 
> It’s good to hear from you!
> 
> Thanks for bringing up the wall-clock suppression feature. IIRC, someone 
> actually started a KIP discussion for it already, but I don’t think it went 
> to a vote. I don’t recall any technical impediment, just the lack of 
> availability to finish it up. Although there is some association, it would be 
> good to keep the KIPs separate.
> 
> Thanks,
> John
> 
> On Sat, Jul 4, 2020, at 10:05, Richard Yu wrote:
>> Hi all,
>>
>> This reminds me of a previous issue I think that we were discussing.
>> @John Roesler <mailto:vvcep...@apache.org> I think you should remember this 
>> one.
>>
>> A while back, we were talking about having suppress operator emit 
>> records by wall-clock time instead of stream time.
>> If we are adding this, wouldn't that make it more feasible for us to 
>> implement that feature for suppression?
>>
>> If I recall correctly, there actually had been quite a bit of user 
>> demand for such a feature.
>> Might be good to include it in this KIP (or maybe use one of the prior 
>> KIPs for this feature).
>>
>> Best,
>> Richard
>>
>> On Sat, Jul 4, 2020 at 6:58 AM John Roesler <vvcep...@apache.org> wrote:
>>> Hi all,
>>>
>>>  1. Thanks, Boyang, it is nice to see usage examples in KIPs like this. It 
>>> helps during the discussion, and it’s also good documentation later on. 
>>>
>>>  2. Yeah, this is a subtle point. The motivation mentions being able to 
>>> control the time during tests, but to be able to make it work, the 
>>> processor implementation needs a public method on ProcessorContext to get 
>>> the time. Otherwise, processors would have to check the type of the context 
>>> and cast, depending on whether they’re running inside a test or not. In 
>>> retrospect, if we’d had a usage example, this probably would have been 
>>> clear. 
>>>
>>>  3. I don’t think we expect people to have their own implementations of 
>>> ProcessorContext. Since all implementations are internal, it’s really an 
>>> implementation detail whether we use a default method, abstract methods, or 
>>> concrete methods. I can’t think of an implementation that really wants to 
>>> just look up the system time. In the production code path, we cache the 
>>> time for performance, and in testing, we use a mock time. 
>>>
>>>  Thanks,
>>>  John
>>>
>>>
>>>  On Fri, Jul 3, 2020, at 06:41, Piotr Smoliński wrote:
>>>  > 1. Makes sense; let me propose something
>>>  > 
>>>  > 2. That's not testing-only. The goal is to use the same API to access 
>>>  > the time
>>>  > in deployment and testing environments. The major driver is 
>>>  > System.currentTimeMillis(),
>>>  > which a) cannot be used in tests b) could go in specific cases back c) 
>>>  > is not compatible
>>>  > with punctuator call. The idea is that we could access clock using 
>>>  > uniform API. 
>>>  > For completness we should have same API for system and stream time.
>>>  > 
>>>  > 3. There aren't that many subclasses. Two important ones are 
>>>  > ProcessorContextImpl and 
>>>  > MockProcessorContext (and third one: 
>>>  > ForwardingDisableProcessorContext). If given
>>>  > implementation does not support schedule() call, there is no reason to 
>>>  > support clock access. 
>>>  > The default implementation should just throw 
>>>  > UnsupportedOperationException just to prevent
>>>  > from compilation errors in possible subclasses.
>>>  > 
>>>  > On 2020/07/01 02:24:43, Boyang Chen <reluctanthero...@gmail.com> wrote: 
>>>  > > Thanks Will for the KIP. A couple questions and suggestions:
>>>  > > 
>>>  > > 1. I think for new APIs to make most sense, we should add a minimal 
>>> example
>>>  > > demonstrating how it could be useful to structure unit tests w/o the 
>>> new
>>>  > > APIs.
>>>  > > 2. If this is a testing-only feature, could we only add it
>>>  > > to MockProcessorContext?
>>>  > > 3. Regarding the API, since this will be added to the ProcessorContext 
>>> with
>>>  > > many subclasses, does it make sense to provide default implementations 
>>> as
>>>  > > well?
>>>  > > 
>>>  > > Boyang
>>>  > > 
>>>  > > On Tue, Jun 30, 2020 at 6:56 PM William Bottrell <bottre...@gmail.com>
>>>  > > wrote:
>>>  > > 
>>>  > > > Thanks, John! I made the change. How much longer should I let there 
>>> be
>>>  > > > discussion before starting a VOTE?
>>>  > > >
>>>  > > > On Sat, Jun 27, 2020 at 6:50 AM John Roesler <vvcep...@apache.org> 
>>> wrote:
>>>  > > >
>>>  > > > > Thanks, Will,
>>>  > > > >
>>>  > > > > That looks good to me. I would only add "cached" or something
>>>  > > > > to indicate that it wouldn't just transparently look up the current
>>>  > > > > System.currentTimeMillis every time.
>>>  > > > >
>>>  > > > > For example:
>>>  > > > > /**
>>>  > > > > * Returns current cached wall-clock system timestamp in 
>>> milliseconds.
>>>  > > > > *
>>>  > > > > * @return the current cached wall-clock system timestamp in 
>>> milliseconds
>>>  > > > > */
>>>  > > > > long currentSystemTimeMs();
>>>  > > > >
>>>  > > > > I don't want to give specific information about _when_ exactly the
>>>  > > > > timestamp cache will be updated, so that we can adjust it in the
>>>  > > > > future, but it does seem important to make people aware that they
>>>  > > > > won't see the timestamp advance during the execution of
>>>  > > > > Processor.process(), for example.
>>>  > > > >
>>>  > > > > With that modification, I'll be +1 on this proposal.
>>>  > > > >
>>>  > > > > Thanks again for the KIP!
>>>  > > > > -John
>>>  > > > >
>>>  > > > > On Thu, Jun 25, 2020, at 02:32, William Bottrell wrote:
>>>  > > > > > Thanks, John! I appreciate you adjusting my lingo. I made the 
>>> change to
>>>  > > > > the
>>>  > > > > > KIP. I will add the note about system time to the javadoc.
>>>  > > > > >
>>>  > > > > > On Wed, Jun 24, 2020 at 6:52 PM John Roesler 
>>> <vvcep...@apache.org>
>>>  > > > > wrote:
>>>  > > > > >
>>>  > > > > > > Hi Will,
>>>  > > > > > >
>>>  > > > > > > This proposal looks good to me overall. Thanks for the 
>>> contribution!
>>>  > > > > > >
>>>  > > > > > > Just a couple of minor notes:
>>>  > > > > > >
>>>  > > > > > > The system time method would return a cached timestamp that 
>>> Streams
>>>  > > > > looks
>>>  > > > > > > up once when it starts processing a record. This may be 
>>> confusing, so
>>>  > > > > it
>>>  > > > > > > might be good to state it in the javadoc.
>>>  > > > > > >
>>>  > > > > > > I thought the javadoc for the stream time might be a bit 
>>> confusing.
>>>  > > > We
>>>  > > > > > > normally talk about “Tasks” not “partition groups” in the 
>>> public api.
>>>  > > > > Maybe
>>>  > > > > > > just saying that it’s “the maximum timestamp of any record yet
>>>  > > > > processed by
>>>  > > > > > > the task” would be both high level and accurate.
>>>  > > > > > >
>>>  > > > > > > Thanks again!
>>>  > > > > > > -John
>>>  > > > > > >
>>>  > > > > > > On Mon, Jun 22, 2020, at 02:10, William Bottrell wrote:
>>>  > > > > > > > Thanks, Bruno. I updated the KIP, so hopefully it makes more 
>>> sense.
>>>  > > > > > > Thanks
>>>  > > > > > > > to Matthias J. Sax and Piotr Smolinski for helping with 
>>> details.
>>>  > > > > > > >
>>>  > > > > > > > I welcome more feedback. Let me know if something doesn't 
>>> make
>>>  > > > sense
>>>  > > > > or I
>>>  > > > > > > > need to provide more detail. Also, feel free to enlighten me.
>>>  > > > Thanks!
>>>  > > > > > > >
>>>  > > > > > > > On Thu, Jun 11, 2020 at 1:11 PM Bruno Cadonna 
>>> <br...@confluent.io>
>>>  > > > > > > wrote:
>>>  > > > > > > >
>>>  > > > > > > > > Hi Will,
>>>  > > > > > > > >
>>>  > > > > > > > > Thank you for the KIP.
>>>  > > > > > > > >
>>>  > > > > > > > > 1. Could you elaborate a bit more on the motivation in the 
>>> KIP?
>>>  > > > An
>>>  > > > > > > > > example would make the motivation clearer.
>>>  > > > > > > > >
>>>  > > > > > > > > 2. In section "Proposed Changes" you do not need to show 
>>> the
>>>  > > > > > > > > implementation and describe internals. A description of the
>>>  > > > > expected
>>>  > > > > > > > > behavior of the newly added methods should suffice.
>>>  > > > > > > > >
>>>  > > > > > > > > 3. In "Compatibility, Deprecation, and Migration Plan" you 
>>> should
>>>  > > > > > > > > state that the change is backward compatible because the 
>>> two
>>>  > > > > methods
>>>  > > > > > > > > will be added and no other method will be changed or 
>>> removed.
>>>  > > > > > > > >
>>>  > > > > > > > > Best,
>>>  > > > > > > > > Bruno
>>>  > > > > > > > >
>>>  > > > > > > > > On Wed, Jun 10, 2020 at 10:06 AM William Bottrell <
>>>  > > > > bottre...@gmail.com
>>>  > > > > > > >
>>>  > > > > > > > > wrote:
>>>  > > > > > > > > >
>>>  > > > > > > > > > Add currentSystemTimeMs and currentStreamTimeMs to
>>>  > > > > ProcessorContext
>>>  > > > > > > > > > <
>>>  > > > > > > > >
>>>  > > > > > >
>>>  > > > >
>>>  > > > 
>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-622%3A+Add+currentSystemTimeMs+and+currentStreamTimeMs+to+ProcessorContext
>>>  > > > > > > > > >
>>>  > > > > > > > > >
>>>  > > > > > > > > > I am extremely new to Kafka, but thank you to John 
>>> Roesler and
>>>  > > > > > > Matthias
>>>  > > > > > > > > J.
>>>  > > > > > > > > > Sax for pointing me in the right direction. I accept any 
>>> and
>>>  > > > all
>>>  > > > > > > > > feedback.
>>>  > > > > > > > > >
>>>  > > > > > > > > > Thanks,
>>>  > > > > > > > > > Will
>>>  > > > > > > > >
>>>  > > > > > > >
>>>  > > > > > >
>>>  > > > > >
>>>  > > > >
>>>  > > >
>>>  > > 
>>>  >

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to