[
https://issues.apache.org/jira/browse/FLINK-37979?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergei Morozov updated FLINK-37979:
-----------------------------------
Description:
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
is in its initialization phase.
was:
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.
> 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
> Priority: Minor
>
> 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 is in its initialization phase.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)