huaxingao opened a new pull request, #3803: URL: https://github.com/apache/polaris/pull/3803
<!-- ๐ Describe what changes you're proposing, especially breaking or user-facing changes. ๐ See https://github.com/apache/polaris/blob/main/CONTRIBUTING.md for more. --> This PR introduces optional Idempotency-Key handling for Iceberg REST mutation endpoints to support safe client retries. Adds an HTTP request/response filter that: - validates UUIDv7 keys, - reserves keys and enforces operation/resource binding (422 on conflict), - waits for in-progress duplicates and replays finalized responses, - never finalizes/replays 5xx. Persists a bounded response body plus an allowlisted set of response headers and replays with correct Content-Type. Adds optional heartbeats and background purge of expired keys. Advertises idempotency-key-lifetime via GET /v1/config for Polaris-managed (INTERNAL) catalogs only. Includes small config knobs for wait/lease TTL and TTL grace. **Note:** reconciliation/takeover for stale in-progress keys is intentionally deferred to a follow-up PR. ## Checklist - [ ] ๐ก๏ธ Don't disclose security issues! (contact [email protected]) - [ ] ๐ Clearly explained why the changes are needed, or linked related issues: Fixes # - [ ] ๐งช Added/updated tests with good coverage, or manually tested (and explained how) - [ ] ๐ก Added comments for complex logic - [ ] ๐งพ Updated `CHANGELOG.md` (if needed) - [ ] ๐ Updated documentation in `site/content/in-dev/unreleased` (if needed) -- 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]
