Hi all,

Thanks, Zhe, for confirming.

Following up on the wiki request above. Could a committer please create the
FLIP page from the Google Doc and assign a number, or grant me write access
to the Flink wiki?

Best,
Spoorthi Basu

On Sat, Oct 17, 2026 at 10:45 PM Zhe Wang <[email protected]> wrote:

> Hi Spoorthi,
>
> Thanks for addressing this and adding the blocked-read tests, including the
> cases where the stream is still being opened. The cancellation behavior you
> describe addresses my concern. I have no further questions on this point.
>
> Best regards,
> Zhe Wang
>
>
> Spoorthi Basu <[email protected]> 于2026年10月17日周六 03:48写道:
>
> > Hi Zhe,
> >
> > Thanks for raising this. It did not: a replaced reset, or one whose
> > coordinator was closed, kept reading to the end, and its stream was only
> > closed once the read finished. I’ve updated the FLIP and the prototype so
> > that when a reset is replaced by a later one, or the coordinator is
> closed,
> > the read for that reset is stopped by closing its stream if it is still
> in
> > progress. Closing a stream can wait for a read in progress to return, so
> it
> > is done from a separate thread rather than the JobManager main thread. If
> > the file is still being opened when the read is stopped, the stream is
> > closed as soon as the open finishes. A stopped read does not fail the
> job.
> > I’ve also added a test with a stream whose reads block until it is
> closed.
> > It checks that the stream is closed and the reading thread finishes, for
> a
> > later reset and for closing the coordinator, each while the stream is
> being
> > read and while it is still being opened.
> >
> > Best,
> > Spoorthi Basu
> >
> > On Fri, Oct 16, 2026 at 10:06 AM Zhe Wang <[email protected]> wrote:
> >
> > > Hi Spoorthi,
> > >
> > > One remaining question about the lifecycle of asynchronous state reads:
> > the
> > > FLIP explains that a superseded reset's result is discarded. Does
> > > superseding a reset, or closing the coordinator, also cancel the
> > > outstanding read and release its input stream?
> > > With large coordinator state and slow storage, repeated resets could
> > > otherwise leave multiple reads in flight even though only the latest
> > result
> > > is needed. Could we cover this with a blocked-read test that checks
> > > resource cleanup, in addition to the existing test that verifies the
> > later
> > > reset takes precedence?
> > >
> > > Best,
> > > Zhe Wang
> > >
> > >
> > > Spoorthi Basu <[email protected]> 于2026年10月15日周四 20:27写道:
> > >
> > > > Hi all,
> > > >
> > > > Thanks everyone for the comments and suggestions. Since there are no
> > > > further concerns, I’d like to move this FLIP to the wiki and start a
> > > vote.
> > > > I’ve requested an Apache Confluence account (username: spoorthibasu).
> > > Could
> > > > a committer please approve it and grant write access to the Flink
> wiki,
> > > or
> > > > create the FLIP page and assign a number?
> > > >
> > > > Best,
> > > > Spoorthi Basu
> > > >
> > > > On Wed, Oct 14, 2026 at 8:09 AM Spoorthi Basu <
> [email protected]>
> > > > wrote:
> > > >
> > > > > Hi Sai Krishna,
> > > > >
> > > > > Thank you for the careful review and the +1. I appreciate you
> writing
> > > > down
> > > > > everything you checked.
> > > > >
> > > > > Best,
> > > > > Spoorthi Basu
> > > > >
> > > > >
> > > > > On Wed, Oct 14, 2026 at 4:45 AM Krishna Sai <[email protected]>
> > > wrote:
> > > > >
> > > > >> Hi Spoorthi,
> > > > >>
> > > > >> Thanks for the FLIP. I went through it along with the prototype
> > > branch,
> > > > >> looking at the parts I thought were riskiest, and found nothing to
> > > flag.
> > > > >>
> > > > >> What I checked, in case it saves someone a second pass:
> > > > >>
> > > > >> - Checkpoints#metadataSerializerFor picks the version on both
> write
> > > > >>   paths that exist outside tests, PendingCheckpoint and
> > > > >>   SavepointOutputFormat, so the State Processor API cannot write
> > > > >>   version 6 metadata with a file handle in it. The older
> serializers
> > > > >>   reject that on write too, not only on read.
> > > > >> - The write is in finalizeCheckpoint, so it is on the same thread
> > that
> > > > >>   already writes _metadata: the ioExecutor on the acknowledge
> path,
> > > the
> > > > >>   checkpoint timer thread when the tasks have already
> acknowledged.
> > > > >>   Never the main thread.
> > > > >> - File merging cannot pick up the file, since the merging location
> > is
> > > > >>   only built on the task side.
> > > > >> - The new threshold can do without a maximum because the stream it
> > > uses
> > > > >>   passes a zero inline threshold, so unlike data-inline-threshold
> > its
> > > > >>   value never becomes the write buffer size.
> > > > >> - Savepoint disposal already deletes the file through
> > > > >>   CheckpointMetadata#dispose, and StreamGraph is the only place
> that
> > > > >>   builds JobCheckpointingSettings, so both options reach every job
> > > type.
> > > > >>
> > > > >> +1 from me, non binding.
> > > > >>
> > > > >> Best,
> > > > >> Sepuri Sai Krishna
> > > > >>
> > > > >> On Tue, Oct 13, 2026 at 1:03 PM Hang Ruan <
> [email protected]>
> > > > >> wrote:
> > > > >> >
> > > > >> > Hi Spoorthi,
> > > > >> >
> > > > >> > Thanks for the FLIP. Would it make sense to use a separate
> inline
> > > > >> > threshold for coordinator state, for example:
> > > > >> >
> > > > >> >   execution.checkpointing.coordinator-state-inline-threshold
> > > > >> >
> > > > >> > The existing execution.checkpointing.data-inline-threshold
> > defaults
> > > to
> > > > >> > 20 KB and also controls task state. Reusing it means that
> enabling
> > > > this
> > > > >> > feature may create many small coordinator state files, while
> > > > increasing
> > > > >> it
> > > > >> > would also change task-state behavior.
> > > > >> >
> > > > >> > A separate threshold would allow users to balance JobManager
> > memory
> > > > and
> > > > >> > checkpoint file overhead independently. WDYT?
> > > > >> >
> > > > >> > Best,
> > > > >> > Hang
> > > > >> >
> > > > >> > On Mon, Oct 12, 2026 at 3:29 PM Yanquan Lv <[email protected]>
> > > wrote:
> > > > >> > >
> > > > >> > > Thanks for proposing this valuable optimization for large
> > > > coordinator
> > > > >> > > state. I’m concerned, however, about enabling
> > > > >> > > execution.checkpointing.coordinator-state-in-file.enabled by
> > > > default.
> > > > >> > > Although V7 is written only when coordinator state is actually
> > > > stored
> > > > >> in a
> > > > >> > > file, a FLIP-27 source may begin producing V7 checkpoints
> > > > >> automatically
> > > > >> > > once its state exceeds the inline threshold, making those
> > > > checkpoints
> > > > >> and
> > > > >> > > related HA entries unreadable by earlier Flink versions and
> > > reducing
> > > > >> > > rollback safety immediately after an upgrade. The benefit is
> > > > >> significant
> > > > >> > > for large coordinator state but negligible when state remains
> > > > inline.
> > > > >> Could
> > > > >> > > we default this option to false initially, allowing users to
> opt
> > > in
> > > > >> after
> > > > >> > > the rollback observation period, and reconsider enabling it by
> > > > >> default once
> > > > >> > > more production experience is available?
> > > > >> > >
> > > > >> > >
> > > > >> > > Spoorthi Basu <[email protected]> 于2026年10月9日周五 10:01写道:
> > > > >> > >
> > > > >> > > > Hi all,
> > > > >> > > >
> > > > >> > > > Following up on this FLIP, which stores large coordinator
> > state
> > > in
> > > > >> its own
> > > > >> > > > file instead of inline in the checkpoint metadata. Any
> > feedback
> > > on
> > > > >> the
> > > > >> > > > proposal would be much appreciated.
> > > > >> > > >
> > > > >> > > > Thank you,
> > > > >> > > > Spoorthi Basu
> > > > >> > > >
> > > > >> > > > On Mon, Sep 28, 2026 at 6:07 PM Spoorthi Basu <
> > > > >> [email protected]>
> > > > >> > > > wrote:
> > > > >> > > >
> > > > >> > > > > Hi everyone,
> > > > >> > > > >
> > > > >> > > > > I'd like to start a discussion on FLIP-XXX: Store large
> > > operator
> > > > >> > > > > coordinator state outside the checkpoint metadata [1].
> > > > >> > > > >
> > > > >> > > > > Operator coordinator state, such as a source's split
> > > enumerator
> > > > >> state, is
> > > > >> > > > > always stored inline in the checkpoint's _metadata file,
> > > > whatever
> > > > >> its
> > > > >> > > > size.
> > > > >> > > > > The JobManager also keeps a copy of it in memory for every
> > > > >> retained
> > > > >> > > > > checkpoint, and with high availability it is written a
> > second
> > > > >> time into
> > > > >> > > > HA
> > > > >> > > > > storage on every checkpoint. As sources track more splits,
> > > this
> > > > >> state has
> > > > >> > > > > grown large: an Iceberg user reports enumerator state
> past 1
> > > GB
> > > > >> [2].
> > > > >> > > > >
> > > > >> > > > > The FLIP stores coordinator state above
> > > > >> > > > > execution.checkpointing.data-inline-threshold in its own
> > file,
> > > > for
> > > > >> > > > > coordinators that restore asynchronously (including every
> > > > FLIP-27
> > > > >> > > > source).
> > > > >> > > > > The coordinator reads the file itself when it is reset,
> off
> > > the
> > > > >> > > > JobManager
> > > > >> > > > > main thread, which is the condition FLINK-17674 named for
> > > > >> relaxing its
> > > > >> > > > > restriction [3]. Only checkpoints that use this get a new
> > > > metadata
> > > > >> > > > version,
> > > > >> > > > > and a new option turns it off for jobs that need to keep
> the
> > > > >> current
> > > > >> > > > > format. The FLIP does not change how much memory the
> > > enumerator
> > > > >> itself
> > > > >> > > > > uses, or the 2 GB limit on a single coordinator's state.
> > > > >> > > > >
> > > > >> > > > > On a prototype [4], the _metadata of a job with 120 MB of
> > > > >> enumerator
> > > > >> > > > state
> > > > >> > > > > goes from 120.8 MB to 1.4 KB, and a job with 30 MB of
> > > enumerator
> > > > >> state
> > > > >> > > > and
> > > > >> > > > > three retained checkpoints goes from 145 MiB to 58 MiB of
> > used
> > > > >> heap in a
> > > > >> > > > > local MiniCluster.
> > > > >> > > > >
> > > > >> > > > > Looking forward to your feedback.
> > > > >> > > > >
> > > > >> > > > > Best,
> > > > >> > > > > Spoorthi Basu
> > > > >> > > > >
> > > > >> > > > > [1]
> > > > >> > > > >
> > > > >> > > >
> > > > >>
> > > >
> > >
> >
> https://docs.google.com/document/d/1AYWH6J-KsRGfrsMSy8Fi1kbREBiObPoZIb9JRnXhatU
> > > > >> > > > > [2] https://issues.apache.org/jira/browse/FLINK-39754
> > > > >> > > > > [3] https://issues.apache.org/jira/browse/FLINK-17674
> > > > >> > > > > [4]
> > > > >> > > > >
> > > > >> > > >
> > > > >>
> > > >
> > >
> >
> https://github.com/spoorthibasu/flink/tree/flip-coordinator-state-prototype
> > > > >> > > > >
> > > > >> > > >
> > > > >>
> > > > >
> > > >
> > >
> >
>

Reply via email to