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

Dzmitry Lazerka updated BEAM-4769:
----------------------------------
    Description: 
Hi,

I'm getting the following exception, probably when Beam cannot find a coder for 
a wildcard generic type (although I don't think I use any, gotta find).

{code:java}
Exception in thread "main" java.lang.ClassCastException: 
org.apache.beam.repackaged.beam_sdks_java_core.com.google.common.reflect.Types$WildcardTypeImpl
 cannot be cast to java.lang.reflect.TypeVariable
 at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:625)
 at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromParameterizedType(CoderRegistry.java:658)
 at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:620)
 at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromParameterizedType(CoderRegistry.java:658)
 at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:620)
 at org.apache.beam.sdk.coders.CoderRegistry.getCoder(CoderRegistry.java:254)
 at 
org.apache.beam.sdk.values.PCollection.inferCoderOrFail(PCollection.java:149)
 at 
org.apache.beam.sdk.values.PCollection.finishSpecifyingOutput(PCollection.java:89)
 at 
org.apache.beam.sdk.runners.TransformHierarchy.setOutput(TransformHierarchy.java:208)
 at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:538)
 at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:472)
 at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:286)
 at org.apache.beam.sdk.transforms.ParDo$SingleOutput.expand(ParDo.java:649)
 at org.apache.beam.sdk.transforms.ParDo$SingleOutput.expand(ParDo.java:584)
 at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:537)
 at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:491)
 at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:299)
 at org.apache.beam.sdk.transforms.MapElements.expand(MapElements.java:123)
 at org.apache.beam.sdk.transforms.MapElements.expand(MapElements.java:36)
 at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:537)
 at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:491)
 at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:299)
{code} 

The error seems to be in the following lines of CoderRegistry.java @ 629:
{code:java|title=CoderRegistry.java|borderStyle=solid}
} else if (type instanceof TypeVariable) {
     coder = getCoderFromFactories(typeDescriptor, Collections.emptyList());
} else if (type instanceof WildcardType) {
     // No coder for an unknown generic type.
     throw new CannotProvideCoderException(
         String.format("Cannot provide a coder for type variable %s"
         + " (declared by %s) because the actual type is unknown due to 
erasure.",
         type,
         ((TypeVariable<?>) type).getGenericDeclaration()),
         ReasonCode.TYPE_ERASURE);
{code}
It tries to cast a WildcardType to TypeVariable<?>, although that should've 
been caught above on line 621.

  was:
Hi,

I'm getting the following exception, probably when Beam cannot find a coder for 
a wildcard generic type (although I don't think I use any, gotta find).

{{Exception in thread "main" java.lang.ClassCastException: 
org.apache.beam.repackaged.beam_sdks_java_core.com.google.common.reflect.Types$WildcardTypeImpl
 cannot be cast to java.lang.reflect.TypeVariable}}
 {{at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:625)}}
 {{at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromParameterizedType(CoderRegistry.java:658)}}
 {{at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:620)}}
 {{at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromParameterizedType(CoderRegistry.java:658)}}
 {{at 
org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:620)}}
 {{at 
org.apache.beam.sdk.coders.CoderRegistry.getCoder(CoderRegistry.java:254)}}
 {{at 
org.apache.beam.sdk.values.PCollection.inferCoderOrFail(PCollection.java:149)}}
 {{at 
org.apache.beam.sdk.values.PCollection.finishSpecifyingOutput(PCollection.java:89)}}
 {{at 
org.apache.beam.sdk.runners.TransformHierarchy.setOutput(TransformHierarchy.java:208)}}
 {{at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:538)}}
 {{at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:472)}}
 {{at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:286)}}
 {{at org.apache.beam.sdk.transforms.ParDo$SingleOutput.expand(ParDo.java:649)}}
 {{at org.apache.beam.sdk.transforms.ParDo$SingleOutput.expand(ParDo.java:584)}}
 {{at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:537)}}
 {{at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:491)}}
 {{at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:299)}}
 {{at org.apache.beam.sdk.transforms.MapElements.expand(MapElements.java:123)}}
 {{at org.apache.beam.sdk.transforms.MapElements.expand(MapElements.java:36)}}
 {{at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:537)}}
 {{at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:491)}}
 {{at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:299)}}

 

