Hi,

thanks for starting the discussion, Tison!

I'd like to fix this dependency mess rather sooner than later, but we do have to consider the fact that we are breaking the dependency setup of users. If they they only had a dependency on flink-streaming-java before but used classes from flink-clients they would have to explicitly add this dependency now.

Let's see what others think.

Best,
Aljoscha

On 05.03.20 02:53, tison wrote:
Hi devs,

Here is a proposal to reverse the dependency from flink-streaming-java to
flink-client, for a proper
module dependency graph. Since it changes current structure, it should be
discussed publicly.

The original idea comes from that flink-streaming-java acts as an API only
module just as what
we do in its batch companion flink-java. If a Flink user want to write a
minimum DataStream
program, the only dependency should be flink-streaming java.

However, currently as it is implemented, flink-client and even
flink-runtime are transitively polluted
in when user depends on flink-streaming-java. These dependencies polluted
in as

flink-client:
   - previously, ClusterClient, which is removed by FLIP-73 Executors
   - accidentally, ProgramInvocationException, we just throw in place as it
is accessible.
   - transitively, flink-optimizer, for one utility.
   - transitively, flink-java, for several utilities.
flink-runtime:
   - mainly for JobGraph generating.

With a previous discussion with @Aljoscha Krettek <aljos...@apache.org> our
goal is briefly making flink-streaming-java
an API only module. As a first step we can break the dependency from
flink-streaming-java to
flink-client[1][2].

With this first step, continuously we factor out common utilities in
flink-java to
flink-core and eventually eliminate dependencies from streaming to batch;
while
orthogonally, we factor out job compilation logic into
flink-streaming-compiler module and
break the dependency to flink-runtime. The final dependency graph will be:


flink-client -> flink-streaming-compiler -> flink-runtime
                                                          \->
flink-streaming-java

Looking forward to your feedback. Basically whether or not it is in a right
direction, and if so,
how the community integrates this proposal.

Best,
tison.

[1] https://issues.apache.org/jira/browse/FLINK-15090
[2] https://issues.apache.org/jira/browse/FLINK-16427

Reply via email to