Sergei Morozov created FLINK-37979:
--------------------------------------
Summary: Obsolete MySQL CDC snapshot split assigner code
Key: FLINK-37979
URL: https://issues.apache.org/jira/browse/FLINK-37979
Project: Flink
Issue Type: Technical Debt
Components: Flink CDC
Affects Versions: cdc-3.4.0
Reporter: Sergei Morozov
There is a redundant condition and a misleading comment in
{{MySqlSnapshotSplitAssigner#captureNewlyAddedTables()}} that complicate
understanding of the code.
The condition {{if (AssignerStatus.isAssigningFinished(assignerStatus))}} is
evaluated twice in the method in question: once in the very beginning and once
closer to the end. This way, the second evaluation will always result in
{{true}} and thus is redundant.
h3. Code Change History
Prior to FLINK-35859, table discovery would happen in any assigner status, so
the condition in the end of the method made sense. Together with adding this
condition in the beginning of the method, FLINK-35859 should have removed it
from the end.
h3. What Exactly is Obsolete
# There is a comment saying "if job is still in snapshot reading phase,
directly add all newly added tables". Since FLINK-35859, if the job is still in
the snapshot reading phase, this code won't be executed. This comment should be
removed as misleading.
# The second {{if (AssignerStatus.isAssigningFinished(assignerStatus))}}
statement. While the {{captureNewlyAddedTables()}} method is running, the
assigner status cannot be modified by a different thread because this code is
only executed as part of {{MySqlSourceEnumerator#open()}}, i.e. the source in
its initialization phase.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)