weiqingy opened a new pull request, #29045:
URL: https://github.com/apache/flink/pull/29045

   Part of the FLIP-497 implementation stack under umbrella 
[FLINK-36953](https://issues.apache.org/jira/browse/FLINK-36953). Landing order:
   
   | Step | Sub-task | Scope |
   | --- | --- | --- |
   | PR-1a | [FLINK-40167](https://issues.apache.org/jira/browse/FLINK-40167) | 
EARLY_FIRE hint surface + option validation (#28353, merged) |
   | PR-1b | [FLINK-40168](https://issues.apache.org/jira/browse/FLINK-40168) | 
Thread the hint into the interval join (#28796, merged) |
   | PR-2 | [FLINK-40169](https://issues.apache.org/jira/browse/FLINK-40169) | 
`target` option (#28827, merged) |
   | PR-3 | [FLINK-40170](https://issues.apache.org/jira/browse/FLINK-40170) | 
Update-producing changelog mode + insert-only guard (#28877, merged) |
   | PR-4 | [FLINK-40171](https://issues.apache.org/jira/browse/FLINK-40171) | 
Runtime early-fire emit + retraction (#28952, merged) |
   | PR-5 | [FLINK-40172](https://issues.apache.org/jira/browse/FLINK-40172) | 
Processing-time early fire on an event-time join (#28953, in review) |
   | **PR-6 (this PR)** | 
[FLINK-40173](https://issues.apache.org/jira/browse/FLINK-40173) | State 
restore coverage |
   | PR-7 | [FLINK-40174](https://issues.apache.org/jira/browse/FLINK-40174) | 
User-facing documentation |
   
   Opened as a draft because it is stacked on #28953, which is in review. Until 
that merges, the commit list and diff here also carry PR-5's commit. Once 
#28953 merges I will rebase onto master, leaving only this PR's change, and 
take it out of draft.
   
   ## What is the purpose of the change
   
   Adds end-to-end restore coverage for the early-fire interval join: a 
compiled plan plus a savepoint, restored and run. The two early-fire time modes 
keep different operator state, so there is one program for each.
   
   ## Brief change log
   
     - `INTERVAL_JOIN_EARLY_FIRE`, a row-time program covering the fired 
bookkeeping restored from a savepoint. A row padded before the savepoint is 
matched after it, so the restored bit is what turns the match into a `-U`/`+U` 
correction rather than a plain `+I`.
     - `INTERVAL_JOIN_PROC_TIME_EARLY_FIRE`, a processing-time program covering 
the cross-domain schedule state, which only exists in that mode.
     - The processing-time program lives in its own 
`IntervalJoinProcTimeEarlyFireRestoreTest` with an `INFINITE` after-restore 
source and no after-restore input, following 
`GroupWindowAggregateProcTimeRestoreTest`. With no further input there is no 
`MAX_WATERMARK` and so no cleanup path, which keeps the result deterministic: 
the single emitted row can only come from the restored schedule. A finite 
program would race the restored timer against the first record.
     - It sets its source options explicitly because 
`RestoreTestBase.enablePerRecordWatermarks` matches `WATERMARK FOR` while the 
interval-join schema spells it `WATERMARK for`, so the automatic path has never 
applied to these programs.
   
   ## Verifying this change
   
   This change added tests and can be verified as follows:
   
     - Both programs run plan plus savepoint restore. Renaming the schedule 
state descriptor makes the processing-time program fail with an empty result, 
so the assertion depends on the restored state rather than on the value being 
re-derived.
   
   ## 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: no (test-only coverage of 
restore)
     - The S3 file system connector: no
   
   ## Documentation
   
     - Does this pull request introduce a new feature? no (test coverage for 
the FLIP-497 hint)
     - 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 (Anthropic)
   


-- 
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]

Reply via email to