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]