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

voonhous pushed a commit to tag rfc-105-pre-cleanup
in repository https://gitbox.apache.org/repos/asf/hudi.git

commit 83b236f43305776f2c97838d059c4c4f7334117c
Author: voon <[email protected]>
AuthorDate: Sat May 23 03:02:45 2026 +0800

    refactor(trino): drop shaded bundle, publish hudi-trino per RFC-105
    
    RFC-105 specifies the published artifact as a regular non-shaded jar
    named org.apache.hudi:hudi-trino, citing Trino's URLClassLoader plugin
    isolation as the reason no shading is needed. The previous
    packaging/hudi-trino-bundle deviated from this and caused:
    - shaded-vs-canonical GenericRecord type mismatches in Trino-side tests
    - ever-growing SPI exclusion lists to satisfy check-spi-dependencies
    - lance / arrow / rocksdb dragging ~280MB into the Trino server tar
    - hudi-timeline-service pulling banned javax.servlet-api transitively
    - a two-step JDK 17 -> JDK 25 build because the bundle had to be rebuilt
    
    Changes:
    - Delete packaging/hudi-trino-bundle/ (module + pom + README) and remove
      it from the hudi-trino profile in the root pom.
    - Rename hudi-trino-plugin/pom.xml artifactId from hudi-trino-plugin to
      hudi-trino. Source dir stays hudi-trino-plugin/.
    - Add lance / arrow / rocksdb exclusions to hudi-common and hudi-io to
      prevent the 280MB transitive leak that the bundle was working around.
    - Add hudi-timeline-service exclusion to hudi-client-common (test scope).
    - Simplify hudi-trino-plugin/README.md to a single-module build (no more
      packaging step) and drop the bundle verify step from hudi_trino_ci.yml.
    
    Scope choices follow trino-iceberg / trino-delta-lake: io.trino:* and
    io.airlift:* compile-time deps stay at compile (each plugin's classloader
    bundles them). Only the Trino SPI shortlist (trino-spi, jackson-annotations,
    slice, opentelemetry-*, jol-core) is at provided.
---
 .github/workflows/hudi_trino_ci.yml                |  12 +-
 hudi-trino-plugin/README.md                        |  10 +-
 hudi-trino-plugin/pom.xml                          |  41 +-
 packaging/hudi-trino-bundle/README.md              | 103 -----
 packaging/hudi-trino-bundle/pom.xml                | 432 ---------------------
 .../java/org/apache/hudi/trino/bundle/Main.java    |  36 --
 pom.xml                                            |   6 +-
 7 files changed, 51 insertions(+), 589 deletions(-)

diff --git a/.github/workflows/hudi_trino_ci.yml 
b/.github/workflows/hudi_trino_ci.yml
index 82910688c81e..b9a89c52d99f 100644
--- a/.github/workflows/hudi_trino_ci.yml
+++ b/.github/workflows/hudi_trino_ci.yml
@@ -7,7 +7,6 @@ on:
       - 'release-*'
     paths:
       - 'hudi-trino-plugin/**'
-      - 'packaging/hudi-trino-bundle/**'
       - '.github/workflows/hudi_trino_ci.yml'
   pull_request:
     branches:
@@ -15,7 +14,6 @@ on:
       - 'release-*'
     paths:
       - 'hudi-trino-plugin/**'
-      - 'packaging/hudi-trino-bundle/**'
       - '.github/workflows/hudi_trino_ci.yml'
   workflow_dispatch:
 
@@ -38,13 +36,7 @@ jobs:
           java-version: '25'
           distribution: 'temurin'
           cache: maven
