C0urante commented on a change in pull request #10549: URL: https://github.com/apache/kafka/pull/10549#discussion_r615189609
########## 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: Oh, gotcha--in that case, should we do a check somewhere else, since this will be triggered potentially multiple times for a single plugin? For example, if there are three copies of a connector, the warning will be logged twice right now, with different values for `inner.keySet()` each time. Also, it may also help to log exactly which one we're going to use either instead of or in addition to the complete set of discovered versions of the duplicated plugin. -- 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: us...@infra.apache.org