[ 
https://issues.apache.org/jira/browse/KAFKA-8924?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16934187#comment-16934187
 ] 

Michał commented on KAFKA-8924:
-------------------------------

{quote}
Regarding the log message, that wasn't it, although that message doesn't look 
too good. The message I have in mind says:

{code}
INFO  org.apache.kafka.streams.kstream.internals.KTableImpl  - Using grace 
period of [PT1S] as the suppress duration for node [KTABLE-SUPPRESS-0000000003].
{code}
{quote}

Oh... maybe it was there but it is my first contact with kafka-strams and this 
message tells me nothing :(.
Let's not dive into this, anyway...

{quote}
About making the full constructor available, I could buy it, although I'd just 
do `(size, advance, grace)` and leave retention period out, since it's 
deprecated already.
{quote}

Should I prepare such PR? 
Should I change all the deprecated calls in the app as well?


> Default grace period (-1) of TimeWindows causes suppress to never emit events 
> ------------------------------------------------------------------------------
>
>                 Key: KAFKA-8924
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8924
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>    Affects Versions: 2.3.0
>            Reporter: Michał
>            Priority: Major
>
> h2. Problem 
> The default creation of TimeWindows, like
> {code}
> TimeWindows.of(ofMillis(xxx))
> {code}
> calls an internal constructor
> {code}
> return new TimeWindows(sizeMs, sizeMs, -1, DEFAULT_RETENTION_MS);
> {code}
> And the *-1* parameter is the default grace period which I think is here for 
> backward compatibility
> {code}
> @SuppressWarnings("deprecation") // continuing to support 
> Windows#maintainMs/segmentInterval in fallback mode
> @Override
> public long gracePeriodMs() {
>     // NOTE: in the future, when we remove maintainMs,
>     // we should default the grace period to 24h to maintain the default 
> behavior,
>     // or we can default to (24h - size) if you want to be super accurate.
>     return graceMs != -1 ? graceMs : maintainMs() - size();
> }
> {code}
> The problem is that if you use a TimeWindows with gracePeriod of *-1* 
> together with suppress *untilWindowCloses*, it never emits an event.
> You can check the Suppress tests 
> (SuppressScenarioTest.shouldSupportFinalResultsForTimeWindows), where 
> [~vvcephei] was (maybe) aware of that and all the scenarios specify the 
> gracePeriod.
> I will add a test without it on my branch and it will fail.
> The test: 
> https://github.com/atais/kafka/commit/221a04dc40d636ffe93a0ad95dfc6bcad653f4db
>  
> h2. Now what can be done
> One easy fix would be to change the default value to 0, which works fine for 
> me in my project, however, I am not aware of the impact it would have done 
> due to the changes in the *gracePeriodMs* method mentioned before.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to