The conclusion in FLIP-196 <https://cwiki.apache.org/confluence/display/FLINK/FLIP-196%3A+Source+API+stability+guarantees> was that we only provide source compatibility for Public(Evolving) APIs, which means that _everything_ must be compiled against the Flink version you are using it with.

Doesn't that mean that such dependency conflicts are then user errors?

On 10/02/2022 20:19, Thomas Weise wrote:
Hi Alexander,

It is beneficial for users to be able to replace/choose a connector as
part of their application. When flink-connector-base is included in
dist, that becomes more difficult. We can run into hard to understand
dependency conflicts such as [1]. Depending on the Flink platform
used, it may also be hard to update something that is part of dist. I
would prefer to keep the module outside dist.

Thanks,
Thomas

[1]https://lists.apache.org/thread/0ht5y2tyzpt16ft36zm428182dxfs3zx

On Wed, Feb 9, 2022 at 3:26 AM Alexander Fedulov
<alexan...@ververica.com>  wrote:
Hi everyone,

I would like to discuss the best approach to address the issue raised
in FLINK-25927 [1]. It can be summarized as follows:

flink-connector-base is currently inconsistently used in connectors
(directly shaded in some and transitively pulled in via
flink-connector-files which is itself shaded in the table uber jar)

FLINK-24687 [2] moved flink-connector-files out of the flink-table  uber
jar

It is necessary to make usage of flink-connector-base consistent across
all connectors

One approach is to stop shading flink-connector-files in all connectors and
instead package it in flink-dist, making it a part of Flink-wide provided
public API. This approach is investigated in the following PoC PR: 18545
[3].  The issue with this approach is that it breaks any existing CI and
IDE setups that do not directly rely on flink-dist and also do not include
flink-connector-files as an explicit dependency.

In theory, a nice alternative would be to make it a part of a dependency
that is ubiquitously provided, for instance, flink-streaming-java. Doing
that for flink-streaming-java would, however,  introduce a dependency cycle
and is currently not feasible.

It would be great to hear your opinions on what could be the best way
forward here.

[1]https://issues.apache.org/jira/browse/FLINK-25927
[2]https://issues.apache.org/jira/browse/FLINK-24687
[3]https://github.com/apache/flink/pull/18545


Thanks,
Alexander Fedulov

Reply via email to