tzulitai commented on a change in pull request #7852: [FLINK-11773][core] 
Harden KryoSerializerSnapshot
URL: https://github.com/apache/flink/pull/7852#discussion_r261050414
 
 

 ##########
 File path: 
flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/kryo/KryoSerializerSnapshotData.java
 ##########
 @@ -186,72 +185,27 @@ private static void writeDefaultKryoSerializerClasses(
                DataInputView in,
                ClassLoader userCodeClassLoader) throws IOException {
 
-               LinkedOptionalMap<String, KryoRegistration> registrations = new 
LinkedOptionalMap<>();
-               final int size = in.readInt();
-               for (int i = 0; i < size; i++) {
-                       final String name = in.readUTF();
-                       KryoRegistration kryoRegistration = 
KryoRegistrationUtil.tryReadKryoRegistration(
-                                       in,
-                                       userCodeClassLoader);
-                       registrations.put(name, name, kryoRegistration);
-               }
-
-               return registrations;
+               return readOptionalMap(
+                       in,
+                       (stream, unused) -> stream.readUTF(),
+                       (stream, unused) -> 
KryoRegistrationUtil.tryReadKryoRegistration(stream, userCodeClassLoader)
+               );
        }
 
+       @SuppressWarnings("unchecked")
        private static LinkedOptionalMap<Class<?>, SerializableSerializer<?>> 
readDefaultKryoSerializers(DataInputView in, ClassLoader cl) throws IOException 
{
-               LinkedOptionalMap<Class<?>, SerializableSerializer<?>> 
kryoSerializers = new LinkedOptionalMap<>();
-               final int size = in.readInt();
-               for (int i = 0; i < size; i++) {
-                       final String className = in.readUTF();
-                       Class<?> javaClass = null;
-                       try {
-                               javaClass = Class.forName(className, false, cl);
-                       }
-                       catch (ClassNotFoundException e) {
-                               LOG.warn("Cannot find registered class " + 
className + " for Kryo serialization in classpath.", e);
-                       }
-                       SerializableSerializer<?> kryoSerializer = null;
-                       try {
-                               try (final DataInputViewStream inViewWrapper = 
new DataInputViewStream(in)) {
-                                       kryoSerializer = 
InstantiationUtil.deserializeObject(inViewWrapper, cl);
-                               }
-                       }
-                       catch (Throwable e) {
-                               LOG.warn("Cannot deserialize a previously 
serialized kryo serializer for the type " + className, e);
-                       }
-                       kryoSerializers.put(className, javaClass, 
kryoSerializer);
-               }
-               return kryoSerializers;
+               return readOptionalMap(
+                       in,
+                       new ClassResolverByName(cl),
 
 Review comment:
   avoid having raw types -> `new ClassResolverByName<?>(cl)`

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to