Skip to content

chore: use rustfs for iceberg rest catalog - #1692

Open
TylerHillery wants to merge 1 commit into
masterfrom
tyler/chore/local-iceberg-rustfs
Open

TylerHillery wants to merge 1 commit into
masterfrom
tyler/chore/local-iceberg-rustfs

Conversation

@TylerHillery

Copy link
Copy Markdown
Contributor

What kind of change does this PR introduce?

Chore

What is the current behavior?

Currently we use apache/iceberg-rest-fixture:1.10.1 for local iceberg rest catalog

What is the new behavior?

Swap to rustfs which has built in s3 tables feature and iceberg rest catalog. One less contianer to run for local development and lets us test the s3 table sharding logic.

Additional context

N/A

@TylerHillery
TylerHillery requested a review from a team as a code owner November 10, 2026 21:45
Copilot AI balanced review requested due to automatic review settings November 10, 2026 21:45

Copilot AI 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.

🔵 Needs a closer look

The backend swap requires live RustFS 1.0.0 acceptance testing of bucket registration, SigV4 authentication, and create/drop behavior across both shards, but RustFS is unavailable in this review environment.

No open issues 🎉

What changed in this PR

Replaces the standalone local Iceberg REST catalog with RustFS’s built-in catalog, reducing container count and enabling local testing across two table-storage shards.

Changes:

  • Configures local and test environments to use RustFS with two warehouse buckets.
  • Makes the SigV4 service name and purge-on-drop behavior configurable while preserving AWS defaults.
  • Tests the new client options and corrects the acceptance-test partition specification field.
File Description
src/​storage/​protocols/​iceberg/​catalog/​rest-catalog-client.ts Supports configurable signing service and purge behavior.
src/​storage/​protocols/​iceberg/​catalog/​rest-catalog-client.test.ts Tests signing-service selection and purge query handling.
src/​storage/​protocols/​iceberg/​catalog/​index.ts Passes the configured service name into SigV4 authentication.
src/​config.ts Adds signing-service and purge-on-drop settings.
docker-compose.yml Switches to RustFS and removes the standalone catalog service.
acceptance/​specs/​iceberg.test.ts Uses partition-spec in table creation payloads.
.env.test.sample Configures tests for RustFS and two warehouse shards.
.docker/​docker-compose-infra.yml Initializes both RustFS table buckets and removes the catalog fixture.

Review effort: Balanced

@TylerHillery

Copy link
Copy Markdown
Contributor Author

@claude always review

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code review found no issues

No high-confidence issues detected in this change.

@coveralls

Copy link
Copy Markdown

Coverage Report for CI Build 42908125259

Coverage decreased (-0.01%) to 87.589%

Details

  • Coverage decreased (-0.01%) from the base build.
  • Patch coverage: 3 of 3 lines across 2 files are fully covered (100%).
  • 2 coverage regressions across 1 file.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

2 previously-covered lines in 1 file lost coverage.

File Lines Losing Coverage Coverage
src/storage/protocols/iceberg/catalog/index.ts 2 33.33%

Coverage Stats

Coverage Status
Relevant Lines: 16060
Covered Lines: 14509
Line Coverage: 90.34%
Relevant Branches: 10198
Covered Branches: 8490
Branch Coverage: 83.25%
Branches in Coverage %: Yes
Coverage Strength: 1355.26 hits per line

💛 - Coveralls

This branch has not been deployed

No deployments
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.

3 participants