rdblue commented on code in PR #15126:
URL: https://github.com/apache/iceberg/pull/15126#discussion_r2789781014
##########
core/src/main/java/org/apache/iceberg/rest/CatalogHandlers.java:
##########
@@ -634,7 +635,16 @@ static TableMetadata commit(TableOperations ops,
UpdateTableRequest request) {
// apply changes
TableMetadata.Builder metadataBuilder =
TableMetadata.buildFrom(base);
- request.updates().forEach(update ->
update.applyTo(metadataBuilder));
+ try {
+ request.updates().forEach(update ->
update.applyTo(metadataBuilder));
+ } catch (RetryableValidationException e) {
+ // Sequence number conflicts from concurrent commits are
retryable by the client,
+ // but server-side retry won't help since the sequence
number is in the request.
+ // Wrap in ValidationFailureException to skip server retry,
return to client as
+ // CommitFailedException so the client can retry with
refreshed metadata.
+ throw new ValidationFailureException(
+ new CommitFailedException(e, "Commit conflict: %s",
e.getMessage()));
Review Comment:
This should not rethrow a different exception. Instead, add
`RetryableValidationException` to exceptions passed to `Tasks.onlyRetryOn`.
Also, this commit message is incorrect. We are not throwing
`CommitFailedException` because there was not a commit conflict.
--
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]