[ 
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: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to