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

Aljoscha Krettek commented on FLINK-6383:
-----------------------------------------

I had a quick offline chat with [~plucas] about this and it seemed like now 
would be a good time to add this. We could also introduce the whole scheme the 
first time that we want to break the scheme, it will work because of the magic 
number.

[~StephanEwen], [~srichter] what do you think?

> Add versioning for AbstractStreamOperator state
> -----------------------------------------------
>
>                 Key: FLINK-6383
>                 URL: https://issues.apache.org/jira/browse/FLINK-6383
>             Project: Flink
>          Issue Type: Improvement
>          Components: DataStream API
>    Affects Versions: 1.3.0
>            Reporter: Aljoscha Krettek
>            Assignee: Aljoscha Krettek
>            Priority: Blocker
>             Fix For: 1.3.0
>
>
> Right now, {{AbstractStreamOperator}} checkpoints key-group state in 
> {{AbstractStreamOperator.snapshotState(StateSnapshotContext context)}}. 
> Currently, this is the timers for each key group. We might want to change the 
> format of this or what we store in the future. In order to facilitate this we 
> should write a version to the beginning of the stream so that we can deal 
> with schema updates.
> For dealing with the fact that we don't currently write a version number we 
> have to at a magic number add the beginning (think {{0xCAFEBABE}}). For 
> dealing with state that was written prior to versioning we read the first 8 
> bytes, buffer them, if they match the magic number we read the version and 
> from then on jump to the logic based on the version. If the magic number 
> doesn't match we know we have state from a pre-version version and read the 
> stream using the old code, including the 8 buffered bytes.



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

Reply via email to