This is an automated email from the ASF dual-hosted git repository. voonhous pushed a commit to branch release-1.2.1 in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 61a3a496e5e6b7060d13dc5e1b0d66a34366728a Author: voonhous <[email protected]> AuthorDate: Fri Jul 10 01:49:49 2026 +0800 fix(bundle): shade parquet-variant into common bundle includes for Spark 4.1+ (#19235) Parquet 1.16.0 (Spark 4.1) split VARIANT support into a separate `parquet-variant` module carrying `org.apache.parquet.variant.VariantConverters`. `parquet-avro:1.16.0`, shaded into the spark and utilities bundles and used on the read path, references it, but the shade `<includes>` allowlists omitted parquet-variant, so the class was dropped from the bundles and absent at runtime. On Spark 4.1 every read-modify write (UPDATE / MERGE / DELETE) then aborted with NoClassDefFoundError; only INSERT succeeded. This affects any Spark 4.1 bundle that shades parquet-avro: both hoodie-spark-bundle (surfaced by the hive-sync E2E, #19216) and hoodie-utilities-bundle (the HoodieStreamer standalone runtime). Add parquet-variant to the shared "common to all bundles" artifactSet in the root pom that every bundle appends to via combine.children="append". It is a transitive compile dep of parquet-avro for Parquet 1.16.0+, so it shades for Spark 4.1/4.2 and is a no-op for older Spark and bundles that pin pre-1.16 parquet. Verified the rebuilt spark4.1 spark-bundle and utilities-bundle both contain VariantConverters. Fixes apache/hudi#19234 (cherry picked from commit 9df73c747453790e1fea6a8be6d8bac3c37f48ab) --- pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pom.xml b/pom.xml index 1d5d6e17ebfd..ae01441bf958 100644 --- a/pom.xml +++ b/pom.xml @@ -479,6 +479,9 @@ <!-- afterburner module for jackson performance --> <include>com.fasterxml.jackson.module:jackson-module-afterburner</include> <include>com.fasterxml.jackson.module:jackson-module-scala_${scala.binary.version}</include> + <!-- Parquet 1.16.0+ (Spark 4.1+) splits VariantConverters into parquet-variant, + which parquet-avro needs at runtime. No-op for older Spark. See apache/hudi#19234. --> + <include>org.apache.parquet:parquet-variant</include> </includes> </artifactSet> <relocations>
