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

   ### Describe the issue this Pull Request addresses
   
   Addresses #16461 (HUDI-7659), which asked to *"update 0.14.0 release docs to 
call out that row writer w/
   clustering is enabled by default"*.
   
   **The premise does not hold for 0.14.0, so this PR documents the behaviour 
where it is actually true instead
   of writing a false statement into a release-note page.** Details in 
Verification below; the short version is
   that the clustering fallback for that config read `false` at 
`release-0.14.0`.
   
   The real gap the ticket points at is genuine and unaddressed: 
`clustering.md` never mentioned that on Spark
   the execution strategies can rewrite file groups either through the **row 
writer** or through the older RDD
   path, which one runs by default, or the config that switches between them. 
`MultipleSparkJobExecutionStrategy`
   picks the path from `hoodie.datasource.write.row.writer.enable`; the docs 
were silent.
   
   ### Summary and Changelog
   
   Adds a **Row writer** subsection under `### Execution Strategy` in 
`clustering.md`, covering the config, its
   default, and how to force the RDD path.
   
   The default is deliberately given two bullets rather than one sentence, 
because "enabled by default" is two
   distinct claims that merely agree on current releases:
   
   * the config itself defaults to `true`, and `HoodieWriterUtils` calls 
`setDefaultValue(ENABLE_ROW_WRITER)` on
     every Spark datasource write — so clustering driven from a datasource 
write takes the row path unless turned
     off;
   * clustering separately applies its **own fallback** when the key is absent 
from the write config, which is
     what a standalone or async clustering job sees.
   
   ### Verification
   
   Docs change, so no test to add. Every statement was read off the tags rather 
than recalled.
   
   **The switch itself** — `MultipleSparkJobExecutionStrategy` chooses the 
path, and the fallback has moved
   around across releases:
   
   | ref | `getBooleanOrDefault("hoodie.datasource.write.row.writer.enable", 
…)` |
   | --- | --- |
   | `release-0.13.0`, `release-0.13.1` | `false` |
   | **`release-0.14.0`** | **`false`** ← the release the ticket names |
   | `release-0.14.1` | `true` |
   | `release-0.15.0`, `release-0.15.1` | `false` (flipped back) |
   | `release-1.0.0` … `release-1.2.0`, master | `true` |
   
   That is why the 0.14.0 release notes are left untouched: for that release 
the requested sentence would be
   incorrect, and 0.15.0 reverted it again. Writing it there would mislead 
anyone reading the 0.14.0 notes.
   
   **The datasource half:** 
`HoodieWriterUtils.setDefaultValue(ENABLE_ROW_WRITER)` is present at
   `release-1.0.0`, `1.0.1`, `1.0.2`, `1.1.1` and `1.2.0` (and at `0.14.0`), 
and `ENABLE_ROW_WRITER` itself
   carries `defaultValue("true")` — so the two halves of the claim are 
independently confirmed.
   
   **Version coverage, and why the text is not identical across copies.** 
Applied to the current docs plus the
   five supported versioned copies. `1.0.0`, `1.0.1` and `1.0.2` gate the row 
path on a second condition —
   `HoodieDataTypeUtils.canUseRowWriter(schema, conf)`, which returns `false` 
when
   `parquet.avro.write-old-list-structure` is `false` **and** the schema 
carries both a small-precision decimal
   and a list or map field, logging `Cannot use row writer due to presence of 
list or map with a small precision
   decimal field`. That condition is **absent from 1.1.1 onwards**, so only the 
three 1.0.x copies describe it:
   
   ```
   website/docs/clustering.md                          +22   (config only)
   website/versioned_docs/version-1.2.0/clustering.md  +22   (config only)
   website/versioned_docs/version-1.1.1/clustering.md  +22   (config only)
   website/versioned_docs/version-1.0.2/clustering.md  +28   (config + schema 
gate)
   website/versioned_docs/version-1.0.1/clustering.md  +28   (config + schema 
gate)
   website/versioned_docs/version-1.0.0/clustering.md  +28   (config + schema 
gate)
   ```
   
   0.15.x and 0.14.x are left alone: their fallback was `false`, so this text 
would not be true there.
   
   `markdownlint` run over all six files before and after, compared by rule 
*class* (these pages already carry
   ten classes, so raw counts are meaningless): **no new class of finding**. 
The added region is byte-identical
   within each of the two variant groups, contains no `<` or `{` outside inline 
code, and `#### Row writer` nests
   correctly under `### Execution Strategy` and before `### Update Strategy` in 
every copy.
   
   **Not done:** the Docusaurus build (`website/node_modules` absent, full 
install heavy). The section adds one
   table and prose, both constructs already on this page.
   
   ### Impact
   
   Documentation only — no code, config or format change. A behaviour that 
previously required reading
   `MultipleSparkJobExecutionStrategy` to discover is now stated, including the 
part that trips people up: the
   answer differs between a datasource write and a standalone clustering job.
   
   Worth flagging for reviewers: **#17341 (HUDI-8749) "Deprecate clustering 
with row writer" is open**, asking
   whether this path is still needed given the file-group reader flow. If that 
lands, this section becomes the
   natural place to add the deprecation note — documenting it now does not 
obstruct that, and arguably helps,
   since users currently have no way to know which path they are on.
   
   ### Risk Level
   
   none
   
   ### Documentation Update
   
   This is the documentation update. Targets `asf-site`; applied to `docs/` 
plus versioned copies 1.2.0, 1.1.1,
   1.0.2, 1.0.1 and 1.0.0.
   
   ### 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 — n/a for docs; verification 
tables above instead
   - [ ] CI passes on my PR — `asf-site` PRs do not run the `master` gates; 
`markdownlint` parity checked locally
         as described
   


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