You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by se...@apache.org on 2018/04/22 20:40:43 UTC

[07/17] flink git commit: [hotfix] [core] Drop hijacking of TypeHint by OutputTag. Improve error message for OutputTag.

[hotfix] [core] Drop hijacking of TypeHint by OutputTag. Improve error message for OutputTag.


Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/32b583fe
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/32b583fe
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/32b583fe

Branch: refs/heads/master
Commit: 32b583fea88fc329af3418480f81c26cc6c538cb
Parents: 04e1344
Author: Stephan Ewen <se...@apache.org>
Authored: Tue Apr 17 20:02:22 2018 +0200
Committer: Stephan Ewen <se...@apache.org>
Committed: Sun Apr 22 16:28:34 2018 +0200

----------------------------------------------------------------------
 flink-core/pom.xml                                     |  3 +++
 .../org/apache/flink/api/common/typeinfo/TypeHint.java |  7 -------
 .../src/main/java/org/apache/flink/util/OutputTag.java | 13 +++++++------
 3 files changed, 10 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/32b583fe/flink-core/pom.xml
----------------------------------------------------------------------
diff --git a/flink-core/pom.xml b/flink-core/pom.xml
index aaebeb0..f860c20 100644
--- a/flink-core/pom.xml
+++ b/flink-core/pom.xml
@@ -195,6 +195,9 @@ under the License.
 								its new, and not conflicting/breaking -->
 							<exclude>org.apache.flink.api.common.serialization.DeserializationSchema</exclude>
 							<exclude>org.apache.flink.api.common.serialization.SerializationSchema</exclude>
+
+							<!-- leaked constructor in TypeHint -->
+							<exclude>org.apache.flink.api.common.typeinfo.TypeHint</exclude>
 						</excludes>
 					</parameter>
 				</configuration>

http://git-wip-us.apache.org/repos/asf/flink/blob/32b583fe/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeHint.java
----------------------------------------------------------------------
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeHint.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeHint.java
index 5f0597c..19e8db5 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeHint.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeHint.java
@@ -56,13 +56,6 @@ public abstract class TypeHint<T> {
 		}
 	}
 
-	/**
-	 * Creates a hint for the generic type in the class signature.
-	 */
-	public TypeHint(Class<?> baseClass, Object instance, int genericParameterPos) {
-		this.typeInfo = TypeExtractor.createTypeInfo(instance, baseClass, instance.getClass(), genericParameterPos);
-	}
-
 	// ------------------------------------------------------------------------
 
 	/**

http://git-wip-us.apache.org/repos/asf/flink/blob/32b583fe/flink-core/src/main/java/org/apache/flink/util/OutputTag.java
----------------------------------------------------------------------
diff --git a/flink-core/src/main/java/org/apache/flink/util/OutputTag.java b/flink-core/src/main/java/org/apache/flink/util/OutputTag.java
index f132cb3..4126924 100644
--- a/flink-core/src/main/java/org/apache/flink/util/OutputTag.java
+++ b/flink-core/src/main/java/org/apache/flink/util/OutputTag.java
@@ -20,8 +20,8 @@ package org.apache.flink.util;
 
 import org.apache.flink.annotation.PublicEvolving;
 import org.apache.flink.api.common.functions.InvalidTypesException;
-import org.apache.flink.api.common.typeinfo.TypeHint;
 import org.apache.flink.api.common.typeinfo.TypeInformation;
+import org.apache.flink.api.java.typeutils.TypeExtractor;
 
 import java.io.IOException;
 import java.io.ObjectInputStream;
@@ -61,11 +61,12 @@ public class OutputTag<T> implements Serializable {
 		this.id = id;
 
 		try {
-			TypeHint<T> typeHint = new TypeHint<T>(OutputTag.class, this, 0) {};
-			this.typeInfo = typeHint.getTypeInfo();
-		} catch (InvalidTypesException e) {
-			throw new InvalidTypesException("Could not determine TypeInformation for generic " +
-					"OutputTag type. Did you forget to make your OutputTag an anonymous inner class?", e);
+			this.typeInfo = TypeExtractor.createTypeInfo(this, OutputTag.class, getClass(), 0);
+		}
+		catch (InvalidTypesException e) {
+			throw new InvalidTypesException("Could not determine TypeInformation for the OutputTag type. " +
+					"The most common reason is forgetting to make the OutputTag an anonymous inner class. " +
+					"It is also not possible to use generic type variables with OutputTags, such as 'Tuple2<A, B>'.", e);
 		}
 	}