kevinjqliu opened a new pull request, #18599:
URL: https://github.com/apache/iceberg/pull/18599

   Shadow keeps only one copy of a `META-INF/services` file that several 
dependencies provide, and does not relocate service file names or contents. As 
a result, the shaded jars drop providers (Reactor's `ContextAccessor` in the 
Azure bundle, gRPC resolvers and load balancers in the GCP bundle, AWS SDK 
warm-up providers) and ship service files naming classes that were relocated. 
This applies `mergeServiceFiles()` to every shadow jar, generalizing #17841 by 
@Denverper (credited as co-author), and adds `checkShadowServiceFiles` to 
`check`, which fails when a shaded jar registers fewer service providers than 
its dependencies provide.
   
   Test plan:
   - Built all shaded jars (all Spark and Flink versions) before and after and 
compared `META-INF/services`: no entries lost; recovered 2 (Azure), 26 (GCP), 
10 (AWS), 37 (open-api test fixtures); relocated service files renamed in every 
bundle and runtime jar.
   - `./gradlew checkShadowServiceFiles -DsparkVersions=3.5,4.0,4.1,4.2 
-DflinkVersions=1.20,2.2,2.3` passes; without `mergeServiceFiles()` it fails 
for the AWS, Azure, GCP, and open-api jars.
   - Spot check: `unzip -p azure-bundle/build/libs/iceberg-azure-bundle-*.jar 
META-INF/services/io.micrometer.context.ContextAccessor`
   
   ---
   **AI Disclosure**
   - Model: Claude Opus 5.5
   - Platform/Tool: GitHub Copilot
   - Human Oversight: [unknown - human to fill in]
   - Prompt Summary: Review #17841, generalize its Azure-only 
`mergeServiceFiles()` fix to all shaded jars, and add a build check that guards 
against dropped service providers.


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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to