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]
