Till Rohrmann created FLINK-5513:
------------------------------------
Summary: Remove relocation of internal API classes
Key: FLINK-5513
URL: https://issues.apache.org/jira/browse/FLINK-5513
Project: Flink
Issue Type: Improvement
Affects Versions: 1.2.0, 1.3.0
Reporter: Till Rohrmann
Fix For: 1.3.0
Currently, we are relocating the {{curator}} dependency in order to avoid
conflicts with user code classes. This happens for example in the
{{flink-runtime}} module. The problem with that is that {{curator}} classes,
such as the {{CuratorFramework}}, are part of Flink's internal API. So for
example, the {{ZooKeeperStateHandleStore}} requires a {{CuratorFramework}} as
argument in order to instantiate it. By relocating {{curator}} it is no longer
possible to use this class outside of {{flink-runtime}} without some nasty
tricks (see {{flink-mesos}} for that).
I think it is not good practice to relocate internal API classes because it
hinders easy code reuse. I propose to either introduce our own interfaces which
abstract the {{CuratorFramework}} away or (imo the better solution) to get rid
of the {{Curator}} relocation. The latter might entail that we properly
separate the API modules from the runtime modules so that users don't have to
pull in the runtime dependencies if they want to develop a Flink job.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)