[ 
https://issues.apache.org/jira/browse/FLINK-35859?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17900229#comment-17900229
 ] 

Hongshun Wang commented on FLINK-35859:
---------------------------------------

> Users cannot immediately perceive task issues in production applications.

I agree with you. CDC should also provide metics about AssignerStatus to let 
others know.

> [flink-cdc] Fix: The assigner is not ready to offer finished split 
> information, this should not be called
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-35859
>                 URL: https://issues.apache.org/jira/browse/FLINK-35859
>             Project: Flink
>          Issue Type: Bug
>          Components: Flink CDC
>    Affects Versions: cdc-3.1.1
>            Reporter: Hongshun Wang
>            Assignee: Hongshun Wang
>            Priority: Minor
>             Fix For: cdc-3.2.0
>
>
> When use CDC with newly added table,  an error occurs: 
> {code:java}
> The assigner is not ready to offer finished split information, this should 
> not be called. {code}
> It's because:
> 1. when stop then restart the job , the status is 
> NEWLY_ADDED_ASSIGNING_SNAPSHOT_FINISHED.
>  
> 2. Then Enumerator will send each reader with 
> BinlogSplitUpdateRequestEvent to update binlog. (see 
> org.apache.flink.cdc.connectors.mysql.source.enumerator.MySqlSourceEnumerator#syncWithReaders).
> 3. The Reader will suspend binlog reader then send 
> BinlogSplitMetaRequestEvent to Enumerator.
> 4. The Enumerator found that some tables are not sent, an error will occur
> {code:java}
> private void sendBinlogMeta(int subTask, BinlogSplitMetaRequestEvent 
> requestEvent) {
>     // initialize once
>     if (binlogSplitMeta == null) {
>         final List<FinishedSnapshotSplitInfo> finishedSnapshotSplitInfos =
>                 splitAssigner.getFinishedSplitInfos();
>         if (finishedSnapshotSplitInfos.isEmpty()) {
>             LOG.error(
>                     "The assigner offers empty finished split information, 
> this should not happen");
>             throw new FlinkRuntimeException(
>                     "The assigner offers empty finished split information, 
> this should not happen");
>         }
>         binlogSplitMeta =
>                 Lists.partition(
>                         finishedSnapshotSplitInfos, 
> sourceConfig.getSplitMetaGroupSize());
>    } 
> }{code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to