Github user Aitozi commented on a diff in the pull request:
https://github.com/apache/flink/pull/4665#discussion_r139742368
--- Diff:
flink-streaming-java/src/main/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperator.java
---
@@ -405,6 +411,8 @@ public void merge(W mergeResult,
// windowAssigner is event time and current timestamp + allowed
lateness no less than element timestamp
if (isSkippedElement && lateDataOutputTag != null &&
isElementLate(element)) {
sideOutput(element);
+ } else if (isSkippedElement) {
--- End diff --
i think when the `isSkippedElement` is true, the `isElementLate(element)`
is always be true. Because `isSkippedElement` is true when all the assigned
window's window.endtime + allowLateness < currentLowWatermark, and
`isElementLate` is true when element.time + allowLateness <
currentLowWatermark. and element.time is <= bigest window.endtime. so does
`isElementLate` always be true when isSkippedElement is true? And i think if i
want to rule out the situation that **because no windows were assigned to
it.**, i just need to judge whether the variable `Collection elementWindows`
is empty?
---