Hi, Piotrek.
Thanks a lot for putting this FLIP together. After modifying a streaming job, 
having to restart it statelessly often comes at a considerable time and 
resource cost for users. So big +1 from me.
I've gone through the FLIP and it looks good to me overall. I just have a few 
questions I'd like to check with you:
1. If the batch phase produces a savepoint in the standard format, my 
understanding is that the streaming phase could restore from it directly via 
`state.savepoints.dir`. If that's true, would we still need to set 
`execution.state-catch-up.mode: BATCH` in the streaming phase, or am I missing 
something here?
2. Regarding sources, I'm wondering whether it might have an interface to 
indicate whether a source supports the bounded-to-unbounded transition. My 
thinking is that existing bounded sources in current connectors don't record 
their own state when they finish, so the subsequent streaming phase would have 
nothing to pick up from. Curious whether you've already considered how to 
handle this. 
3. I also have another rather rough idea around execution in the batch phase, 
and I'd be very interested in your thoughts on it. For very large full 
datasets, a single failure midway can invalidate hours of earlier batch 
computation. Even with fine-grained restarts in the batch phase down the road, 
a single full-scale run would still need to retain the blocking shuffle 
partitions for the entire backlog until they're consumed,so both TM disk 
pressure and the recomputation cost would scale with the full dataset. The idea 
would be to keep catch-up as a single job, but internally split the historical 
data into N shards(or N consecutive segments of data) that are consumed 
sequentially — producing a complete checkpoint as each finishes, and producing 
the save point handed over to the streaming phase when the last one completes. 
This feels somewhat in the spirit of what FLIP-309[1] describes, where 
checkpointing isn't disabled during backlog processing but simply happens at a 
lower frequency. That said, I may well be overlooking some complexity here, so 
please feel free to point out anything I've missed.
Thanks again for the great work! Looking forward to your thoughts.


[1] 
https://cwiki.apache.org/confluence/spaces/FLINK/pages/255069517/FLIP-309+Support+using+larger+checkpointing+interval+when+source+is+processing+backlog.



--

    Best!
    Xuyang



At 2026-08-07 21:53:16, "Piotr Nowojski" <[email protected]> wrote:
>Hi all!
>
>I would like to start a discussion on state catch-up using BATCH execution
>mode [1]
>
>FLIP-134 [2] introduced BATCH execution mode as a way to execute more
>efficiently DataStream API jobs on bounded inputs. As even stated in the
>documentation [3]:
>
>> One obvious outlier is when you want to use a bounded job to bootstrap
>some job state that you
>> then want to use in an unbounded job. For example, by running a bounded
>job using
>> STREAMING mode, taking a savepoint, and then restoring that savepoint on
>an unbounded job.
>> This is a very specific use case and one that might soon become obsolete
>when we allow
>> producing a savepoint as additional output of a BATCH execution job.
>
>producing a savepoint from BATCH execution job has always been planned as a
>future extension. FLIP-605 [1] was created to implement this.
>
>The idea is that instead of waiting sometimes hours to process a long
>backlog of records using STREAMING execution mode, users could submit their
>jobs in BATCH execution mode, create a savepoint at the end, and then
>recover their jobs from that savepoint and continue running them in
>STREAMING. Regardless if those jobs are using DataStream API or Flink
>Streaming SQL/Table API.
>
>For more information please take a look into the FLIP document itself [1].
>
>Disclosure, in Confluent/IBM we have a working early access version of this
>feature, hence we already have a pretty good understanding of what needs to
>be done to make it work and what are the expected results.
>
>Best,
>Piotrek
>
>[1]
>https://cwiki.apache.org/confluence/spaces/FLINK/pages/446071315/FLIP-605+State+catch-up+of+streaming+jobs+state+using+BATCH+execution+mode
>[2]
>https://cwiki.apache.org/confluence/spaces/FLINK/pages/158871522/FLIP-134+Batch+execution+for+the+DataStream+API
>[3]
>https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/execution_mode/#when-canshould-i-use-batch-execution-mode

Reply via email to