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);

Reply via email to