Skip to content

Finalize Iceberg root and shim class placement [reduced-it] - #15944

Draft
gerashegalov wants to merge 11 commits into
NVIDIA:mainfrom
gerashegalov:codex/unshim-iceberg-final-layout
Draft

Finalize Iceberg root and shim class placement [reduced-it]#15944
gerashegalov wants to merge 11 commits into
NVIDIA:mainfrom
gerashegalov:codex/unshim-iceberg-final-layout

Conversation

@gerashegalov

Copy link
Copy Markdown
Collaborator

Related to #15821.

Stacked on #15841.

Description

This PR completes the Iceberg class-placement milestone:

  • promote conditional root-safe module classes from the newest selected Spark classifier that provides each class
  • move five conditional Iceberg helpers into iceberg-common
  • retain all remaining Iceberg implementation classes in their Spark-specific directories instead of spark-shared
  • remove all seven remaining Iceberg entries from unshimmed-common-from-single-shim.txt
  • apply the same conditional-root selection to the standard and fast distribution assemblers

After this change, assembled multi-shim distribution JARs contain no Iceberg classes under spark-shared. The shared, root-safe Iceberg helpers are at the JAR root, while Spark- and Iceberg-version-specific implementations remain under sparkXYZ.

There are no user-facing configuration or API changes.

This PR remains a draft while stacked:

Validation:

  • clean Scala 2.12 multi-shim dist build: 334,344,353,359
  • clean Scala 2.13 multi-shim dist build: 353,359,404,413,420
  • package-private-access audit passed for 11 callers across all selected real Iceberg runtime worlds
  • final JAR inspection found 50 Iceberg class files at root, zero under spark-shared, and the remaining classes under Spark-specific directories
  • verified that conditional root classes have no copies under the selected shim directories
  • verified newest-provider precedence: general helpers came from Spark 4.1.3 and GpuBaseReader came from its newest applicable classifier, Spark 3.5.3
  • Spark 4.1.3 focused Iceberg unit tests: 5 passed
  • Spark 3.5.3/Scala 2.13 GPU integration smoke with Iceberg loaded through extraClassPath: 6 passed
  • fast direct multi-shim assembler completed successfully and produced the same Iceberg placement
  • shell, Python syntax, Scala 2.13 POM synchronization, and whitespace checks passed

Checklists

Documentation

  • Updated for new or modified user-facing features or behaviors
  • No user-facing change

Testing

  • Added or modified tests to cover new code paths
  • Covered by existing tests
    (IcebergDeletionVectorSuite and the Iceberg read, append, and no-op-write integration smoke tests)
  • Not required

Performance

  • Tests ran and results are added in the PR description
  • Issue filed with a link in the PR description
  • Not required

Performance testing is not required because this changes build-time source selection and JAR placement without modifying runtime execution logic.

This change and its validation were prepared with AI assistance and reviewed by a human before publication.

Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>
Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>
…independent-helpers

Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>

# Conflicts:
#	dist/unshimmed-common-from-single-shim.txt
…independent-helpers

Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>
Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>
…independent-helpers

Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>

# Conflicts:
#	dist/unshimmed-common-from-single-shim.txt
…independent-helpers

Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>

# Conflicts:
#	dist/unshimmed-common-from-single-shim.txt
Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>
…independent-helpers

Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>
Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>
Signed-off-by: Gera Shegalov <gshegalov@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants