For the shadowJar issue see https://issues.apache.org/jira/browse/BEAM-4402. There are 280 test failures, but many of them are the same issue.
I believe there is significant work on both, but I think there is significant value as well. I suppose there should be a vote on applying these rules to the whole project and a fix it day to make it happen. Andrew On Fri, Jun 1, 2018 at 9:39 AM Kenneth Knowles <k...@google.com> wrote: > Spotless is slightly off topic and less serious than test coverage > problems, but see https://issues.apache.org/jira/browse/BEAM-4394. > > On Fri, Jun 1, 2018 at 9:30 AM Scott Wegner <sweg...@google.com> wrote: > >> Andrew, it sounds like you're suggesting testShadowJar and enableSpotless >> should also be the default for all modules? Do you have an idea of how much >> effort is required for migrating? For failOnWarning / ErrorProne, the >> migration is pretty straightforward, so I created starter bugs for each >> module [1] with step-by-step instructions that anybody could pick up, and >> so far it's been fairly successful-- only 13 out of 47 left to go. Do we >> have anything tracking the work for testShadowJar / spotless? >> >> [1] https://issues.apache.org/jira/issues/?jql=labels+%3D+errorprone >> >> >> On Thu, May 31, 2018 at 9:20 AM Andrew Pilloud <apill...@google.com> >> wrote: >> >>> There is now a testShadowJar option on applyJavaNature, which allows you >>> to run your tests against the shaded jar. Everyone should turn it on for >>> their module along with failOnWarning and enableSpotless for maximum >>> testing. >>> >>> On Thu, May 24, 2018 at 1:24 PM Andrew Pilloud <apill...@google.com> >>> wrote: >>> >>>> I've make the SQL PR able to be merged standalone so I can get back to >>>> work. I've also opened issues to track the things I found and dumped my >>>> work in progress into a PR. >>>> >>>> https://issues.apache.org/jira/browse/BEAM-4402 >>>> https://issues.apache.org/jira/browse/BEAM-4403 >>>> https://github.com/apache/beam/pull/5471 >>>> >>>> Andrew >>>> >>>> On Thu, May 24, 2018 at 11:54 AM Kenneth Knowles <k...@google.com> >>>> wrote: >>>> >>>>> If it is taking days of work we should definitely put it behind a flag >>>>> and do it incrementally, find a way to share the work. >>>>> >>>>> If our tests aren't running on the actual artifacts, then we don't >>>>> really have assurance that they work. That should interest just about >>>>> everyone. (though it is also status quo relative to mvn) >>>>> >>>>> Kenn >>>>> >>>>> On Thu, May 24, 2018 at 10:17 AM Andrew Pilloud <apill...@google.com> >>>>> wrote: >>>>> >>>>>> I think I'm down to 11 packages with failures, some of which might be >>>>>> precommits that don't run outside of Jenkins. Its not an issue of >>>>>> figuring >>>>>> them out, it is an issue of time spent doing so. >>>>>> >>>>>> On Thu, May 24, 2018 at 9:31 AM Lukasz Cwik <lc...@google.com> wrote: >>>>>> >>>>>>> Were you able to figure out how to fix them or still having problems? >>>>>>> >>>>>>> On Thu, May 24, 2018 at 9:27 AM Andrew Pilloud <apill...@google.com> >>>>>>> wrote: >>>>>>> >>>>>>>> I spent all of yesterday investigating and fixing dependency issues >>>>>>>> outside of SQL. I really regret the decision to write a test for this. >>>>>>>> Would it be acceptable for us to put testing with the output jar >>>>>>>> behind a >>>>>>>> flag like we do for failOnWarning? >>>>>>>> >>>>>>>> On Wed, May 23, 2018 at 5:21 PM Kenneth Knowles <k...@google.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> What's the status of moving it forward? Is it a ton of work / too >>>>>>>>> much to do quickly? >>>>>>>>> >>>>>>>>> On Wed, May 23, 2018 at 9:11 AM Andrew Pilloud < >>>>>>>>> apill...@google.com> wrote: >>>>>>>>> >>>>>>>>>> To loop the list in on discussions going on in >>>>>>>>>> https://github.com/apache/beam/pull/5443: our normal tests don't >>>>>>>>>> run against the shaded jars. Gradle can run the tests against the >>>>>>>>>> shaded >>>>>>>>>> jars, but a bunch fail due to dependency issues. It's not just SQL. >>>>>>>>>> >>>>>>>>>> Andrew >>>>>>>>>> >>>>>>>>>> On Mon, May 21, 2018 at 11:35 AM Lukasz Cwik <lc...@google.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Shading requires two pieces of information: >>>>>>>>>>> 1) Which dependencies should be part of the shaded jar >>>>>>>>>>> (controlled by includes/excludes) >>>>>>>>>>> 2) How to relocate code within those dependencies (controlled by >>>>>>>>>>> relocations) >>>>>>>>>>> >>>>>>>>>>> The reason why the exclude(".*") exists is because typically it >>>>>>>>>>> is an error to produce a shaded package with dependencies which are >>>>>>>>>>> not >>>>>>>>>>> relocated. When libraries do this, it causes a lot of >>>>>>>>>>> NoClassFound/NoMethodFound errors for users since a user can't know >>>>>>>>>>> which >>>>>>>>>>> version of a dependency they are actually getting (the one that was >>>>>>>>>>> bundled >>>>>>>>>>> part of your jar or the one they depend on as a library). Only >>>>>>>>>>> applications >>>>>>>>>>> should ever really do this, libraries should always repackage all >>>>>>>>>>> their >>>>>>>>>>> code to prevent such errors. >>>>>>>>>>> >>>>>>>>>>> Note that in the SQL package, you can provide your own >>>>>>>>>>> shadowClosure to the applyJavaNature() which means that the default >>>>>>>>>>> won't >>>>>>>>>>> apply. For example: >>>>>>>>>>> https://github.com/apache/beam/blob/a3ba6a0e8de3ae72b8fc6fc6038eb9dc725f092e/sdks/java/harness/build.gradle#L20 >>>>>>>>>>> and remove the 'DEFAULT_SHADOW_CLOSURE <<' >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Mon, May 21, 2018 at 10:26 AM Andrew Pilloud < >>>>>>>>>>> apill...@google.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> The issue SQL is seeing is caused by a default dependency of >>>>>>>>>>>> exclude(".*") added in build_rules.gradle. This breaks the normal >>>>>>>>>>>> method of >>>>>>>>>>>> building shadow jars as everything must be explicitly included. SQL >>>>>>>>>>>> explicitly added calcite to the jar, but not calcite's >>>>>>>>>>>> dependencies. I've >>>>>>>>>>>> been told this is the desired behavior as we want to ensure >>>>>>>>>>>> everything >>>>>>>>>>>> included is relocated. >>>>>>>>>>>> >>>>>>>>>>>> I don't know much about gradle, but this seems fragile. Is it >>>>>>>>>>>> possible to have all dependencies automatically relocated so we >>>>>>>>>>>> don't need >>>>>>>>>>>> the exclude(".*") rule? >>>>>>>>>>>> >>>>>>>>>>>> Andrew >>>>>>>>>>>> >>>>>>>>>>>> On Thu, May 17, 2018 at 7:41 PM Andrew Pilloud < >>>>>>>>>>>> apill...@google.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Yep, I added the issue as a blocker. >>>>>>>>>>>>> https://issues.apache.org/jira/projects/BEAM/issues/BEAM-4357 >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, May 17, 2018, 6:05 PM Kenneth Knowles <k...@google.com> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> This sounds like a release blocker. Can you add it to the >>>>>>>>>>>>>> list? (Assign fix version on jira) >>>>>>>>>>>>>> >>>>>>>>>>>>>> Kenn >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, May 17, 2018, 17:30 Lukasz Cwik <lc...@google.com> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Typically we have a test block which uses a configuration >>>>>>>>>>>>>>> that has the shadow/shadowTest configurations on the classpath >>>>>>>>>>>>>>> instead of >>>>>>>>>>>>>>> the compile/testCompile configurations. The most common >>>>>>>>>>>>>>> examples are >>>>>>>>>>>>>>> validates runner/integration tests for example: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> https://github.com/apache/beam/blob/0c5ebc449554a02cae5e4fd01afb07ecdb0bbaea/runners/direct-java/build.gradle#L84 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Thu, May 17, 2018 at 3:59 PM Andrew Pilloud < >>>>>>>>>>>>>>> apill...@google.com> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I decided to try our new JDBC support with sqlline and >>>>>>>>>>>>>>>> discovered that our SQL shaded jar is completely broken. As >>>>>>>>>>>>>>>> in java.lang.NoClassDefFoundError all over the place. How are >>>>>>>>>>>>>>>> we testing >>>>>>>>>>>>>>>> the output jars from other beam packages? Is there an example >>>>>>>>>>>>>>>> I can follow >>>>>>>>>>>>>>>> to make our integration tests run against the release >>>>>>>>>>>>>>>> artifacts? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Andrew >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>