You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tr...@apache.org on 2017/05/19 06:11:09 UTC

[4/4] flink git commit: [hotfix] Correct equals & hashCode implementation of KryoSerializer

[hotfix] Correct equals & hashCode implementation of KryoSerializer


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

Branch: refs/heads/master
Commit: e8c909503591179c3f912b50f48c0aabc127b383
Parents: 20b356c
Author: Till Rohrmann <tr...@apache.org>
Authored: Thu May 18 19:16:06 2017 +0200
Committer: Till Rohrmann <tr...@apache.org>
Committed: Thu May 18 23:19:37 2017 +0200

----------------------------------------------------------------------
 .../typeutils/runtime/KryoRegistration.java     |  8 ++++++--
 .../typeutils/runtime/kryo/KryoSerializer.java  | 20 +++++++++++---------
 2 files changed, 17 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/e8c90950/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/KryoRegistration.java
----------------------------------------------------------------------
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/KryoRegistration.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/KryoRegistration.java
index 882073d..17a49b8 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/KryoRegistration.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/KryoRegistration.java
@@ -23,9 +23,9 @@ import com.esotericsoftware.kryo.Serializer;
 import com.esotericsoftware.kryo.factories.ReflectionSerializerFactory;
 import org.apache.flink.annotation.Internal;
 import org.apache.flink.api.common.ExecutionConfig;
-import org.apache.flink.api.java.typeutils.runtime.KryoRegistrationSerializerConfigSnapshot;
 import org.apache.flink.util.Preconditions;
 
+import javax.annotation.Nullable;
 import java.io.Serializable;
 
 /**
@@ -56,6 +56,7 @@ public class KryoRegistration implements Serializable {
 	 * <p>This can be a dummy serializer {@link KryoRegistrationSerializerConfigSnapshot.DummyKryoSerializerClass} if
 	 * the serializer class no longer exists when this registration instance was restored.
 	 */
+	@Nullable
 	private final Class<? extends Serializer<?>> serializerClass;
 
 	/**
@@ -65,9 +66,10 @@ public class KryoRegistration implements Serializable {
 	 * <p>This can be a dummy serializer {@link KryoRegistrationSerializerConfigSnapshot.DummyKryoSerializerClass} if
 	 * the serializer class no longer exists or is no longer valid when this registration instance was restored.
 	 */
+	@Nullable
 	private final ExecutionConfig.SerializableSerializer<? extends Serializer<?>> serializableSerializerInstance;
 
-	private SerializerDefinitionType serializerDefinitionType;
+	private final SerializerDefinitionType serializerDefinitionType;
 
 	public KryoRegistration(Class<?> registeredClass) {
 		this.registeredClass = Preconditions.checkNotNull(registeredClass);
@@ -106,10 +108,12 @@ public class KryoRegistration implements Serializable {
 		return serializerDefinitionType;
 	}
 
+	@Nullable
 	public Class<? extends Serializer<?>> getSerializerClass() {
 		return serializerClass;
 	}
 
+	@Nullable
 	public ExecutionConfig.SerializableSerializer<? extends Serializer<?>> getSerializableSerializerInstance() {
 		return serializableSerializerInstance;
 	}

http://git-wip-us.apache.org/repos/asf/flink/blob/e8c90950/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializer.java
----------------------------------------------------------------------
diff --git a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializer.java b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializer.java
index 655de76..6730136 100644
--- a/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializer.java
+++ b/flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializer.java
@@ -276,16 +276,17 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
 	}
 	
 	// --------------------------------------------------------------------------------------------
-	
+
 	@Override
 	public int hashCode() {
-		return Objects.hash(
-			type,
-			registeredTypes,
-			registeredTypesWithSerializerClasses,
-			defaultSerializerClasses);
+		int result = type.hashCode();
+		result = 31 * result + (kryoRegistrations.hashCode());
+		result = 31 * result + (defaultSerializers.hashCode());
+		result = 31 * result + (defaultSerializerClasses.hashCode());
+
+		return result;
 	}
-	
+
 	@Override
 	public boolean equals(Object obj) {
 		if (obj instanceof KryoSerializer) {
@@ -293,8 +294,9 @@ public class KryoSerializer<T> extends TypeSerializer<T> {
 
 			return other.canEqual(this) &&
 				type == other.type &&
-				kryoRegistrations.equals(other.kryoRegistrations) &&
-				defaultSerializerClasses.equals(other.defaultSerializerClasses);
+				Objects.equals(kryoRegistrations, other.kryoRegistrations) &&
+				Objects.equals(defaultSerializerClasses, other.defaultSerializerClasses) &&
+				Objects.equals(defaultSerializers, other.defaultSerializers);
 		} else {
 			return false;
 		}