This is an automated email from the ASF dual-hosted git repository. sewen pushed a commit to branch release-1.10 in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/release-1.10 by this push: new 4ba39c1 [FLINK-2336][DataStream API] Fix ArrayIndexOufOBoundsException in TypeExtractor for type erased lambdas 4ba39c1 is described below commit 4ba39c1b5f144dc8925aaf821e4cc2a233375bbf Author: GuoWei Ma <guowei....@gmail.com> AuthorDate: Thu Feb 27 16:12:27 2020 +0800 [FLINK-2336][DataStream API] Fix ArrayIndexOufOBoundsException in TypeExtractor for type erased lambdas This closes #11234 --- .../java/org/apache/flink/api/java/typeutils/TypeExtractor.java | 5 +++++ .../org/apache/flink/api/java/typeutils/LambdaExtractionTest.java | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java index 70797d7..bef166a 100644 --- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java +++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java @@ -953,6 +953,11 @@ public class TypeExtractor { break; } } + + if (inputTypeHierarchy.size() == 0) { + return null; + } + ParameterizedType baseClass = (ParameterizedType) inputTypeHierarchy.get(inputTypeHierarchy.size() - 1); TypeInformation<?> info = null; diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/LambdaExtractionTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/LambdaExtractionTest.java index 1d5cf22..36d3637 100644 --- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/LambdaExtractionTest.java +++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/LambdaExtractionTest.java @@ -232,6 +232,12 @@ public class LambdaExtractionTest { } @Test + public void testLambdaWithoutTypeErasure() { + TypeInformation<?> ti = TypeExtractor.getMapReturnTypes(Tuple1::of, BasicTypeInfo.STRING_TYPE_INFO, null, true); + assertTrue(ti instanceof MissingTypeInfo); + } + + @Test public void testPartitionerLambda() { Partitioner<Tuple2<Integer, String>> partitioner = (key, numPartitions) -> key.f1.length() % numPartitions; final TypeInformation<?> ti = TypeExtractor.getPartitionerTypes(partitioner, null, true);