On 3/6/2018 6:31 AM, sol...@seznam.cz wrote:
> A would like to use Analytisc component.  I configured it by https://lucene.
> apache.org/solr/guide/7_2/analytics.html.
> When I try to send query to solr, exception is thrown.
> Reason: <pre> Server Error</pre></p><h3>Caused by:</h3><pre>java.lang.
> IllegalAccessError: tried to access field org.apache.solr.handler.component.
> ResponseBuilder._isOlapAnalytics from class org.apache.solr.handler.
> component.AnalyticsComponent at org.apache.solr.handler.component.
> AnalyticsComponent.prepare(AnalyticsComponent.java:46) at org.apache.solr.
> handler.component.SearchHandler.handleRequestBody(SearchHandler.java:269) at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.
> java:177) at org.apache.solr.core.SolrCore.execute(SolrCore.java:2503) at 
> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:710) at org.
> apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:516)

Old thread!  Brought to my attention through other means.

I think you've encountered a subtle classloader problem.

The "_isOlapAnalytics" field in the ResponseBuilder class is at default
visibility -- package protected.  The AnalyticsComponent class is in the
same package as ResponseBuilder, so on the surface, this doesn't seem
like it should be a problem, and the compiler doesn't complain about it,
because everything matches up from its perspective.

AnalyticsComponent is in a contrib jar, loaded by a different
classloader than the rest of Solr.  When this happens, Java's
inheritance model can get broken.

A workaround that should work in the field is to remove the <lib> config
line from solrconfig.xml that loads the analaytics jar and copy that jar
to server/solr-webapp/webapp/WEB-INF/lib so that it is loaded by the
same classloader as the rest of Solr.  I have a report that this
actually does work.

There is an issue to move the analytics component into solr-core, which
would also solve the problem.



Reply via email to