You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Lukasz Gajowy (Jira)" <ji...@apache.org> on 2019/09/19 12:15:00 UTC

[jira] [Resolved] (BEAM-5061) Invisible parameter type exception in JDK 10

     [ https://issues.apache.org/jira/browse/BEAM-5061?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lukasz Gajowy resolved BEAM-5061.
---------------------------------
    Fix Version/s: Not applicable
       Resolution: Cannot Reproduce

Bytebuddy was upgraded in [this commit|https://github.com/apache/beam/commit/9c47dc1e403fa5f107220142797614cae7280af4] to 1.9.3 version.  I've run the code attached to the issue and I cannot reproduce the issue anymore on both OpenJDK 11.0.2 and OpenJDK 10.0.2 versions and using beam 2.15. Marking the issue as resolved.



> Invisible parameter type exception in JDK 10
> --------------------------------------------
>
>                 Key: BEAM-5061
>                 URL: https://issues.apache.org/jira/browse/BEAM-5061
>             Project: Beam
>          Issue Type: Sub-task
>          Components: sdk-java-core
>    Affects Versions: 2.5.0
>            Reporter: Mike Pedersen
>            Priority: Major
>             Fix For: Not applicable
>
>
> When using JDK 10, using a ParDo after a CoGroupByKey seems to create the following exception when executed on local runner:
> {noformat}
> Exception in thread "main" org.apache.beam.repackaged.beam_runners_direct_java.com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Invisible parameter type of Main$1 arg0 for public Main$1$DoFnInvoker(Main$1)
>     at org.apache.beam.repackaged.beam_runners_direct_java.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2214)
>     at org.apache.beam.repackaged.beam_runners_direct_java.com.google.common.cache.LocalCache.get(LocalCache.java:4053)
>     at org.apache.beam.repackaged.beam_runners_direct_java.com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4057)
>     ...
> Caused by: java.lang.IllegalStateException: Invisible parameter type of Main$1 arg0 for public Main$1$DoFnInvoker(Main$1)
>     at org.apache.beam.repackaged.beam_sdks_java_core.net.bytebuddy.dynamic.scaffold.InstrumentedType$Default.validated(InstrumentedType.java:925)
>     at org.apache.beam.repackaged.beam_sdks_java_core.net.bytebuddy.dynamic.scaffold.MethodRegistry$Default.prepare(MethodRegistry.java:465)
>     at org.apache.beam.repackaged.beam_sdks_java_core.net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder.make(SubclassDynamicTypeBuilder.java:170)
>     ...
> {noformat}
> This error disappears completely when using JDK 8. Here is a minimal example to reproduce it:
> {code:java}
> import org.apache.beam.sdk.Pipeline;
> import org.apache.beam.sdk.options.PipelineOptions;
> import org.apache.beam.sdk.options.PipelineOptionsFactory;
> import org.apache.beam.sdk.transforms.Create;
> import org.apache.beam.sdk.transforms.DoFn;
> import org.apache.beam.sdk.transforms.ParDo;
> import org.apache.beam.sdk.transforms.join.CoGbkResult;
> import org.apache.beam.sdk.transforms.join.CoGroupByKey;
> import org.apache.beam.sdk.transforms.join.KeyedPCollectionTuple;
> import org.apache.beam.sdk.values.KV;
> import org.apache.beam.sdk.values.PCollection;
> import org.apache.beam.sdk.values.TupleTag;
> import java.util.Arrays;
> import java.util.List;
> public class Main {
>     public static void main(String[] args) {
>         PipelineOptions options = PipelineOptionsFactory.create();
>         Pipeline p = Pipeline.create(options);
>         final TupleTag<String> emailsTag = new TupleTag<>();
>         final TupleTag<String> phonesTag = new TupleTag<>();
>         final List<KV<String, String>> emailsList =
>                 Arrays.asList(
>                         KV.of("amy", "amy@example.com"),
>                         KV.of("carl", "carl@example.com"),
>                         KV.of("julia", "julia@example.com"),
>                         KV.of("carl", "carl@email.com"));
>         final List<KV<String, String>> phonesList =
>                 Arrays.asList(
>                         KV.of("amy", "111-222-3333"),
>                         KV.of("james", "222-333-4444"),
>                         KV.of("amy", "333-444-5555"),
>                         KV.of("carl", "444-555-6666"));
>         PCollection<KV<String, String>> emails = p.apply("CreateEmails", Create.of(emailsList));
>         PCollection<KV<String, String>> phones = p.apply("CreatePhones", Create.of(phonesList));
>         PCollection<KV<String, CoGbkResult>> results =
>                 KeyedPCollectionTuple.of(emailsTag, emails)
>                         .and(phonesTag, phones)
>                         .apply(CoGroupByKey.<String>create());
>         PCollection<String> contactLines =
>                 results.apply(
>                         ParDo.of(
>                                 new DoFn<KV<String, CoGbkResult>, String>() {
>                                     @ProcessElement
>                                     public void processElement(ProcessContext c) {
>                                         KV<String, CoGbkResult> e = c.element();
>                                         String name = e.getKey();
>                                         Iterable<String> emailsIter = e.getValue().getAll(emailsTag);
>                                         Iterable<String> phonesIter = e.getValue().getAll(phonesTag);
>                                         String formattedResult = "";
>                                         c.output(formattedResult);
>                                     }
>                                 }));
>         p.run().waitUntilFinish();
>     }
> }{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)