CloverDew opened a new pull request, #10951:
URL: https://github.com/apache/seatunnel/pull/10951

   ### Purpose of this pull request
   This PR fixes a Flink schema-evolution deadlock path when checkpoints stop 
progressing, notably seen on Flink 1.13-style behavior where some source 
subtasks finish and checkpoint completion stalls.
   Fix: https://github.com/apache/seatunnel/issues/10787
   
   **Main changes in seatunnel-translation-flink-common:**
   
   1. Add a fallback timer in SchemaOperator to detect stalled checkpoint 
completion and still apply pending schema changes safely on task thread.
   2. Add downstream flush signaling (flush_signal) after schema change 
completion.
   3. Enhance FlinkSinkWriter to: flush/commit pending data before applying 
schema change, react to flush_signal, add/adjust unit tests for fallback and 
flush/commit behavior.
   
   **Also in this branch:**
   
   E2E Flink schema-change test configs raise parallelism from 1 to 5 in:
   - mysqlcdc_to_mysql_with_flink_schema_change.conf
   - mysqlcdc_to_mysql_with_flink_schema_change_exactly_once.conf
   
   ### Does this PR introduce _any_ user-facing change?
   Yes.
   
   **Previous behavior:**
   
   On Flink1.13 With schema evolution enabled, if checkpoint completion 
stalled, pending schema changes could remain blocked indefinitely and data flow 
could hang.
   
   **New behavior:**
   
   - SchemaOperator detects checkpoint stall (fallback timeout) and proceeds 
with deferred schema-change apply flow.
   - Sink writer flushes/commits buffered records around schema-change 
boundaries (or after flush signal), reducing risk of indefinite blocking in 
this scenario.
   
   **Compatibility:**
   
   - No public config key removals/renames and no public API/SPI break intended.
   - This is a behavior fix in runtime coordination/commit flow.
   
   ### How was this patch tested?
   The above configuration file has been adjusted. For specific testing, please 
see: MysqlCDCWithFlinkSchemaChangeIT
   
   ### 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/developer/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
     5. Update the pom file of 
[seatunnel-dist](https://github.com/apache/seatunnel/blob/dev/seatunnel-dist/pom.xml)
     6. Add ci label in 
[label-scope-conf](https://github.com/apache/seatunnel/blob/dev/.github/workflows/labeler/label-scope-conf.yml)
     7. Add e2e testcase in 
[seatunnel-e2e](https://github.com/apache/seatunnel/tree/dev/seatunnel-e2e/seatunnel-connector-v2-e2e/)
     8. 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