Greg Harris created KAFKA-15162:
-----------------------------------

             Summary: Reflective plugin scanning misses plugins which are in 
parent classloaders but not classpath
                 Key: KAFKA-15162
                 URL: https://issues.apache.org/jira/browse/KAFKA-15162
             Project: Kafka
          Issue Type: Bug
          Components: KafkaConnect
            Reporter: Greg Harris
            Assignee: Greg Harris
             Fix For: 3.6.0


When the Plugins class is instantiated with a parent classloader other than the 
system classloader, as in these tests: 
[https://github.com/apache/kafka/blob/fd5b300b573dc41b94c710a791f9ee6f568992d4/connect/runtime/src/test/java/org/apache/kafka/connect/runtime/isolation/PluginsTest.java#L493-L501]

Plugins which are present in that parent classloader but not in the app 
classloader are not visible. This is because the classes and resources become 
visible, but the set of URLs used for reflective scanning only includes the 
classpath jars: 
[https://github.com/apache/kafka/blob/fd5b300b573dc41b94c710a791f9ee6f568992d4/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/PluginUtils.java#L353]
 

This causes a discrepancy between the Reflection and ServiceLoading scanners, 
because the Reflection scanner relies on these URLs but the ServiceLoader 
relies on the classes and resources instead.

Either the tests should be rewritten to accommodate this difference in 
behavior, or the PluginUtils.pluginSources should be amended to make a 
best-effort evaluation of the parent classloader URLs.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to