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

   ### Describe the issue this Pull Request addresses
   
   Continues the hudi-common package reorganization from #19193 (and #19192's 
client-common reorg), sorting the remaining misplaced classes into the two-tier 
taxonomy — `org.apache.hudi.core.*` for domain-aware read/write machinery, 
`org.apache.hudi.common.*` for shared substrate — without changing module 
structure. Also evicts hudi classes squatting third-party namespaces and 
dissolves the last grab-bag packages.
   
   ### Summary and Changelog
   
   No behavior changes; package relocations only (~600 files, overwhelmingly 
import churn). One commit per concern:
   
   - `refactor(common)!`: column stats types (`HoodieColumnRangeMetadata`, 
`ValueType`, `ValueMetadata`, `ParquetAdapter`, spark's 
`SparkValueMetadataUtils`) → `o.a.h.metadata.stats`. They are 
metadata-subsystem vocabulary: they depend on `HoodieIndexVersion`, and 
`ValueType.ordinal()` is persisted in col-stats index records. 
(`o.a.h.metadata` itself deliberately stays put: `HoodieMetadataPayload`'s FQN 
is persisted in every metadata table's `hoodie.properties` — 
storage-format-locked.)
   - `refactor(common)!`: `TimelineServiceClient`/`TimelineServiceClientBase` → 
`o.a.h.common.table.timeline`, next to the timeline model and the dto payloads 
the client fetches; removes hudi-common's two-class `o.a.h.timeline` package.
   - `refactor(common)!`: hudi-common's `o.a.h.util` grab-bag dissolved: 
`HoodieFileMetadataMerger` → `core.io.storage` (binary-copy footer merging); 
`Lazy` → `common.util`; `LazyConcatenatingIterator` plus client-common's three 
engine-agnostic iterators (pulled up cross-module) → `common.util.collection`; 
`PartitionPathFilterUtil` deleted (its predicate is now a public helper on 
`HoodieTableMetadataUtil`); dead `Transient` deleted.
   - `refactor(common)!`: `org.apache.parquet.schema` vacated from hudi-common: 
the two `ParquetAdapter` implementations → `metadata.stats` (they use only 
public parquet APIs; class-literal reflection follows the move), 
`HoodieSchemaRepair` → `common.schema` (imports zero parquet types). 
hudi-hadoop-common's parquet-namespace classes are intentionally untouched.
   - `refactor(common)!`: avro utilities (16 classes incl. `HoodieAvroUtils`, 
plus `processors`) → `o.a.h.common.avro`. The old namespace survives with 
exactly two locked residents: `o.a.h.avro.model` (avsc-generated; namespaces 
persisted in timeline metadata files) and hudi-hadoop-common's 
`HoodieAvroWriteSupport` (FQN is the default of 
`hoodie.avro.write.support.class` and a documented extension point — left in 
place so no compatibility stub is needed).
   - `refactor(common)!`: `HoodieStorageUtils` → `common.util`, eliminating 
hudi-common's split of hudi-io's `o.a.h.storage` package (the class moves to 
the hudi-io jar at the future module split, package unchanged); the six index 
contracts (`record`/`expression`/`secondary`) → `core.index.*`, with spark's 
engine implementations staying at `o.a.h.index.expression` — same 
contract-vs-implementation split as `core.io`.
   
   No code was copied.
   
   ### Impact
   
   No config keys, defaults, or semantics change. No storage-format impact, 
verified per move: persisted schemas/index definitions/metadata records carry 
no Java class names; `hoodie.avro.write.support.class` and `hoodie.index.class` 
targets are untouched; avro record namespaces on storage unchanged.
   
   Breaking (source/binary) only for externally compiled code importing the 
moved classes — always failing loudly (`NoClassDefFoundError`/compile error), 
fixed by import changes. The widest programmatic surface is `HoodieAvroUtils`. 
Users configuring Hudi via `hoodie.*` properties see zero impact. 
hudi-trino-plugin untouched (builds against released Hudi). No performance 
impact.
   
   ### Risk Level
   
   low — mechanical relocations with format/config-locked classes deliberately 
left in place. Verification: full 52-module reactor build green (`-Dspark4.1 
-Dflink2.1`, checkstyle/scalastyle enforced); targeted suites green across 
every moved area (stats/value metadata, timeline client, iterators and 
file-metadata merger, schema repair incl. the hadoop-common equivalence test, 
avro utils/converters/reader context, secondary index and spark expression 
index, metadata payload). One pre-existing local test failure 
(`TestHoodieAvroParquetWriter#testProperWriting`, avro LocalDate logical-type 
cast) reproduces identically on the merge base without these changes.
   
   ### Documentation Update
   
   none — no config keys or defaults change.
   
   ### Contributor's checklist
   
   - [x] Read through [contributor's 
guide](https://hudi.apache.org/contribute/how-to-contribute)
   - [x] Enough context is provided in the sections above
   - [x] Adequate tests were added if applicable
   


-- 
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