Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
@Public
public interface Function extends java.io.Serializable {
    /**
     * Returns false if it is guaranteed that the function will not store and access
     * reference to the output value.
     */ 
    default boolean isOutputValueStored() {
        return true;
    }
}

@Public
public interface RichFunction extends Function {

    /**
     * RichFunction is able to put the values to the state backend so the method returns true by
     * default. For RichFunction that doesn't store output value to the state backend, it can return
     * false.
     */
    @Override
    default boolean isOutputValueStored() {
        return true;
    }
}


4) Update the description of pipeline.object-reuse  to mention that when it is false, Flink will decide whether to use object reuse based on the operator attributes.

Here is the updated description:

When it is true, objects that Flink internally uses for deserialization and passing data to user-code functions will be reused. When it is false, Flink will decide whether to use object reuse based on the operator attributes. Keep in mind that this can lead to bugs when the user-code function of an operation is not aware of this behavior.

Proposed Changes

1) Update OperatorChain to take advantage of the isOutputStreamRecordValueStored and isInputStreamRecordStored attribute.

...