Hi devs, After a long time, i will like to reinitiate the discussions on FIP-17.
I made quite a few updates on the FIP, which you can find here: https://cwiki.apache.org/confluence/display/FLUSS/FIP-17+Primary+Key+Table+Snapshot+Queries and updated the title to better reflect the goal. Let me know if it makes sense. Moreover in the end of the proposal, you will find a section as *extras *which has a suggestion for a heartbeat mechanism. However, during my PoC, I found that this is not really needed, but I would like your thoughts and feedback first. Best, Giannis On Wed, Oct 29, 2025 at 2:45 PM Giannis Polyzos <[email protected]> wrote: > Yang, thank you for your thoughtful comments. > > Indeed, we are streaming the results to the client; however, it's still a > batch operation. We could use "KV store (or PK table) Snapshot Query" or > something similar, since we are querying a RocksDB snapshot. WDYT? > The newly introduced KvBatchScanner should be able to be reused from both > the client itself - assume a scenario that I want to periodically query the > full RocksDB KV store to power real-time dashboards - as well as Flink > (with more engines to follow later). > It issues requests to fetch the results per bucket and transmit them back > to the client. > > > Could you elaborate on why the new KvBatchScanner isn't reusable? > I think the reasoning here is that reach requests create a new > KvBatchScanner, which polls the records and then closes automatically. Any > reason you see this as a limitation, and we should consider making it > reusable? > > The design aims mainly for the Fluss client API.. Should we add an > integration design with Flink? Wang Cheng, WDYT? > > Best, > Giannis > > > > On Tue, Oct 28, 2025 at 4:44 AM Yang Wang <[email protected]> > wrote: > >> Hi Cheng, >> >> Thank you for driving this excellent work! Your FIP document shows great >> thought and initiative. I've gone through it and have some questions and >> suggestions that I hope can further enhance this valuable contribution. >> >> 1、Regarding the Title, I believe we could consider changing it to "Support >> full scan in batch mode for PrimaryKey Table". The term "Streaming" might >> cause confusion with Flink's streaming/batch modes, and this revised title >> would provide better clarity. >> >> 2、In the Motivation section, I think there are two particularly important >> benefits worth highlighting: (1) OLAP engines will be able to perform full >> snapshot reads on Fluss primary-key tables. (2) This approach can replace >> the current KvSnapshotBatchScanner, allowing the Fluss client to eliminate >> its RocksDB dependency entirely. >> >> 3、Concerning the Proposed Changes, could you clarify when exactly the >> client creates a KV snapshot on the server side, and when we send the >> bucket_scan_req? >> >> Let me share my thinking on this: When Flink attempts to read from a >> PrimaryKey table, the FlinkSourceEnumerator in the JobMaster generates >> HybridSnapshotLogSplit and dispatches them to SplitReaders running on the >> TaskManager. The JobMaster doesn't actually read data—it merely defines >> and >> manages the splits. Therefore, we need to ensure the JM has sufficient >> information to determine the boundary of the KV snapshot and the >> startOffset of the LogSplit. >> >> I suggest we explicitly create a snapshot (or as you've termed it, a >> new_scan_request) on the server side. This way, the FlinkSourceEnumerator >> can use it to define a HybridSnapshotLogSplit, and the SplitReaders can >> perform pollBatch operations on this snapshot (which would be bound to the >> specified scanner_id). >> >> 4、 Could you elaborate on why the new KvBatchScanner isn't reusable? >> What's >> the reasoning behind this limitation? (I believe RocksDB iterators do >> support the seekToFirst operation.) If a TaskManager fails over before a >> checkpoint, rescanning an existing snapshot seems like a natural >> requirement. >> >> 5、I think it would be beneficial to include some detailed design aspects >> regarding Flink's integration with the new BatchScanner. >> >> Overall, this is a solid foundation for an important enhancement. Looking >> forward to discussing these points further! >> >> Best regards, Yang >> >> Wang Cheng <[email protected]> 于2025年10月22日周三 17:09写道: >> >> > Hi all, >> > >> > >> > As of v0.8, Fluss only supports KV snapshot batch scan and limit KV >> batch >> > scan. The former approach is constrained by snapshot availability and >> > remote storage performance, while the later one is only applicable to >> > queries with LIMIT clause and risks high memory pressure. >> > >> > >> > To address those limitations, Giannis Polyzos and I are writing to >> propose >> > FIP-17: a general-purpose streaming KV scan for Fluss [1]. >> > >> > >> > Any feedback and suggestions on this proposal are welcome! >> > >> > >> > [1]: >> > >> https://cwiki.apache.org/confluence/display/FLUSS/FIP-17+Streaming+KV+Scan+RPC >> > >> > Regards, >> > Cheng >> > >> > >> > >> > >> >
