You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Jark Wu (Jira)" <ji...@apache.org> on 2020/11/20 15:16:00 UTC
[jira] [Commented] (FLINK-19795) Fix Flink SQL throws exception
when changelog source contains duplicate change events
[ https://issues.apache.org/jira/browse/FLINK-19795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17236224#comment-17236224 ]
Jark Wu commented on FLINK-19795:
---------------------------------
I would propose to add a job option {{table.exec.source.cdc-events-duplicate=true|false}} to indicate whether the cdc source produce duplicate messages that require the framework to deduplicate. By default, the value is false (for backward-compatibility). When it is set to true, it requires to set a primary key on the source, and the framework will this the primary key to deduplicate/normalize the changelog (using the ChangelogNormalize operator).
This option only take effect on the cdc sources which will produce full changelog, including INSERT/UPDATE_BEFORE/UPDATE_AFTER/DELETE events. So it doesn't affect the upsert sources, because upsert sources always generate a ChangelogNormalize operator after it.
What do you think about this? [~Leonard Xu] [~godfreyhe]
> Fix Flink SQL throws exception when changelog source contains duplicate change events
> -------------------------------------------------------------------------------------
>
> Key: FLINK-19795
> URL: https://issues.apache.org/jira/browse/FLINK-19795
> Project: Flink
> Issue Type: Sub-task
> Components: Table SQL / Runtime
> Affects Versions: 1.11.2
> Reporter: jinxin
> Assignee: Jark Wu
> Priority: Major
> Fix For: 1.12.0
>
>
> We are using Canal to synchornize MySQL data into Kafka, the synchornization delivery is not exactly-once, so there might be dupcliate INSERT/UPDATE/DELETE messages for the same primary key. We are using {{'connecotr' = 'kafka', 'format' = 'canal-json'}} to consume such topic. However, when appling TopN query on this created source table, the TopN operator will thrown exception: {{Caused by: java.lang.RuntimeException: Can not retract a non-existent record. This should never happen.}}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)