C0urante commented on a change in pull request #10549:
URL: https://github.com/apache/kafka/pull/10549#discussion_r615928396
##########
File path:
connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/DelegatingClassLoader.java
##########
@@ -187,17 +192,24 @@ private static PluginClassLoader newPluginClassLoader(
);
}
- private <T> void addPlugins(Collection<PluginDesc<T>> plugins, ClassLoader
loader) {
+ //visible for testing
+ <T> void addPlugins(Collection<PluginDesc<T>> plugins, ClassLoader loader)
{
for (PluginDesc<T> plugin : plugins) {
String pluginClassName = plugin.className();
SortedMap<PluginDesc<?>, ClassLoader> inner =
pluginLoaders.get(pluginClassName);
+ boolean pluginConflict = false;
if (inner == null) {
inner = new TreeMap<>();
pluginLoaders.put(pluginClassName, inner);
// TODO: once versioning is enabled this line should be moved
outside this if branch
log.info("Added plugin '{}'", pluginClassName);
+ } else {
+ pluginConflict = true;
}
inner.put(plugin, loader);
+ if (pluginConflict) {
+ log.error("Detected multiple copies of plugin '{}', one of
these will be used '{}'", pluginClassName, inner.keySet());
+ }
Review comment:
Mmmm, I'm not sure we should be making decisions here based on dynamic
plugin loading for two reasons:
1. This change can be backported to older versions of Connect, which will
never have that feature.
2. It's unclear exactly what the mechanism for dynamic plugin loading will
be, and it's possible that a re-scan of all known plugins after loading has
taken place (either the initial start load or a subsequent dynamic load at
runtime) could still be beneficial
Also, it's actually not that uncommon for 3+ copies of the same plugin to
appear on the plugin path for a worker. For example, some connectors come
packaged directly with converters; all it takes is at least two such connectors
and a separately-installed copy of that converter to lead to that number of
copies.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]