The error seems to be in the following lines of CoderRegistry.java @ 629:
{quote}} else if (type instanceof TypeVariable) {
 coder = getCoderFromFactories(typeDescriptor, Collections.emptyList());
} else if (type instanceof WildcardType) {
 // No coder for an unknown generic type.
 throw new CannotProvideCoderException(
 String.format("Cannot provide a coder for type variable %s"
 + " (declared by %s) because the actual type is unknown due to erasure.",
 type,
 ((TypeVariable<?>) type).getGenericDeclaration()),
 ReasonCode.TYPE_ERASURE);
{quote}
It tries to cast a WildcardType to TypeVariable<?>, although that should've 
been caught above on line 621.


> Types$WildcardTypeImpl cannot be cast to java.lang.reflect.TypeVariable
> -----------------------------------------------------------------------
>
>                 Key: BEAM-4769
>                 URL: https://issues.apache.org/jira/browse/BEAM-4769
>             Project: Beam
>          Issue Type: Bug
>          Components: sdk-java-core
>    Affects Versions: 2.5.0
>            Reporter: Dzmitry Lazerka
>            Assignee: Kenneth Knowles
>            Priority: Minor
>
> Hi,
> I'm getting the following exception, probably when Beam cannot find a coder 
> for a wildcard generic type (although I don't think I use any, gotta find).
> {code:java}
> Exception in thread "main" java.lang.ClassCastException: 
> org.apache.beam.repackaged.beam_sdks_java_core.com.google.common.reflect.Types$WildcardTypeImpl
>  cannot be cast to java.lang.reflect.TypeVariable
>  at 
> org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:625)
>  at 
> org.apache.beam.sdk.coders.CoderRegistry.getCoderFromParameterizedType(CoderRegistry.java:658)
>  at 
> org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:620)
>  at 
> org.apache.beam.sdk.coders.CoderRegistry.getCoderFromParameterizedType(CoderRegistry.java:658)
>  at 
> org.apache.beam.sdk.coders.CoderRegistry.getCoderFromTypeDescriptor(CoderRegistry.java:620)
>  at org.apache.beam.sdk.coders.CoderRegistry.getCoder(CoderRegistry.java:254)
>  at 
> org.apache.beam.sdk.values.PCollection.inferCoderOrFail(PCollection.java:149)
>  at 
> org.apache.beam.sdk.values.PCollection.finishSpecifyingOutput(PCollection.java:89)
>  at 
> org.apache.beam.sdk.runners.TransformHierarchy.setOutput(TransformHierarchy.java:208)
>  at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:538)
>  at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:472)
>  at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:286)
>  at org.apache.beam.sdk.transforms.ParDo$SingleOutput.expand(ParDo.java:649)
>  at org.apache.beam.sdk.transforms.ParDo$SingleOutput.expand(ParDo.java:584)
>  at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:537)
>  at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:491)
>  at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:299)
>  at org.apache.beam.sdk.transforms.MapElements.expand(MapElements.java:123)
>  at org.apache.beam.sdk.transforms.MapElements.expand(MapElements.java:36)
>  at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:537)
>  at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:491)
>  at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:299)
> {code} 
> The error seems to be in the following lines of CoderRegistry.java @ 629:
> {code:java|title=CoderRegistry.java|borderStyle=solid}
> } else if (type instanceof TypeVariable) {
>      coder = getCoderFromFactories(typeDescriptor, Collections.emptyList());
> } else if (type instanceof WildcardType) {
>      // No coder for an unknown generic type.
>      throw new CannotProvideCoderException(
>          String.format("Cannot provide a coder for type variable %s"
>          + " (declared by %s) because the actual type is unknown due to 
> erasure.",
>          type,
>          ((TypeVariable<?>) type).getGenericDeclaration()),
>          ReasonCode.TYPE_ERASURE);
> {code}
> It tries to cast a WildcardType to TypeVariable<?>, although that should've 
> been caught above on line 621.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to