ebyhr opened a new pull request, #16732:
URL: https://github.com/apache/iceberg/pull/16732

   `ResolvingFileIO` throws `NoClassDefFoundError` in Trino / Starburst because 
the project disallows Hadoop dependency as #14284 explains. This PR avoid 
implementing `HadoopConfigurable` to avoid the exception. 
   
   ```
   java.util.concurrent.CompletionException: io.trino.spi.TrinoException: Error 
processing metadata for table jcf_scan_plan_test.test_table_1
        at 
java.base/java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:323)
        at 
java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:359)
        at 
java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:364)
        at 
java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:1015)
        at 
java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:995)
        at 
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:531)
        at 
java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2221)
        at io.airlift.concurrent.MoreFutures$2.onFailure(MoreFutures.java:495)
        at 
com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1111)
        at 
com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30)
        at 
com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1021)
        at 
com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:784)
        at 
com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:533)
        at 
com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.afterRanInterruptiblyFailure(TrustedListenableFutureTask.java:138)
        at 
com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:89)
        at 
com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:80)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
        at java.base/java.lang.Thread.run(Thread.java:1474)
   Caused by: io.trino.spi.TrinoException: Error processing metadata for table 
jcf_scan_plan_test.test_table_1
        at 
io.trino.plugin.iceberg.IcebergExceptions.translateMetadataException(IcebergExceptions.java:54)
        at 
io.trino.plugin.iceberg.IcebergSplitSource.lambda$getNextBatch$2(IcebergSplitSource.java:282)
        at 
java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:1011)
        ... 15 more
   Caused by: java.lang.IllegalArgumentException: Cannot initialize FileIO 
implementation org.apache.iceberg.io.ResolvingFileIO: Cannot find constructor 
for interface org.apache.iceberg.io.FileIO
        Missing org.apache.iceberg.io.ResolvingFileIO 
[java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configurable]
        at org.apache.iceberg.CatalogUtil.loadFileIO(CatalogUtil.java:407)
        at 
org.apache.iceberg.rest.RESTTableScan.scanFileIO(RESTTableScan.java:238)
        at 
org.apache.iceberg.rest.RESTTableScan.planTableScan(RESTTableScan.java:213)
        at 
org.apache.iceberg.rest.RESTTableScan.planFiles(RESTTableScan.java:196)
        at 
io.trino.plugin.iceberg.IcebergSplitSource.planFiles(IcebergSplitSource.java:371)
        at 
io.trino.plugin.iceberg.IcebergSplitSource.getNextBatchInternal(IcebergSplitSource.java:305)
        at 
io.trino.plugin.iceberg.IcebergSplitSource.lambda$getNextBatch$1(IcebergSplitSource.java:277)
        at 
com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:128)
        at 
com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:74)
        ... 4 more
   Caused by: java.lang.NoSuchMethodException: Cannot find constructor for 
interface org.apache.iceberg.io.FileIO
        Missing org.apache.iceberg.io.ResolvingFileIO 
[java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configurable]
        at 
org.apache.iceberg.common.DynConstructors.buildCheckedException(DynConstructors.java:253)
        at 
org.apache.iceberg.common.DynConstructors$Builder.buildChecked(DynConstructors.java:211)
        at org.apache.iceberg.CatalogUtil.loadFileIO(CatalogUtil.java:404)
        ... 12 more
        Suppressed: java.lang.NoClassDefFoundError: 
org/apache/hadoop/conf/Configurable
                at java.base/java.lang.ClassLoader.defineClass1(Native Method)
                at 
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
                at 
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144)
                at 
java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:454)
                at 
java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:367)
                at 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557)
                at 
io.trino.server.PluginClassLoader.loadClass(PluginClassLoader.java:124)
                at 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
                at java.base/java.lang.ClassLoader.defineClass1(Native Method)
                at 
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
                at 
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144)
                at 
java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:454)
                at 
java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:367)
                at 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557)
                at 
io.trino.server.PluginClassLoader.loadClass(PluginClassLoader.java:124)
                at 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
                at java.base/java.lang.Class.forName0(Native Method)
                at java.base/java.lang.Class.forName(Class.java:547)
                at 
org.apache.iceberg.common.DynConstructors$Builder.classForName(DynConstructors.java:224)
                at 
org.apache.iceberg.common.DynConstructors$Builder.impl(DynConstructors.java:145)
                at 
org.apache.iceberg.CatalogUtil.loadFileIO(CatalogUtil.java:403)
                ... 12 more
        Caused by: java.lang.ClassNotFoundException: 
org.apache.hadoop.conf.Configurable
                at 
java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:377)
                at 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557)
                at 
io.trino.server.PluginClassLoader.loadClass(PluginClassLoader.java:124)
                at 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
                ... 33 more
   ```


-- 
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]

Reply via email to