Hi Aaron, It is thread safe since the state snapshot happens in the same thread with the user function.
Thanks, Zhu Zhu Aaron Langford <aaron.langfor...@gmail.com> 于2019年12月19日周四 上午11:25写道: > Hello Flink Community, > > I'm hoping to verify some understanding: > > If I have a function with managed state, I'm wondering if a > checkpoint will ever be taken while a function is mutating state. I'll try > to illustrate the situation I'm hoping to be safe from: > > Happy Path: > t0 -> processFunction invoked with el1 > t1 -> set A to 5 > t2 -> set B to 10 > t3 -> function returns > > Unhappy path: > t0 -> processFunction invoked with el1 > t1 -> set A to 5 > t2 -> function interrupted, checkpoint taken (A = 5, B = 1) > t3 -> set B to 10 > t4 -> function returns > ... > tn -> flink application fails, restart from prev checkpoint (A=5, B=1) > tn+1 -> recovery begins somewhere, but state is torn anyway, so we're > going to have a bad time > > I don't think this could happen given that checkpoints effectively are > messages in the pipeline, and the checkpoint is only taken when an operator > sees the checkpoint barrier. > > Hoping to make sure this is correct! > > Aaron >