Skip to content

[gateway] Add the schema-aware batch write endpoint with per-row outcomes - #4126

Merged
fresh-borzoni merged 5 commits into
apache:mainfrom
beryllw:gateway/records-write
Aug 28, 2026
Merged

[gateway] Add the schema-aware batch write endpoint with per-row outcomes#4126
fresh-borzoni merged 5 commits into
apache:mainfrom
beryllw:gateway/records-write

Conversation

@beryllw

@beryllw beryllw commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Purpose

Linked issue: close #4084

Brief change log

Tests

API and Format

Documentation

@beryllw
beryllw marked this pull request as draft August 27, 2026 13:03
@beryllw
beryllw force-pushed the gateway/records-write branch from 0fe98a7 to 26f4007 Compare August 27, 2026 16:15
@beryllw
beryllw marked this pull request as ready for review August 27, 2026 16:16
@beryllw
beryllw force-pushed the gateway/records-write branch from 26f4007 to cfd9761 Compare August 27, 2026 16:24

@fresh-borzoni fresh-borzoni left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@beryllw Thank you for the PR, left some minor comments, PTAL

Comment thread fluss-gateway/src/protocol/rest/records.rs Outdated
Comment thread fluss-gateway/src/protocol/rest/records.rs Outdated
Comment thread fluss-gateway/src/protocol/rest/records.rs Outdated
Comment thread fluss-gateway/src/backend/client.rs Outdated
let error = match tokio::time::timeout_at(deadline.into(), future).await {
Ok(Ok(())) => continue,
Ok(Err(error)) => classify_unknown(error),
Err(_) => GatewayError::new(ErrorKind::DeadlineExceeded, UNKNOWN_COMPLETION),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A write to a dropped table waits out the whole deadline and ends up here, so the caller gets timeout and "a retry may duplicate this row" while nothing was written though. Can we surface table_not_found?

@beryllw beryllw Aug 28, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fluss-rust currently retries UnknownTableOrBucketException until the deadline, so I filed #4136 and added a TODO here to surface table_not_found once the client returns a definitive dropped-table error. WDYT?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Comment thread fluss-gateway/src/protocol/rest/records.rs Outdated
@beryllw

beryllw commented Aug 28, 2026

Copy link
Copy Markdown
Contributor Author

@naivedogger cc

@beryllw
beryllw requested a review from fresh-borzoni August 28, 2026 06:49

@fresh-borzoni fresh-borzoni left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@beryllw Thank you for the PR, LGTM 👍

@naivedogger naivedogger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

@fresh-borzoni
fresh-borzoni merged commit 4e372d5 into apache:main Aug 28, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FIP-49][gateway] Add schema-aware batch writes with ordered outcomes and admission limits

3 participants