[
https://issues.apache.org/jira/browse/KAFKA-6417?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16416174#comment-16416174
]
Chris Egerton commented on KAFKA-6417:
--------------------------------------
There's also the case where a plugin performs some operations either statically
or, in the case of a connector, in its no-args constructor, in which case the
resulting {{ClassNotFoundException}} is thrown while starting up connect (in
either distributed or standalone mode), and causes the framework to crash.
If this happens, there's no guarantee that any of the non-plugin-containing
JARs would be scanned before the plugin JAR itself is scanned and the
framework-halting exception is thrown, so we can't rely on the user having seen
any warnings beforehand about non-plugin-containing JARs not being used as
dependencies for other plugins.
Handling this separate case could involve intercepting the
{{ClassNotFoundException}} and outputting a similar warning message about
improper plugin path structure, before throwing the same exception and causing
the framework to halt like before.
> plugin.path pointing at a plugin directory causes ClassNotFoundException
> ------------------------------------------------------------------------
>
> Key: KAFKA-6417
> URL: https://issues.apache.org/jira/browse/KAFKA-6417
> Project: Kafka
> Issue Type: Bug
> Components: KafkaConnect
> Affects Versions: 1.0.0
> Reporter: Dustin Cote
> Priority: Major
>
> When using the {{plugin.path}} configuration for the Connect workers, the
> user is expected to specify a list containing the following per the docs:
> {quote}
> The list should consist of top level directories that include any combination
> of: a) directories immediately containing jars with plugins and their
> dependencies b) uber-jars with plugins and their dependencies c) directories
> immediately containing the package directory structure of classes of plugins
> and their dependencies
> {quote}
> This means we would expect {{plugin.path=/usr/share/plugins}} for a structure
> like {{/usr/share/plugins/myplugin1}},{{/usr/share/plugins/myplugin2}}, etc.
> However if you specify {{plugin.path=/usr/share/plugins/myplugin1}} the
> resulting behavior is that dependencies for {{myplugin1}} are not properly
> loaded. This causes a {{ClassNotFoundException}} that is not intuitive to
> debug.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)