apache / apache/hudi

Align hudi-trino license headers and code style with Hudi conventions

Open
#19,412 0 comments 0 reactions 1 assignee Claimed by @voonhous View on GitHub
Dominant language
Java
Stars
6.2k
Forks
2.5k
Avg merge
2d 8h
Merged PRs (30d)
111

Description

Parent: #18780 (RFC-105).

## Context

`hudi-trino` was migrated from trinodb/trino (RFC-105) and still carries Trino conventions:

- All java files under `hudi-trino/src` carry the short "Licensed under the Apache License, Version 2.0" header instead of the ASF header used everywhere else in the repo. RAT accepts them via its default AL matcher, but nothing enforces the repo-standard header.
- The module sets `checkstyle.skip=true` in its pom, and the airbase check stack (`com.mycila:license-maven-plugin`, Trino checkstyle, modernizer) stopped applying when RFC-105 re-parented the module from `io.trino:trino-root` to the Hudi root pom. Net result: no style or header enforcement at all today.

Per RFC-105 the connector's canonical home is now apache/hudi -- the Trino side becomes a thin shim consuming `org.apache.hudi:hudi-trino` and connector source no longer syncs back upstream -- so there is no reason to keep Trino formatting.

## Scope

1. Convert license headers in `hudi-trino/src` to the standard ASF header (the root pom RAT config already matches it). Update the RAT comment in `.github/workflows/bot.yml` that documents the current AL-header situation, and drop the `hudi-trino` prune in `scripts/release/validate_source_copyright.sh` -- that script greps for the ASF wording, so the converted files pass and the exclusion (kept today only because of the short AL headers) becomes unnecessary.
2. Remove `checkstyle.skip=true` from `hudi-trino/pom.xml`, run Hudi checkstyle over the module, and fix violations (large mechanical reformat: indentation, import order).
3. Land the header conversion and the reformat as separate commits; add a `.git-blame-ignore-revs` listing the reformat commit (the repo does not have one yet).
4. Wire checkstyle into `hudi_trino_ci.yml` so the module stays enforced going forward.

## Out of scope

- We are not making any package-level renames: everything stays under `io.trino.plugin.hudi.*`, and no class moves to `org.apache.hudi.*` (e.g. `io.trino.plugin.hudi.HudiBaseFileOnlyPageSource` does NOT become `org.apache.hudi.trino.HudiBaseFileOnlyPageSource`). The Trino-side shim references these classes by fully qualified name (RFC-105), so the `package` statements and directory layout must stay unchanged. The files themselves are still fully in scope for the header and style conversion above.
- The mirrored smoke tests on the Trino side keep Trino conventions in trinodb/trino.

## Sequencing

Do this after the in-flight hudi-trino release-staging work (#19410) merges, to avoid conflicting with open PRs. The reformat has no effect on the released artifact.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.