[
https://issues.apache.org/jira/browse/FLINK-41356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated FLINK-41356:
-----------------------------------
Labels: pull-request-available (was: )
> Support early fire in the async state interval join
> ---------------------------------------------------
>
> Key: FLINK-41356
> URL: https://issues.apache.org/jira/browse/FLINK-41356
> Project: Flink
> Issue Type: Sub-task
> Components: Table SQL / Planner, Table SQL / Runtime
> Reporter: Aaron He
> Priority: Major
> Labels: pull-request-available
>
> h2. Motivation
> FLINK-41355 adds async state versions of the SQL interval join, selected by
> table.exec.async-state.enabled, but keeps the synchronous functions for a
> join with the EARLY_FIRE hint (FLIP-497), because only they implement early
> fire. A job with an early-fire interval join therefore still runs that
> operator on synchronous state on a disaggregated state backend such as ForSt.
> h2. Proposal
> Port the interval-join early fire of FLINK-40171 and FLINK-40172 to
> AsyncStateTimeIntervalJoin and its row-time and processing-time subclasses,
> and drop the planner fallback, so table.exec.async-state.enabled selects the
> async functions with or without the hint.
> * State: the same early-fire state as the synchronous functions, with the
> same names, types and registration conditions: IntervalJoinLeftFired /
> IntervalJoinRightFired (MapState<Long, List<Boolean>>) and, for
> processing-time early fire on a row-time join,
> IntervalJoinLeftEarlyFireSchedule / IntervalJoinRightEarlyFireSchedule. A
> savepoint of the synchronous early-fire join restores into the async
> functions.
> * Logic: the same as the synchronous functions: speculative outer pads at the
> early-fire time, retraction when a later match arrives, no second pad at
> expiry; inner joins ignore the hint; processing-time early fire on a row-time
> join uses processing-time timers told apart by the timer's time domain.
> * Cleanup: the fired bits of expired buckets are deleted together with the
> buckets, using the cleanup of FLINK-41355 (one MapState#asyncPutAll of null
> values; asyncClear above 65,536 entries on full expiry).
> * No new configuration option, no JSON plan change and no ExecNode version
> change.
> * Docs: the interval join entry of the disaggregated state page no longer
> excludes the EARLY_FIRE hint.
> h2. Dependency
> Stacked on FLINK-41355, which depends on FLINK-41091 and FLINK-41095.
> h2. Tests
> * The early-fire harness cases of RowTimeIntervalJoinTest and
> ProcTimeIntervalJoinTest run against both the synchronous and the async
> functions.
> * The committed early-fire restore programs (interval-join-early-fire,
> interval-join-proc-time-early-fire) restore their synchronous savepoints with
> async state on.
> * The planner test expects the async operator for an EARLY_FIRE join with
> async state on.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)