Repository: flink
Updated Branches:
  refs/heads/release-1.3 51fb7ed79 -> 94111f985


[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/94111f98
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/94111f98
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/94111f98

Branch: refs/heads/release-1.3
Commit: 94111f98558274f6c17284ba7a9b627143ac7b1e
Parents: fe5b92f
Author: Till Rohrmann <trohrm...@apache.org>
Authored: Thu May 18 19:16:06 2017 +0200
Committer: Till Rohrmann <trohrm...@apache.org>
Committed: Thu May 18 23:16:27 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/94111f98/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/94111f98/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;
                }

Reply via email to