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

hvanhovell pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new 7653b4003330 [SPARK-51229][BUILD][CONNECT] Fix dependency:analyze goal 
on connect common
7653b4003330 is described below

commit 7653b400333085e038c6bfbc019d0849957ea5d0
Author: Vlad Rozov <vro...@amazon.com>
AuthorDate: Mon Mar 3 16:44:22 2025 -0400

    [SPARK-51229][BUILD][CONNECT] Fix dependency:analyze goal on connect common
    
    ### What changes were proposed in this pull request?
    Update dependency of connect common library
    
    ### Why are the changes needed?
    There are used and undeclared dependencies and also declared and not used:
    ```
    [WARNING] Used undeclared dependencies found:
    [WARNING]    com.google.guava:guava:jar:33.4.0-jre:provided
    [WARNING]    org.apache.commons:commons-lang3:jar:3.17.0:compile
    [WARNING]    org.scala-lang:scala-reflect:jar:2.13.16:compile
    [WARNING]    
com.google.api.grpc:proto-google-common-protos:jar:2.41.0:compile
    [WARNING]    org.apache.arrow:arrow-vector:jar:18.1.0:compile
    [WARNING]    org.apache.arrow:arrow-memory-core:jar:18.1.0:compile
    [WARNING]    
org.apache.spark:spark-connect-shims_2.13:jar:4.1.0-SNAPSHOT:compile
    [WARNING]    org.apache.arrow:arrow-format:jar:18.1.0:compile
    [WARNING]    org.slf4j:slf4j-api:jar:2.0.16:compile
    [WARNING]    commons-codec:commons-codec:jar:1.17.2:compile
    [WARNING]    org.json4s:json4s-core_2.13:jar:4.0.7:compile
    [WARNING]    org.apache.spark:spark-unsafe_2.13:jar:4.1.0-SNAPSHOT:compile
    [WARNING]    org.json4s:json4s-ast_2.13:jar:4.0.7:compile
    [WARNING]    io.grpc:grpc-api:jar:1.67.1:compile
    [WARNING]    org.apache.spark:spark-tags_2.13:jar:4.1.0-SNAPSHOT:compile
    [WARNING]    
org.apache.spark:spark-common-utils_2.13:jar:4.1.0-SNAPSHOT:compile
    [WARNING] Unused declared dependencies found:
    [WARNING]    io.grpc:grpc-netty:jar:1.67.1:compile
    [WARNING]    io.grpc:grpc-services:jar:1.67.1:compile
    [WARNING]    io.grpc:grpc-inprocess:jar:1.67.1:compile
    [WARNING]    io.netty:netty-codec-http2:jar:4.1.117.Final:compile
    [WARNING]    io.netty:netty-handler-proxy:jar:4.1.117.Final:compile
    [WARNING]    
io.netty:netty-transport-native-unix-common:jar:4.1.117.Final:compile
    [WARNING]    org.apache.tomcat:annotations-api:jar:6.0.53:compile
    [WARNING]    
org.apache.spark:spark-tags_2.13:test-jar:tests:4.1.0-SNAPSHOT:test
    [WARNING]    org.spark-project.spark:unused:jar:1.0.0:compile
    [WARNING]    org.scalatest:scalatest_2.13:jar:3.2.19:test
    [WARNING]    org.scalatestplus:scalacheck-1-18_2.13:jar:3.2.19.0:test
    [WARNING]    org.scalatestplus:mockito-5-12_2.13:jar:3.2.19.0:test
    [WARNING]    org.scalatestplus:selenium-4-21_2.13:jar:3.2.19.0:test
    [WARNING]    org.junit.jupiter:junit-jupiter:jar:5.11.4:test
    [WARNING]    com.github.sbt.junit:jupiter-interface:jar:0.13.3:test
    ```
    and it causes errors while running JVM client tests:
    ```
    ./build/mvn -Dtest=none 
-DwildcardSuites=org.apache.spark.sql.connect.CatalogSuite test -pl 
sql/connect/client/jvm
    ...
    *** RUN ABORTED ***
    A needed class was not found. This could be due to an error in your 
runpath. Missing class: org/sparkproject/guava/cache/CacheLoader
      java.lang.NoClassDefFoundError: org/sparkproject/guava/cache/CacheLoader
      at 
org.apache.spark.sql.connect.test.SparkConnectServerUtils$.createSparkSession(RemoteSparkSession.scala:183)
      at 
org.apache.spark.sql.connect.test.RemoteSparkSession.beforeAll(RemoteSparkSession.scala:215)
      at 
org.apache.spark.sql.connect.test.RemoteSparkSession.beforeAll$(RemoteSparkSession.scala:213)
      at 
org.apache.spark.sql.connect.CatalogSuite.beforeAll(CatalogSuite.scala:30)
      at 
org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:212)
      at org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
      at org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
      at org.apache.spark.sql.connect.CatalogSuite.run(CatalogSuite.scala:30)
      at org.scalatest.Suite.callExecuteOnSuite$1(Suite.scala:1178)
      at org.scalatest.Suite.$anonfun$runNestedSuites$1(Suite.scala:1225)
      ...
      Cause: java.lang.ClassNotFoundException: 
org.sparkproject.guava.cache.CacheLoader
      at 
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
      at 
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
      at 
org.apache.spark.sql.connect.test.SparkConnectServerUtils$.createSparkSession(RemoteSparkSession.scala:183)
      at 
org.apache.spark.sql.connect.test.RemoteSparkSession.beforeAll(RemoteSparkSession.scala:215)
      at 
org.apache.spark.sql.connect.test.RemoteSparkSession.beforeAll$(RemoteSparkSession.scala:213)
      at 
org.apache.spark.sql.connect.CatalogSuite.beforeAll(CatalogSuite.scala:30)
      at 
org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:212)
      at org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
      at org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
    ```
    
    ### Does this PR introduce _any_ user-facing change?
    No
    
    ### How was this patch tested?
    The patch was tested using `build/mvn install` and `dependency:analyze`.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    No
    
    Closes #49971 from vrozov/SPARK-51229.
    
    Authored-by: Vlad Rozov <vro...@amazon.com>
    Signed-off-by: Herman van Hovell <her...@databricks.com>
