apache / apache/fluss

[rust] Support bounded write delivery (delivery timeout)

Open
#3,861 7 comments 0 reactions 1 assignee Claimed by @naivedogger View on GitHub
Dominant language
Java
Stars
2.1k
Forks
625
Avg merge
3d 14h
Merged PRs (30d)
97

Description

### Search before asking

- [x] I searched in the [issues](https://github.com/apache/fluss/issues) and found nothing similar.

### Description

### Description

Today the only bound on write delivery is the retry count(`client.writer.retries`, default INT32_MAX) — effectively unbounded. `client.writer.batch-timeout` does not help: it is a linger (when to send a non-full batch), not a delivery bound. So a record can stay in the accumulator + retry loop forever (e.g. on leader-not-available), and abandoning the write future does not remove it — a write reported as failed by the caller can still be applied later.

Add a Kafka `delivery.timeout.ms`-style bound, matching KIP-91 semantics:

- Each record carries a deadline from the moment it is appended to the accumulator.
- Batches that expire before being sent fail deterministically and are removed from the queue.
- Retries stop once the deadline is reached.

Subtask of #3854 (Fluss REST Gateway umbrella), which runs each write request under an end-to-end deadline and must guarantee that entries expired before send never land afterwards. (Note: the Java client has the same gap; this issue covers fluss-rust only.)

### Willingness to contribute

- [ ] I'm willing to submit a PR!

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.