[jira] [Created] (FLINK-11372) Incorrect delegation of compatibility checks to new snapshots in CollectionSerializerConfigSnapshot

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (FLINK-11372) Incorrect delegation of compatibility checks to new snapshots in CollectionSerializerConfigSnapshot

Shang Yuanchun (Jira)
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)