Search with facets throws IllegalAccessException if some string fields contain numeric values.
Below is example of one such field defined in the schema
<field name="dv_device_code" type="string" termOffsets="false" stored="true" termPositions="false" docValues="false" termVectors="false" multiValued="true" storeOffsetsWithPositions="false"/>
The same search with other facets works fine if this field is removed from the facet fields list.
Unfortunately the client can’t pinpoint the exact value of the attribute which causes the below exception but it seems to be more of a reflective call to method that is not accessible or non-existent.
Full stack trace:
2024-07-05 07:46:18.887 ERROR (qtp1613627715-23-ds-solr-0.solr-headless.onedoc-ns1-420) [c:ccb067d9-cf19-4d05-b067-d9cf191d05d2 s:shard1 r:core_node4 x:ccb067d9-cf19-4d05-b067-d9cf191d05d2_shard1_replica_n2 t:ds-solr-0.solr-headless.onedoc-ns1-420] o.a.s.s.HttpSolrCall 500 Exception => java.lang.RuntimeException: java.lang.IllegalAccessException: access violation: class org.apache.lucene.document.LongPoint$1, from public Lookup
at org.apache.solr.common.util.Utils.getReflectWriter(Utils.java:879)
java.lang.RuntimeException: java.lang.IllegalAccessException: access violation: class org.apache.lucene.document.LongPoint$1, from public Lookup
at org.apache.solr.common.util.Utils.getReflectWriter(Utils.java:879) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:276) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeNamedList(JavaBinCodec.java:252) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:360) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:257) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeArray(JavaBinCodec.java:796) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:376) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:257) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeNamedList(JavaBinCodec.java:252) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:360) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:257) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeArray(JavaBinCodec.java:796) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:376) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:257) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeNamedList(JavaBinCodec.java:252) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:360) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:257) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeNamedList(JavaBinCodec.java:252) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:360) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:257) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeNamedList(JavaBinCodec.java:252) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:360) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:257) ~[?:?]
at org.apache.solr.common.util.JavaBinCodec.marshal(JavaBinCodec.java:167) ~[?:?]
at org.apache.solr.response.BinaryResponseWriter.write(BinaryResponseWriter.java:58) ~[?:?]
at org.apache.solr.response.QueryResponseWriterUtil.writeQueryResponse(QueryResponseWriterUtil.java:59) ~[?:?]
at org.apache.solr.servlet.HttpSolrCall.writeResponse(HttpSolrCall.java:996) ~[?:?]
at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:586) ~[?:?]
at org.apache.solr.servlet.SolrDispatchFilter.dispatch(SolrDispatchFilter.java:262) ~[?:?]
at org.apache.solr.servlet.SolrDispatchFilter.lambda$doFilter$0(SolrDispatchFilter.java:219) ~[?:?]
at org.apache.solr.servlet.ServletUtils.traceHttpRequestExecution2(ServletUtils.java:249) ~[?:?]
at org.apache.solr.servlet.ServletUtils.rateLimitRequest(ServletUtils.java:215) ~[?:?]
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:213) ~[?:?]
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:195) ~[?:?]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210) ~[jetty-servlet-10.0.19.jar:10.0.19]
Caused by: java.lang.IllegalAccessException: access violation: class org.apache.lucene.document.LongPoint$1, from public Lookup
at java.base/java.lang.invoke.MethodHandles$Lookup.makeAccessException(MethodHandles.java:2835) ~[?:?]
at java.base/java.lang.invoke.MethodHandles$Lookup.accessClass(MethodHandles.java:2913) ~[?:?]
at org.apache.solr.common.util.Utils.addTraditionalFieldWriters(Utils.java:972) ~[?:?]
at org.apache.solr.common.util.Utils.getReflectData(Utils.java:931) ~[?:?]
at org.apache.solr.common.util.Utils.getReflectWriter(Utils.java:866) ~[?:?]
... 80 more
The same use case works fine with Solr 8.11.
Even with Solr 9.5, the same search with other facets works fine if this field is removed from the facet fields list.
Looks like Solr is calling some Lucene Constructor which is removed or its access has changed.