Jason Gerlowski created SOLR-17939:
--------------------------------------

             Summary: ZkController creates then ignores ZkCredentialProvider, 
ZkCredentialInjector
                 Key: SOLR-17939
                 URL: https://issues.apache.org/jira/browse/SOLR-17939
             Project: Solr
          Issue Type: Improvement
    Affects Versions: 9.8.1, 9.9, main (10.0)
            Reporter: Jason Gerlowski


On startup Solr creates a ZkController, which in turn creates a "SolrZkClient".

In preparation to create the SolrZkClient we create ZkAclProvider, 
ZkCredentialsProvider,  and ZkCredentialsInjector instances.  But only one of 
those (the ZkAclProvider) is actually given to SolrZkClient!

The impact here is relatively low for most users, since SolrZkClient has 
fallback code for instantiating whatever providers and injectors it's missing.

But it *can* cause problems in some circumstances: particularly around 
classloading.  Plugin instantiation done by ZkController will use the full Solr 
classpath, but SolrZkClient gets the default JVM classpath.  So users 
attempting to load custom ZkCredentialsProvider implementations from jars 
located in (e.g.) {{$SOLR_TIP/lib}} will get NoClassDefFound errors:

{code}
2025-09-30 14:40:03.244 INFO  (main) [c: s: r: x: t:] o.a.s.c.c.SolrZkClient 
Using ZkCredentialsProvider: org.example.LoggingZkCredentialsProvider
2025-09-30 14:40:03.244 WARN  (main) [c: s: r: x: t:] o.a.s.c.c.SolrZkClient VM 
param zkCredentialsProvider does not point to a class implementing 
ZkCredentialsProvider and with a non-arg constructor => 
java.lang.ClassNotFoundException: org.example.LoggingZkCredentialsProvider
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
java.lang.ClassNotFoundException: org.example.LoggingZkCredentialsProvider
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445) 
~[?:?]
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593) 
~[?:?]
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) 
~[?:?]
        at 
org.eclipse.jetty.ee10.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:443)
 ~[jetty-ee10-webapp-12.0.19.jar:12.0.19]
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) 
~[?:?]
        at java.base/java.lang.Class.forName0(Native Method) ~[?:?]
        at java.base/java.lang.Class.forName(Class.java:421) ~[?:?]
        at java.base/java.lang.Class.forName(Class.java:412) ~[?:?]
        at 
org.apache.solr.common.cloud.SolrZkClient.createZkCredentialsToAddAutomatically(SolrZkClient.java:234)
 ~[?:?]
        at 
org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:162) ~[?:?]
        at 
org.apache.solr.common.cloud.SolrZkClient.<init>(SolrZkClient.java:110) ~[?:?]
        at 
org.apache.solr.common.cloud.SolrZkClient$Builder.build(SolrZkClient.java:1214) 
~[?:?]
        at org.apache.solr.cloud.ZkController.<init>(ZkController.java:354) 
~[?:?]
        at org.apache.solr.core.ZkContainer.initZooKeeper(ZkContainer.java:131) 
~[?:?]
        at 
org.apache.solr.core.CoreContainer.loadInternal(CoreContainer.java:800) ~[?:?]
        at org.apache.solr.core.CoreContainer.load(CoreContainer.java:735) 
~[?:?]
{code}



--
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