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

   ### Describe the issue this Pull Request addresses
   
   Validating a release candidate before voting is a manual, multi-hour 
checklist today. `scripts/release/validate_staged_release.sh` covers the source 
release, but everything after it is done by hand on every RC: downloading the 
staged bundles, running a quickstart, standing up a HoodieStreamer pipeline to 
confirm commits, compaction and cleaning, building from source, and choosing 
and running tests. That makes RC validation slow to start, hard to repeat, and 
uneven across voters. Several environment traps also produce failures that look 
like RC problems when they aren't:
   - tests run on a different JDK than the release builds with
   - MOR test tables so small that compaction never runs
   - spark-shell scripts that hang when a line throws
   
   ### Summary and Changelog
   
   Voters get one command that validates an RC at the depth they have time for, 
against the artifacts actually being voted on, with a PASS/FAIL line per check 
and a summary at the end.
   
   ```bash
   scripts/release/validate_rc.sh --release=1.1.2 --rc_num=1 
--scale=minimal|decent|large \
     --staging_repo=<staging repo url> --signing_key=<key id> 
--spark_home=<spark 3.5 dir>
   ```
   
   | Scale | Steps | Time |
   |---|---|---|
   | minimal | source release checks (now including signing-key match); 
quickstart on COW and MOR (datasource + Spark SQL, 21 checks) against the 
staged spark bundle; continuous HoodieStreamer run on MOR | ~5-10 min |
   | decent | minimal + build from the voted source tarball with the JDK its 
pom declares + HoodieStreamer tests + a larger HoodieStreamer run | ~15-30 min |
   | large | decent + `TestCOWDataSource`, `TestMORDataSource`, 
`TestInsertTable`, `TestMergeIntoTable` + high-volume HoodieStreamer runs on 
MOR and COW | ~2-4 h |
   
   Changelog:
   - `scripts/release/validate_rc.sh`: entry point. Picks steps from `--scale`; 
`--steps` overrides. Each step runs isolated, so one failure doesn't hide the 
others' results.
   - `scripts/release/rc_validation/`:
     - `common.sh`: picks the JDK from the source pom and downloads staged 
bundles with sha1 checks. Its spark-shell runner treats compile errors and REPL 
fall-through as failures.
     - `quickstart.scala`: the COW and MOR quickstart checks.
     - `run_streamer_e2e.sh`, `streamer_e2e_datagen.scala`, 
`streamer_e2e_validate.scala`, `trips.avsc`: HoodieStreamer in continuous mode 
with `ParquetDFSSource` and `FilebasedSchemaProvider`, fed by a timed batch 
generator. Checks commit count, error records, ERROR log lines, record count 
against the expected total, duplicate keys, arrival of the last batch, 
completed async compaction (MOR) and files deleted by the cleaner.
     - `run_tests.sh`: scale-based test selection. It fails if no tests ran, so 
a selector that matches nothing doesn't produce a green build.
   - `scripts/release/skills/hudi-rc-validation/SKILL.md`: an agent skill. It 
maps a request like "quick sanity" or "thorough" to a scale, runs the script, 
separates known environment failures from real RC problems, and drafts the vote 
reply. Coding agents can use it; people can follow it as a runbook.
   
   Verified against 1.1.2-rc1 (`orgapachehudi-1198`):
   - minimal: all steps pass, ~8.5 min
   - decent: all steps pass, ~28 min; 280k-record MOR run, build from source 
tarball on JDK 8, 10/10 HoodieStreamer tests
   - COW e2e at minimal size: passes
   - large: not run end to end. Its pieces are the same scripts at higher 
volume, plus suites that passed separately (243 datasource tests, 38 Spark SQL 
tests).
   
   While building this I found a pre-existing bug, which I'll file separately: 
`CALL show_cleans(..., showArchived => true)` fails with `Not an Avro data 
file` once cleans are archived to the LSM timeline. It affects the release as 
well as master.
   
   ### Impact
   
   New release tooling only, under `scripts/release/`. No change to any module, 
public API, config or build.
   
   ### Risk Level
   
   none. The scripts are run manually by release voters and nothing in the 
build or CI calls them. All new files carry ASF headers and pass 
`apache-rat:check`.
   
   ### Documentation Update
   
   none. Usage is documented in the `validate_rc.sh` header (`--help`) and in 
the skill. A follow-up can link it from the release guide on the website.
   
   ### 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