Patson Luk created SOLR-17297:
---------------------------------

             Summary: Classloading issue with plugin and modules
                 Key: SOLR-17297
                 URL: https://issues.apache.org/jira/browse/SOLR-17297
             Project: Solr
          Issue Type: Bug
      Security Level: Public (Default Security Level. Issues are Public)
          Components: SolrCloud
    Affects Versions: 9.3
            Reporter: Patson Luk


h2. Summary
Using plugin jar and enabling any modules could trigger 
{{java.lang.ClassNotFoundException}}

h2. Description
1. An implementation of {{org.apache.lucene.codecs.PostingsFormat}} with the 
jar within the <solr install dir>/lib
2. Enable modules in solr.xml for example <str 
name="modules">opentelemetry</str>
3. Now on startup. As a part of {{NodeConfig#setupSharedLib}}, it would load 
all the SPIs, it locates our jar and loads the class with a 
{{FactoryURLClassLoader}} with the classpaths point at the jar of the lib, 
which is correct
4. After {{NodeConfig#setupSharedLib}}, {{NodeConfig#initModules}} is invoked, 
which eventually calls {{SolrResourceLoader#addURLsToClassLoader}} that closes 
the previous class loader, which is the one used in 3.
5. Now a core is loaded with that codec, it runs the <init> code which 
references other classes within our plugin jar, but unfortunately it would use 
the Classloader that loads our class in step 3., and such loader is marked as 
"closed" hence no longer load the correct resource/class. This triggers 
ClassNotFoundException.


I have tried several things, the only thing that seems to work so far is 
commenting out {{IOUtils.closeWhileHandlingException(oldLoader);}} in 
{{SolrResourceLoader#addURLsToClassLoader}}, which is likely not the right 
workaround as the {{closeWhileHandlingException}} should be there for a reason 
;)

Switching {{setupSharedLib}} and {{initModules}} might work too (haven't 
tested), but I don't want to try any weird changes since I don't really know 
the ordering significance. 

Would appreciate some helps from the Solr experts! :)





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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to