我正在这里https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/state/state.html阅读flink示例,并且无法弄清楚同步块的存在点。
我已经在flink的文档中进行了大量搜索,但找不到有用的答案,对于每个并行度,都会有一个状态实例,并且在 CounterSource <的一个实例中还有一个 run 方法。 / strong>不会从不同的线程调用,所以下面的代码有什么意义
val lock = ctx.getCheckpointLock
while (isRunning) {
// output and state update are atomic
lock.synchronized({
ctx.collect(offset)
offset += 1
})
}
答案 0 :(得分:1)
检查点在另一个线程中发生。此锁定的目的是为了防止源在检查点获取状态快照时修改其状态。