huaxingao opened a new issue, #13867: URL: https://github.com/apache/iceberg/issues/13867
### Feature Request / Improvement Retries of mutation calls (due to network timeouts, transient 5xx responses, or client retries) can lead to duplicate resource creation or unintended side effects if the same operation is executed multiple times. for example: - An Iceberg client sends a POST updateTable request. - The catalog server successfully committed the change to persistent. But a transient network error between the catalog server and the persistent led catalog server to return 503. - The client cannot tell if the commit succeeded, so it retries the same commit request. - On retry, the server detects that the latest table state doesn’t match the base from update table request and responds with 409 Conflict. - The client interprets the 409 as a failed commit and deletes the associated metadata files (manifest list). - Result: metadata corruption — the table snapshot references a deleted manifest list file. In order to solve this problem, we can let clients to include an Idempotency-Key in mutation requests. The server uses this key together with a canonical form of the request payload to detect duplicates and ensure safe retries ### Query engine None ### Willingness to contribute - [ ] I can contribute this improvement/feature independently - [ ] I would be willing to contribute this improvement/feature with guidance from the Iceberg community - [ ] I cannot contribute this improvement/feature at this time -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
