yihua opened a new pull request, #19168:
URL: https://github.com/apache/hudi/pull/19168

   **Stacked on #19147, review that first.**
   
   ### Change Logs
   
   Consolidates the six identically-pathed copies of the vendored spark-avro 
`AvroSerializer`/`AvroDeserializer` (hudi-spark3.3.x through hudi-spark4.2.x):
   
   - **Serializer 6 -> 2** (hudi-spark3-common, hudi-spark4-common).
   - **Deserializer 6 -> 3** (hudi-spark3-common; hudi-spark4-common for 
4.1/4.2; hudi-spark4.0.x keeps a renamed `Spark40AvroDeserializer`).
   
   Like #19147, the shared repo path made these forks invisible to Codecov 
(report-path resolution drops files whose path is shared across six modules); 
unique paths restore them to the coverage denominator, so expect a small 
negative project-coverage delta from that honest accounting.
   
   How the version deltas are handled (every shared body is byte-identical to 
its originals modulo these):
   
   - **3.x**: bodies are identical except the `LegacyBehaviorPolicy` import 
(nested in `SQLConf` on 3.3/3.4, top-level on 3.5). No single explicit import 
resolves on all three, so the shared source imports both 
`org.apache.spark.sql.internal._` and `...SQLConf._`; exactly one contributes 
the enum per version.
   - **4.x serializer**: the only per-version difference is the 
`AVRO_REBASE_MODE_IN_WRITE` read (String on 4.0, enum on 4.1+); this moved 
verbatim into the per-version wrappers and the convenience constructor was 
dropped from the shared class.
   - **4.0 deserializer**: kept separate (Avro 1.12.0 vs 1.12.1 read-side 
block), renamed `Spark40AvroDeserializer` to avoid a same-FQN classpath 
collision with the shared copy; its body is unchanged.
   
   ### Impact
   
   Pure refactor; no functional change. Bundles already include the family 
common modules and relocate the `org.apache.spark.sql.avro` package wholesale.
   
   ### Risk level
   
   low. Every shared body is byte-identical to its originals modulo the 
documented import/constructor deltas; import resolution was verified by 
compiling against the Spark 3.3/3.4/3.5 catalyst jars, and scalastyle is clean. 
CI compiles all Spark 3.3-4.2 profiles on Scala 2.12 and 2.13.
   
   ### Documentation Update
   
   None.
   
   ### Contributor's checklist
   - [x] Read through the contributor's guide
   - [x] Enough context is provided in the sections above
   


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to