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]
