[
https://issues.apache.org/jira/browse/FLINK-6482?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16019406#comment-16019406
]
ASF GitHub Bot commented on FLINK-6482:
---------------------------------------
Github user StefanRRichter commented on a diff in the pull request:
https://github.com/apache/flink/pull/3937#discussion_r117710279
--- Diff:
flink-core/src/main/java/org/apache/flink/api/common/typeutils/CompositeTypeSerializerConfigSnapshot.java
---
@@ -19,47 +19,65 @@
package org.apache.flink.api.common.typeutils;
import org.apache.flink.annotation.Internal;
+import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.core.memory.DataInputView;
import org.apache.flink.core.memory.DataOutputView;
import org.apache.flink.util.Preconditions;
import java.io.IOException;
-import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.List;
/**
* A {@link TypeSerializerConfigSnapshot} for serializers that has
multiple nested serializers.
- * The configuration snapshot consists of the configuration snapshots of
all nested serializers.
+ * The configuration snapshot consists of the configuration snapshots of
all nested serializers, and
+ * also the nested serializers themselves.
+ *
+ * <p>Both the nested serializers and the configuration snapshots are
written as configuration of
+ * composite serializers, so that on restore, the previous serializer may
be used in case migration
+ * is required.
*/
@Internal
public abstract class CompositeTypeSerializerConfigSnapshot extends
TypeSerializerConfigSnapshot {
- private TypeSerializerConfigSnapshot[] nestedSerializerConfigSnapshots;
+ private List<Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot>>
nestedSerializersWithConfigs;
/** This empty nullary constructor is required for deserializing the
configuration. */
public CompositeTypeSerializerConfigSnapshot() {}
- public
CompositeTypeSerializerConfigSnapshot(TypeSerializerConfigSnapshot...
nestedSerializerConfigSnapshots) {
- this.nestedSerializerConfigSnapshots =
Preconditions.checkNotNull(nestedSerializerConfigSnapshots);
+ public CompositeTypeSerializerConfigSnapshot(TypeSerializer<?>...
nestedSerializers) {
+ Preconditions.checkNotNull(nestedSerializers);
+
+ this.nestedSerializersWithConfigs = new
ArrayList<>(nestedSerializers.length);
+ TypeSerializerConfigSnapshot configSnapshot;
--- End diff --
I think this could go inside the loop.
> Add nested serializers into configuration snapshots of composite serializers
> ----------------------------------------------------------------------------
>
> Key: FLINK-6482
> URL: https://issues.apache.org/jira/browse/FLINK-6482
> Project: Flink
> Issue Type: Improvement
> Components: State Backends, Checkpointing, Type Serialization System
> Reporter: Tzu-Li (Gordon) Tai
> Assignee: Tzu-Li (Gordon) Tai
> Priority: Blocker
> Fix For: 1.3.0
>
>
> Currently, the composite serializers' configuration snapshots only wrap the
> config snapshots of nested serializers.
> We should also consider adding serialization of the nested serializers into
> the config snapshot, so that in the case where only some nested serializer
> cannot be loaded (class missing / implementation changed), we can also
> provide a path for serializer upgrades.
> This applies for all composite serializers that have nested serializers.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)