[
https://issues.apache.org/jira/browse/SOLR-17280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17844415#comment-17844415
]
Mike Drob commented on SOLR-17280:
----------------------------------
As far as the cache insertion, that dates all the way back to the [introduction
of
SolrRangeQuery|https://github.com/apache/solr/commit/996a3fb117f8ee275ac16cbc789eb65eeb1898ed],
so you might have to ask [~yonik] about what is actually going on.
IIRC, when I committed this I did a bunch of manual cache inspection so I think
it gives the right results, but it's also very possible that the tests are
missing an edge case to verify correctness.
The comment about the "naked put" relates to the cache check earlier, since we
know we got a null (lines 440 + 447), so we don't need a
putIfAbsent/computeIfAbsent, and can go straight to put.
> SolrRangeQuery can trigger "IllegalStateException: Recursive update" in
> CaffeineCache / ConcurrentHashMap
> ---------------------------------------------------------------------------------------------------------
>
> Key: SOLR-17280
> URL: https://issues.apache.org/jira/browse/SOLR-17280
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Reporter: Chris M. Hostetter
> Priority: Major
>
> Sample stacktrace...
> {noformat}
> 2> => java.lang.IllegalStateException: Recursive update
> 2> at
> java.base/java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1063)
> 2> java.lang.IllegalStateException: Recursive update
> 2> at
> java.base/java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1063)
> ~[?:?]
> 2> at
> java.base/java.util.concurrent.ConcurrentHashMap.putIfAbsent(ConcurrentHashMap.java:1541)
> ~[?:?]
> 2> at
> com.github.benmanes.caffeine.cache.BoundedLocalCache.put(BoundedLocalCache.java:2312)
> ~[caffeine-3.1.8.jar:3.1.8]
> 2> at
> com.github.benmanes.caffeine.cache.BoundedLocalCache.put(BoundedLocalCache.java:2278)
> ~[caffeine-3.1.8.jar:3.1.8]
> 2> at org.apache.solr.search.CaffeineCache.put(CaffeineCache.java:277)
> ~[main/:?]
> 2> at
> org.apache.solr.query.SolrRangeQuery$ConstWeight.getSegState(SolrRangeQuery.java:482)
> ~[main/:?]
> 2> at
> org.apache.solr.query.SolrRangeQuery$ConstWeight.scorer(SolrRangeQuery.java:552)
> ~[main/:?]
> 2> at org.apache.lucene.search.Weight.scorerSupplier(Weight.java:135)
> ~[lucene-core-9.10.0.jar:9.10.0 695c0ac84508438302cd346a812cfa2fdc5a10df -
> 2024-02-14 16:48:06]
> 2> at
> org.apache.lucene.search.BooleanWeight.requiredBulkScorer(BooleanWeight.java:289)
> ~[lucene-core-9.10.0.jar:9.10.0 695c0ac84508438302cd346a812cfa2fdc5a10df -
> 2024-02-14 16:48:06]
> 2> at
> org.apache.lucene.search.BooleanWeight.booleanScorer(BooleanWeight.java:402)
> ~[lucene-core-9.10.0.jar:9.10.0 695c0ac84508438302cd346a812cfa2fdc5a10df -
> 2024-02-14 16:48:06]
> 2> at
> org.apache.lucene.search.BooleanWeight.bulkScorer(BooleanWeight.java:443)
> ~[lucene-core-9.10.0.jar:9.10.0 695c0ac84508438302cd346a812cfa2fdc5a10df -
> 2024-02-14 16:48:06]
> 2> at
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:737)
> ~[lucene-core-9.10.0.jar:9.10.0 695c0ac84508438302cd346a812cfa2fdc5a10df -
> 2024-02-14 16:48:06]
> 2> at
> org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:720)
> ~[main/:?]
> 2> at
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:552)
> ~[lucene-core-9.10.0.jar:9.10.0 695c0ac84508438302cd346a812cfa2fdc5a10df -
> 2024-02-14 16:48:06]
> 2> at
> org.apache.solr.search.DocSetUtil.createDocSetGeneric(DocSetUtil.java:154)
> ~[main/:?]
> 2> at
> org.apache.solr.search.DocSetUtil.createDocSet(DocSetUtil.java:141) ~[main/:?]
> 2> at
> org.apache.solr.search.SolrIndexSearcher.getDocSetNC(SolrIndexSearcher.java:1387)
> ~[main/:?]
> 2> at
> org.apache.solr.search.SolrIndexSearcher.lambda$getAndCacheDocSet$1(SolrIndexSearcher.java:991)
> ~[main/:?]
> 2> at
> org.apache.solr.search.CaffeineCache.lambda$computeIfAbsent$1(CaffeineCache.java:258)
> ~[main/:?]
> 2> at
> com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$2(LocalCache.java:167)
> ~[caffeine-3.1.8.jar:3.1.8]
> 2> at
> com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2688)
> ~[caffeine-3.1.8.jar:3.1.8]
> 2> at
> java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1908)
> ~[?:?]
> 2> at
> com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2686)
> ~[caffeine-3.1.8.jar:3.1.8]
> 2> at
> com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2669)
> ~[caffeine-3.1.8.jar:3.1.8]
> 2> at
> com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:112)
> ~[caffeine-3.1.8.jar:3.1.8]
> 2> at
> com.github.benmanes.caffeine.cache.LocalManualCache.get(LocalManualCache.java:62)
> ~[caffeine-3.1.8.jar:3.1.8]
> 2> at
> org.apache.solr.search.CaffeineCache.computeIfAbsent(CaffeineCache.java:253)
> ~[main/:?]
> 2> at
> org.apache.solr.search.SolrIndexSearcher.getAndCacheDocSet(SolrIndexSearcher.java:991)
> ~[main/:?]
> 2> at
> org.apache.solr.search.SolrIndexSearcher.getPositiveDocSet(SolrIndexSearcher.java:946)
> ~[main/:?]
> 2> at
> org.apache.solr.search.SolrIndexSearcher.numDocs(SolrIndexSearcher.java:2367)
> ~[main/:?]
> 2> at
> org.apache.solr.request.SimpleFacets.getFacetQueryCount(SimpleFacets.java:320)
> ~[main/:?]
> 2> at
> org.apache.solr.request.SimpleFacets.getFacetQueryCounts(SimpleFacets.java:302)
> ~[main/:?]
> 2> at
> org.apache.solr.handler.component.FacetComponent.getFacetCounts(FacetComponent.java:331)
> ~[main/:?]
> 2> at
> org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:279)
> ~[main/:?]
> 2> at
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:466)
> ~[main/:?]
> 2> at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:238)
> ~[main/:?]
> 2> at org.apache.solr.core.SolrCore.execute(SolrCore.java:2886)
> ~[main/:?]
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]