CloverDew opened a new pull request, #10648: URL: https://github.com/apache/seatunnel/pull/10648
### Purpose of this pull request This PR fixes a deadlock issue where Flink jobs using MySQL CDC source with JDBC Exactly-Once sink would hang indefinitely during schema evolution. The root cause was a self-deadlock in JdbcExactlyOnceSinkWriter where prepared XA transactions held MySQL Metadata Locks that blocked subsequent DDL operations on the same connection. For details, please see: https://github.com/apache/seatunnel/issues/10647 **Key Changes:** - JdbcExactlyOnceSinkWriter deadlock fix: Modified reOpenOutputFormat() to properly handle XA transaction cleanup before DDL execution - SchemaOperator: Implemented checkpoint-aware DDL deferring mechanism to prevent XA/DDL timing conflicts - Test stability improvement: Adjusted test timeout tolerance for timestamp default values ### Does this PR introduce _any_ user-facing change? Yes. This PR improves the reliability of schema evolution in production environments: - Previous behavior: Flink jobs would hang indefinitely when DDL operations occurred during checkpoints with exactly-once semantics enabled. - New behavior: DDL operations are processed safely with proper XA transaction coordination, ensuring both data consistency and schema evolution reliability. - Impact: Users can now safely enable both exactly-once semantics and schema evolution without experiencing job hangs. ### How was this patch tested? A new test method has been added: `MysqlCDCWithFlinkSchemaChangeIT.testMysqlCdcWithSchemaEvolutionCaseExactlyOnce`. It now runs smoothly and no longer encounters job hangs. ### Check list * [ ] If any new Jar binary package adding in your PR, please add License Notice according [New License Guide](https://github.com/apache/seatunnel/blob/dev/docs/en/contribution/new-license.md) * [ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/seatunnel/tree/dev/docs * [ ] If necessary, please update `incompatible-changes.md` to describe the incompatibility caused by this PR. * [ ] If you are contributing the connector code, please check that the following files are updated: 1. Update [plugin-mapping.properties](https://github.com/apache/seatunnel/blob/dev/plugin-mapping.properties) and add new connector information in it 2. Update the pom file of [seatunnel-dist](https://github.com/apache/seatunnel/blob/dev/seatunnel-dist/pom.xml) 3. Add ci label in [label-scope-conf](https://github.com/apache/seatunnel/blob/dev/.github/workflows/labeler/label-scope-conf.yml) 4. Add e2e testcase in [seatunnel-e2e](https://github.com/apache/seatunnel/tree/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/) 5. Update connector [plugin_config](https://github.com/apache/seatunnel/blob/dev/config/plugin_config) -- 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]
