Hi, I'm working on a native streaming IO connector for the Go SDK to enable reads and writes from/to NATS (#29000 <https://github.com/apache/beam/issues/29000>) and would like to better understand how bundle finalization works.
For this use case I need to register a callback function which acknowledges the processed messages. More concretely, I wonder: - When/with which interval is the callback function invoked? Is it supposed to happen at every runner and SDF initiated checkpoint? - Is it correct that the registered callback is called and retried on a best effort? What is the estimated success rate for this best effort? When running a WIP example pipeline <https://github.com/johannaojeling/beam/blob/cfa6babbd0c9b1196c186974165beb7559a226db/sdks/go/examples/natsread/main.go> on Dataflow the callback function is only ever called once but ignored after subsequent checkpoints so thereby my questions. If anyone could help clarify the above or point me towards some documentation that would be much appreciated! Thanks, Johanna