Hi all,

Thanks everyone for the great feedback and the active discussion so far,
it's really helpful in shaping the proposal.

Following the design in FIP-48, I've put together a PoC[1] for anyone who
might be interested.

Given how the discussion has converged, I'd like to start the vote
tomorrow. If anyone would like more time for a final review, just let me
know.

[1] https://github.com/naivedogger/fluss/tree/feature/fluss-union-read

Best regards,
Jim Hu

Jim Hu <[email protected]> 于2026年8月7日周五 15:53写道:

> Hi Keith,
>
> Thanks for the review and the kind words. Good points!
>
> > 1. Have we considered timeout, liveness or retry semantics? ... It might
> be worth adding configurable timeouts. Without this, user will have to
> resort to wrapping the kernel with watchdog.
>
> The concern is valid, but I think it’s better not to add a reader-level
> timeout, to stay aligned with fluss-java. In fluss-java,
> LogScanner::poll(Duration) and BatchScanner::pollBatch(Duration) take a
> per-call timeout and return empty on timeout; higher-level retry and
> cancellation are left to the caller. StarRocks and Flink already manage
> query-level timeouts around connector reads, so a reader-level timeout
> would just duplicate that. Transient RPC errors are retried by the
> underlying client; a stuck or dead server shows up as ConnectionError. For
> slow PK tail reads, the caller can wrap stream.next() with their own
> timeout.
>
> > 2. On PK hash overlay, the proposal relies on the premise that tail is
> bounded and small. There's no defined behaviour when that premise fails.
> Could we specify a failure mode?
>
> Good point, the OOM risk is real. But I think it’s better to leave this
> out of V1 for now and track it as future work. I have noted this in the
> FIP. What do you think?
>
> > 3. Can we include in the proposal on the credential and security story
> for object storage? ... calling it out in the proposal would make it clear.
>
> Added a "Security and credentials" section to the FIP. In short:
> fluss-lake doesn't manage credentials itself. Auth for object storage (S3,
> OSS, GCS, etc.) is delegated to the underlying storage client. Credentials
> are resolved at reader construction time, never logged, and never put into
> splits. Splits only carry storage-relative paths.
>
> All changes are on the Confluence page. Appreciate the review!
>
> Best regards,
> Jim
>
>
> 2026年7月31日 下午6:58,Keith Lee <[email protected]> 写道:
>
> Hello Jim,
>
> Thank you for the FIP, the general direction looks solid. I have the
> following questions:
>
> 1. Have we considered timeout, liveness or retry semantics? A hung storage
> request or dead server would stall the stream indefinitely without timeout.
> This also apply for PK splits where merge must first materialise the whole
> changeling tail before emitting anything. It might be worth adding
> configurable timeouts. Without this, user will have to resort to wrapping
> the kernel with watchdog.
> 2. On PK hash overlay, the proposal relies on the premise that tail is
> bounded and small. There's no defined behaviour when that premise fails.
> Could we specify a failure mode? e.g. configurable memory / tail-size cap
> surfacing an error such as FlakeLakeError("snapshot too stale") rather than
> risking OOMing the host process?
> 3. Can we include in the proposal on the credential and security story for
> object storage? I appreciate that the proposal might be following Java side
> implementation, calling it out in the proposal would make it clear.
>
> It's a great FIP, looking forward to your response.
>
> Best regards
> Keith
>
>
>

Reply via email to