Ok, 
* fwiw: I 100% agree that it's not this component's job to verify other aspects 
of the window spec. It should only care about grace period.
* I think the semantics are perfectly well defined with `max`, and I buy these 
arguments that it's unnecessary to fail. I'd like to log a warning (just during 
the topology build) in case the mis-match was accidental.

@guozhangwang :
I agree with @mjsax , I don't think that `min` has the right semantics. The 
purpose of configuring the suppression interval equal to the grace period to 
begin with is that we already know that the window results will never be 
updated after the grace period ends. If we set the suppression smaller than the 
grace period (or in this case _one_ of the grace periods), then there will be 
an inconsistency between the aggregation results upstream vs. downstream of 
suppression.

In fact, it's generally ok if we make the suppression interval _larger_ than 
the grace period. It just means that we'll emit the final result "after" the 
window closes, not "at" the window close.

Thus, `max` satisfies everyone's semantics and ensures consistent results 
throughout the topology. The "more graceful" parent will see its final results 
close after its grace period expires, and the "less graceful" one has to wait 
longer, but they will both never see their materialized state differ from the 
results downstream of the suppression.

[ Full content available at: https://github.com/apache/kafka/pull/5567 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to