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

Rui Fan updated FLINK-39522:
----------------------------
    Description: 
Restructure StreamTask channel-state recovery into an asynchronous future chain 
on the channelIOExecutor and unify recovery completion on the gates' 
state-consumed futures.

Behavior change (checkpointing-during-recovery enabled only): the task now 
consumes recovered state only after rescale filtering has fully completed — 
previously consumption overlapped with filtering. Filtered buffers are held in 
the recovered channels' memory queues and handed to the physical channels 
through the push interface at conversion. Rationale: a checkpoint taken during 
recovery can only proceed once filtering is complete; making the order strict 
greatly simplifies the coordination between filtering and checkpointing.

Scope:
 * Split restoreStateAndGates into recoverChannelsWithCheckpointing / 
recoverChannelsWithoutCheckpointing; recovery completion suspends the restore 
mailbox loop; recovery failures are rethrown from restoreInternal instead of 
being swallowed.
 * Flag-off path preserves master behavior (per-gate conversion off each gate's 
own state-consumed future — also avoids a selective-reading multi-input 
deadlock).
 * Remove the now-unused filtering-progress gate API 
(getBufferFilteringCompleteFuture, set/isCheckpointingDuringRecoveryEnabled).
 * Defer task finish until recovery completes (fixes an existing race where a 
finite task could finish before recovery completed; also affects the non-CDR 
path as a hardening).

  was:`RecoveredInputChannel`, `LocalInputChannel`, and `RemoteInputChannel` 
now read recovery buffers via `store.tryTake()` instead of maintaining their 
own recovered-buffer queue. Removes the `onRecoveredStateBuffer()` callback and 
the `initialRecoveredBuffers` hand-off on channel conversion, wires 
`store.checkpoint()` into `checkpointStarted()`, and routes in-use counts / 
`releaseAllResources()` through the store.


> Rework StreamTask channel-state recovery into an async future chain; start 
> consumption only after filtering completes
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-39522
>                 URL: https://issues.apache.org/jira/browse/FLINK-39522
>             Project: Flink
>          Issue Type: Sub-task
>            Reporter: Rui Fan
>            Assignee: Rui Fan
>            Priority: Major
>
> Restructure StreamTask channel-state recovery into an asynchronous future 
> chain on the channelIOExecutor and unify recovery completion on the gates' 
> state-consumed futures.
> Behavior change (checkpointing-during-recovery enabled only): the task now 
> consumes recovered state only after rescale filtering has fully completed — 
> previously consumption overlapped with filtering. Filtered buffers are held 
> in the recovered channels' memory queues and handed to the physical channels 
> through the push interface at conversion. Rationale: a checkpoint taken 
> during recovery can only proceed once filtering is complete; making the order 
> strict greatly simplifies the coordination between filtering and 
> checkpointing.
> Scope:
>  * Split restoreStateAndGates into recoverChannelsWithCheckpointing / 
> recoverChannelsWithoutCheckpointing; recovery completion suspends the restore 
> mailbox loop; recovery failures are rethrown from restoreInternal instead of 
> being swallowed.
>  * Flag-off path preserves master behavior (per-gate conversion off each 
> gate's own state-consumed future — also avoids a selective-reading 
> multi-input deadlock).
>  * Remove the now-unused filtering-progress gate API 
> (getBufferFilteringCompleteFuture, set/isCheckpointingDuringRecoveryEnabled).
>  * Defer task finish until recovery completes (fixes an existing race where a 
> finite task could finish before recovery completed; also affects the non-CDR 
> path as a hardening).



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

Reply via email to