Michał created KAFKA-8924: ----------------------------- Summary: 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ł
#Problem The default creation of TimeWindows, like ``` TimeWindows.of(ofMillis(xxx)) ``` calls an internal constructor ``` return new TimeWindows(sizeMs, sizeMs, -1, DEFAULT_RETENTION_MS); ``` And the *-1* parameter is the default grace period which I think is here for backward compatibility ``` @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(); } ``` 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. #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)