Flink's heap state backends store data as objects on the heap. Any object mutations are hence reflected in the state.
This can lead to unexpected behavior. For example, in case of sliding windows, multiple window hold references to the same object. Hence, all windows are affected if such an object is modified, e.g., by a WindowFunction, ReduceFunction, or FoldFunction, and might return invalid results.
We should add this information to the state backend documentation and also point out that the RocksDB backend is not affected by this because all data is serialized.