JonasJ-ap opened a new pull request, #6746: URL: https://github.com/apache/iceberg/pull/6746
## Problem Addressed This PR fix the problem described in issue #6715 by using reflection to instantiate the httpclient configuration impl class to avoid runtime deps of both `url-connection-client` and `apache-httpclient` ## Test Environment Spark3.3, Scala 2.12. scripts to spawn spark shell: ```bash BRANCH_NAME=bug_fix_aws_httpclient_conflict_prefix_map DEPENDENCIES="" # add AWS dependnecy AWS_SDK_VERSION=2.17.257 AWS_MAVEN_GROUP=software.amazon.awssdk AWS_PACKAGES=( "apache-client" "s3" "glue" "kms" "iam" "sts" "dynamodb" ) for pkg in "${AWS_PACKAGES[@]}"; do DEPENDENCIES+="$AWS_MAVEN_GROUP:$pkg:$AWS_SDK_VERSION," done JARS="iceberg-spark-runtime-3.3_$BRANCH_NAME.jar" # start Spark SQL client shell spark-shell --packages=$DEPENDENCIES --jars=$JARS\ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --conf spark.sql.catalog.demo=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.demo.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog \ --conf spark.sql.catalog.demo.io-impl=org.apache.iceberg.aws.s3.S3FileIO \ --conf spark.sql.catalog.demo.warehouse=s3://gluetestjonas/warehouse \ --conf spark.sql.catalog.demo.http-client.type=apache ``` ### Test commands: ```bash scala> val data = spark.range(0, 10) scala> data.writeTo("demo.default.test1").create() ``` ### Before the fix: will raise `java.lang.NoClassDefFoundError` ```bash java.lang.NoClassDefFoundError: software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient$Builder at java.base/java.lang.Class.getDeclaredMethods0(Native Method) at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3458) at java.base/java.lang.Class.getDeclaredMethod(Class.java:2726) at java.base/java.io.ObjectStreamClass.getPrivateMethod(ObjectStreamClass.java:1525) at java.base/java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:413) at java.base/java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:384) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at java.base/java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:384) at java.base/java.io.ObjectStreamClass$Caches$1.computeValue(ObjectStreamClass.java:110) at java.base/java.io.ObjectStreamClass$Caches$1.computeValue(ObjectStreamClass.java:107) at java.base/java.io.ClassCache$1.computeValue(ClassCache.java:73) at java.base/java.io.ClassCache$1.computeValue(ClassCache.java:70) at java.base/java.lang.ClassValue.getFromHashMap(ClassValue.java:229) at java.base/java.lang.ClassValue.getFromBackup(ClassValue.java:211) at java.base/java.lang.ClassValue.get(ClassValue.java:117) at java.base/java.io.ClassCache.get(ClassCache.java:84) at java.base/java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:363) at ``` ### After the fix Successfully create the table   -- 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 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