You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@beam.apache.org by "Abacn (via GitHub)" <gi...@apache.org> on 2024/12/31 00:45:03 UTC

[PR] Make Beam expansion service shadowJar multi-release [beam]

Abacn opened a new pull request, #33472:
URL: https://github.com/apache/beam/pull/33472

   so it processes multi-release dependencies correctly
   
   Fix #33471
   
   **Please** add a meaningful description for your change here
   
   ------------------------
   
   Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:
   
    - [ ] Mention the appropriate issue in your description (for example: `addresses #123`), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment `fixes #<ISSUE NUMBER>` instead.
    - [ ] Update `CHANGES.md` with noteworthy changes.
    - [ ] If this contribution is large, please file an Apache [Individual Contributor License Agreement](https://www.apache.org/licenses/icla.pdf).
   
   See the [Contributor Guide](https://beam.apache.org/contribute) for more tips on [how to make review process smoother](https://github.com/apache/beam/blob/master/CONTRIBUTING.md#make-the-reviewers-job-easier).
   
   To check the build health, please visit [https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md](https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md)
   
   GitHub Actions Tests Status (on master branch)
   ------------------------------------------------------------------------------------------------
   [![Build python source distribution and wheels](https://github.com/apache/beam/workflows/Build%20python%20source%20distribution%20and%20wheels/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Build+python+source+distribution+and+wheels%22+branch%3Amaster+event%3Aschedule)
   [![Python tests](https://github.com/apache/beam/workflows/Python%20tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Python+Tests%22+branch%3Amaster+event%3Aschedule)
   [![Java tests](https://github.com/apache/beam/workflows/Java%20Tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Java+Tests%22+branch%3Amaster+event%3Aschedule)
   [![Go tests](https://github.com/apache/beam/workflows/Go%20tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Go+tests%22+branch%3Amaster+event%3Aschedule)
   
   See [CI.md](https://github.com/apache/beam/blob/master/CI.md) for more information about GitHub Actions CI or the [workflows README](https://github.com/apache/beam/blob/master/.github/workflows/README.md) to see a list of phrases to trigger workflows.
   


-- 
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: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Make Beam expansion service shadowJar multi-release [beam]

Posted by "Abacn (via GitHub)" <gi...@apache.org>.
Abacn commented on PR #33472:
URL: https://github.com/apache/beam/pull/33472#issuecomment-2568038477

   Yeah I think it's working. To test,
   
   Creating a gradle project:
   
   ```
   plugins {
       id 'java'
       id("com.github.johnrengelman.shadow") version "7.1.1"
   }
   
   repositories {
       mavenCentral()
       mavenLocal()
       maven {
           url 'https://repository.apache.org/content/groups/snapshots'
       }
   }
   
   dependencies {
       implementation("org.apache.beam:beam-sdks-java-io-expansion-service:2.63.0-SNAPSHOT")
   }
   
   def javaMainClass = "com.github.abacn.InspectClass"
   
   task exec(type: Exec) {
       dependsOn build
       group = "Execution"
       description = "Run the main class with ExecTask"
       commandLine "java", "-classpath", sourceSets.main.runtimeClasspath.getAsPath(), javaMainClass
   }
   ```
   
   with a main class:
   
   ```
   package com.github.abacn;
   
   public class InspectClass {
     public static void main(String[] argv) throws ClassNotFoundException {
       String name = "org.xbill.DNS.spi.DnsjavaInetAddressResolverProvider";
       Class<?> clz = Class.forName(name);
       String path = clz.getProtectionDomain().getCodeSource().getLocation().getPath();
       System.out.println(name + ": " + path);
     }
   }
   ```
   
   ----
   
   Run with Java 21.
   
   Before (run on nightly):
   
   ```
   > Task :shadowPluginTest:exec FAILED
   Exception in thread "main" java.lang.ClassNotFoundException: org.xbill.DNS.spi.DnsjavaInetAddressResolverProvider
           at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
           at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
   ```
   
   After:
   
   ```
   > Task :shadowPluginTest:exec
   org.xbill.DNS.spi.DnsjavaInetAddressResolverProvider: /Users/yathu/.m2/repository/org/apache/beam/beam-sdks-java-io-expansion-service/2.63.0-SNAPSHOT/beam-sdks-java-io-expansion-service-2.63.0-SNAPSHOT.jar
   ```


-- 
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: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Make Beam expansion service shadowJar multi-release [beam]

Posted by "kennknowles (via GitHub)" <gi...@apache.org>.
kennknowles commented on PR #33472:
URL: https://github.com/apache/beam/pull/33472#issuecomment-2568160361

   > > This matches the fix I had to do in some other places. Did it work for this jar? Perhaps we should make it default somehow... I don't know if there is a downside.
   > 
   > yeah I made it default to expansion services, where technically is run on different jre environment, and directly (without dependency resolution like maven or gradle)
   > 
   > Did a little search it seems multi-release jar is a debated, e.g. this blog https://blog.gradle.org/mrjars . So I ended up with only enabling it if upstream dependencies has used multi-released jar
   > 
   > imo the issue itself kind of indicated multi-release jar can bring problems.
   
   Good point. And thanks for the link to that article. It does seem like this could have the same impact on Beam users who build uberjars.


-- 
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: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Make Beam expansion service shadowJar multi-release [beam]

Posted by "Abacn (via GitHub)" <gi...@apache.org>.
Abacn commented on PR #33472:
URL: https://github.com/apache/beam/pull/33472#issuecomment-2568043868

   > This matches the fix I had to do in some other places. Did it work for this jar? Perhaps we should make it default somehow... I don't know if there is a downside.
   
   yeah I made it default to expansion services, where technically is run on different jre environment, and directly (without dependency resolution like maven or gradle)
   
   Did a little search it seems multi-release jar is a debated, e.g. this blog https://blog.gradle.org/mrjars . So I ended up with only enabling it if upstream dependencies has used multi-released jar
   
   imo the issue itself kind of indicated multi-release jar can bring problems.


-- 
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: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Make Beam expansion service shadowJar multi-release [beam]

Posted by "Abacn (via GitHub)" <gi...@apache.org>.
Abacn merged PR #33472:
URL: https://github.com/apache/beam/pull/33472


-- 
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: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org