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); } } } }
/** * 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<T> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof NullableSerializerConfigSnapshot) { List<Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot>> previousKvSerializersAndConfigs = ((NullableSerializerConfigSnapshot) configSnapshot).getNestedSerializersAndConfigs(); CompatibilityResult<T> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousKvSerializersAndConfigs.get(0).f0, UnloadableDummyTypeSerializer.class, previousKvSerializersAndConfigs.get(0).f1, originalSerializer); if (!compatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (compatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new NullableSerializer<>( new TypeDeserializerAdapter<>(compatResult.getConvertDeserializer()), padNullValue())); } } return CompatibilityResult.requiresMigration(); }
@Override public CompatibilityResult<StreamRecord<T>> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof StreamRecordSerializerConfigSnapshot) { Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot> previousTypeSerializerAndConfig = ((StreamRecordSerializerConfigSnapshot) configSnapshot).getSingleNestedSerializerAndConfig(); CompatibilityResult<T> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousTypeSerializerAndConfig.f0, UnloadableDummyTypeSerializer.class, previousTypeSerializerAndConfig.f1, typeSerializer); if (!compatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (compatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new StreamRecordSerializer<>( new TypeDeserializerAdapter<>(compatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); }
@Override public CompatibilityResult<List<T>> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof CollectionSerializerConfigSnapshot) { Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot> previousElemSerializerAndConfig = ((CollectionSerializerConfigSnapshot) configSnapshot).getSingleNestedSerializerAndConfig(); CompatibilityResult<T> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousElemSerializerAndConfig.f0, UnloadableDummyTypeSerializer.class, previousElemSerializerAndConfig.f1, elementSerializer); if (!compatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (compatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new ListSerializer<>(new TypeDeserializerAdapter<>(compatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); } }
@Override public CompatibilityResult<ArrayList<T>> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof CollectionSerializerConfigSnapshot) { Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot> previousElemSerializerAndConfig = ((CollectionSerializerConfigSnapshot) configSnapshot).getSingleNestedSerializerAndConfig(); CompatibilityResult<T> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousElemSerializerAndConfig.f0, UnloadableDummyTypeSerializer.class, previousElemSerializerAndConfig.f1, elementSerializer); if (!compatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (compatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new ArrayListSerializer<>(new TypeDeserializerAdapter<>(compatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); } }
@Override public CompatibilityResult<StreamElement> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof MultiplexingStreamRecordSerializerConfigSnapshot) { Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot> previousTypeSerializerAndConfig = ((MultiplexingStreamRecordSerializerConfigSnapshot) configSnapshot).getSingleNestedSerializerAndConfig(); CompatibilityResult<T> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousTypeSerializerAndConfig.f0, UnloadableDummyTypeSerializer.class, previousTypeSerializerAndConfig.f1, typeSerializer); if (!compatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (compatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new MultiplexingStreamRecordSerializer<>( new TypeDeserializerAdapter<>(compatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); }
@Override public CompatibilityResult<ArrayList<T>> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof CollectionSerializerConfigSnapshot) { Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot> previousElemSerializerAndConfig = ((CollectionSerializerConfigSnapshot) configSnapshot).getSingleNestedSerializerAndConfig(); CompatibilityResult<T> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousElemSerializerAndConfig.f0, UnloadableDummyTypeSerializer.class, previousElemSerializerAndConfig.f1, elementSerializer); if (!compatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (compatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new ArrayListSerializer<>(new TypeDeserializerAdapter<>(compatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); } }
@Override public CompatibilityResult<BufferEntry<T>> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof BufferSerializerConfigSnapshot) { Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot> previousSerializerAndConfig = ((BufferSerializerConfigSnapshot) configSnapshot).getSingleNestedSerializerAndConfig(); CompatibilityResult<T> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializerAndConfig.f0, UnloadableDummyTypeSerializer.class, previousSerializerAndConfig.f1, elementSerializer); if (!compatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (compatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new BufferEntrySerializer<>( new TypeDeserializerAdapter<>( compatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); } }
@Override public CompatibilityResult<BufferEntry<T>> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof BufferSerializerConfigSnapshot) { Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot> previousSerializerAndConfig = ((BufferSerializerConfigSnapshot) configSnapshot).getSingleNestedSerializerAndConfig(); CompatibilityResult<T> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializerAndConfig.f0, UnloadableDummyTypeSerializer.class, previousSerializerAndConfig.f1, elementSerializer); if (!compatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (compatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new BufferEntrySerializer<>( new TypeDeserializerAdapter<>( compatResult.getConvertDeserializer()))); } } return CompatibilityResult.requiresMigration(); } }