You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by GitBox <gi...@apache.org> on 2021/04/16 23:42:25 UTC

[GitHub] [kafka] C0urante commented on a change in pull request #10549: KAFKA-8605 log an error message when we detect multiple copies of sam…

C0urante commented on a change in pull request #10549:
URL: https://github.com/apache/kafka/pull/10549#discussion_r615168657



##########
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:
       Do we need the `pluginConflict` field, or can this be moved into the `else` branch above?

##########
File path: connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/DelegatingClassLoaderTest.java
##########
@@ -129,4 +133,32 @@ public void testLoadingMixOfValidAndInvalidPlugins() throws Exception {
             assertNotNull(classLoader.pluginClassLoader(pluginClassName));
         }
     }
+
+    @Test
+    public void testAddMultiplePluginsWithSameClass() {

Review comment:
       Is this test buying us much? It looks like it's verifying that multiple versions of the same plugin are recognized by the worker, but not really probing how the worker handles that case.
   
   For what it's worth, I think the functional parts of this change are small and readable enough that a test might not even be warranted.




-- 
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:
users@infra.apache.org