This is an automated email from the ASF dual-hosted git repository.

diqiu50 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new 704b6c6024 [#14315] fix(glue): Move GravitinoGlueCredentialsProvider 
to bundles/aws (#14316)
704b6c6024 is described below

commit 704b6c6024b1b3a172d6bf5d0c8f89f452c1854a
Author: Yuhui <[email protected]>
AuthorDate: Thu Oct 29 10:02:49 2026 +0800

    [#14315] fix(glue): Move GravitinoGlueCredentialsProvider to bundles/aws 
(#14316)
    
    ### What changes were proposed in this pull request?
    
    Move `GravitinoGlueCredentialsProvider` from `catalog-common` to
    `bundles/aws`, which is not on the server classpath. The Glue catalog
    and Spark connectors now depend on `bundles/aws`. The package name is
    unchanged.
    
    ### Why are the changes needed?
    
    `catalog-common` is on the server classpath without the AWS SDK, so a
    Glue catalog with static credentials fails with `NoClassDefFoundError`
    when loading the provider.
    
    Fixes #14315
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    - Reproduced the error by loading the provider through
    `IsolatedClassLoader` with the Glue catalog libs. Verified it passes
    after the change.
    - Unit tests for `bundles/aws`, `catalog-common`, `catalog-glue`, and
    the Spark 3.5/4.0 Glue tests.
    - Verified the Spark runtime jars contain the provider.
    - `testMavenLegalFiles`
---
 LICENSE                                                                | 2 +-
 build.gradle.kts                                                       | 2 +-
 .../gravitino/catalog/glue/GravitinoGlueCredentialsProvider.java       | 0
 .../gravitino/catalog/glue/TestGravitinoGlueCredentialsProvider.java   | 0
 catalogs/catalog-common/build.gradle.kts                               | 2 --
 catalogs/catalog-glue/build.gradle.kts                                 | 2 +-
 dev/release/maven/README.md                                            | 2 +-
 spark-connector/v3.5/spark/build.gradle.kts                            | 3 +++
 spark-connector/v4.0/spark/build.gradle.kts                            | 3 +++
 9 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/LICENSE b/LICENSE
index dad6e02f7f..a215105ae7 100644
--- a/LICENSE
+++ b/LICENSE
@@ -262,7 +262,7 @@
    
./catalogs/catalog-lakehouse-paimon/src/test/java/org/apache/gravitino/catalog/lakehouse/paimon/utils/PaimonViewTestCatalogHelper.java
 
    Apache Doris
-   
./catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/glue/GravitinoGlueCredentialsProvider.java
+   
./bundles/aws/src/main/java/org/apache/gravitino/catalog/glue/GravitinoGlueCredentialsProvider.java
 
    Lance Namespace (https://github.com/lance-format/lance-namespace-impls)
    
./lance/lance-common/src/main/java/org/apache/gravitino/lance/common/ops/gravitino/JsonArrowSchemaConverter.java
diff --git a/build.gradle.kts b/build.gradle.kts
index b950c350a0..6142d673e7 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -811,7 +811,7 @@ subprojects {
     ":common" to listOf("iceberg", "hadoop"),
     ":core" to listOf("spark", "iceberg", "kafka", "aws"),
     ":clients:client-java" to listOf("iceberg"),
-    ":catalogs:catalog-common" to listOf("doris"),
+    ":bundles:aws" to listOf("doris"),
     ":catalogs:hive-metastore-common" to listOf("iceberg"),
     ":catalogs:catalog-lakehouse-iceberg" to listOf("iceberg"),
     ":catalogs:catalog-lakehouse-paimon" to listOf("paimon"),
diff --git 
a/catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/glue/GravitinoGlueCredentialsProvider.java
 
b/bundles/aws/src/main/java/org/apache/gravitino/catalog/glue/GravitinoGlueCredentialsProvider.java
similarity index 100%
rename from 
catalogs/catalog-common/src/main/java/org/apache/gravitino/catalog/glue/GravitinoGlueCredentialsProvider.java
rename to 
bundles/aws/src/main/java/org/apache/gravitino/catalog/glue/GravitinoGlueCredentialsProvider.java
diff --git 
a/catalogs/catalog-common/src/test/java/org/apache/gravitino/catalog/glue/TestGravitinoGlueCredentialsProvider.java
 
b/bundles/aws/src/test/java/org/apache/gravitino/catalog/glue/TestGravitinoGlueCredentialsProvider.java
similarity index 100%
rename from 
catalogs/catalog-common/src/test/java/org/apache/gravitino/catalog/glue/TestGravitinoGlueCredentialsProvider.java
rename to 
bundles/aws/src/test/java/org/apache/gravitino/catalog/glue/TestGravitinoGlueCredentialsProvider.java
diff --git a/catalogs/catalog-common/build.gradle.kts 
b/catalogs/catalog-common/build.gradle.kts
index 6975af7627..41a7a5f030 100644
--- a/catalogs/catalog-common/build.gradle.kts
+++ b/catalogs/catalog-common/build.gradle.kts
@@ -24,7 +24,6 @@ plugins {
 // try to avoid adding extra dependencies because it is used by catalogs and 
connectors.
 dependencies {
   compileOnly(project(":common"))
-  compileOnly("software.amazon.awssdk:auth:${libs.versions.awssdk.get()}")
 
   implementation(libs.commons.lang3)
   implementation(libs.guava)
@@ -32,7 +31,6 @@ dependencies {
   implementation(libs.slf4j.api)
 
   testImplementation(project(":common"))
-  
testImplementation("software.amazon.awssdk:auth:${libs.versions.awssdk.get()}")
 
   testImplementation(libs.junit.jupiter.api)
   testImplementation(libs.junit.jupiter.params)
diff --git a/catalogs/catalog-glue/build.gradle.kts 
b/catalogs/catalog-glue/build.gradle.kts
index 477db09503..0e9a9c2ace 100644
--- a/catalogs/catalog-glue/build.gradle.kts
+++ b/catalogs/catalog-glue/build.gradle.kts
@@ -44,7 +44,7 @@ dependencies {
   implementation(libs.iceberg.api)
   implementation(libs.iceberg.aws)
   implementation(libs.iceberg.core)
-  runtimeOnly(project(":bundles:aws"))
+  implementation(project(":bundles:aws"))
   implementation(libs.slf4j.api)
 
   annotationProcessor(libs.lombok)
diff --git a/dev/release/maven/README.md b/dev/release/maven/README.md
index 9503d6be95..cd7dcba994 100644
--- a/dev/release/maven/README.md
+++ b/dev/release/maven/README.md
@@ -110,7 +110,7 @@ inventory. A dependency's POM license declaration may omit 
embedded third-party
 ## Copied-source provenance
 
 Root `LICENSE` records copied-source paths; root `NOTICE` and the module 
mappings
-identify applicable notices. The Glue provider in `catalog-common` derives from
+identify applicable notices. The Glue provider in `bundles/aws` derives from
 [Doris's 
provider](https://github.com/apache/doris/blob/16da8a23b84985049be65b38f69d3e88fe477dbb/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/s3tables/CustomAwsCredentialsProvider.java),
 with provenance recorded in [the original 
attribution](https://github.com/apache/gravitino/commit/d81dd65d1c9159dbb67d5ff18bac62c24e9ba39c).
 The Ranger reference classes use the attribution from [Ranger 
2.4.0](https://github.com/apache/ranger/blob/release-ranger-2.4.0/NOTICE.txt).
diff --git a/spark-connector/v3.5/spark/build.gradle.kts 
b/spark-connector/v3.5/spark/build.gradle.kts
index 704a7a3177..4286bb770d 100644
--- a/spark-connector/v3.5/spark/build.gradle.kts
+++ b/spark-connector/v3.5/spark/build.gradle.kts
@@ -101,6 +101,9 @@ dependencies {
   implementation(project(":catalogs:catalog-common")) {
     exclude("org.apache.logging.log4j")
   }
+  implementation(project(":bundles:aws")) {
+    exclude("*")
+  }
   implementation(libs.guava)
   implementation(libs.caffeine)
 
diff --git a/spark-connector/v4.0/spark/build.gradle.kts 
b/spark-connector/v4.0/spark/build.gradle.kts
index 8a9364add3..1aa122f1ec 100644
--- a/spark-connector/v4.0/spark/build.gradle.kts
+++ b/spark-connector/v4.0/spark/build.gradle.kts
@@ -135,6 +135,9 @@ dependencies {
   implementation(project(":catalogs:catalog-common")) {
     exclude("org.apache.logging.log4j")
   }
+  implementation(project(":bundles:aws")) {
+    exclude("*")
+  }
   implementation(libs.guava)
   implementation(libs.caffeine)
 

Reply via email to