apache / apache/gravitino

[Improvement] Implement commitTransaction REST endpoint for Iceberg REST catalog

Open
#10,674 0 comments 0 reactions 0 assignees View on GitHub
improvement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.