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

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

> SourceCoordinator never removes failed or reset subtasks from 
> watermark-alignment aggregation
> ---------------------------------------------------------------------------------------------
>
>                 Key: FLINK-40505
>                 URL: https://issues.apache.org/jira/browse/FLINK-40505
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Coordination
>            Reporter: Martijn Visser
>            Priority: Major
>              Labels: pull-request-available
>
> The per-subtask watermark aggregation used for watermark alignment retains a 
> subtask's
> last {{ReportedWatermarkEvent}} across failures and resets. 
> {{WatermarkAggregator}}
> ({{SourceCoordinator.java:835}}) exposes only {{aggregate}}/{{keySet}} — 
> there is no
> removal API — and {{executionAttemptFailed}} ({{:352-369}}) / {{subtaskReset}}
> ({{:371-394}}) clear registered readers and gateways but never touch the 
> aggregator
> (neither the per-coordinator one nor the group-level one in 
> {{coordinatorStore}}).
> Consequence: after a failover, the dead attempt's stale watermark keeps 
> constraining
> {{maxAllowedWatermark}} for the entire alignment group until the restarted 
> attempt
> happens to re-report. The retained value is not a conservative bound — the 
> restarted
> attempt can resume from an earlier checkpoint position than its last report — 
> and on
> downscale or permanent removal the entry is never refreshed, freezing the 
> group's
> {{maxAllowedWatermark}} permanently.
> Red test on master: two subtasks report watermarks 100 and 200 (announced
> maxAllowed=1100 with drift 1000 — sane); after {{executionAttemptFailed}} +
> {{subtaskReset}} of the subtask that reported 100, a fresh announcement still 
> sends
> maxAllowed=1100 from the stale entry (expected: 1200).
> Related facet (characterization test): a subtask that has never sent a
> {{ReportedWatermarkEvent}} receives no {{WatermarkAlignmentEvent}} at all 
> (the announce
> loop iterates {{combinedWatermark.keySet()}}), overlapping FLINK-36914.
> This may be the mechanism behind FLINK-40371 (alignment drift bound not 
> honored after
> savepoint restore); FLINK-33109 reported the same symptom and was closed as 
> an HA
> artifact; FLINK-32414 fixed the splitless-subtask MIN_VALUE variant of the 
> same
> aggregator-poisoning shape.
> Proposed fix: remove the subtask's entry in {{subtaskReset}} (and on attempt 
> failure
> once no attempt of the subtask is running); the entry is re-established by 
> the restarted
> attempt's next report.



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

Reply via email to