[ 
https://issues.apache.org/jira/browse/FLINK-40475?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated FLINK-40475:
-----------------------------------
    Labels: pull-request-available  (was: )

> StatusWatermarkValve loses or stalls watermarks when subpartitions realign 
> after idleness
> -----------------------------------------------------------------------------------------
>
>                 Key: FLINK-40475
>                 URL: https://issues.apache.org/jira/browse/FLINK-40475
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Task
>            Reporter: Martijn Visser
>            Priority: Critical
>              Labels: pull-request-available
>
> When a subpartition of {{StatusWatermarkValve}} reactivates after idleness 
> and rejoins the aligned set, the min watermark across aligned subpartitions 
> is not re-derived. This breaks the invariant that the aligned min equals the 
> last output watermark, which two guards ({{subpartitionStatus.watermark == 
> lastOutputWatermark}}) silently rely on. Two symptoms:
> The all-idle flush-to-max from FLINK-7728 is skipped when the last 
> subpartition to become idle is unaligned (went idle, resumed, only partially 
> caught up). The final watermark then depends on the order in which inputs 
> became idle — the exact defect FLINK-7728 was created to fix. Example: inputs 
> at 100/60/70, last output watermark 70; if the input at 60 idles last, the 
> valve emits only IDLE and the watermark stays at 70 instead of flushing 100. 
> A different idle order emits 100. This also diverges from 
> {{CombinedWatermarkStatus}}, which flushes unconditionally since FLINK-38454 
> despite the "keep in sync" contract.
> A subpartition that reactivates as the only aligned subpartition has its 
> watermark stalled indefinitely — it is only emitted once an even larger 
> watermark arrives on that subpartition. No all-idle transition is involved.
> The pattern is reachable with standard sources: {{WatermarkToDataOutput}} 
> enforces watermark monotonicity only per subtask and emits ACTIVE before the 
> resuming watermark, so e.g. a quiet Kafka partition with 
> {{WatermarksWithIdleness}} resuming with old-timestamped backlog reactivates 
> below the downstream valve's last output watermark.
> Fix: re-derive the min watermark after realignment on reactivation, and drop 
> both guards — {{findAndOutputMaxWatermarkAcrossAllSubpartitions}} and 
> {{findAndOutputNewMinWatermarkAcrossAlignedSubpartitions}} already only emit 
> on advancement, so monotonicity is unaffected. Unit tests reproducing both 
> symptoms (failing on current master) are included in the PR.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to