[
https://issues.apache.org/jira/browse/SOLR-6846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14556341#comment-14556341
]
Avishai Ish-Shalom commented on SOLR-6846:
------------------------------------------
You're right of course, cache.wait() isn't the problems here. it seems the
problem is monitor granularity, the code uses the same lock and notifies all
waiting threads regardless of what field they are waiting for.
It's been a while since I worked on this issue, I'll try reproducing it when I
have some time on my hand.
> deadlock in UninvertedField#getUninvertedField()
> ------------------------------------------------
>
> Key: SOLR-6846
> URL: https://issues.apache.org/jira/browse/SOLR-6846
> Project: Solr
> Issue Type: Bug
> Components: search
> Affects Versions: 4.10.2
> Reporter: Avishai Ish-Shalom
> Fix For: 5.0, Trunk
>
> Attachments: SOLR-6846.patch
>
>
> Multiple concurrent calls to UninvertedField#getUninvertedField may deadlock:
> if a call gets to {{cache.wait()}} before another thread gets to the
> synchronized block around {{cache.notifyAll()}} code will deadlock because
> {{cache.wait()}} is synchronized with the same monitor object.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]