Tzu-Li (Gordon) Tai created FLINK-11372:
-------------------------------------------
Summary: Incorrect delegation of compatibility checks to new
snapshots in CollectionSerializerConfigSnapshot
Key: FLINK-11372
URL: https://issues.apache.org/jira/browse/FLINK-11372
Project: Flink
Issue Type: Bug
Components: Type Serialization System
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
Fix For: 1.8.0
In {{CollectionSerializerConfigSnapshot}}:
{code}
@Override
public TypeSerializerSchemaCompatibility<C>
resolveSchemaCompatibility(TypeSerializer<C> newSerializer) {
if (newSerializer instanceof ListSerializer) {
ListSerializer<T> newListSerializer =
(ListSerializer<T>) newSerializer;
ListSerializerSnapshot<T> listSerializerSnapshot = new
ListSerializerSnapshot<>(newListSerializer);
@SuppressWarnings("unchecked")
TypeSerializerSchemaCompatibility<C> result =
(TypeSerializerSchemaCompatibility<C>)
listSerializerSnapshot.resolveSchemaCompatibility(newListSerializer);
return result;
} else {
return super.resolveSchemaCompatibility(newSerializer);
}
}
{code}
Compatibility check of {{ListSerializer}} is delegated to the new list
serializer snapshot class, {{ListSerializerSnapshot}}.
However, it is incorrect to let the delegate wrap the new serializer (and
therefore the new nested element serializer). By doing that, we're essentially
checking compatibility of the new serializer with itself, whereas it should be
checking compatibility with the restored serializer.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)