-      - name: Build connector and bundle
-        run: ./mvnw $MVN_ARGS -Phudi-trino -pl 
hudi-trino-plugin,packaging/hudi-trino-bundle -am install -DskipTests
-      - name: Verify bundle contains connector classes
-        run: |
-          BUNDLE_JAR=$(ls 
packaging/hudi-trino-bundle/target/hudi-trino-bundle-*.jar | grep -v sources | 
head -n 1)
-          echo "Inspecting $BUNDLE_JAR"
-          jar tf "$BUNDLE_JAR" | grep -E 
'io/trino/plugin/hudi/HudiConnectorFactory\.class$' \
-            || (echo "ERROR: HudiConnectorFactory not present in bundle"; exit 
1)
+      - name: Build connector
+        run: ./mvnw $MVN_ARGS -Phudi-trino -pl hudi-trino-plugin -am install 
-DskipTests
       - name: Run connector tests
         run: ./mvnw $MVN_ARGS -Phudi-trino -pl hudi-trino-plugin test
diff --git a/hudi-trino-plugin/README.md b/hudi-trino-plugin/README.md
index 4a9aba1403db..37f465baea8a 100644
--- a/hudi-trino-plugin/README.md
+++ b/hudi-trino-plugin/README.md
@@ -1,24 +1,26 @@
 # hudi-trino-plugin
 
-Hudi connector for Trino (RFC-105). Published as part of 
`org.apache.hudi:hudi-trino-bundle`; the Trino-side `HudiPlugin` shim loads 
classes from that bundle.
+Hudi connector for Trino (RFC-105). Published as `org.apache.hudi:hudi-trino` 
-- a regular non-shaded JAR. The Trino-side `trino-hudi` plugin module depends 
on this artifact and Trino's URLClassLoader isolates the plugin's transitive 
deps from the rest of the server, so no shading is required.
+
+The source directory is named `hudi-trino-plugin/`; the Maven artifactId is 
`hudi-trino`.
 
 ## Build
 
 Excluded from default builds. Activate the `hudi-trino` Maven profile:
 
 ```
-mvn -Phudi-trino -pl hudi-trino-plugin,packaging/hudi-trino-bundle -am install
+mvn -Phudi-trino -pl hudi-trino-plugin install
 ```
 
 Requires JDK 25 (enforced via `maven-enforcer-plugin`).
 
 ## IDE setup
 
-Only `hudi-trino-plugin` needs JDK 25. Leave the rest of Hudi on its native 
JDK (11 or 17) so you are not toggling the project default.
+Only this module needs JDK 25. Leave the rest of Hudi on its native JDK (11 or 
17) so you are not toggling the project default.
 
 1. Activate the `hudi-trino` Maven profile so the IDE picks up the module.
    - IntelliJ: Maven tool window, Profiles, tick `hudi-trino`.
 2. Override the SDK for the `hudi-trino-plugin` module only, to Temurin 25 
with Language level 25.
    - IntelliJ: `File > Project Structure > Modules > hudi-trino-plugin > 
Dependencies > Module SDK`.
 
-The enforcer rule only runs during `mvn`, not during the IDE's incremental 
compile.
\ No newline at end of file
+The enforcer rule only runs during `mvn`, not during the IDE's incremental 
compile.
diff --git a/hudi-trino-plugin/pom.xml b/hudi-trino-plugin/pom.xml
index 5f699d03a110..a2cc55fa1fe8 100644
--- a/hudi-trino-plugin/pom.xml
+++ b/hudi-trino-plugin/pom.xml
@@ -26,7 +26,8 @@
         <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>hudi-trino-plugin</artifactId>
+    <!-- Source dir is hudi-trino-plugin/ but artifactId is hudi-trino per 
RFC-105. -->
+    <artifactId>hudi-trino</artifactId>
     <packaging>jar</packaging>
     <description>Hudi connector for Trino (RFC-105)</description>
 
@@ -81,6 +82,10 @@
             <artifactId>guava</artifactId>
         </dependency>
 
+        <!-- Trino's plugin classloader bundles non-SPI compile deps with the 
plugin (one URLClassLoader
+             per plugin). Only the SPI shortlist further down (trino-spi, 
jackson-annotations, slice,
+             opentelemetry-*, jol-core) is at provided scope. Matches 
trino-iceberg / trino-delta-lake. -->
+
         <dependency>
             <!-- Trino bundles guice as the classes-only classifier; the BOM 
