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

Dong Lin commented on FLINK-25509:
----------------------------------

[~martijnvisser] Hmm... I am not sure there is consensus in the community that 
externalized connectors should only use public APIs. Was this documented or 
discussed on the mailing list?

I agree it is preferred to have externalized connectors using only public APIs. 
But it is also important that we only expose a minimum set of well-designed 
APIs rather than simply making the existing APIs public. This is non-trivial 
effort and someone in the community needs to voluntary to do this. Before this 
is done, I guess we have to stick with the fact that externalized repos will be 
using internal APIs in the near future. 

I guess we probably need to update the given externalized repo to only use 
public APIs before having nightly build to verify that it can always compile 
with the master head.

In this particular case, we have added an abstract method `removeSplits()` to 
SplitFetcherManager. This is a backward incompatible change for externalized 
repos like flink-connector-pulsar. This is because PulsarSourceFetcherManager 
should override removeSplits() to compile with flink 1.18-snapshot. Then it 
will fail to compile with flink-1.17 as there is no such method to override in 
flink 1.17.

The simplest way to address this issue is to update Flink master branch to make 
`removeSplits()` non-abstract. But IMO this approach makes the code hard to 
read and is very unconventional.

I would prefer to build externalized repo in the same way as what most users 
would do. That is, the master branch should only be compiled against one 
version of Flink. And it can have a separate branch for each extra Flink 
version. What do you think?

> FLIP-208: Add RecordEvaluator to dynamically stop source based on 
> de-serialized records
> ---------------------------------------------------------------------------------------
>
>                 Key: FLINK-25509
>                 URL: https://issues.apache.org/jira/browse/FLINK-25509
>             Project: Flink
>          Issue Type: New Feature
>          Components: Connectors / Common, Connectors / Kafka
>            Reporter: Dong Lin
>            Assignee: Hang Ruan
>            Priority: Major
>              Labels: pull-request-available
>
> This feature is needed to migrate applications which uses 
> KafkaDeserializationSchema::isEndOfStream() from using FlinkKafkaConsumer to 
> using KafkaSource.
> Please checkout 
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-208%3A+Add+RecordEvaluator+to+dynamically+stop+source+based+on+de-serialized+records
>  for the motivation and the proposed changes.



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

Reply via email to