>From first glance this reminded me of https://github.com/apache/solr/pull/1118 but doesn't look completely related.
This section of code just seems questionable: https://github.com/apache/solr/blob/main/solr/core/src/java/org/apache/solr/search/CaffeineCache.java#L254 We are doing a get inside a computeifabsent. I'd have to think about it more, but I wonder if there is something where we end up in a race condition here. Kevin Risden On Wed, Mar 15, 2023 at 10:04 AM Mikhail Khludnev <m...@apache.org> wrote: > Should we just set solr.filterCache.async=true? > > On Wed, Mar 15, 2023 at 4:57 PM Mikhail Khludnev <m...@apache.org> wrote: > > > Hi, devs. > > I see in my inbox it fails from time to time. > > It seems the cause is .. caffeine > > > https://jenkins.thetaphi.de/job/Solr-main-Linux/10777/testReport/junit/org.apache.solr.search/TestFiltering/testRandomFiltering/ > > > > => java.lang.IllegalStateException: Recursive update > > at > java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1958) > > java.lang.IllegalStateException: Recursive update > > at > java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1958) > ~[?:?] > > at > com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2675) > ~[caffeine-3.1.5.jar:?] > > .. > > at > com.github.benmanes.caffeine.cache.LocalManualCache.get(LocalManualCache.java:62) > ~[caffeine-3.1.5.jar:?] > > at > org.apache.solr.search.CaffeineCache.computeIfAbsent(CaffeineCache.java:254) > ~[main/:?] > > at > org.apache.solr.search.SolrIndexSearcher.getAndCacheDocSet(SolrIndexSearcher.java:972) > ~[main/:?] > > ... > > at > org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1673) > ~[main/:?] > > at > org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:712) > ~[main/:?] > > > > Isn't it something obvious requiring some config tweak? Can't (obviously) > > reproduce this seed locally. Btw, why it's recursive, can't see any > > reentrance in the call stack. > > > > On Wed, Mar 15, 2023 at 10:57 AM Policeman Jenkins Server < > > jenk...@thetaphi.de> wrote: > > > >> Build: https://jenkins.thetaphi.de/job/Solr-main-Linux/10777/ > >> Java: 64bit/hotspot/jdk-16.0.2 -XX:+UseCompressedOops -XX:+UseSerialGC > >> > >> 1 tests failed. > >> FAILED: org.apache.solr.search.TestFiltering.testRandomFiltering > >> > >> Error Message: > >> java.lang.AssertionError: FAILURE: indexSize=97 iiter=1 qiter=257 > >> request=[q, {!cache=false cost=17} val_i:0 val_i:1 val_i:2 val_i:8 > val_i:11 > >> val_i:12 val_i:14 val_i:16 val_i:17 val_i:20 val_i:21 val_i:22 val_i:23 > >> val_i:24 val_i:25 val_i:30 val_i:31 val_i:34 val_i:35 val_i:36 val_i:41 > >> val_i:43 val_i:45 val_i:48 val_i:50 val_i:51 val_i:53 val_i:60 val_i:61 > >> val_i:65 val_i:68 val_i:70 val_i:74 val_i:75 val_i:76 val_i:78 val_i:79 > >> val_i:80 val_i:82 val_i:84 val_i:85 val_i:87 val_i:89 val_i:92 val_i:93 > >> val_i:95 val_i:96, fq, val_s:{00004 TO 00100} AND val_s:[00005 TO > 00099], > >> fq, {!cache=false cost=42} val_i:0 val_i:1 val_i:2 val_i:4 val_i:5 > val_i:6 > >> val_i:8 val_i:10 val_i:11 val_i:13 val_i:15 val_i:19 val_i:20 val_i:24 > >> val_i:26 val_i:27 val_i:28 val_i:29 val_i:30 val_i:31 val_i:32 val_i:33 > >> val_i:34 val_i:35 val_i:36 val_i:37 val_i:40 val_i:41 val_i:42 val_i:44 > >> val_i:47 val_i:48 val_i:49 val_i:51 val_i:55 val_i:56 val_i:58 val_i:59 > >> val_i:60 val_i:61 val_i:62 val_i:66 val_i:67 val_i:68 val_i:70 val_i:71 > >> val_i:72 val_i:74 val_i:75 val_i:76 val_i:77 val_i:79 val_i:81 val_i:86 > >> val_i:88 val_i:89 val_i:91 val_i:92 val_i:94, facet, true, facet.query, > >> *:*, facet.query, {!key=multiSelect ex=t}*:*, facet.query, > {!key=facetQuery > >> frange v=val_i l=89 u=97}] > >> > >> Stack Trace: > >> java.lang.AssertionError: FAILURE: indexSize=97 iiter=1 qiter=257 > >> request=[q, {!cache=false cost=17} val_i:0 val_i:1 val_i:2 val_i:8 > val_i:11 > >> val_i:12 val_i:14 val_i:16 val_i:17 val_i:20 val_i:21 val_i:22 val_i:23 > >> val_i:24 val_i:25 val_i:30 val_i:31 val_i:34 val_i:35 val_i:36 val_i:41 > >> val_i:43 val_i:45 val_i:48 val_i:50 val_i:51 val_i:53 val_i:60 val_i:61 > >> val_i:65 val_i:68 val_i:70 val_i:74 val_i:75 val_i:76 val_i:78 val_i:79 > >> val_i:80 val_i:82 val_i:84 val_i:85 val_i:87 val_i:89 val_i:92 val_i:93 > >> val_i:95 val_i:96, fq, val_s:{00004 TO 00100} AND val_s:[00005 TO > 00099], > >> fq, {!cache=false cost=42} val_i:0 val_i:1 val_i:2 val_i:4 val_i:5 > val_i:6 > >> val_i:8 val_i:10 val_i:11 val_i:13 val_i:15 val_i:19 val_i:20 val_i:24 > >> val_i:26 val_i:27 val_i:28 val_i:29 val_i:30 val_i:31 val_i:32 val_i:33 > >> val_i:34 val_i:35 val_i:36 val_i:37 val_i:40 val_i:41 val_i:42 val_i:44 > >> val_i:47 val_i:48 val_i:49 val_i:51 val_i:55 val_i:56 val_i:58 val_i:59 > >> val_i:60 val_i:61 val_i:62 val_i:66 val_i:67 val_i:68 val_i:70 val_i:71 > >> val_i:72 val_i:74 val_i:75 val_i:76 val_i:77 val_i:79 val_i:81 val_i:86 > >> val_i:88 val_i:89 val_i:91 val_i:92 val_i:94, facet, true, facet.query, > >> *:*, facet.query, {!key=multiSelect ex=t}*:*, facet.query, > {!key=facetQuery > >> frange v=val_i l=89 u=97}] > >> at > >> __randomizedtesting.SeedInfo.seed([8C523D43388C3411:93319E86DDAB7418]:0) > >> at org.junit.Assert.fail(Assert.java:89) > >> at > >> > org.apache.solr.search.TestFiltering.testRandomFiltering(TestFiltering.java:578) > >> at > >> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native > >> Method) > >> at > >> > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) > >> at > >> > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > >> at java.base/java.lang.reflect.Method.invoke(Method.java:567) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:982) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:996) > >> at > >> > com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80) > >> at org.junit.rules.RunRules.evaluate(RunRules.java:20) > >> at > >> > org.apache.lucene.tests.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:44) > >> at > >> > org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43) > >> at > >> > org.apache.lucene.tests.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:45) > >> at > >> > org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60) > >> at > >> > org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44) > >> at org.junit.rules.RunRules.evaluate(RunRules.java:20) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) > >> at > >> > com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) > >> at > >> > com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891) > >> at > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43) > >> at > >> > org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43) > >> at > >> > com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:80) > >> at org.junit.rules.RunRules.evaluate(RunRules.java:20) > >> at > >> > org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38) > >> at > >> > com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40) > >> at > >> > com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53) > >> at > >> > org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43) > >> at > >> > org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44) > >> at > >> > org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60) > >> at > >> > org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47) > >> at org.junit.rules.RunRules.evaluate(RunRules.java:20) > >> at > >> > com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) > >> at > >> > com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) > >> at > >> > com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850) > >> at java.base/java.lang.Thread.run(Thread.java:831) > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: builds-unsubscr...@solr.apache.org > >> For additional commands, e-mail: builds-h...@solr.apache.org > > > > > > > > -- > > Sincerely yours > > Mikhail Khludnev > > https://t.me/MUST_SEARCH > > A caveat: Cyrillic! > > > > > -- > Sincerely yours > Mikhail Khludnev > https://t.me/MUST_SEARCH > A caveat: Cyrillic! >