Hi,
yes you guessed correctly: CheckpointedAsynchronously only works with
functions and not with the lower-level StreamOperator. You would have to
implement snapshotOperatorState() and restoreState(). These interfaces are
quite low-level, though, and not stable. For example, in Flink 1.2 we're
refactoring that to make it way simpler.

On a side note, I would suggest not to use these methods for state
checkpointing because they store non-rescalable state, i.e. if you use this
you won't be able to change the parallelism of your job in the future. A
more future proof solution would be to use keyed state, i.e.
getRuntimeContext().getState().

Cheers,
Aljoscha

On Mon, 12 Sep 2016 at 20:30 dan bress <danbr...@gmail.com> wrote:

> Hi Flink Devs,
>    I have an operator that implements both OneInputStreamOperator
> and AbstractStreamOperator, and I would like to preserve its state.
>
>    I started by having it implement CheckpointedAsynchronously like my
> other stateful functions, but this didn't work(in the flink UI under the
> checkpoint tab, this function doesn't show anything, where the others do.
> Is this because its a lower level operator, and not a function?).  Also
> functionally, the state did not seem to be preserved in my dataflow.
>
>    Where can I go from here?  Should I implement
>
> StreamTaskState snapshotOperatorState(long checkpointId, long timestamp)
> throws Exception;
> and
> void restoreState(StreamTaskState state) throws Exception;
>
> defined in StreamOperator
>
>    I tried doing this, but the semantics of these methods were a little
> confusing, and when I implemented it I started getting null pointer
> exceptions in restoreState.  Also the amount of stuff I had to do seemed
> like it was more than when implementing CheckpointedAsynchronously
>
>    Is there an example of how to implement a low level operator with
> checkpointing?
>
> Any help would be appreciated,
>
> Thanks!
>
> Dan
>

Reply via email to