[
https://issues.apache.org/jira/browse/SOLR-17280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17844401#comment-17844401
]
Chris M. Hostetter commented on SOLR-17280:
-------------------------------------------
This can sometimes be reproduced by some of the sporadic jenkins failures that
we've seen from {{TestFiltering.testRandomFiltering}} over the past 3 years ...
{noformat}
hossman@slate:~/lucene/solr [j11] [main] $ git rev-parse HEAD
d5b82412d8729a6bfa8056e7000a5a7be0b9b86e
hossman@slate:~/lucene/solr [j11] [main] $ ./gradlew clean test --tests
TestFiltering -Dtests.seed=8B449AF7C2324BE4 -Dtests.multiplier=3
-Dtests.locale=fr-BE -Dtests.timezone=Europe/Sarajevo -Dtests.asserts=true
-Dtests.file.encoding=UTF-8
...{noformat}
The root of the problem seems to be this bit of {{SolrRangeQuery}} ...
{noformat}
if (doCheck) {
answer = createDocSet(solrSearcher, count);
// This can be a naked put because the cache usually gets checked in
SolrIndexSearcher
solrSearcher.getFilterCache().put(SolrRangeQuery.this, answer);
return segStates[context.ord] = new SegState(new
SegmentDocIdSet(answer, context));
}
{noformat}
...for some reason the query is trying to inject itself directly into the
cache, which can obviously cause a recursion problem when the query is being
executed as part of a {{SimpleFacets.getFacetQueryCount ->
SolrIndexSearcher.getAndCacheDocSet -> CaffeineCache.computeIfAbsent}} call
stack
---
/ping [~mdrob] & [~magibney] as they are the last people to touch this chunk of
code.
mdrob: in particular i note that you added the comment about the "naked put" as
part of SOLR-15555, which was committed almost exactly when
{{TestFiltering.testRandomFiltering}} started failing at a a very predictable
rate...
http://fucit.org/solr-jenkins-reports/history-trend-of-recent-failures.html#series/org.apache.solr.search.TestFiltering.testRandomFiltering
> 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]