Skip to content

Commit

Permalink
[hotfix] [core] Subclass serializer cache in PojoSerializer should be…
Browse files Browse the repository at this point in the history
… a Map

In this case, there is no specific need to let that cache be
specifically a HashMap. Changing this to the generic Map does not break
contracts with how the PojoSerializer works. It also doesn't break
compatibility w.r.t. Java serialization of the PojoSerializer.
  • Loading branch information
tzulitai committed Feb 22, 2019
1 parent cf65720 commit 04ede2c
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 9 deletions.
Expand Up @@ -92,7 +92,7 @@ public final class PojoSerializer<T> extends TypeSerializer<T> {
/**
* Cache of non-registered subclasses to their serializers, created on-the-fly.
*/
private transient HashMap<Class<?>, TypeSerializer<?>> subclassSerializerCache;
private transient Map<Class<?>, TypeSerializer<?>> subclassSerializerCache;

// --------------------------------------------------------------------------------------------

Expand Down Expand Up @@ -145,7 +145,7 @@ public PojoSerializer(
TypeSerializer<Object>[] fieldSerializers,
LinkedHashMap<Class<?>, Integer> registeredClasses,
TypeSerializer<?>[] registeredSerializers,
HashMap<Class<?>, TypeSerializer<?>> subclassSerializerCache,
Map<Class<?>, TypeSerializer<?>> subclassSerializerCache,
ExecutionConfig executionConfig) {

this.clazz = checkNotNull(clazz);
Expand Down Expand Up @@ -987,7 +987,7 @@ LinkedHashMap<Class<?>, TypeSerializer<?>> getBundledSubclassSerializerRegistry(
return result;
}

HashMap<Class<?>, TypeSerializer<?>> getSubclassSerializerCache() {
Map<Class<?>, TypeSerializer<?>> getSubclassSerializerCache() {
return subclassSerializerCache;
}

Expand Down Expand Up @@ -1110,7 +1110,7 @@ private static <T> PojoSerializerSnapshot<T> buildSnapshot(
TypeSerializer<?>[] registeredSubclassSerializers,
Field[] fields,
TypeSerializer<?>[] fieldSerializers,
HashMap<Class<?>, TypeSerializer<?>> nonRegisteredSubclassSerializerCache) {
Map<Class<?>, TypeSerializer<?>> nonRegisteredSubclassSerializerCache) {

final LinkedHashMap<Class<?>, TypeSerializer<?>> subclassRegistry = new LinkedHashMap<>(registeredSubclassesToTags.size());

Expand Down
Expand Up @@ -79,7 +79,7 @@ public PojoSerializerSnapshot() {}
Field[] fields,
TypeSerializer<?>[] fieldSerializers,
LinkedHashMap<Class<?>, TypeSerializer<?>> registeredSubclassSerializers,
HashMap<Class<?>, TypeSerializer<?>> nonRegisteredSubclassSerializers) {
Map<Class<?>, TypeSerializer<?>> nonRegisteredSubclassSerializers) {

this.snapshotData = PojoSerializerSnapshotData.createFrom(
pojoClass,
Expand Down
Expand Up @@ -37,6 +37,7 @@
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

import static org.apache.flink.util.LinkedOptionalMap.optionalMapOf;
import static org.apache.flink.util.Preconditions.checkNotNull;
Expand Down Expand Up @@ -86,7 +87,7 @@ static <T> PojoSerializerSnapshotData<T> createFrom(
Field[] fields,
TypeSerializer<?>[] fieldSerializers,
LinkedHashMap<Class<?>, TypeSerializer<?>> registeredSubclassSerializers,
HashMap<Class<?>, TypeSerializer<?>> nonRegisteredSubclassSerializers) {
Map<Class<?>, TypeSerializer<?>> nonRegisteredSubclassSerializers) {

final LinkedOptionalMap<Field, TypeSerializerSnapshot<?>> fieldSerializerSnapshots = new LinkedOptionalMap<>(fields.length);

Expand All @@ -99,7 +100,7 @@ static <T> PojoSerializerSnapshotData<T> createFrom(
LinkedHashMap<Class<?>, TypeSerializerSnapshot<?>> registeredSubclassSerializerSnapshots = new LinkedHashMap<>(registeredSubclassSerializers.size());
registeredSubclassSerializers.forEach((k, v) -> registeredSubclassSerializerSnapshots.put(k, TypeSerializerUtils.snapshotBackwardsCompatible(v)));

HashMap<Class<?>, TypeSerializerSnapshot<?>> nonRegisteredSubclassSerializerSnapshots = new HashMap<>(nonRegisteredSubclassSerializers.size());
Map<Class<?>, TypeSerializerSnapshot<?>> nonRegisteredSubclassSerializerSnapshots = new HashMap<>(nonRegisteredSubclassSerializers.size());
nonRegisteredSubclassSerializers.forEach((k, v) -> nonRegisteredSubclassSerializerSnapshots.put(k, TypeSerializerUtils.snapshotBackwardsCompatible(v)));

return new PojoSerializerSnapshotData<>(
Expand Down
Expand Up @@ -24,10 +24,10 @@
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
Expand Down Expand Up @@ -59,7 +59,7 @@ public final class LinkedOptionalMap<K, V> {
* @param <V> value type
* @return an {@code LinkedOptionalMap} with optional named keys, and optional values.
*/
public static <K, V> LinkedOptionalMap<K, V> optionalMapOf(HashMap<K, V> sourceMap, Function<K, String> keyNameGetter) {
public static <K, V> LinkedOptionalMap<K, V> optionalMapOf(Map<K, V> sourceMap, Function<K, String> keyNameGetter) {

LinkedHashMap<String, KeyValue<K, V>> underlyingMap = new LinkedHashMap<>(sourceMap.size());

Expand Down

0 comments on commit 04ede2c

Please sign in to comment.