does not manage the plain jar. -->
             <groupId>com.google.inject</groupId>
@@ -194,6 +199,22 @@
                     <groupId>org.apache.orc</groupId>
                     <artifactId>*</artifactId>
                 </exclusion>
+                <!-- The Trino connector does not exercise Hudi's local state 
stores, Arrow
+                     materialization, or Lance integration. Excluding them 
keeps the plugin's
+                     runtime jar set lean (~280MB worth otherwise) and avoids 
dragging native
+                     libs (rocksdbjni) onto Trino's plugin classpath. -->
+                <exclusion>
+                    <groupId>org.rocksdb</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.arrow</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.lance</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
 
@@ -219,6 +240,19 @@
                     <groupId>com.google.protobuf</groupId>
                     <artifactId>protobuf-java</artifactId>
                 </exclusion>
+                <!-- Same rationale as hudi-common: connector does not use 
rocksdb / arrow / lance. -->
+                <exclusion>
+                    <groupId>org.rocksdb</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.arrow</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.lance</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
 
@@ -437,6 +471,11 @@
                     <groupId>*</groupId>
                     <artifactId>*</artifactId>
                 </exclusion>
+                <!-- hudi-timeline-service pulls Jetty + javax.servlet-api; 
Trino's enforcer bans them. -->
+                <exclusion>
+                    <groupId>org.apache.hudi</groupId>
+                    <artifactId>hudi-timeline-service</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
 
