haizhou-zhao opened a new issue, #11554:
URL: https://github.com/apache/iceberg/issues/11554

   ### Apache Iceberg version
   
   None
   
   ### Query engine
   
   None
   
   ### Please describe the bug 🐞
   
   Part of: https://github.com/apache/iceberg/issues/11079
   
   ## Intro
   The test `TestCreateTable::testCreateTableCommitProperties` will only work 
on Hadoop/Hive Catalog but not on REST Catalog. Code link: 
https://github.com/apache/iceberg/blame/0a705b0637db484730eb4eece69ae6c4d52fd9da/spark/v3.5/spark/src/test/java/org/apache/iceberg/spark/sql/TestCreateTable.java#L353
   
   ## Error message
   ```
   TestCreateTable > testCreateTableCommitProperties() > catalogName = 
testrest, implementation = org.apache.iceberg.spark.SparkCatalog, config = 
{type=rest, cache-enabled=false, uri=http://localhost:34885/} FAILED
       java.lang.AssertionError: 
       Expecting actual throwable to be an instance of:
         org.apache.iceberg.exceptions.ValidationException
       but was:
         org.apache.iceberg.exceptions.BadRequestException: Malformed request: 
Table property commit.retry.num-retries must have integer value
        at 
org.apache.iceberg.rest.ErrorHandlers$DefaultErrorHandler.accept(ErrorHandlers.java:208)
        at 
org.apache.iceberg.rest.ErrorHandlers$TableErrorHandler.accept(ErrorHandlers.java:118)
        at 
org.apache.iceberg.rest.ErrorHandlers$TableErrorHandler.accept(ErrorHandlers.java:102)
        ...(164 remaining lines not displayed - this can be changed with 
Assertions.setMaxStackTraceElementsDisplayed)
           at 
org.apache.iceberg.spark.sql.TestCreateTable.testCreateTableCommitProperties(TestCreateTable.java:366)
   ```
   
   ## Root cause
   REST client will throw `BadRequestException` (`HTTP 400`) where a 
`ValidationException` will be thrown by Hive/Hadoop Catalog in similar 
situation. REST client will simply categorize `ValidationException` as `HTTP 
400` and throw `BadRequestException` instead. This is currently determined by 
REST's `ErrorHandlers`: 
https://github.com/apache/iceberg/blob/0a705b0637db484730eb4eece69ae6c4d52fd9da/core/src/main/java/org/apache/iceberg/rest/ErrorHandlers.java#L202
   
   ## Further consideration
   Two options going forward:
   1. Unify Hive/Hadoop/REST interface so all of them throw the same type of 
exception in the cases that this test is covering for
   2. Accept that Hive/Hadoop/REST could throw different type of exception in 
these cases and modify the test itself
   
   ### Willingness to contribute
   
   - [ ] I can contribute a fix for this bug independently
   - [ ] I would be willing to contribute a fix for this bug with guidance from 
the Iceberg community
   - [ ] I cannot contribute a fix for this bug 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: issues-unsubscr...@iceberg.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to