[
https://issues.apache.org/jira/browse/KAFKA-6467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Konstantine Karantasis updated KAFKA-6467:
------------------------------------------
Description:
In principle, Connect plugins that intend to load their dependencies in
isolation should not contain any conflicts among the classes they package as
dependencies. In other words, the order in which a plugin's dependencies are
laid out and passed to its plugin class loader should not matter.
However, in practice, there are rare and suboptimal situations where a plugin
needs to bundle a few packages with conflicting dependencies because it doesn't
control packaging of third-party modules. In those cases depending on a
deterministic ordering within the class loader's path can help the Connect
plugin enforce loading of the desired classes as needed. (For example, see
[HDFS connector with MapR
libs|https://github.com/confluentinc/kafka-connect-hdfs/issues/270] or [HDFS
connector with Hive's extended
jar|https://github.com/confluentinc/kafka-connect-hdfs/issues/261])
To achieve such ordering, this improvement suggests ordering a plugin's
dependencies in a nested directory structure by sorting such paths
alphanumerically. This way the deterministic order is implicit (no extra
configuration is required) and a specific dependency can be put earlier or
later in the class loader's path with appropriate naming of its package path
(e.g. within the plugin's directory).
was:
In principle, Connect plugins that intend to load their dependencies in
isolation should not contain any conflicts among the classes they package as
dependencies. In other words, the order in which a plugin's dependencies are
laid out and passed to its plugin class loader should not matter.
However, in practice, there are rare and suboptimal situations where a plugin
needs to bundle a few packages with conflicting dependencies because it doesn't
control packaging of third-party modules. In those cases depending on a
deterministic ordering within the class loader's path can help the Connect
plugin enforce loading of the desired classes as needed. (For example, see
[HDFS connector with MapR
libs|https://github.com/confluentinc/kafka-connect-hdfs/issues/270] or [HDFS
connector with Hive's extended
jar|https://github.com/confluentinc/kafka-connect-hdfs/issues/261)
To achieve such ordering, this improvement suggests ordering a plugin's
dependencies in a nested directory structure by sorting such paths
alphanumerically. This way the deterministic order is implicit (no extra
configuration is required) and a specific dependency can be put earlier or
later in the class loader's path with appropriate naming of its package path
(e.g. within the plugin's directory).
> Enforce layout of dependencies within a Connect plugin to be deterministic
> --------------------------------------------------------------------------
>
> Key: KAFKA-6467
> URL: https://issues.apache.org/jira/browse/KAFKA-6467
> Project: Kafka
> Issue Type: Bug
> Components: KafkaConnect
> Affects Versions: 1.0.0, 0.11.0.2
> Reporter: Konstantine Karantasis
> Assignee: Konstantine Karantasis
> Priority: Blocker
> Fix For: 1.0.1, 0.11.0.3
>
>
> In principle, Connect plugins that intend to load their dependencies in
> isolation should not contain any conflicts among the classes they package as
> dependencies. In other words, the order in which a plugin's dependencies are
> laid out and passed to its plugin class loader should not matter.
> However, in practice, there are rare and suboptimal situations where a plugin
> needs to bundle a few packages with conflicting dependencies because it
> doesn't control packaging of third-party modules. In those cases depending on
> a deterministic ordering within the class loader's path can help the Connect
> plugin enforce loading of the desired classes as needed. (For example, see
> [HDFS connector with MapR
> libs|https://github.com/confluentinc/kafka-connect-hdfs/issues/270] or [HDFS
> connector with Hive's extended
> jar|https://github.com/confluentinc/kafka-connect-hdfs/issues/261])
> To achieve such ordering, this improvement suggests ordering a plugin's
> dependencies in a nested directory structure by sorting such paths
> alphanumerically. This way the deterministic order is implicit (no extra
> configuration is required) and a specific dependency can be put earlier or
> later in the class loader's path with appropriate naming of its package path
> (e.g. within the plugin's directory).
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)