diff --git a/packaging/hudi-trino-bundle/README.md 
b/packaging/hudi-trino-bundle/README.md
deleted file mode 100644
index e73f2dd0903e..000000000000
--- a/packaging/hudi-trino-bundle/README.md
+++ /dev/null
@@ -1,103 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-# hudi-trino-bundle
-
-Shaded jar that ships the Trino-Hudi connector. Published as 
`org.apache.hudi:hudi-trino-bundle` (RFC-105). The Trino-side `HudiPlugin` shim 
depends on this artifact and loads `io.trino.plugin.hudi.HudiConnectorFactory` 
from it.
-
-## What is inside
-
-Connector classes (unshaded, canonical FQN preserved):
-- `io.trino.plugin.hudi.*` from `hudi-trino-plugin`
-
-Hudi runtime jars (no relocation):
-- `hudi-common`, `hudi-client-common`, `hudi-java-client`, 
`hudi-hadoop-common`, `hudi-hadoop-mr`
-
-Shaded third-party libs (relocated under `org.apache.hudi.*` or the 
`trino.bundle.bootstrap.shade.prefix`):
-- Kryo, parquet-avro, avro, caffeine, commons-io, dropwizard metrics, 
jol-core, protobuf
-
-What is NOT inside:
-- `META-INF/services/io.trino.spi.Plugin`. That manifest lives only on the 
Trino-side `trino-hudi` shim; never ship it from this bundle.
-
-## Build
-
-Two-step because `hudi-common` etc. use Lombok 1.18.36 which is not compatible 
with JDK 25, while `hudi-trino-plugin` requires JDK 25 for the Trino SPI. See 
`hudi-trino-plugin/README.md` for the why.
-
-```
-# Step 1, on JDK 17: install Hudi base modules into ~/.m2
-JAVA_HOME=$(/usr/libexec/java_home -v 17) \
-  mvn install -DskipTests -pl 
hudi-common,hudi-io,hudi-hive-sync,hudi-sync-common,hudi-hadoop-common,hudi-client-common,hudi-java-client,packaging/hudi-hadoop-mr-bundle
 -am
-
-# Step 2, on JDK 25: build the connector and bundle
-JAVA_HOME=$(/usr/libexec/java_home -v 25) \
-  mvn install -Phudi-trino -pl hudi-trino-plugin,packaging/hudi-trino-bundle
-```
-
-The shaded jar lands at 
`packaging/hudi-trino-bundle/target/hudi-trino-bundle-1.3.0-SNAPSHOT.jar` and 
is also installed to `~/.m2/repository/org/apache/hudi/hudi-trino-bundle/`.
-
-## Verify the jar
-
-```
-JAR=packaging/hudi-trino-bundle/target/hudi-trino-bundle-1.3.0-SNAPSHOT.jar
-
-# Connector entrypoint must be present at its canonical FQN
-jar tf "$JAR" | grep -E 'io/trino/plugin/hudi/HudiConnectorFactory\.class$'
-
-# Plugin SPI manifest must NOT be present (only the Trino-side shim ships that)
-jar tf "$JAR" | grep -E 'META-INF/services/io\.trino\.spi\.Plugin$' && echo 
"FAIL: bundle leaks Plugin SPI" || echo "OK"
-```
-
-## Consume from Trino
-
-The Trino-side `plugin/trino-hudi` is already wired:
-- `<dependency>org.apache.hudi:hudi-trino-bundle</dependency>` in 
`plugin/trino-hudi/pom.xml`.
-- Version property `<dep.hudi-trino.version>` in the root Trino `pom.xml`. 
Bump this to point at a newer published bundle.
-
-Local development flow:
-```
-# In the Trino repo, after step 2 above has installed the bundle to ~/.m2
-./mvnw -pl :trino-hudi install
-```
-
-The Trino build resolves `hudi-trino-bundle` from your local `~/.m2`. For Hudi 
snapshots, ensure Apache's snapshot repo is enabled in your Maven settings; 
otherwise the version property must point at a released version.
-
-## Publish
-
-Follows the standard Hudi `mvn deploy` flow under the `hudi-trino` profile:
-
-```
-JAVA_HOME=$(/usr/libexec/java_home -v 25) \
-  mvn deploy -Phudi-trino -pl hudi-trino-plugin,packaging/hudi-trino-bundle 
-DskipTests
-```
-
-For release candidates, include this bundle in the RC validation step 
alongside the other published Hudi bundles.
-
-### Before publishing: switch Trino version off SNAPSHOT
-
-The root pom currently sets 
`<trino.connector.version>480-SNAPSHOT</trino.connector.version>` because the 
connector tests depend on `trino-*-tests.jar` artifacts, and Trino only 
publishes the test-jar classifier for snapshot builds (not for tagged 
releases). Shipping a bundle whose installed POM references a Trino SNAPSHOT 
version is awkward for downstream consumers.
-
-Before cutting a release, split the property so main jars resolve to a Trino 
release while test-jars stay on snapshot:
-
-1. Add a sibling property to the root pom:
-   ```
-   <trino.connector.version>480</trino.connector.version>
-   <trino.connector.test.version>480-SNAPSHOT</trino.connector.test.version>
-   ```
-2. In `hudi-trino-plugin/pom.xml`, change each `<type>test-jar</type>` 
dependency to use `${dep.trino.test.version}` instead of inheriting from the 
main version.
-3. Verify with `mvn dependency:tree -Phudi-trino -pl hudi-trino-plugin` that 
compile deps resolve at `480` and test deps at `480-SNAPSHOT`.
-
-Alternative if the release pipeline must not touch SNAPSHOT artifacts at all: 
build with `-Dmaven.test.skip=true` so test-jar deps are never resolved. 
Trade-off is no unit test run during the release build; CI should still 
exercise tests separately under the snapshot path.
\ No newline at end of file
diff --git a/packaging/hudi-trino-bundle/pom.xml 
b/packaging/hudi-trino-bundle/pom.xml
deleted file mode 100644
index 8c22384b9551..000000000000
--- a/packaging/hudi-trino-bundle/pom.xml
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-  <parent>
-    <artifactId>hudi</artifactId>
-    <groupId>org.apache.hudi</groupId>
-    <version>1.3.0-SNAPSHOT</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <artifactId>hudi-trino-bundle</artifactId>
-  <packaging>jar</packaging>
-
-  <properties>
-    <checkstyle.skip>true</checkstyle.skip>
-    <main.basedir>${project.parent.basedir}</main.basedir>
-    <skipTests>true</skipTests>
-    <dep.trino.version>${trino.connector.version}</dep.trino.version>
-  </properties>
-
-  <dependencyManagement>
-    <dependencies>
-      <!-- Import Trino's parent POM as a BOM so the SPI artifacts declared as
-           provided below resolve to versions matching the connector code. -->
-      <dependency>
-        <groupId>io.trino</groupId>
-        <artifactId>trino-root</artifactId>
-        <version>${dep.trino.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.rat</groupId>
-        <artifactId>apache-rat-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-shade-plugin</artifactId>
-        <version>${maven-shade-plugin.version}</version>
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <goals>
-              <goal>shade</goal>
-            </goals>
-            <configuration>
-              <createSourcesJar>${shadeSources}</createSourcesJar>
-              
<dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml
-              </dependencyReducedPomLocation>
-              <transformers>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer">
-                </transformer>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
-                  <addHeader>true</addHeader>
-                </transformer>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
-                  <resource>META-INF/LICENSE</resource>
-                  <file>target/classes/META-INF/LICENSE</file>
-                </transformer>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
-              </transformers>
-              <artifactSet>
-                <includes combine.children="append">
-                  <include>org.apache.hudi:hudi-trino-plugin</include>
-                  <include>org.apache.hudi:hudi-hadoop-common</include>
-                  <include>org.apache.hudi:hudi-common</include>
-                  <include>org.apache.hudi:hudi-client-common</include>
-                  <include>org.apache.hudi:hudi-java-client</include>
-                  <include>org.apache.hudi:hudi-hadoop-mr</include>
-
-                  <!-- Kryo -->
-                  <include>com.esotericsoftware:kryo-shaded</include>
-                  <include>com.esotericsoftware:minlog</include>
-                  <include>org.objenesis:objenesis</include>
-
-                  <include>org.apache.parquet:parquet-avro</include>
-                  <include>org.apache.avro:avro</include>
-                  <include>com.github.ben-manes.caffeine:caffeine</include>
-                  <include>org.codehaus.jackson:*</include>
-                  <include>com.yammer.metrics:metrics-core</include>
-                  <include>commons-io:commons-io</include>
-                  <include>com.google.protobuf:protobuf-java</include>
-                  <include>org.openjdk.jol:jol-core</include>
-                </includes>
-              </artifactSet>
-              <relocations combine.children="append">
-                <!-- Kryo -->
-                <relocation>
-                  <pattern>com.esotericsoftware.kryo.</pattern>
-                  
<shadedPattern>org.apache.hudi.com.esotericsoftware.kryo.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>com.esotericsoftware.reflectasm.</pattern>
-                  
<shadedPattern>org.apache.hudi.com.esotericsoftware.reflectasm.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>com.esotericsoftware.minlog.</pattern>
-                  
<shadedPattern>org.apache.hudi.com.esotericsoftware.minlog.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>org.objenesis.</pattern>
-                  <shadedPattern>org.apache.hudi.org.objenesis.</shadedPattern>
-                </relocation>
-
-                <relocation>
-                  <pattern>org.apache.parquet.avro.</pattern>
-                  
<shadedPattern>org.apache.hudi.org.apache.parquet.avro.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>org.apache.avro.</pattern>
-                  
<shadedPattern>org.apache.hudi.org.apache.avro.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>org.apache.commons.io.</pattern>
-                  
<shadedPattern>org.apache.hudi.org.apache.commons.io.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>com.yammer.metrics.</pattern>
-                  
<shadedPattern>org.apache.hudi.com.yammer.metrics.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>com.google.common.</pattern>
-                  
<shadedPattern>${trino.bundle.bootstrap.shade.prefix}com.google.common.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>org.apache.commons.lang.</pattern>
-                  
<shadedPattern>${trino.bundle.bootstrap.shade.prefix}org.apache.commons.lang.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>com.google.protobuf.</pattern>
-                  
<shadedPattern>${trino.bundle.bootstrap.shade.prefix}com.google.protobuf.</shadedPattern>
-                </relocation>
-                <relocation>
-                  <pattern>org.openjdk.jol.</pattern>
-                  
<shadedPattern>org.apache.hudi.org.openjdk.jol.</shadedPattern>
-                </relocation>
-              </relocations>
-              <createDependencyReducedPom>false</createDependencyReducedPom>
-              <filters>
-                <filter>
-                  <artifact>*:*</artifact>
-                  <excludes>
-                    <exclude>META-INF/*.SF</exclude>
-                    <exclude>META-INF/*.DSA</exclude>
-                    <exclude>META-INF/*.RSA</exclude>
-                    <exclude>META-INF/services/javax.*</exclude>
-                    <exclude>**/*.proto</exclude>
-                  </excludes>
-                </filter>
-              </filters>
-              <finalName>${project.artifactId}-${project.version}</finalName>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-    <resources>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-    </resources>
-  </build>
-
-  <dependencies>
-    <!-- Hoodie -->
-    <dependency>
-      <!-- Plugin classes are shaded into this bundle. Its compile-scope deps 
on Trino,
-           Airlift, Jackson, Guice, OpenTelemetry are SPI-provided at Trino 
runtime and
-           must NOT leak into the bundle's transitive closure 
(trino-maven-plugin's
-           check-spi-dependencies enforces this on the consumer side). -->
-      <groupId>org.apache.hudi</groupId>
-      <artifactId>hudi-trino-plugin</artifactId>
-      <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.core</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.module</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.datatype</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.airlift</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.trino</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.google.inject</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.opentelemetry</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.openjdk.jol</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <!-- The connector does not use rocksdb (Hudi's local state stores), 
arrow, or lance.
-             These leak via hudi-common's compile deps and bloat the Trino 
server tar. -->
-        <exclusion>
-          <groupId>org.rocksdb</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.arrow</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.lance</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <!-- Use the plain hudi-hadoop-mr artifact (already listed in the shade 
artifactSet).
-           hudi-hadoop-mr-bundle pulled lance-core, arrow-dataset, and 
rocksdbjni transitively
-           (~280MB), which the connector does not use and which blew the 
trino-server tar size cap. -->
-      <groupId>org.apache.hudi</groupId>
-      <artifactId>hudi-hadoop-mr</artifactId>
-      <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.core</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.module</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.datatype</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.rocksdb</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.arrow</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.lance</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hudi</groupId>
-      <artifactId>hudi-client-common</artifactId>
-      <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <artifactId>guava</artifactId>
-          <groupId>com.google.guava</groupId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.core</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.module</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.datatype</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <!-- hudi-timeline-service pulls Jetty + javax.servlet-api, banned by 
Trino's enforcer.
-             The Trino connector does not use the timeline service. -->
-        <exclusion>
-          <groupId>org.apache.hudi</groupId>
-          <artifactId>hudi-timeline-service</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hudi</groupId>
-      <artifactId>hudi-java-client</artifactId>
-      <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.core</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.module</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.fasterxml.jackson.datatype</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.rocksdb</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.arrow</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.lance</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <!-- Kryo -->
-    <dependency>
-      <groupId>com.esotericsoftware</groupId>
-      <artifactId>kryo-shaded</artifactId>
-      <version>${kryo.shaded.version}</version>
-      <scope>compile</scope>
-    </dependency>
-
-    <!-- Parquet -->
-    <dependency>
-      <groupId>org.apache.parquet</groupId>
-      <artifactId>parquet-avro</artifactId>
-      <version>${trino.parquet.version}</version>
-      <scope>compile</scope>
-    </dependency>
-
-    <!-- Avro -->
-    <dependency>
-      <groupId>org.apache.avro</groupId>
-      <artifactId>avro</artifactId>
-      <version>${avro.version}</version>
-      <scope>compile</scope>
-      <exclusions>
-        <!-- Jackson is SPI-provided by Trino at runtime. Avro's transitive 
jackson-core/databind
-             must not leak into consumers (check-spi-dependencies). The shaded 
avro classes within
-             this bundle reference unrelocated com.fasterxml.jackson.* which 
the Trino runtime
-             supplies. -->
-        <exclusion>
-          <groupId>com.fasterxml.jackson.core</groupId>
-          <artifactId>*</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <!--protobuf needs to be shaded because HBase 1.2.3 + native HFile reader 
needs it at runtime,
-    but Trino runtime does not have this dependency-->
-    <dependency>
-      <groupId>com.google.protobuf</groupId>
-      <artifactId>protobuf-java</artifactId>
-      <version>${proto.version}</version>
-      <scope>${trino.bundle.bootstrap.scope}</scope>
-    </dependency>
-
-    <!-- Trino SPI artifacts. Declared here as provided to override the 
compile-scope
-         transitives pulled in via hudi-trino-plugin -> trino-hive/etc. 
Trino's server
-         supplies these at runtime; bundling them would cause 
split-classloader bugs
-         and breaks the trino-maven-plugin:check-spi-dependencies enforcer. -->
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-annotations</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.airlift</groupId>
-      <artifactId>slice</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.opentelemetry</groupId>
-      <artifactId>opentelemetry-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.opentelemetry</groupId>
-      <artifactId>opentelemetry-api-incubator</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.opentelemetry</groupId>
-      <artifactId>opentelemetry-context</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.trino</groupId>
-      <artifactId>trino-spi</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.openjdk.jol</groupId>
-      <artifactId>jol-core</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-  </dependencies>
-  <profiles>
-    <profile>
-      <id>trino-shade-unbundle-bootstrap</id>
-      <properties>
-        <trino.bundle.bootstrap.scope>provided</trino.bundle.bootstrap.scope>
-        <trino.bundle.bootstrap.shade.prefix/>
-      </properties>
-    </profile>
-  </profiles>
-</project>
diff --git 
a/packaging/hudi-trino-bundle/src/main/java/org/apache/hudi/trino/bundle/Main.java
 
b/packaging/hudi-trino-bundle/src/main/java/org/apache/hudi/trino/bundle/Main.java
deleted file mode 100644
index eec1ecf88a8d..000000000000
--- 
a/packaging/hudi-trino-bundle/src/main/java/org/apache/hudi/trino/bundle/Main.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hudi.trino.bundle;
-
-import org.apache.hudi.common.util.ReflectionUtils;
-
-/**
- * A simple main class to dump all classes loaded in current classpath
- * <p>
- * This is a workaround for generating sources and javadoc jars for packaging 
modules. The maven plugins for generating
- * javadoc and sources plugins do not generate corresponding jars if there are 
no source files.
- * <p>
- * This class does not have anything to do with Hudi but is there to keep mvn 
javadocs/source plugin happy.
- */
-public class Main {
-
-  public static void main(String[] args) {
-    
ReflectionUtils.getTopLevelClassesInClasspath(Main.class).forEach(System.out::println);
-  }
-}
diff --git a/pom.xml b/pom.xml
index 66b57428ee69..b9448e1a940a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2276,12 +2276,12 @@
       </modules>
     </profile>
     <profile>
-      <!-- RFC-105: builds the Trino connector and its publishable shaded 
bundle.
-           Excluded from default builds because it requires JDK 25 and the 
Trino SPI. -->
+      <!-- RFC-105: builds the Trino connector (org.apache.hudi:hudi-trino), a 
regular non-shaded
+           jar relying on Trino's URLClassLoader plugin isolation. Excluded 
from default builds
+           because it requires JDK 25 and the Trino SPI. -->
       <id>hudi-trino</id>
       <modules>
         <module>hudi-trino-plugin</module>
-        <module>packaging/hudi-trino-bundle</module>
       </modules>
     </profile>
     <profile>


Reply via email to