You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Arthur Andres (Jira)" <ji...@apache.org> on 2020/02/25 18:06:00 UTC

[jira] [Commented] (FLINK-2336) ArrayIndexOufOBoundsException in TypeExtractor when mapping

    [ https://issues.apache.org/jira/browse/FLINK-2336?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17044710#comment-17044710 ] 

Arthur Andres commented on FLINK-2336:
--------------------------------------

Hi [~sewen], I've got a similar issue with flink 1.9.2. 

{code}
java.lang.ArrayIndexOutOfBoundsException: -1

	at java.util.ArrayList.elementData(ArrayList.java:422)
	at java.util.ArrayList.get(ArrayList.java:435)
	at org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfoFromInputs(TypeExtractor.java:956)
	at org.apache.flink.api.java.typeutils.TypeExtractor.createSubTypesInfo(TypeExtractor.java:1128)
	at org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfoWithTypeHierarchy(TypeExtractor.java:853)
	at org.apache.flink.api.java.typeutils.TypeExtractor.privateCreateTypeInfo(TypeExtractor.java:812)
	at org.apache.flink.api.java.typeutils.TypeExtractor.getUnaryOperatorReturnType(TypeExtractor.java:582)
	at org.apache.flink.api.java.typeutils.TypeExtractor.getMapReturnTypes(TypeExtractor.java:175)
	at org.apache.flink.api.java.DataSet.map(DataSet.java:216)
{code}

Here's a simple unit test that can reproduce it. Only the first test (with Tuple1::of) fails. Other examples using lambdas work fine.

{code:java}
public class FlinkLearningTest {

  private static ExecutionEnvironment createLocalBatchEnvironment() {
    return ExecutionEnvironment.createLocalEnvironment(new Configuration());
  }

  @Test(expected = IndexOutOfBoundsException.class)
  public void testWithMethodReference() throws Exception {
    ExecutionEnvironment env = createLocalBatchEnvironment();
    env.fromCollection(ImmutableList.of("FOO", "BAR"))
        .map(Tuple1::of)
        .returns(new TypeHint<Tuple1<String>>() {})
        .print();
  }

  @Test
  public void testWithLambda() throws Exception {

    ExecutionEnvironment env = StreamUtil.createLocalBatchEnvironment();
    env.fromCollection(ImmutableList.of("FOO", "BAR"))
        .map(p -> new Tuple1<String>(p))
        .returns(new TypeHint<Tuple1<String>>() {})
        .print();
  }

  @Test
  public void testWithDiamondLambda() throws Exception {

    ExecutionEnvironment env = StreamUtil.createLocalBatchEnvironment();
    env.fromCollection(ImmutableList.of("FOO", "BAR"))
        .map(p -> new Tuple1<>(p))
        .returns(new TypeHint<Tuple1<String>>() {})
        .print();
  }
{code}

> ArrayIndexOufOBoundsException in TypeExtractor when mapping
> -----------------------------------------------------------
>
>                 Key: FLINK-2336
>                 URL: https://issues.apache.org/jira/browse/FLINK-2336
>             Project: Flink
>          Issue Type: Bug
>          Components: API / Type Serialization System
>    Affects Versions: 0.10.0
>            Reporter: William Saar
>            Priority: Major
>
> The line that causes this is
> DataStream<O> outputStream = insideIterationStream.filter(outputFilter).map(m -> m.outputMessage);
> Problem occurs both when compiled using Javac and Eclipse's JDT compiler (in an environment where simple lambda type tests work)
> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
> 	at java.util.ArrayList.elementData(Unknown Source)
> 	at java.util.ArrayList.get(Unknown Source)
> 	at org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfoFromInputs(TypeExtractor.java:553)
> 	at org.apache.flink.api.java.typeutils.TypeExtractor.createTypeInfoWithTypeHierarchy(TypeExtractor.java:468)
> 	at org.apache.flink.api.java.typeutils.TypeExtractor.privateCreateTypeInfo(TypeExtractor.java:370)
> 	at org.apache.flink.api.java.typeutils.TypeExtractor.getUnaryOperatorReturnType(TypeExtractor.java:254)
> 	at org.apache.flink.api.java.typeutils.TypeExtractor.getMapReturnTypes(TypeExtractor.java:91)
> 	at org.apache.flink.streaming.api.datastream.DataStream.map(DataStream.java:605)



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