[Improvement] Implement commitTransaction REST endpoint for Iceberg REST catalog
- Dominant language
- Java
- Stars
- 3.2k
- Forks
- 935
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 298
Description
### What would you like to be improved?
Implement the missing `POST /v1/{prefix}/transactions/commit` REST endpoint in Gravitino's Iceberg REST catalog server, as defined by the Iceberg REST Catalog API spec (`CommitTransactionRequest`).
The Iceberg REST spec defines `POST /v1/{prefix}/transactions/commit` for atomic multi-table commits. Gravitino's Iceberg REST server does not implement this endpoint. Clients performing atomic cross-table operations (e.g., Spark multi-table writes) will fail when targeting Gravitino as an Iceberg REST catalog.
### How should we improve?
- Add `IcebergTransactionOperations` JAX-RS class with `POST /v1/{prefix}/transactions/commit`
- Add `IcebergTransactionOperationDispatcher` interface + `Executor`/`EventDispatcher`/`HookDispatcher` chain
- Wire the endpoint into the existing server bootstrap
- Register the endpoint in `ConfigResponse` so clients discover it
- Add unit and integration tests
Contributor guide
Research direction
Start by reading the existing Iceberg REST server bootstrap and ConfigResponse to understand endpoint wiring and capability registration. Then trace the existing REST operation dispatch patterns before implementing the named IcebergTransactionOperations and dispatcher chain. Done means the POST endpoint is discoverable, supports CommitTransactionRequest, and has unit and integration test coverage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100