[ 
https://issues.apache.org/jira/browse/SOLR-15762?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17440806#comment-17440806
 ] 

Mike Drob commented on SOLR-15762:
----------------------------------

When I run the test in IntelliJ it gets stuck at

{code}
getObjectVolatile:-1, Unsafe (sun.misc)
tabAt:755, ConcurrentHashMap (java.util.concurrent)
compute:1869, ConcurrentHashMap (java.util.concurrent)
doComputeIfAbsent:2411, BoundedLocalCache (com.github.benmanes.caffeine.cache)
computeIfAbsent:2394, BoundedLocalCache (com.github.benmanes.caffeine.cache)
computeIfAbsent:108, LocalCache (com.github.benmanes.caffeine.cache)
get:62, LocalManualCache (com.github.benmanes.caffeine.cache)
computeIfAbsent:245, CaffeineCache (org.apache.solr.search)
getDocSet:1122, SolrIndexSearcher (org.apache.solr.search)
getDocSetEnumerate:592, JoinQuery$JoinQueryWeight (org.apache.solr.search)
getDocSet:452, JoinQuery$JoinQueryWeight (org.apache.solr.search)
scorer:381, JoinQuery$JoinQueryWeight (org.apache.solr.search)
scorerSupplier:148, Weight (org.apache.lucene.search)
scorerSupplier:379, BooleanWeight (org.apache.lucene.search)
scorer:344, BooleanWeight (org.apache.lucene.search)
bulkScorer:182, Weight (org.apache.lucene.search)
bulkScorer:338, BooleanWeight (org.apache.lucene.search)
search:656, IndexSearcher (org.apache.lucene.search)
search:443, IndexSearcher (org.apache.lucene.search)
createDocSetGeneric:145, DocSetUtil (org.apache.solr.search)
createDocSet:134, DocSetUtil (org.apache.solr.search)
getDocSetNC:1197, SolrIndexSearcher (org.apache.solr.search)
lambda$getAndCacheDocSet$1:876, SolrIndexSearcher (org.apache.solr.search)
apply:-1, 90732694 (org.apache.solr.search.SolrIndexSearcher$$Lambda$381)
lambda$computeIfAbsent$1:248, CaffeineCache (org.apache.solr.search)
apply:-1, 1070251965 (org.apache.solr.search.CaffeineCache$$Lambda$382)
lambda$statsAware$0:139, LocalCache (com.github.benmanes.caffeine.cache)
apply:-1, 1702294965 (com.github.benmanes.caffeine.cache.LocalCache$$Lambda$383)
lambda$doComputeIfAbsent$14:2413, BoundedLocalCache 
(com.github.benmanes.caffeine.cache)
apply:-1, 609127023 
(com.github.benmanes.caffeine.cache.BoundedLocalCache$$Lambda$384)
compute:1853, ConcurrentHashMap (java.util.concurrent)
doComputeIfAbsent:2411, BoundedLocalCache (com.github.benmanes.caffeine.cache)
computeIfAbsent:2394, BoundedLocalCache (com.github.benmanes.caffeine.cache)
computeIfAbsent:108, LocalCache (com.github.benmanes.caffeine.cache)
get:62, LocalManualCache (com.github.benmanes.caffeine.cache)
computeIfAbsent:245, CaffeineCache (org.apache.solr.search)
getAndCacheDocSet:876, SolrIndexSearcher (org.apache.solr.search)
getDocSet:825, SolrIndexSearcher (org.apache.solr.search)
getDocSetEnumerate:476, JoinQuery$JoinQueryWeight (org.apache.solr.search)
getDocSet:452, JoinQuery$JoinQueryWeight (org.apache.solr.search)
scorer:381, JoinQuery$JoinQueryWeight (org.apache.solr.search)
bulkScorer:182, Weight (org.apache.lucene.search)
search:656, IndexSearcher (org.apache.lucene.search)
search:443, IndexSearcher (org.apache.lucene.search)
buildAndRunCollectorChain:211, SolrIndexSearcher (org.apache.solr.search)
getDocListNC:1622, SolrIndexSearcher (org.apache.solr.search)
getDocListC:1439, SolrIndexSearcher (org.apache.solr.search)
search:596, SolrIndexSearcher (org.apache.solr.search)
doProcessUngroupedSearch:1511, QueryComponent 
(org.apache.solr.handler.component)
process:390, QueryComponent (org.apache.solr.handler.component)
handleRequestBody:368, SearchHandler (org.apache.solr.handler.component)
handleRequest:216, RequestHandlerBase (org.apache.solr.handler)
execute:2637, SolrCore (org.apache.solr.core)
query:346, TestHarness (org.apache.solr.util)
query:328, TestHarness (org.apache.solr.util)
assertJQ:1107, SolrTestCaseJ4 (org.apache.solr)
assertJQ:1076, SolrTestCaseJ4 (org.apache.solr)
testInvalidFilterConfig:55, InvalidConfigJoinQueryTest 
(org.apache.solr.search.join)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
invoke:1750, RandomizedRunner (com.carrotsearch.randomizedtesting)
evaluate:938, RandomizedRunner$8 (com.carrotsearch.randomizedtesting)
evaluate:1035, RandomizedRunner$11 (com.carrotsearch.randomizedtesting)
evaluate:974, RandomizedRunner$9 (com.carrotsearch.randomizedtesting)
evaluate:988, RandomizedRunner$10 (com.carrotsearch.randomizedtesting)
evaluate:57, SystemPropertiesRestoreRule$1 
(com.carrotsearch.randomizedtesting.rules)
evaluate:20, RunRules (org.junit.rules)
evaluate:49, TestRuleSetupTeardownChained$1 (org.apache.lucene.util)
evaluate:45, AbstractBeforeAfterRule$1 (org.apache.lucene.util)
evaluate:48, TestRuleThreadAndTestName$1 (org.apache.lucene.util)
evaluate:64, TestRuleIgnoreAfterMaxFailures$1 (org.apache.lucene.util)
evaluate:47, TestRuleMarkFailure$1 (org.apache.lucene.util)
evaluate:20, RunRules (org.junit.rules)
evaluate:36, StatementAdapter (com.carrotsearch.randomizedtesting.rules)
run:368, ThreadLeakControl$StatementRunner (com.carrotsearch.randomizedtesting)
forkTimeoutingTask:817, ThreadLeakControl (com.carrotsearch.randomizedtesting)
evaluate:468, ThreadLeakControl$3 (com.carrotsearch.randomizedtesting)
runSingleTest:947, RandomizedRunner (com.carrotsearch.randomizedtesting)
evaluate:832, RandomizedRunner$5 (com.carrotsearch.randomizedtesting)
evaluate:883, RandomizedRunner$6 (com.carrotsearch.randomizedtesting)
evaluate:894, RandomizedRunner$7 (com.carrotsearch.randomizedtesting)
evaluate:36, StatementAdapter (com.carrotsearch.randomizedtesting.rules)
evaluate:57, SystemPropertiesRestoreRule$1 
(com.carrotsearch.randomizedtesting.rules)
evaluate:20, RunRules (org.junit.rules)
evaluate:45, AbstractBeforeAfterRule$1 (org.apache.lucene.util)
evaluate:36, StatementAdapter (com.carrotsearch.randomizedtesting.rules)
evaluate:41, TestRuleStoreClassName$1 (org.apache.lucene.util)
evaluate:40, NoShadowingOrOverridesOnMethodsRule$1 
(com.carrotsearch.randomizedtesting.rules)
evaluate:40, NoShadowingOrOverridesOnMethodsRule$1 
(com.carrotsearch.randomizedtesting.rules)
evaluate:36, StatementAdapter (com.carrotsearch.randomizedtesting.rules)
evaluate:36, StatementAdapter (com.carrotsearch.randomizedtesting.rules)
evaluate:36, StatementAdapter (com.carrotsearch.randomizedtesting.rules)
evaluate:53, TestRuleAssertionsRequired$1 (org.apache.lucene.util)
evaluate:47, TestRuleMarkFailure$1 (org.apache.lucene.util)
evaluate:64, TestRuleIgnoreAfterMaxFailures$1 (org.apache.lucene.util)
evaluate:54, TestRuleIgnoreTestSuites$1 (org.apache.lucene.util)
evaluate:20, RunRules (org.junit.rules)
evaluate:36, StatementAdapter (com.carrotsearch.randomizedtesting.rules)
run:368, ThreadLeakControl$StatementRunner (com.carrotsearch.randomizedtesting)
run:748, Thread (java.lang)
{code}

