为什么flink中的有状态源需要同步锁

ndh0cuux  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(424)

我在这里读Flink的例子https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/state/state.html,并且无法找出同步块的存在点。
我在google上搜索了很多,从flink的文档中找不到有用的答案,因为每个并行都会有一个state示例,而且countersource的一个示例中的run方法不会从不同的线程调用,那么下面的代码有什么意义呢

val lock = ctx.getCheckpointLock

while (isRunning) {
  // output and state update are atomic
  lock.synchronized({
    ctx.collect(offset)

    offset += 1
  })
}
v8wbuo2f

v8wbuo2f1#

检查点发生在另一个线程中。此锁的目的是防止源在检查点获取状态快照时修改其状态。

相关问题