---
 pom.xml                        |  73 +++++++++++++++++++++-
 sql/connect/client/jvm/pom.xml |  28 ++++-----
 sql/connect/common/pom.xml     | 134 +++++++++++++++++++++++++++++++++++------
 sql/connect/server/pom.xml     |   4 --
 4 files changed, 198 insertions(+), 41 deletions(-)

diff --git a/pom.xml b/pom.xml
index 7c4831750a6e..326b5e6e9a30 100644
--- a/pom.xml
+++ b/pom.xml
@@ -197,6 +197,7 @@
     <datanucleus-core.version>4.1.17</datanucleus-core.version>
     <guava.version>33.4.0-jre</guava.version>
     <gson.version>2.11.0</gson.version>
+    <json4s.version>4.0.7</json4s.version>
     <janino.version>3.1.9</janino.version>
     <jersey.version>3.0.16</jersey.version>
     <joda.version>2.13.0</joda.version>
@@ -860,6 +861,56 @@
         <version>${protobuf.version}</version>
         <scope>provided</scope>
       </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
+        <artifactId>grpc-api</artifactId>
+        <version>${io.grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
+        <artifactId>grpc-protobuf</artifactId>
+        <version>${io.grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
+        <artifactId>grpc-stub</artifactId>
+        <version>${io.grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
+        <artifactId>grpc-netty</artifactId>
+        <version>${io.grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
+        <artifactId>grpc-services</artifactId>
+        <version>${io.grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.grpc</groupId>
+        <artifactId>grpc-inprocess</artifactId>
+        <version>${io.grpc.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>com.google.api.grpc</groupId>
+        <artifactId>proto-google-common-protos</artifactId>
+        <version>2.41.0</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-codec-http2</artifactId>
+        <version>${netty.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-handler-proxy</artifactId>
+        <version>${netty.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-transport-native-unix-common</artifactId>
+        <version>${netty.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.roaringbitmap</groupId>
         <artifactId>RoaringBitmap</artifactId>
@@ -1117,7 +1168,7 @@
       <dependency>
         <groupId>org.json4s</groupId>
         <artifactId>json4s-jackson_${scala.binary.version}</artifactId>
-        <version>4.0.7</version>
+        <version>${json4s.version}</version>
         <exclusions>
           <exclusion>
             <groupId>com.fasterxml.jackson.core</groupId>
@@ -1125,6 +1176,16 @@
           </exclusion>
         </exclusions>
       </dependency>
+      <dependency>
+        <groupId>org.json4s</groupId>
+        <artifactId>json4s-core_${scala.binary.version}</artifactId>
+        <version>${json4s.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.json4s</groupId>
+        <artifactId>json4s-ast_${scala.binary.version}</artifactId>
+        <version>${json4s.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.scala-lang.modules</groupId>
         <artifactId>scala-xml_${scala.binary.version}</artifactId>
@@ -2495,6 +2556,11 @@
           </exclusion>
         </exclusions>
       </dependency>
+      <dependency>
+        <groupId>org.apache.arrow</groupId>
+        <artifactId>arrow-format</artifactId>
+        <version>${arrow.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.arrow</groupId>
         <artifactId>arrow-vector</artifactId>
@@ -2514,6 +2580,11 @@
           </exclusion>
         </exclusions>
       </dependency>
+      <dependency>
+        <groupId>org.apache.arrow</groupId>
+        <artifactId>arrow-memory-core</artifactId>
+        <version>${arrow.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.arrow</groupId>
         <artifactId>arrow-memory-netty</artifactId>
diff --git a/sql/connect/client/jvm/pom.xml b/sql/connect/client/jvm/pom.xml
index 81e195fb5ccd..11eb65add201 100644
--- a/sql/connect/client/jvm/pom.xml
+++ b/sql/connect/client/jvm/pom.xml
@@ -75,10 +75,8 @@
       <scope>compile</scope>
     </dependency>
     <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-      <version>${connect.guava.version}</version>
-      <scope>compile</scope>
+      <groupId>io.grpc</groupId>
+      <artifactId>grpc-netty</artifactId>
     </dependency>
     <dependency>
       <groupId>com.google.guava</groupId>
@@ -133,6 +131,16 @@
       <version>${mima.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java-util</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>io.grpc</groupId>
+      <artifactId>grpc-inprocess</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     
<outputDirectory>target/scala-${scala.binary.version}/classes</outputDirectory>
@@ -148,7 +156,6 @@
           <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
           <artifactSet>
             <includes>
-              <include>com.google.guava:*</include>
               <include>com.google.android:*</include>
               <include>com.google.api.grpc:*</include>
               <include>com.google.code.findbugs:*</include>
@@ -168,13 +175,6 @@
             </includes>
           </artifactSet>
           <relocations>
-            <relocation>
-              <pattern>com.google.common</pattern>
-              
<shadedPattern>${spark.shade.packageName}.connect.guava</shadedPattern>
-              <includes>
-                <include>com.google.common.**</include>
-              </includes>
-            </relocation>
             <relocation>
               <pattern>io.grpc</pattern>
               <shadedPattern>${spark.shade.packageName}.io.grpc</shadedPattern>
@@ -185,10 +185,6 @@
             <relocation>
               <pattern>com.google</pattern>
               
<shadedPattern>${spark.shade.packageName}.com.google</shadedPattern>
-              <excludes>
-                <!-- Guava is relocated to 
${spark.shade.packageName}.connect.guava -->
-                <exclude>com.google.common.**</exclude>
-              </excludes>
             </relocation>
             <relocation>
               <pattern>io.netty</pattern>
diff --git a/sql/connect/common/pom.xml b/sql/connect/common/pom.xml
index e6745df9013e..3fdd33ab52e1 100644
--- a/sql/connect/common/pom.xml
+++ b/sql/connect/common/pom.xml
@@ -39,53 +39,85 @@
             <artifactId>spark-sql-api_${scala.binary.version}</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.spark</groupId>
+            <artifactId>spark-unsafe_${scala.binary.version}</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.spark</groupId>
+            <artifactId>spark-tags_${scala.binary.version}</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.spark</groupId>
+            <artifactId>spark-common-utils_${scala.binary.version}</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.scala-lang</groupId>
             <artifactId>scala-library</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-reflect</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>${connect.guava.version}</version>
+            <scope>compile</scope>
+        </dependency>
         <dependency>
             <groupId>com.google.protobuf</groupId>
             <artifactId>protobuf-java</artifactId>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
-            <artifactId>grpc-netty</artifactId>
-            <version>${io.grpc.version}</version>
+            <artifactId>grpc-api</artifactId>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-protobuf</artifactId>
-            <version>${io.grpc.version}</version>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
-            <artifactId>grpc-services</artifactId>
-            <version>${io.grpc.version}</version>
+            <artifactId>grpc-stub</artifactId>
         </dependency>
         <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-stub</artifactId>
-            <version>${io.grpc.version}</version>
+            <groupId>com.google.api.grpc</groupId>
+            <artifactId>proto-google-common-protos</artifactId>
         </dependency>
         <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-inprocess</artifactId>
-            <version>${io.grpc.version}</version>
+            <groupId>org.apache.arrow</groupId>
+            <artifactId>arrow-format</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.arrow</groupId>
+            <artifactId>arrow-vector</artifactId>
         </dependency>
         <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-codec-http2</artifactId>
-            <version>${netty.version}</version>
+            <groupId>org.apache.arrow</groupId>
+            <artifactId>arrow-memory-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler-proxy</artifactId>
-            <version>${netty.version}</version>
+            <groupId>org.json4s</groupId>
+            <artifactId>json4s-core_${scala.binary.version}</artifactId>
         </dependency>
         <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-transport-native-unix-common</artifactId>
-            <version>${netty.version}</version>
+            <groupId>org.json4s</groupId>
+            <artifactId>json4s-ast_${scala.binary.version}</artifactId>
         </dependency>
         <dependency> <!-- necessary for Java 9+ -->
             <groupId>org.apache.tomcat</groupId>
@@ -114,6 +146,50 @@
         </extensions>
         
<outputDirectory>target/scala-${scala.binary.version}/classes</outputDirectory>
         
<testOutputDirectory>target/scala-${scala.binary.version}/test-classes</testOutputDirectory>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <configuration>
+                        <ignoredUsedUndeclaredDependencies>
+                            <ignoredUsedUndeclaredDependency>
+                                
org.apache.spark:spark-connect-shims_${scala.binary.version}
+                            </ignoredUsedUndeclaredDependency>
+                        </ignoredUsedUndeclaredDependencies>
+                        <ignoredUnusedDeclaredDependencies>
+                            <ignoredUnusedDeclaredDependency>
+                                org.spark-project.spark:unused
+                            </ignoredUnusedDeclaredDependency>
+                            <ignoredUnusedDeclaredDependency>
+                                org.apache.tomcat:annotations-api
+                            </ignoredUnusedDeclaredDependency>
+                            <ignoredUnusedDeclaredDependency>
+                                
org.apache.spark:spark-tags_${scala.binary.version}:test-jar
+                            </ignoredUnusedDeclaredDependency>
+                            <ignoredUnusedDeclaredDependency>
+                                org.scalatest:scalatest_${scala.binary.version}
+                            </ignoredUnusedDeclaredDependency>
+                            <ignoredUnusedDeclaredDependency>
+                                
org.scalatestplus:scalacheck-1-18_${scala.binary.version}
+                            </ignoredUnusedDeclaredDependency>
+                            <ignoredUnusedDeclaredDependency>
+                                
org.scalatestplus:mockito-5-12_${scala.binary.version}
+                            </ignoredUnusedDeclaredDependency>
+                            <ignoredUnusedDeclaredDependency>
+                                
org.scalatestplus:selenium-4-21_${scala.binary.version}
+                            </ignoredUnusedDeclaredDependency>
+                            <ignoredUnusedDeclaredDependency>
+                                org.junit.jupiter:junit-jupiter
+                            </ignoredUnusedDeclaredDependency>
+                            <ignoredUnusedDeclaredDependency>
+                                com.github.sbt.junit:jupiter-interface
+                            </ignoredUnusedDeclaredDependency>
+                        </ignoredUnusedDeclaredDependencies>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
         <plugins>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
@@ -142,8 +218,26 @@
                         <includes>
                             <include>org.spark-project.spark:unused</include>
                             
<include>org.apache.tomcat:annotations-api</include>
+                            <include>com.google.guava:*</include>
                         </includes>
                     </artifactSet>
+                    <filters>
+                        <filter>
+                            <artifact>com.google.guava:guava</artifact>
+                            <excludes>
+                                <exclude>com/google/thirdparty/**</exclude>
+                            </excludes>
+                        </filter>
+                    </filters>
+                    <relocations>
+                        <relocation>
+                            <pattern>com.google.common</pattern>
+                            
<shadedPattern>${spark.shade.packageName}.connect.guava</shadedPattern>
+                            <includes>
+                                <include>com.google.common.**</include>
+                            </includes>
+                      </relocation>
+                    </relocations>
                 </configuration>
                 <executions>
                     <execution>
diff --git a/sql/connect/server/pom.xml b/sql/connect/server/pom.xml
index bb30b01f778d..58d7b17013fa 100644
--- a/sql/connect/server/pom.xml
+++ b/sql/connect/server/pom.xml
@@ -193,17 +193,14 @@
     <dependency>
       <groupId>io.grpc</groupId>
       <artifactId>grpc-netty</artifactId>
-      <version>${io.grpc.version}</version>
     </dependency>
     <dependency>
       <groupId>io.grpc</groupId>
       <artifactId>grpc-protobuf</artifactId>
-      <version>${io.grpc.version}</version>
     </dependency>
     <dependency>
       <groupId>io.grpc</groupId>
       <artifactId>grpc-services</artifactId>
-      <version>${io.grpc.version}</version>
     </dependency>
     <dependency>
       <groupId>io.grpc</groupId>
@@ -213,7 +210,6 @@
     <dependency>
       <groupId>io.netty</groupId>
       <artifactId>netty-codec-http2</artifactId>
-      <version>${netty.version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>


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

Reply via email to