Till Rohrmann created FLINK-6804:
------------------------------------

             Summary: Inconsistent state migration behaviour between different 
state backends
                 Key: FLINK-6804
                 URL: https://issues.apache.org/jira/browse/FLINK-6804
             Project: Flink
          Issue Type: Bug
          Components: State Backends, Checkpointing, Type Serialization System
    Affects Versions: 1.3.0, 1.4.0
            Reporter: Till Rohrmann
            Priority: Critical


The {{MemoryStateBackend}}, {{FsStateBackend}} and {{RocksDBStateBackend}} show 
a different behaviour when it comes to recovery from old state and state 
migration. For example, using the {{MemoryStateBackend}} it is possible to 
recover pojos which now have additional fields (at recovery time). The only 
caveat is that the recovered {{PojoSerializer}} will silently drop the added 
fields when writing the new Pojo. In contrast, the {{RocksDBStateBackend}} 
correctly recognizes that a state migration is necessary and thus fails with a 
{{StateMigrationException}}. The same applies to the case where Pojo field 
types change. The {{MemoryStateBackend}} and the {{FsStateBackend}} accept such 
a change as long as the fields still have the same length. The 
{{RocksDBStateBackend}} correctly fails with a {{StateMigrationException}}.

I think that all state backends should behave similarly and give the user the 
same recovery and state migration guarantees. Otherwise, it could happen that 
jobs run with one state backend but not with another (wrt semantic behaviour).



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to