[
https://issues.apache.org/jira/browse/SOLR-6252?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14245473#comment-14245473
]
Avishai Ish-Shalom commented on SOLR-6252:
------------------------------------------
The new code is still vulnerable to deadlock: if a call gets to the 2nd
synchronized block and blocks on {{cache.wait()}} then it will never be
released since {{cache.notifyAll()}} is also inside a synchronized block of the
same monitor object.
> A couple of small improvements to UnInvertedField class.
> --------------------------------------------------------
>
> Key: SOLR-6252
> URL: https://issues.apache.org/jira/browse/SOLR-6252
> Project: Solr
> Issue Type: Improvement
> Components: search
> Affects Versions: Trunk
> Reporter: Vamsee Yarlagadda
> Assignee: Mark Miller
> Priority: Minor
> Fix For: 4.10, Trunk
>
> Attachments: SOLR-6252-v3.patch, SOLR-6252.patch, SOLR-6252v2.patch
>
>
> Looks like UnInvertedField#getUnInvertedField has implemented a bit
> additional synchronization module rather than what is required, and thereby
> increasing the complexity.
> https://github.com/apache/lucene-solr/blob/trunk/solr/core/src/java/org/apache/solr/request/UnInvertedField.java#L667
> As pointed out in the above link, as the synchronization is performed on the
> cache variable(which itself will protect the threads from obtaining access to
> the cache), we can safely remove all the placeholder flags. As long as
> cache.get() is in synchronized block, we can simply populate the cache with
> new entries and other threads will be able to see the changes.
> This change has been introduced in
> https://issues.apache.org/jira/browse/SOLR-2548 (Multithreaded faceting)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]