@Override public CompatibilityResult<State<TXN, CONTEXT>> ensureCompatibility( TypeSerializerConfigSnapshot<?> configSnapshot) { if (configSnapshot instanceof StateSerializerConfigSnapshot) { List<Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>>> previousSerializersAndConfigs = ((StateSerializerConfigSnapshot<?, ?>) configSnapshot).getNestedSerializersAndConfigs(); CompatibilityResult<TXN> txnCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(0).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(0).f1, transactionSerializer); CompatibilityResult<CONTEXT> contextCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(1).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(1).f1, contextSerializer); if (!txnCompatResult.isRequiresMigration() && !contextCompatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else { if (txnCompatResult.getConvertDeserializer() != null && contextCompatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new StateSerializer<>( new TypeDeserializerAdapter<>(txnCompatResult.getConvertDeserializer()), new TypeDeserializerAdapter<>(contextCompatResult.getConvertDeserializer()))); } } } return CompatibilityResult.requiresMigration(); } }
@Override public CompatibilityResult<State<TXN, CONTEXT>> ensureCompatibility( TypeSerializerConfigSnapshot<?> configSnapshot) { if (configSnapshot instanceof StateSerializerConfigSnapshot) { List<Tuple2<TypeSerializer<?>, TypeSerializerSnapshot<?>>> previousSerializersAndConfigs = ((StateSerializerConfigSnapshot<?, ?>) configSnapshot).getNestedSerializersAndConfigs(); CompatibilityResult<TXN> txnCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(0).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(0).f1, transactionSerializer); CompatibilityResult<CONTEXT> contextCompatResult = CompatibilityUtil.resolveCompatibilityResult( previousSerializersAndConfigs.get(1).f0, UnloadableDummyTypeSerializer.class, previousSerializersAndConfigs.get(1).f1, contextSerializer); if (!txnCompatResult.isRequiresMigration() && !contextCompatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else { if (txnCompatResult.getConvertDeserializer() != null && contextCompatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new StateSerializer<>( new TypeDeserializerAdapter<>(txnCompatResult.getConvertDeserializer()), new TypeDeserializerAdapter<>(contextCompatResult.getConvertDeserializer()))); } } } return CompatibilityResult.requiresMigration(); } }
@Override public TypeSerializer<State<TXN, CONTEXT>> duplicate() { return new StateSerializer<>( transactionSerializer.duplicate(), contextSerializer.duplicate()); }
@VisibleForTesting TwoPhaseCommitSinkFunction( TypeSerializer<TXN> transactionSerializer, TypeSerializer<CONTEXT> contextSerializer, Clock clock) { this.stateDescriptor = new ListStateDescriptor<>( "state", new StateSerializer<>(transactionSerializer, contextSerializer)); this.clock = clock; }
@Override public TypeSerializer<State<TXN, CONTEXT>> duplicate() { return new StateSerializer<>( transactionSerializer.duplicate(), contextSerializer.duplicate()); }
@VisibleForTesting TwoPhaseCommitSinkFunction( TypeSerializer<TXN> transactionSerializer, TypeSerializer<CONTEXT> contextSerializer, Clock clock) { this.stateDescriptor = new ListStateDescriptor<>( "state", new StateSerializer<>(transactionSerializer, contextSerializer)); this.clock = clock; }
@VisibleForTesting TwoPhaseCommitSinkFunction( TypeSerializer<TXN> transactionSerializer, TypeSerializer<CONTEXT> contextSerializer, Clock clock) { this.stateDescriptor = new ListStateDescriptor<>( "state", new StateSerializer<>(transactionSerializer, contextSerializer)); this.clock = clock; }
private static TypeSerializer<TwoPhaseCommitSinkFunction.State<Integer, String>> intStringStateSerializerSupplier() { return new TwoPhaseCommitSinkFunction.StateSerializer<>(IntSerializer.INSTANCE, StringSerializer.INSTANCE); } }
@Override protected StateSerializer<TXN, CONTEXT> createOuterSerializerWithNestedSerializers(TypeSerializer<?>[] nestedSerializers) { @SuppressWarnings("unchecked") final TypeSerializer<TXN> transactionSerializer = (TypeSerializer<TXN>) nestedSerializers[0]; @SuppressWarnings("unchecked") final TypeSerializer<CONTEXT> contextSerializer = (TypeSerializer<CONTEXT>) nestedSerializers[1]; return new StateSerializer<>(transactionSerializer, contextSerializer); }
@Override public TypeSerializer<State<TXN, CONTEXT>> duplicate() { return new StateSerializer<>( transactionSerializer.duplicate(), contextSerializer.duplicate()); }