[ https://issues.apache.org/jira/browse/SOLR-13898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16973008#comment-16973008 ]
David Smiley commented on SOLR-13898: ------------------------------------- Indeed, {{org.apache.solr.search.SolrDocumentFetcher#doc(int, org.apache.lucene.index.StoredFieldVisitor)}} does not populate the cache but it does try to fetch from the cache. The highlighter, which uses this, is run after QueryComponent primes the cache in doPrefetch calling {{org.apache.solr.util.SolrPluginUtils#optimizePreFetchDocs}} (see it's nice javadocs). That code was added in 2006. All this said... it'd be nice if the cache were populated if for some reason it wasn't already populated. Why not. > Non-atomic use of SolrCache get / put > ------------------------------------- > > Key: SOLR-13898 > URL: https://issues.apache.org/jira/browse/SOLR-13898 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Affects Versions: 8.3 > Reporter: Andrzej Bialecki > Assignee: Andrzej Bialecki > Priority: Major > Fix For: 8.4 > > Attachments: SOLR-13898.patch, SOLR-13898.patch, SOLR-13898.patch > > > As pointed out by [~ben.manes] in SOLR-13817 Solr code base in many key > places uses a similar pattern of non-atomic get / put calls to SolrCache-s. > In multi-threaded environment this leads to cache misses and additional > unnecessary computations when competing threads both discover a missing > value, non-atomically compute it and update the cache. > Some of these places are known performance bottlenecks where efficient > caching is especially important, such as {{SolrIndexSearcher}}, > {{SolrDocumentFetcher}}, {{UninvertedField}} and join queries . > I propose to add {{SolrCache.computeIfAbsent(key, mappingFunction)}} that > will atomically retrieve existing values or compute and update the cache. > This will require also changing how the {{SolrCache.get(...)}} is used in > many components. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org