// from jdk1.8




"If the specified key is not already associated with a value, attempts to 
compute its value using the given mapping function and enters it into this map 
unless null. The entire method invocation is performed atomically, so the 
function is applied at most once per key. Some attempted update operations on 
this map by other threads may be blocked while computation is in progress, so 
the computation should be short and simple, and must not attempt to update any 
other mappings of this map.
"
public V computeIfAbsent(K key, Function<? super K, ? extends V> 
mappingFunction) {




The problem may be introduced by this change SOLR-15555






At 2023-01-04 21:06:47, "YangLiu" <[email protected]> wrote:



Maybe this is a jdk “bug”, but it should be used incorrectly.

















At 2023-01-04 19:58:35, "slly" <[email protected]> wrote:
>Does anyone have similar problems?
>
>
>The cache class we configured is FastLRUCache  in solrconfig.xml
>
>
>   <filterCache class="solr.FastLRUCache" size="512" initialSize="512" 
> autowarmCount="0"/>
>
>
>Many threads are blocking the stack below:
>
>
>  "qtp2141817446-2744893" #2744893 prio=5 os_prio=0 tid=0x00007f0b1b9f4800 
> nid=0x3ea9 waiting for monitor entry [0x00007f0b16bdd000]
>
>java.lang.Thread.State: BLOCKED (on object monitor)
>
>at 
>java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1674)
>
>- waiting to lock <0x000000030e8004a8> (a 
>java.util.concurrent.ConcurrentHashMap$ReservationNode)
>
>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.SolrIndexSearcher.getDocSetBits(SolrIndexSearcher.java:788)
>
>at 
>org.apache.solr.search.SolrIndexSearcher.getLiveDocSet(SolrIndexSearcher.java:897)
>
>at org.apache.solr.query.SolrRangeQuery.createDocSet(SolrRangeQuery.java:174)
>
>at org.apache.solr.query.SolrRangeQuery.createDocSet(SolrRangeQuery.java:168)
>
>at org.apache.solr.search.DocSetUtil.createDocSet(DocSetUtil.java:129)
>
>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.SolrIndexSearcher$$Lambda$823/1455346307.apply(Unknown 
>Source)
>
>at 
>org.apache.solr.search.FastLRUCache.lambda$computeIfAbsent$1(FastLRUCache.java:261)
>
>at org.apache.solr.search.FastLRUCache$$Lambda$824/1183964656.apply(Unknown 
>Source)
>
>at 
>org.apache.solr.util.ConcurrentLRUCache.lambda$computeIfAbsent$1(ConcurrentLRUCache.java:227)
>
>at 
>org.apache.solr.util.ConcurrentLRUCache$$Lambda$825/1107818925.apply(Unknown 
>Source)
>
>at 
>java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
>
>- locked <0x0000000310c00220> (a 
>java.util.concurrent.ConcurrentHashMap$ReservationNode)
>
>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.getPositiveDocSet(SolrIndexSearcher.java:844)
>
>at 
>org.apache.solr.search.SolrIndexSearcher.getProcessedFilter(SolrIndexSearcher.java:1035)
>
>at 
>org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:1558)
>
>at 
>org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:1439)
>
>at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:596)
>
>
>
>Thanks.
>
>
>
> 

Reply via email to