[ 
https://issues.apache.org/jira/browse/FLINK-26738?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17511616#comment-17511616
 ] 

Jianhui Dong edited comment on FLINK-26738 at 3/24/22, 6:51 AM:
----------------------------------------------------------------

[~yunta], thanks for your explanation, I think it's a good idea to make it 
clearer in docs and javadocs, and should we mark 
org.apache.flink.api.common.state.StateDescriptor#default(https://github.com/apache/flink/blob/7d7a111eba368043f8624e114daa29400a74c096/flink-core/src/main/java/org/apache/flink/api/common/state/StateDescriptor.java#L107)
 as deprecated too, not only mark 
org.apache.flink.api.common.state.ValueStateDescriptor 
constructor(https://github.com/apache/flink/blob/7d7a111eba368043f8624e114daa29400a74c096/flink-core/src/main/java/org/apache/flink/api/common/state/ValueStateDescriptor.java#L70)


was (Author: lam167):
[~yunta]thanks for your explanation, I think it's a good idea to make it 
clearer in docs and javadocs, and should we mark 
org.apache.flink.api.common.state.StateDescriptor#default(https://github.com/apache/flink/blob/7d7a111eba368043f8624e114daa29400a74c096/flink-core/src/main/java/org/apache/flink/api/common/state/StateDescriptor.java#L107)
 as deprecated too, not only mark 
org.apache.flink.api.common.state.ValueStateDescriptor 
constructor(https://github.com/apache/flink/blob/7d7a111eba368043f8624e114daa29400a74c096/flink-core/src/main/java/org/apache/flink/api/common/state/ValueStateDescriptor.java#L70)

> Default value of StateDescriptor is valid when enable state ttl config
> ----------------------------------------------------------------------
>
>                 Key: FLINK-26738
>                 URL: https://issues.apache.org/jira/browse/FLINK-26738
>             Project: Flink
>          Issue Type: Bug
>          Components: API / Core
>    Affects Versions: 1.15.0
>            Reporter: Jianhui Dong
>            Priority: Critical
>
> Suppose we declare a ValueState like following:
> {code:java}
> ValueStateDescriptor<Tuple2<Long, Long>> descriptor =
>                 new ValueStateDescriptor<>(
>                         "average", // the state name
>                         TypeInformation.of(new TypeHint<Tuple2<Long, Long>>() 
> {}),  
>                         Tuple2.of(0L, 0L)); 
> {code}
> and then we add state ttl config to the state:
> {code:java}
> descriptor.enableTimeToLive(StateTtlConfigUtil.createTtlConfig(60000));
> {code}
> the default value Tuple2.of(0L, 0L) will be invalid and may cause NPE.
> I don't know if this is a bug cause I see @Deprecated in the comment of the 
> ValueStateDescriptor constructor with argument defaultValue:
> {code:java}
> Use {@link #ValueStateDescriptor(String, TypeSerializer)} instead and manually
>      *     manage the default value by checking whether the contents of the 
> state is {@code null}.
> {code}
> and if we decide not to use the defaultValue field in the class 
> StateDescriptor, should we add @Deprecated annotation to the field 
> defaultValue?



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to