You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Tzu-Li (Gordon) Tai (JIRA)" <ji...@apache.org> on 2019/01/15 09:43:00 UTC

[jira] [Created] (FLINK-11327) Migrate all remaining Flink serializers' snapshot classes to the new TypeSerializerSnapshot / TypeSerializerSchemaCompatibility abstractions

Tzu-Li (Gordon) Tai created FLINK-11327:
-------------------------------------------

             Summary: Migrate all remaining Flink serializers' snapshot classes to the new TypeSerializerSnapshot / TypeSerializerSchemaCompatibility abstractions
                 Key: FLINK-11327
                 URL: https://issues.apache.org/jira/browse/FLINK-11327
             Project: Flink
          Issue Type: Task
          Components: State Backends, Checkpointing, Type Serialization System
            Reporter: Tzu-Li (Gordon) Tai
             Fix For: 1.8.0


There are still a few serializers in Flink that needs to be upgraded to use the new serialization compatibility APIs (`TypeSerializerSnapshot` and `TypeSerializerSchemaCompatibility`).

By doing this as soon as possible (ideally all are migrated for the 1.8 release), state serializers would no longer be written via Java serialization into savepoints, and in general allowing serializer upgrades more future-proof.

To split up the efforts, the remaining serializers can be categorized as follows.
They are categorized because some are fairly straightforward, while some are more complex and involves reconfiguration / migration cases.
We should have an independent sub-task JIRA for each category:
* Parameterless serializers / subclasses of `TypeSerializerSingleton`
* Simple composite serializers that contain nested serializers
* Scala-macro generated serializers
* `POJOSerializer`
* Kryo-related serializers
* Enum serializers

After upgrading a serializers' snapshot, the following should be achieved to consider the migration completed:
* The serializer should now return a `TypeSerializerSnapshot`, and not a subclass of the legacy `TypeSerializerConfigSnapshot` as its snapshot.
* Check whether or not the legacy `TypeSerializer#ensureCompatibility` method can be removed from the serializer class.
* There is a corresponding test specification for the migrated serializer that uses the `TypeSerializerSnapshotMigrationTestBase`.

Ideally, to complete this JIRA, we should also have some utilities / meta-tests:
* A test that verifies ALL serializers in the Flink codebase have a corresponding migration test that uses the `TypeSerializerSnapshotMigrationTestBase`.
* A utility script that generates test data and snapshots of all serializers in the Flink codebase, to be used by the migration tests. This script should be used every time we release a Flink major version.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)