Hi Shuwen,
> When to call close() ? After every element processed? Or on > ProcessFunction.close() ? Or never to use it? IMO, the #close() function is used to manage the lifecycle of #Collector instead of a single element. I think it should not be called in user function unless you have some special use cases(no use case comes to my mind). > If it's been closed already, can the collector collect() anymore data? No. if it’s closed, it usually means the writer is closed or maybe the operator is closed. > If processElement received a message but consider it as discard and does not > call collect(), will this block checkpoint's barrier until next element was > sent by collect() ? No. Best, Jiayi Liao Original Message Sender: shuwen zhou<jaco...@gmail.com> Recipient: user<user@flink.apache.org> Date: Friday, Nov 29, 2019 12:29 Subject: ProcessFunction collect and close, when to use? Hi Community, In ProcessFunction class, ProcessElement function, there is a Collector that has 2 method: collect() and close(). I would like to know: 1. When to call close() ? After every element processed? Or on ProcessFunction.close() ? Or never to use it? If it's been closed already, can the collector collect() anymore data? 2. If processElement received a message but consider it as discard and does not call collect(), will this block checkpoint's barrier until next element was sent by collect() ? -- Best Wishes, Shuwen Zhou