[
https://issues.apache.org/jira/browse/FLINK-5790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15866026#comment-15866026
]
ASF GitHub Bot commented on FLINK-5790:
---------------------------------------
Github user tillrohrmann commented on a diff in the pull request:
https://github.com/apache/flink/pull/3305#discussion_r101067289
--- Diff:
flink-core/src/main/java/org/apache/flink/api/common/state/ListStateDescriptor.java
---
@@ -62,10 +68,19 @@ public ListStateDescriptor(String name,
TypeInformation<T> typeInfo) {
* @param name The (unique) name for the state.
* @param typeSerializer The type serializer for the list values.
*/
+ @SuppressWarnings("unchecked")
public ListStateDescriptor(String name, TypeSerializer<T>
typeSerializer) {
- super(name, typeSerializer, null);
+ super(name, new ListSerializer<>(typeSerializer), null);
+ }
+
+ public TypeSerializer<T> getElementSerializer() {
+ if (!(serializer instanceof ListSerializer)) {
+ throw new IllegalStateException();
--- End diff --
We should add a meaningful error message.
> Use list types when ListStateDescriptor extends StateDescriptor
> ---------------------------------------------------------------
>
> Key: FLINK-5790
> URL: https://issues.apache.org/jira/browse/FLINK-5790
> Project: Flink
> Issue Type: Improvement
> Reporter: Xiaogang Shi
> Assignee: Xiaogang Shi
>
> Flink keeps the state serializer in {{StateDescriptor}}, but it's the
> serializer of list elements that is put in {{ListStateDescriptor}}. The
> implementation is a little confusing. Some backends need to construct the
> state serializer with the element serializer by themselves.
> We should use an {{ArrayListSerializer}}, which is composed of the serializer
> of the element, in the {{ListStateDescriptor}}. It helps the backend to avoid
> constructing the state serializer.
> If a backend needs customized serialization of the state (e.g.
> {{RocksDBStateBackend}}), it still can obtain the element serializer from the
> {{ArrayListSerializer}}.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)