1996fanrui opened a new pull request, #28651:
URL: https://github.com/apache/flink/pull/28651
## What is the purpose of the change
Part 1 of a 7-PR series implementing FLINK-38544 (checkpointing during
recovery of unaligned-checkpoint state). Series: FLINK-39520 → FLINK-39521 →
FLINK-39522 → FLINK-39523 → FLINK-39524 → FLINK-40080 → FLINK-40081.
This PR is pure refactoring in preparation for the reworked channel-state
recovery: it splits the monolithic recovered-state handler into an abstract
base with concrete no-filtering/filtering handlers, adds
`InputGate#getChannel(InputChannelInfo)`, and carries one standalone `[hotfix]`
commit fixing a busy-spin in the multiple-input processor. No behavior or
semantic change.
## Brief change log
- `[hotfix]` `StreamMultipleInputProcessor` returns `END_OF_INPUT` when all
inputs are finished instead of busy-spinning (previously, once all inputs
finished, the availability future was complete but `processInput` never
reported end of input)
- Decouple `LocalInputChannel` recovery wiring from `toBeConsumedBuffers`
- Split `InputChannelRecoveredStateHandler` into
`AbstractInputChannelRecoveredStateHandler` (channel-mapping state and logic,
extracted verbatim) + `NoSpillingHandler` / `FilteringHandler` (the two
existing behaviors, extracted verbatim), selected by a static `create(...)`
factory equivalent to the old internal branch;
`ResultSubpartitionRecoveredStateHandler` is untouched
- Add `InputGate#getChannel(InputChannelInfo)` (`UnionInputGate` resolves
via the gate index, fixing global-vs-member index semantics);
`AbstractStreamTaskNetworkInput` switches to it
- Additive `NetworkActionsLogger#tracePersist` overload; widen
`RecoveredInputChannel#releaseAllResources` to `public`
## Verifying this change
This change is a refactoring already covered by existing tests
(`InputChannelRecoveredStateHandlerTest`, `RecoveredChannelStateHandlerTest`,
the input-channel and gate test suites); they pass unmodified except mechanical
adaptations (a renamed trace label, constructor plumbing in test builders).
## Does this pull request potentially affect one of the following parts:
- Dependencies (does it add or upgrade a dependency): no
- The public API, i.e., is any changed class annotated with
`@Public(Evolving)`: no
- The serializers: no
- The runtime per-record code paths (performance sensitive): no
- Anything that affects deployment or recovery: JobManager (and its
components), Checkpointing, Kubernetes/Yarn, ZooKeeper: yes
(checkpoint-recovery code paths are refactored; no behavior change intended)
- The S3 file system connector: no
## Documentation
- Does this pull request introduce a new feature? no
- If yes, how is the feature documented? not applicable
---
##### Was generative AI tooling used to co-author this PR?
- [X] Yes (please specify the tool below)
Generated-by: Claude Code (Claude Fable 5)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]