You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Matthias J. Sax (JIRA)" <ji...@apache.org> on 2019/06/09 01:50:00 UTC

[jira] [Commented] (KAFKA-8504) Suppressed do not emit with TimeWindows

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

Matthias J. Sax commented on KAFKA-8504:
----------------------------------------

While I agree, that it would be better to use a default value for zero for grace-period, it's not easily possible, due do backward compatibility issues. Compare the KIP for more details: [https://cwiki.apache.org/confluence/display/KAFKA/KIP-328%3A+Ability+to+suppress+updates+for+KTables]

In order versions, there was only "retention time" parameter that is set to 1 day by default. To be backward compatible, we need to set grace period to "-1". For this case, retention-time parameter is interpreted as grace period (roughly), implying that grace period is effectively 1 day by default.

Hence, if you use suppress() with default values, it won't emit any final result for 24h. In practices, you would need to set grace-period to a smaller value, depending on your application requirements.

I was just double checking the docs, and it seems this behavior is actually not well documents (neither on AK webpage nor in JavaDocs). I think we should improve the docs accordingly.

 

> Suppressed do not emit with TimeWindows
> ---------------------------------------
>
>                 Key: KAFKA-8504
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8504
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>    Affects Versions: 2.2.1
>            Reporter: Simone
>            Priority: Minor
>
> Hi, I'm playing a bit with KafkaStream and the new suppress feature. I noticed that when using a {{TimeWindows}} without explicitly setting the grace {{suppress}} will not emit any message if used with {{Suppressed.untilWindowCloses.}}
> I look a bit into the code and from what I understood with this configuration {{suppress}} should use the {{grace}} setting of the {{TimeWindows}}. But since using {{TimeWindows.of(Duration)}} default the grace to {{-1}} and when getting the grace using the method {{TimeWindows.gracePeriodMs()}} in case of grace equals to -1 the return value is set to {{maintainMs() - size()}} I think that the end of window is not properly calculated. 
> Of course is possible to avoid this problem forcing the {{grace}} to 0 when creating the TimeWindows but I think that this should be the default behaviour at least when it comes to the suppress feature.
> I hope I have not misunderstood the code in my analysis, thank you :)
> Simone



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)