nevzheng opened a new pull request, #12227:
URL: https://github.com/apache/gravitino/pull/12227
### What changes were proposed in this pull request?
This is Stack 20.3 of 3 and depends on #12226.
- Add `POST
/management/v1/{prefix}/namespaces/{namespace}/tables/{table}/undrop`.
- Require an explicit deletion ID and one strong `If-Match` validator.
- Validate the deletion generation, route, authorization, retention, and
purge boundary.
- In one relational transaction, reactivate only rows stamped with that
deletion ID, restore the original table identity, release the name reservation,
and record the audit/change events.
- Make exact retries idempotent without duplicating audit events.
- Return the ordinary live table response after the transaction commits.
- Define sanitized `400`, `404`, `409`, `410`, `412`, and `428` outcomes.
This implementation does not register, unregister, or modify Iceberg files
during UNDROP.
Review order: #12224 → #12225 → #12226 → this PR.
Incremental diff:
https://github.com/nevzheng/gravitino/compare/codex/iceberg-rest-delete-20-02-deleted-table-reads...codex/iceberg-rest-delete-20-03-undrop
### Why are the changes needed?
This provides optimistic, generation-safe recovery of a retained Iceberg
REST table without introducing a recovery saga or external side effects.
Related: #12221
### Does this PR introduce _any_ user-facing change?
Yes. Authorized clients can restore an eligible retained table using its
deletion ID and current strong ETag.
### How was this patch tested?
Added lifecycle, Jersey resource, authorization-interceptor, replay, expiry,
ETag, route-concealment, audit, and ordinary-load regression tests. All 17
focused UNDROP tests and neighboring Stack 20 regression suites pass.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]