[ https://issues.apache.org/jira/browse/FLINK-11287?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tzu-Li (Gordon) Tai closed FLINK-11287. --------------------------------------- Resolution: Fixed > RocksDBListState should use actual registered state serializer instead of > serializer provided by descriptor > ----------------------------------------------------------------------------------------------------------- > > Key: FLINK-11287 > URL: https://issues.apache.org/jira/browse/FLINK-11287 > Project: Flink > Issue Type: Bug > Components: State Backends, Checkpointing > Reporter: Tzu-Li (Gordon) Tai > Assignee: Tzu-Li (Gordon) Tai > Priority: Critical > Labels: pull-request-available > Fix For: 1.8.0 > > Time Spent: 20m > Remaining Estimate: 0h > > Currently, when creating a {{RocksDBListState}}, the element serializer > wrapped by the {{RocksDBListState}} is retrieved from the state descriptor: > {code:java} > static <E, K, N, SV, S extends State, IS extends S> IS create( > StateDescriptor<S, SV> stateDesc, > Tuple2<ColumnFamilyHandle, RegisteredKeyValueStateBackendMetaInfo<N, SV>> > registerResult, > RocksDBKeyedStateBackend<K> backend) { > return (IS) new RocksDBListState<>( > registerResult.f0, > registerResult.f1.getNamespaceSerializer(), > (TypeSerializer<List<E>>) registerResult.f1.getStateSerializer(), > (List<E>) stateDesc.getDefaultValue(), > ((ListStateDescriptor<E>) stateDesc).getElementSerializer(), // > incorrect > backend); > } > {code} > This is incorrect, since new serializers retrieved from state descriptors > have not been checked for compatibility with restored state. > Instead, the element serializer should be retrieved from the register result, > which contains the actual state serializer registered in the state backend > for state access (and has already been checked for compatibility / > reconfigured appropriately). -- This message was sent by Atlassian JIRA (v7.6.3#76005)