某些自定义分组具有状态并使用定时器(即this example)。
据我了解失败后的州will be restored,但定时器怎么样?它们会在自动失败后恢复吗?
答案 0 :(得分:2)
在发生故障时,将对计时器进行检查点和恢复。
但是,这里有一个细微的细节需要理解。无论何时注册处理计时器,WindowOperator
都会将未来的时间戳保存在队列中,并安排一个计时器任务,该任务将触发WindowOperator
。如果触发WindowOperator
,它将处理时间戳低于当前时间戳的所有已注册计时器事件。
Flink仅检查未来时间戳的队列,但不检查计划的计时器任务。这意味着在恢复情况下,您将恢复未来时间戳的队列,但没有计时器任务来触发WindowOperator
(然后触发计时器事件)。所以你需要等待一个新元素,它将注册一个新的计时器任务。一旦此计时器任务触发,将执行具有较低时间戳的所有其他计时器事件。
这种细微之处不适用于事件时间处理,因为您没有触发WindowOperator
水印的计时器任务。
答案 1 :(得分:0)
似乎最近版本中的行为发生了变化 现在"当前的行为是所有计时器(处理时间和事件时间)都在恢复时重新注册,因此应该自动触发"。
这是对flink列表中相关消息的引用: http://mail-archives.apache.org/mod_mbox/flink-user/201804.mbox/%3CF0F57EB6-54E9-4303-AD95-EBB367B899E4@apache.org%3E