Which looks like a recursive update that we're trying to trigger but for some 
reason it's not an ISE. Investigating further, but I'm not sure what causes the 
difference in behavior here.

> IllegalStateException: Recursive update thrown when executing complex Join 
> queries
> ----------------------------------------------------------------------------------
>
>                 Key: SOLR-15762
>                 URL: https://issues.apache.org/jira/browse/SOLR-15762
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: search, Server
>    Affects Versions: main (9.0), 8.10, 8.11, 8.10.1
>            Reporter: Thomas Wöckinger
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 8.11
>
>         Attachments: ParameterizedJoinQueryTest.java
>
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> When running complex Join queries (maybe others effected too) an 
> IllegalStateException: Recursive update is thrown because of recursive up of 
> the FastLRUCache triggered by FastLRUCache.computeIfAbsent used by 
> SolrIndexSearcher.
> The issue is caused by changes due to SOLR-15555 by commit 
> [https://github.com/apache/lucene-solr/commit/fd9631f59d03500dbde31f7d7ae23b10d364d80d#diff-99978700f1c69d6a5f6c2190f89c98cfe20c441161db5a183ec002e15cb1be28]
> Following Join Query causes the exception:
> new JsonQueryRequest().setQuery("\{!join from=_id_ to=standorte._id_ v=$q1}")
>  .withParam("q1", "type:standort AND _id_:\{!join from=_id_ 
> to=beziehungen._id_ v=$q2}")
>  .withParam("q2", "type:beziehung AND _id_:\{!join from=_id_ to=person._id_ 
> v='type:person'}")
> The stack trace shows the recusive call:
> 08:29:43,569][ ][Thread:main] ERROR java.lang.IllegalStateException: 
> Recursive update
>  at 
> java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1760)
>  at 
> org.apache.solr.util.ConcurrentLRUCache.computeIfAbsent(ConcurrentLRUCache.java:226)
>  at org.apache.solr.search.FastLRUCache.computeIfAbsent(FastLRUCache.java:259)
>  at 
> org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:1122)
>  at 
> org.apache.solr.search.JoinQuery$JoinQueryWeight.getDocSetEnumerate(JoinQParserPlugin.java:591)
>  at 
> org.apache.solr.search.JoinQuery$JoinQueryWeight.getDocSet(JoinQParserPlugin.java:452)
>  at 
> org.apache.solr.search.JoinQuery$JoinQueryWeight.scorer(JoinQParserPlugin.java:381)
>  at org.apache.lucene.search.Weight.scorerSupplier(Weight.java:148)
>  at 
> org.apache.lucene.search.BooleanWeight.scorerSupplier(BooleanWeight.java:379)
>  at org.apache.lucene.search.BooleanWeight.scorer(BooleanWeight.java:344)
>  at org.apache.lucene.search.Weight.bulkScorer(Weight.java:182)
>  at org.apache.lucene.search.BooleanWeight.bulkScorer(BooleanWeight.java:338)
>  at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:656)
>  at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:443)
>  at org.apache.solr.search.DocSetUtil.createDocSetGeneric(DocSetUtil.java:145)
>  at org.apache.solr.search.DocSetUtil.createDocSet(DocSetUtil.java:134)
>  at 
> org.apache.solr.search.SolrIndexSearcher.getDocSetNC(SolrIndexSearcher.java:1197)
>  at 
> org.apache.solr.search.SolrIndexSearcher.lambda$getAndCacheDocSet$1(SolrIndexSearcher.java:876)
>  at 
> org.apache.solr.search.FastLRUCache.lambda$computeIfAbsent$1(FastLRUCache.java:261)
>  at 
> org.apache.solr.util.ConcurrentLRUCache.lambda$computeIfAbsent$1(ConcurrentLRUCache.java:227)
>  at 
> java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
>  at 
> org.apache.solr.util.ConcurrentLRUCache.computeIfAbsent(ConcurrentLRUCache.java:226)
>  at org.apache.solr.search.FastLRUCache.computeIfAbsent(FastLRUCache.java:259)
>  at 
> org.apache.solr.search.SolrIndexSearcher.getAndCacheDocSet(SolrIndexSearcher.java:876)
>  at 
> org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:825)
>  at 
> org.apache.solr.search.JoinQuery$JoinQueryWeight.getDocSetEnumerate(JoinQParserPlugin.java:476)
>  at 
> org.apache.solr.search.JoinQuery$JoinQueryWeight.getDocSet(JoinQParserPlugin.java:452)
>  at 
> org.apache.solr.search.JoinQuery$JoinQueryWeight.scorer(JoinQParserPlugin.java:381)
>  at org.apache.lucene.search.Weight.scorerSupplier(Weight.java:148)
>  at 
> org.apache.lucene.search.BooleanWeight.scorerSupplier(BooleanWeight.java:379)
>  at org.apache.lucene.search.BooleanWeight.scorer(BooleanWeight.java:344)
>  at org.apache.lucene.search.Weight.bulkScorer(Weight.java:182)
>  at org.apache.lucene.search.BooleanWeight.bulkScorer(BooleanWeight.java:338)
>  at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:656)
>  at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:443)
>  at org.apache.solr.search.DocSetUtil.createDocSetGeneric(DocSetUtil.java:145)
>  at org.apache.solr.search.DocSetUtil.createDocSet(DocSetUtil.java:134)
>  at 
> org.apache.solr.search.SolrIndexSearcher.getDocSetNC(SolrIndexSearcher.java:1197)
>  at 
> org.apache.solr.search.SolrIndexSearcher.lambda$getAndCacheDocSet$1(SolrIndexSearcher.java:876)
>  at 
> org.apache.solr.search.FastLRUCache.lambda$computeIfAbsent$1(FastLRUCache.java:261)
>  at 
> org.apache.solr.util.ConcurrentLRUCache.lambda$computeIfAbsent$1(ConcurrentLRUCache.java:227)
>  at 
> java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
>  at 
> org.apache.solr.util.ConcurrentLRUCache.computeIfAbsent(ConcurrentLRUCache.java:226)
>  at org.apache.solr.search.FastLRUCache.computeIfAbsent(FastLRUCache.java:259)
>  at 
> org.apache.solr.search.SolrIndexSearcher.getAndCacheDocSet(SolrIndexSearcher.java:876)
>  at 
> org.apache.solr.search.SolrIndexSearcher.getDocSet(SolrIndexSearcher.java:825)
>  at 
> org.apache.solr.search.JoinQuery$JoinQueryWeight.getDocSetEnumerate(JoinQParserPlugin.java:476)
>  at 
> org.apache.solr.search.JoinQuery$JoinQueryWeight.getDocSet(JoinQParserPlugin.java:452)
>  at 
> org.apache.solr.search.JoinQuery$JoinQueryWeight.scorer(JoinQParserPlugin.java:381)
>  at org.apache.lucene.search.Weight.bulkScorer(Weight.java:182)
>  at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:656)
>  at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:443)
>  at 
> org.apache.solr.search.SolrIndexSearcher.buildAndRunCollectorChain(SolrIndexSearcher.java:211)
>  at 
> org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1622)
>  at 
> org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1439)
>  at 
> org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:596)
>  at 
> org.apache.solr.handler.component.QueryComponent.doProcessUngroupedSearch(QueryComponent.java:1511)
>  at 
> org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:390)
>  at 
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:368)
>  at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:216)
>  at org.apache.solr.core.SolrCore.execute(SolrCore.java:2637)
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to