Thanks, the classpath order matters indeed. Still not able to run RemoteExecutionTest, but I was able to get the Flink portable test to work by adding the following to the *top* of the dependency list of *beam-runners-flink_2.11_test*
vendor/sdks-java-extensions-protobuf/build/libs/beam-vendor-sdks-java-extensions-protobuf-2.6.0-SNAPSHOT.jar model/fn-execution/build/libs/beam-model-fn-execution-2.6.0-SNAPSHOT.jar On Tue, Jul 17, 2018 at 6:00 PM Ankur Goenka <goe...@google.com> wrote: > Yes, I am able to run it. > > For tests, you also need to add dependencies to > ":beam-runners-java-fn-execution/beam-runners-java-fn-execution_*test*" > module. > > Also, I only added > :beam-model-job-management-2.6.0-SNAPSHOT.jar > :beam-model-fn-execution-2.6.0-SNAPSHOT.jar > to the dependencies manually so not sure if you want to add > io.grpc:grpc-core:1.12.0 and com.google.protobuf:protobuf-java:3.5.1 to > the dependencies. > > Note, you need to move them up in the dependencies list. > > > On Tue, Jul 17, 2018 at 5:54 PM Thomas Weise <t...@apache.org> wrote: > >> Are you able to >> run org.apache.beam.runners.fnexecution.control.RemoteExecutionTest from >> within Intellij ? >> >> I can get the compile errors to disappear by adding >> beam-model-job-management-2.6.0-SNAPSHOT.jar, io.grpc:grpc-core:1.12.0 >> and com.google.protobuf:protobuf-java:3.5.1 >> >> Running the test still fails since other dependencies are missing. >> >> >> On Tue, Jul 17, 2018 at 4:02 PM Ankur Goenka <goe...@google.com> wrote: >> >>> For reference: >>> I was able to make intellij work with the master by doing following steps >>> >>> 1. Remove module :beam:vendor-sdks-java-extensions-protobuf from >>> intellij. >>> 2. Adding >>> >>> :beam-model-fn-execution/build/libs/beam-model-fn-execution-2.6.0-SNAPSHOT.jar >>> and >>> :beam-model-job-management/build/libs/beam-model-job-management-2.6.0-SNAPSHOT.jar >>> to the appropriate modules at the top of the dependency list. >>> >>> >>> On Tue, Jul 17, 2018 at 2:29 PM Thomas Weise <t...@apache.org> wrote: >>> >>>> Adding the external jar in Intellij (2018.1) currently fails due to a >>>> duplicate source directory (sdks/java/extensions/protobuf/src/main/java). >>>> >>>> The build as such also fails, with: error: warnings found and -Werror >>>> specified >>>> >>>> Ismaël found removing >>>> https://github.com/apache/beam/blob/master/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy#L538 >>>> as workaround. >>>> >>>> >>>> On Thu, Jul 12, 2018 at 1:55 PM Ismaël Mejía <ieme...@gmail.com> wrote: >>>> >>>>> Seems reasonable, but why exactly may we need the model (or protobuf >>>>> related things) in the future in the SDK ? wasn’t it supposed to be >>>>> translated into the Pipeline proto representation via the runners (and >>>>> in this case the dep reside in the runner side) ? >>>>> On Thu, Jul 12, 2018 at 2:50 AM Lukasz Cwik <lc...@google.com> wrote: >>>>> > >>>>> > Got a fix[1] for Andrews issue which turned out to be a release >>>>> blocker since it broke performing the release. Also fixed several minor >>>>> things like javadoc that were wrong with the release. Solving it allowed >>>>> me >>>>> to do the publishing in parallel and cut the release time from 20+ mins to >>>>> 8 mins on my machine. >>>>> > >>>>> > 1: https://github.com/apache/beam/pull/5936 >>>>> > >>>>> > On Wed, Jul 11, 2018 at 3:51 PM Andrew Pilloud <apill...@google.com> >>>>> wrote: >>>>> >> >>>>> >> We discussed this in person, sounds like my issue is known and will >>>>> be fixed shortly. I'm running builds with '-Ppublishing' because I need to >>>>> generate release artifacts for bundling the Beam SQL shell with the Google >>>>> Cloud SDK. Hope to eventually just use the Beam release, but we are >>>>> currently cutting a release off master every week to quickly iterate on >>>>> bug >>>>> fixes. >>>>> >> >>>>> >> Andrew >>>>> >> >>>>> >> On Wed, Jul 11, 2018 at 1:39 PM Lukasz Cwik <lc...@google.com> >>>>> wrote: >>>>> >>> >>>>> >>> Andrew, to my knowledge it seems as though your running into >>>>> BEAM-4744, is there a reason you need to specify -Ppublishing? >>>>> >>> >>>>> >>> No particular reason to using ByteString within ByteKey and >>>>> TextSource. Note that we currently do shade away protobuf in >>>>> sdks/java/core >>>>> so we could either migrate to using a vendored version or re-implement the >>>>> functionality to not use ByteString. Note that sdks/java/core can now >>>>> dependend on the model/* classes and perform the Pipeline -> Proto >>>>> translation as this will be needed to support portability efforts so I >>>>> would prefer just migrating to use the vendored versions of the code. >>>>> Filed >>>>> BEAM-4766. >>>>> >>> >>>>> >>> As for the IO module, I was referring to the upstream >>>>> bigtable/bigquery/... libraries vended by Google. If they trimmed their >>>>> API >>>>> surface to not expose gRPC or protobuf, then we wouldn't have to worry >>>>> about having the shading logic within sdks/java/io/google-cloud-platform. >>>>> I >>>>> know that this will be impossible for some connectors without backwards >>>>> incompatible changes since they exposed protobuf on their API surface. I >>>>> know that Chamikara was looking to shade this away in the >>>>> sdks/java/io/google-cloud-platform but only had limited success in the >>>>> past. >>>>> >>> >>>>> >>> On Wed, Jul 11, 2018 at 1:14 PM Ismaël Mejía <ieme...@gmail.com> >>>>> wrote: >>>>> >>>> >>>>> >>>> This is great news in particular for runners (Spark) where the >>>>> leaking of some grpc subdependencies caused stability issues and required >>>>> extra shading. Great ! >>>>> >>>> >>>>> >>>> About the other modules >>>>> >>>> >>>>> >>>> > Note, these are the following modules that still depend on >>>>> protobuf that are shaded away and could move to use a vendored variant of >>>>> protobuf: >>>>> >>>> > * sdks/java/core >>>>> >>>> > * sdks/java/extensions/sql >>>>> >>>> >>>>> >>>> For sdks/java/core the dependency in protobuf seems to be minor, >>>>> from a quick look it seems that it is only used to import ByteString in >>>>> two >>>>> classes: ByteKey and TextSource so hopefully we can rewrite both and get >>>>> rid of the dependency altogether (making core smaller which is always a >>>>> win). >>>>> >>>> Can we fill a JIRA for this or do I miss other reasons to depend >>>>> on protobuf in core? >>>>> >>>> >>>>> >>>> For sdks/java/extensions/sql I don’t know if I am missing >>>>> something, but I don’t see any code use of protobuf and I doubt that >>>>> calcite uses protobuf so maybe it is there just because it was leaking >>>>> from >>>>> somewhere else in Beam, we should better check this first. >>>>> >>>> >>>>> >>>> > These modules expose protobuf because it is part of the API >>>>> surface: >>>>> >>>> > * sdks/java/extensions/protobuf >>>>> >>>> > * sdks/java/io/google-cloud-platform (I believe that gRPC could >>>>> be shaded here but preferrably the IO module would do it so we wouldn't >>>>> have this maintenance burden.) >>>>> >>>> >>>>> >>>> Can you please elaborate on ‘but preferrably the IO module would >>>>> do it so we wouldn't have this maintenance burden’. I remember there was >>>>> an >>>>> issue when running the examples in the spark runner examples because of >>>>> sdks/java/io/google-cloud-platform leaking netty via gRPC (BEAM-3519) >>>>> [Note >>>>> that this is hidden at this moment because of pure luck Spark 2.3.x and >>>>> Beam are aligned on netty version but this can change in the future so >>>>> hopefully this can be shaded/controlled]. >>>>> >>>> >>>>> >>>> On Wed, Jul 11, 2018 at 8:55 PM Andrew Pilloud < >>>>> apill...@google.com> wrote: >>>>> >>>>> >>>>> >>>>> This is really cool and should cut down our artifact size >>>>> significantly! Thanks Luke! >>>>> >>>>> >>>>> >>>>> I am running into one issue after this: builds with the >>>>> publishing flag no longer work. (We run './gradlew -Ppublishing shadowJar' >>>>> to generate release artifacts for the Beam SQL shell.) I get a bunch of >>>>> errors like this: >>>>> >>>>> >>>>> >>>>> >>>>> model/job-management/build/generated/source/proto/main/java/org/apache/beam/model/jobmanagement/v1/JobApi.java:148: >>>>> error: no suitable method found for >>>>> readMessage(org.apache.beam.vendor.protobuf.v3.com.google.protobuf.Parser<Pipeline>,ExtensionRegistryLite) >>>>> >>>>> >>>>> >>>>> Is there something I need to change in my build? >>>>> >>>>> >>>>> >>>>> Andrew >>>>> >>>>> >>>>> >>>>> On Tue, Jul 10, 2018 at 2:10 PM Lukasz Cwik <lc...@google.com> >>>>> wrote: >>>>> >>>>>> >>>>> >>>>>> With the merge of PR #5594[1], we started shading all gRPC / >>>>> Protobuf dependencies within all the modules that depended on the model/* >>>>> dependencies by vendoring them. The vendored versions are built and >>>>> packaged into the model jars (they should be separated out once I figure >>>>> out how to generate proto code using a shaded import path). Note that this >>>>> cleaned up several issues where we were incorrectly built shaded jars >>>>> without repackaging in some locations or the shading process was >>>>> corrupting >>>>> the contents of some of the jars. >>>>> >>>>>> >>>>> >>>>>> Note that the majority of the code base (especially related to >>>>> portability) should be using imports under the >>>>> org.apache.beam.vendor.protobuf.v3 or org.apache.beam.vendor.grpc.v1 >>>>> paths. >>>>> I have yet to figure out a clean way to get Intellij to recognize these >>>>> vendored paths. My only solution so far has been to manually add one of >>>>> the >>>>> built model jars to the compile classpath of the module being worked on in >>>>> Intellij as described here[2]. I would greatly appreciate some ideas on >>>>> how >>>>> to improve this integration because from a few attempts configuring the >>>>> intellij gradle pluglin scope sections didn't produce the result that I >>>>> was >>>>> expecting. >>>>> >>>>>> >>>>> >>>>>> I also added a simple test task >>>>> validateShadedJarDoesntLeakNonOrgApacheBeamClasses that validates the >>>>> shaded jar doesn't contain classes without repackaging which we should >>>>> apply to any module that performs shading to ensure that classes are >>>>> relocated and we don't accidentally expose stuff. I filed BEAM-4753[3] to >>>>> this end. >>>>> >>>>>> >>>>> >>>>>> Note, these are the following modules that still depend on >>>>> protobuf that are shaded away and could move to use a vendored variant of >>>>> protobuf: >>>>> >>>>>> * sdks/java/core >>>>> >>>>>> * sdks/java/extensions/sql >>>>> >>>>>> >>>>> >>>>>> These modules expose protobuf because it is part of the API >>>>> surface: >>>>> >>>>>> * sdks/java/extensions/protobuf >>>>> >>>>>> * sdks/java/io/google-cloud-platform (I believe that gRPC could >>>>> be shaded here but preferrably the IO module would do it so we wouldn't >>>>> have this maintenance burden.) >>>>> >>>>>> >>>>> >>>>>> 1: https://github.com/apache/beam/pull/5594 >>>>> >>>>>> 2: >>>>> https://stackoverflow.com/questions/1051640/correct-way-to-add-external-jars-lib-jar-to-an-intellij-idea-project >>>>> >>>>>> 3: https://issues.apache.org/jira/browse/BEAM-4753 >>>>> >>>>