[
https://issues.apache.org/jira/browse/FLINK-31324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17696673#comment-17696673
]
Yun Tang commented on FLINK-31324:
----------------------------------
I think we can discuss changing the annotation of
{{SingleThreadFetcherManager}}. However, the {{Internal}} annotation is
introduced in FLINK-22358, which changed a lot of classes. Since I am not so
familiar with these changes, I think we need to involve more committers on
connector topics for discussion. cc [~becket_qin], [~renqs]
> Broken SingleThreadFetcherManager constructor API
> -------------------------------------------------
>
> Key: FLINK-31324
> URL: https://issues.apache.org/jira/browse/FLINK-31324
> Project: Flink
> Issue Type: Bug
> Components: Connectors / Parent
> Reporter: Yun Tang
> Assignee: Yun Tang
> Priority: Blocker
> Labels: pull-request-available
> Fix For: 1.17.0
>
>
> FLINK-28853 changed the default constructor of
> {{SingleThreadFetcherManager}}. Though the {{SingleThreadFetcherManager}} is
> annotated as {{Internal}}, it actually acts as some-degree public API, which
> is widely used in many connector projects:
> [flink-cdc-connector|https://github.com/ververica/flink-cdc-connectors/blob/release-2.3.0/flink-connector-mysql-cdc/src/main/java/com/ververica/cdc/connectors/mysql/source/reader/MySqlSourceReader.java#L93],
>
> [flink-connector-mongodb|https://github.com/apache/flink-connector-mongodb/blob/main/flink-connector-mongodb/src/main/java/org/apache/flink/connector/mongodb/source/reader/MongoSourceReader.java#L58]
> and so on.
> Once flink-1.17 is released, all these existing connectors are broken and
> cannot be used in new release version, and will throw exceptions like:
> {code:java}
> java.lang.NoSuchMethodError:
> org.apache.flink.connector.base.source.reader.fetcher.SingleThreadFetcherManager.<init>(Lorg/apache/flink/connector/base/source/reader/synchronization/FutureCompletingBlockingQueue;Ljava/util/function/Supplier;)V
> at
> com.ververica.cdc.connectors.mysql.source.reader.MySqlSourceReader.<init>(MySqlSourceReader.java:91)
> ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0]
> at
> com.ververica.cdc.connectors.mysql.source.MySqlSource.createReader(MySqlSource.java:159)
> ~[flink-sql-connector-mysql-cdc-2.3.0.jar:2.3.0]
> at
> org.apache.flink.streaming.api.operators.SourceOperator.initReader(SourceOperator.java:312)
> ~[flink-dist-1.17-SNAPSHOT.jar:1.17-SNAPSHOT]
> at
> org.apache.flink.streaming.runtime.tasks.SourceOperatorStreamTask.init(SourceOperatorStreamTask.java:94)
> ~[flink-dist-1.17-SNAPSHOT.jar:1.17-SNAPSHOT]
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.restoreInternal(StreamTask.java:699)
> ~[flink-dist-1.17-SNAPSHOT.jar:1.17-SNAPSHOT]
> at
> org.apache.flink.streaming.runtime.tasks.StreamTask.restore(StreamTask.java:675)
> ~[flink-dist-1.17-SNAPSHOT.jar:1.17-SNAPSHOT]
> at
> org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:952)
> ~[flink-dist-1.17-SNAPSHOT.jar:1.17-SNAPSHOT]
> at
> org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:921)
> ~[flink-dist-1.17-SNAPSHOT.jar:1.17-SNAPSHOT]
> at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:745)
> ~[flink-dist-1.17-SNAPSHOT.jar:1.17-SNAPSHOT]
> at org.apache.flink.runtime.taskmanager.Task.run(Task.java:562)
> ~[flink-dist-1.17-SNAPSHOT.jar:1.17-SNAPSHOT]
> at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_362]
> {code}
> Thus, I suggest to make the original SingleThreadFetcherManager constructor
> as depreacted instead of removing it.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)