martinskeem opened a new issue, #16659:
URL: https://github.com/apache/iceberg/issues/16659
### Query engine
Kafka Connect
### Question
Hi,
We use the Iceberg connector with Kafka Connect to sink data to Azure
Databricks using their Iceberg catalog implementation.
After some time of successful operation, we see errors such as the one below
after which there is no progression in the sink connector.
```
Coordinator iceberg-sink-connector-epe-log-topics-v1-0 failed to commit for
commit 51a29b27-d1b1-45f4-b6f3-61228b4c8481, will try again next
cycle","debug_stacktrace":"org.apache.iceberg.exceptions.BadRequestException:
Malformed request: Commit validation failed. Please contact Databricks support
for assistance. [ErrorCode: 2010]
at
org.apache.iceberg.rest.ErrorHandlers$DefaultErrorHandler.accept(ErrorHandlers.java:341)
at
org.apache.iceberg.rest.ErrorHandlers$CommitErrorHandler.accept(ErrorHandlers.java:137)
at
org.apache.iceberg.rest.ErrorHandlers$CommitErrorHandler.accept(ErrorHandlers.java:119)
at org.apache.iceberg.rest.HTTPClient.throwFailure(HTTPClient.java:242)
at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:347)
at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:299)
at org.apache.iceberg.rest.BaseHTTPClient.post(BaseHTTPClient.java:112)
at org.apache.iceberg.rest.RESTClient.post(RESTClient.java:150)
at
org.apache.iceberg.rest.RESTTableOperations.commit(RESTTableOperations.java:206)
at
org.apache.iceberg.SnapshotProducer.lambda$commit$2(SnapshotProducer.java:501)
at
org.apache.iceberg.util.Tasks$Builder.runTaskWithRetry(Tasks.java:413)
at
org.apache.iceberg.util.Tasks$Builder.runSingleThreaded(Tasks.java:219)
at org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:203)
at org.apache.iceberg.util.Tasks$Builder.run(Tasks.java:196)
at org.apache.iceberg.SnapshotProducer.commit(SnapshotProducer.java:473)
at
org.apache.iceberg.connect.channel.Coordinator.commitToTable(Coordinator.java:286)
at
org.apache.iceberg.connect.channel.Coordinator.lambda$doCommit$1(Coordinator.java:173)
at
org.apache.iceberg.util.Tasks$Builder.runTaskWithRetry(Tasks.java:413)
at org.apache.iceberg.util.Tasks$Builder$1.run(Tasks.java:315)
at
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source)
at java.base/java.lang.Thread.run(Unknown Source)
```
We have done some analysis and it appears that Databricks on commit
validation failures returns a HTTP 400 status code and _not_ HTTP 409 error
which appears to be how the Iceberg code recognises commit validation failures
- after which it retries (optimistic concurrency).
I have a couple of questions:
1. Is HTTP 409 the Iceberg specification for commit validation failures? Is
it formalised somewhere? If so, I would like to include this in a bug report to
Databricks (if not, I wonder if it will be accepted as a bug).
2. Would you consider a PR that works around the issues such as this #16644
Br,
Martin
--
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]