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)

Reply via email to