davidzollo commented on PR #10609: URL: https://github.com/apache/seatunnel/pull/10609#issuecomment-4117225462
`JdbcExactlyOnceSinkWriter` also uses `JdbcOutputFormat`, and its `prepareCommit()` process involves the prepare/commit of XA transactions. If the scheduled flush thread triggers `flush()` during the execution of `prepareCommit()`, it may lead to: 1. Data is flushed to the current XA transaction, but the data volume statistics of `prepareCommit` are inconsistent. 2. Although `flush()` is synchronized and will not be executed concurrently, the scheduled flush may be triggered in the gap between `prepareCurrentTx()` and `beginTx()`, and the transaction status is uncertain at this time. **Potential risks**: Under the exactly-once semantics, scheduled flush may break the boundary consistency of XA transactions. **Improvement suggestions**: - `batch_interval_ms` should be disabled when `is_exactly_once = true`, or at least a warning log should be given. - Add a check for exactly-once mode in `createAndStartScheduledFlush()`. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
