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]

Reply via email to