Congxian Qiu(klion26) created FLINK-15424:
---------------------------------------------

             Summary: Make all AppendingState#add respect the java doc
                 Key: FLINK-15424
                 URL: https://issues.apache.org/jira/browse/FLINK-15424
             Project: Flink
          Issue Type: Bug
    Affects Versions: 1.9.1, 1.8.3
            Reporter: Congxian Qiu(klion26)


Currently, We have a java doc in 
{{[AppendingState#add|https://github.com/apache/flink/blob/52fdee1d0c7af24d25c51caa073e29f11b07210b/flink-core/src/main/java/org/apache/flink/api/common/state/AppendingState.java#L63]}}
{code:java}
<p> If null is passed in, the state value will remain unchanged.{code}
but currently, the implementation did not respect this, take 
{{HeapReducingState}} as an example, we'll clear the state if the passed 
parameter is null
{code:java}
@Override       
public void add(V value) throws IOException {
    if (value == null) {                        
        clear();                        
        return;         
    }
    try {                       
        stateTable.transform(currentNamespace, value, reduceTransformation);    
                    } catch (Exception e) {                     
        throw new IOException("Exception while applying ReduceFunction in 
reducing state", e);          
    }   
}
{code}
But in {{RocksDBReducingState}}  we would not clear the state, and put the null 
value into state if serializer can serialize null.
{code:java}
@Override
public void add(V value) throws Exception {
   byte[] key = getKeyBytes();
   V oldValue = getInternal(key);
   V newValue = oldValue == null ? value : reduceFunction.reduce(oldValue, 
value);
   updateInternal(key, newValue);
}
{code}
this issue wants to make all {{Appending}}State respect the javadoc of 
{{AppendingState}}, and return directly if the passed in parameter is null.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to