private CompatibilityResult<Object> resolveFieldCompatibility( List<Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot>> previousSerializersAndConfigs, int index) { return CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(index).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(index).f1, fieldSerializers[index]); }
&& !(precedingSerializerConfigSnapshot instanceof BackwardsCompatibleSerializerSnapshot)) { CompatibilityResult<T> initialResult = resolveCompatibilityResult( (TypeSerializerSnapshot<T>) precedingSerializerConfigSnapshot, newSerializer);
/** * This cannot be removed until {@link TypeSerializerConfigSnapshot} is no longer supported. */ @Override public CompatibilityResult<Lockable<E>> ensureCompatibility(TypeSerializerConfigSnapshot<?> configSnapshot) { // backwards compatibility path CompatibilityResult<E> inputCompatibilityResult = CompatibilityUtil.resolveCompatibilityResult( configSnapshot.restoreSerializer(), UnloadableDummyTypeSerializer.class, configSnapshot, elementSerializer); return (inputCompatibilityResult.isRequiresMigration()) ? CompatibilityResult.requiresMigration() : CompatibilityResult.compatible(); }
CompatibilityResult<K> keySerializerCompatibility = CompatibilityUtil.resolveCompatibilityResult( this.keyDeserializer, null, keySerializer); CompatibilityResult<N> namespaceSerializerCompatibility = CompatibilityUtil.resolveCompatibilityResult( this.namespaceDeserializer, null,
((SharedBufferSerializerConfigSnapshot<?, ?>) configSnapshot).getNestedSerializersAndConfigs(); CompatibilityResult<K> keyCompatResult = CompatibilityUtil.resolveCompatibilityResult( serializerConfigSnapshots.get(0).f0, UnloadableDummyTypeSerializer.class, keySerializer); CompatibilityResult<V> valueCompatResult = CompatibilityUtil.resolveCompatibilityResult( serializerConfigSnapshots.get(1).f0, UnloadableDummyTypeSerializer.class, valueSerializer); CompatibilityResult<DeweyNumber> versionCompatResult = CompatibilityUtil.resolveCompatibilityResult( serializerConfigSnapshots.get(2).f0, UnloadableDummyTypeSerializer.class,
reorderedFields[i] = fields[fieldIndex]; compatResult = CompatibilityUtil.resolveCompatibilityResult( fieldToConfigSnapshotEntry.getValue().f0, UnloadableDummyTypeSerializer.class, for (Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>> previousRegisteredSerializerConfig : previousRegistrations.values()) { compatResult = CompatibilityUtil.resolveCompatibilityResult( previousRegisteredSerializerConfig.f0, UnloadableDummyTypeSerializer.class, compatResult = CompatibilityUtil.resolveCompatibilityResult( previousCachedEntry.getValue().f0, UnloadableDummyTypeSerializer.class,
((NFASerializerConfigSnapshot<?>) configSnapshot).getNestedSerializersAndConfigs(); CompatibilityResult<T> eventCompatResult = CompatibilityUtil.resolveCompatibilityResult( serializersAndConfigs.get(0).f0, UnloadableDummyTypeSerializer.class, CompatibilityUtil.resolveCompatibilityResult( serializersAndConfigs.get(1).f0, UnloadableDummyTypeSerializer.class,
int i = 0; for (Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot> f : previousFieldSerializersAndConfigs) { compatResult = CompatibilityUtil.resolveCompatibilityResult( f.f0, UnloadableDummyTypeSerializer.class,
private CompatibilityResult<Object> resolveFieldCompatibility( List<Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot>> previousSerializersAndConfigs, int index) { return CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(index).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(index).f1, fieldSerializers[index]); }
private static void checkRequireMigration( Collection<Tuple4<TypeSerializer, Class<?>, TypeSerializerConfigSnapshot, TypeSerializer>> serializersToCheck) throws StateMigrationException { for (Tuple4<TypeSerializer, Class<?>, TypeSerializerConfigSnapshot, TypeSerializer> tupleInfo : serializersToCheck) { TypeSerializerConfigSnapshot precedingSerializerConfigSnapshot = tupleInfo.f2; TypeSerializer newSerializer = tupleInfo.f3; // check compatibility results to determine if state migration is required CompatibilityResult compatibilityResult = CompatibilityUtil.resolveCompatibilityResult( tupleInfo.f0, tupleInfo.f1, precedingSerializerConfigSnapshot, newSerializer); if (compatibilityResult.isRequiresMigration()) { // TODO state migration currently isn't possible. throw new StateMigrationException("State migration isn't supported, yet." + " PrecedingSerializerConfigSnapshot: " + precedingSerializerConfigSnapshot + " needs migration with new serializer: " + newSerializer); } } } }
@Override public CompatibilityResult<TimerHeapInternalTimer<K, N>> ensureCompatibility( TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof TimerSerializerConfigSnapshot) { List<Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>>> previousSerializersAndConfigs = ((TimerSerializerConfigSnapshot<?, ?>) configSnapshot).getNestedSerializersAndConfigs(); if (previousSerializersAndConfigs.size() == 2) { Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>> keySerializerAndSnapshot = previousSerializersAndConfigs.get(KEY_SERIALIZER_SNAPSHOT_INDEX); Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>> namespaceSerializerAndSnapshot = previousSerializersAndConfigs.get(NAMESPACE_SERIALIZER_SNAPSHOT_INDEX); CompatibilityResult<K> keyCompatibilityResult = CompatibilityUtil.resolveCompatibilityResult( keySerializerAndSnapshot.f0, UnloadableDummyTypeSerializer.class, keySerializerAndSnapshot.f1, keySerializer); CompatibilityResult<N> namespaceCompatibilityResult = CompatibilityUtil.resolveCompatibilityResult( namespaceSerializerAndSnapshot.f0, UnloadableDummyTypeSerializer.class, namespaceSerializerAndSnapshot.f1, namespaceSerializer); if (!keyCompatibilityResult.isRequiresMigration() && !namespaceCompatibilityResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } } } return CompatibilityResult.requiresMigration(); }
@Override public CompatibilityResult<TimerHeapInternalTimer<K, N>> ensureCompatibility( TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof TimerSerializerConfigSnapshot) { List<Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>>> previousSerializersAndConfigs = ((TimerSerializerConfigSnapshot<?, ?>) configSnapshot).getNestedSerializersAndConfigs(); if (previousSerializersAndConfigs.size() == 2) { Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>> keySerializerAndSnapshot = previousSerializersAndConfigs.get(KEY_SERIALIZER_SNAPSHOT_INDEX); Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>> namespaceSerializerAndSnapshot = previousSerializersAndConfigs.get(NAMESPACE_SERIALIZER_SNAPSHOT_INDEX); CompatibilityResult<K> keyCompatibilityResult = CompatibilityUtil.resolveCompatibilityResult( keySerializerAndSnapshot.f0, UnloadableDummyTypeSerializer.class, keySerializerAndSnapshot.f1, keySerializer); CompatibilityResult<N> namespaceCompatibilityResult = CompatibilityUtil.resolveCompatibilityResult( namespaceSerializerAndSnapshot.f0, UnloadableDummyTypeSerializer.class, namespaceSerializerAndSnapshot.f1, namespaceSerializer); if (!keyCompatibilityResult.isRequiresMigration() && !namespaceCompatibilityResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } } } return CompatibilityResult.requiresMigration(); }
@Override public CompatibilityResult<BaseMap> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (!(configSnapshot instanceof BaseArraySerializer.ArraySerializerConfigSnapshot)) { return CompatibilityResult.requiresMigration(); } TypeSerializer[] serializers = {keySerializer, valueSerializer, binarySerializer}; List<Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot>> previousFieldSerializersAndConfigs = ((AbstractRowSerializer.RowSerializerConfigSnapshot) configSnapshot).getNestedSerializersAndConfigs(); if (previousFieldSerializersAndConfigs.size() != serializers.length) { return CompatibilityResult.requiresMigration(); } for (int i = 0; i < serializers.length; i++) { CompatibilityResult<BinaryArray> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousFieldSerializersAndConfigs.get(i).f0, UnloadableDummyTypeSerializer.class, previousFieldSerializersAndConfigs.get(i).f1, serializers[i]); if (compatResult.isRequiresMigration()) { return CompatibilityResult.requiresMigration(); } } return CompatibilityResult.compatible(); } }
/** * This cannot be removed until {@link TypeSerializerConfigSnapshot} is no longer supported. */ @Override public CompatibilityResult<Lockable<E>> ensureCompatibility(TypeSerializerConfigSnapshot<?> configSnapshot) { // backwards compatibility path CompatibilityResult<E> inputCompatibilityResult = CompatibilityUtil.resolveCompatibilityResult( configSnapshot.restoreSerializer(), UnloadableDummyTypeSerializer.class, configSnapshot, elementSerializer); return (inputCompatibilityResult.isRequiresMigration()) ? CompatibilityResult.requiresMigration() : CompatibilityResult.compatible(); }
/** * This cannot be removed until {@link TypeSerializerConfigSnapshot} is no longer supported. */ @Override public CompatibilityResult<Lockable<E>> ensureCompatibility(TypeSerializerConfigSnapshot<?> configSnapshot) { // backwards compatibility path CompatibilityResult<E> inputCompatibilityResult = CompatibilityUtil.resolveCompatibilityResult( configSnapshot.restoreSerializer(), UnloadableDummyTypeSerializer.class, configSnapshot, elementSerializer); return (inputCompatibilityResult.isRequiresMigration()) ? CompatibilityResult.requiresMigration() : CompatibilityResult.compatible(); }
@Override public CompatibilityResult<BaseArray> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (!(configSnapshot instanceof ArraySerializerConfigSnapshot)) { return CompatibilityResult.requiresMigration(); } ArraySerializerConfigSnapshot config = (ArraySerializerConfigSnapshot) configSnapshot; if (config.isPrimitive() != isPrimitive || !config.getElementType().equals(eleType)) { return CompatibilityResult.requiresMigration(); } TypeSerializer[] serializers = {elementSerializer, binarySerializer}; List<Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot>> previousFieldSerializersAndConfigs = ((AbstractRowSerializer.RowSerializerConfigSnapshot) configSnapshot).getNestedSerializersAndConfigs(); if (previousFieldSerializersAndConfigs.size() != serializers.length) { return CompatibilityResult.requiresMigration(); } for (int i = 0; i < serializers.length; i++) { CompatibilityResult<BinaryArray> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousFieldSerializersAndConfigs.get(i).f0, UnloadableDummyTypeSerializer.class, previousFieldSerializersAndConfigs.get(i).f1, serializers[i]); if (compatResult.isRequiresMigration()) { return CompatibilityResult.requiresMigration(); } } return CompatibilityResult.compatible(); }
@Override public CompatibilityResult<TaggedUnion<T1, T2>> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof UnionSerializerConfigSnapshot) { List<Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot>> previousSerializersAndConfigs = ((UnionSerializerConfigSnapshot) configSnapshot).getNestedSerializersAndConfigs(); CompatibilityResult<T1> oneSerializerCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(0).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(0).f1, oneSerializer); CompatibilityResult<T2> twoSerializerCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(1).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(1).f1, twoSerializer); if (!oneSerializerCompatResult.isRequiresMigration() && !twoSerializerCompatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (oneSerializerCompatResult.getConvertDeserializer() != null && twoSerializerCompatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new UnionSerializer<>( new TypeDeserializerAdapter<>(oneSerializerCompatResult.getConvertDeserializer()), new TypeDeserializerAdapter<>(twoSerializerCompatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); } }
@Override public CompatibilityResult<TaggedUnion<T1, T2>> ensureCompatibility(TypeSerializerConfigSnapshot<?> configSnapshot) { if (configSnapshot instanceof UnionSerializerConfigSnapshot) { List<Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>>> previousSerializersAndConfigs = ((UnionSerializerConfigSnapshot<?, ?>) configSnapshot).getNestedSerializersAndConfigs(); CompatibilityResult<T1> oneSerializerCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(0).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(0).f1, oneSerializer); CompatibilityResult<T2> twoSerializerCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(1).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(1).f1, twoSerializer); if (!oneSerializerCompatResult.isRequiresMigration() && !twoSerializerCompatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (oneSerializerCompatResult.getConvertDeserializer() != null && twoSerializerCompatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new UnionSerializer<>( new TypeDeserializerAdapter<>(oneSerializerCompatResult.getConvertDeserializer()), new TypeDeserializerAdapter<>(twoSerializerCompatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); } }
@Override public CompatibilityResult<TaggedUnion<T1, T2>> ensureCompatibility(TypeSerializerConfigSnapshot<?> configSnapshot) { if (configSnapshot instanceof UnionSerializerConfigSnapshot) { List<Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>>> previousSerializersAndConfigs = ((UnionSerializerConfigSnapshot<?, ?>) configSnapshot).getNestedSerializersAndConfigs(); CompatibilityResult<T1> oneSerializerCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(0).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(0).f1, oneSerializer); CompatibilityResult<T2> twoSerializerCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(1).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(1).f1, twoSerializer); if (!oneSerializerCompatResult.isRequiresMigration() && !twoSerializerCompatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (oneSerializerCompatResult.getConvertDeserializer() != null && twoSerializerCompatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new UnionSerializer<>( new TypeDeserializerAdapter<>(oneSerializerCompatResult.getConvertDeserializer()), new TypeDeserializerAdapter<>(twoSerializerCompatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); } }
((EitherSerializerConfigSnapshot) configSnapshot).getNestedSerializersAndConfigs(); CompatibilityResult<L> leftCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousLeftRightSerializersAndConfigs.get(0).f0, UnloadableDummyTypeSerializer.class, leftSerializer); CompatibilityResult<R> rightCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousLeftRightSerializersAndConfigs.get(1).f0, UnloadableDummyTypeSerializer.class,