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)