Uwe Schindler created LUCENE-4163:
-------------------------------------
Summary: Improve concurrency in MMapIndexInput.clone()
Key: LUCENE-4163
URL: https://issues.apache.org/jira/browse/LUCENE-4163
Project: Lucene - Java
Issue Type: Improvement
Components: core/store
Affects Versions: 3.6, 4.0, 5.0
Reporter: Uwe Schindler
Assignee: Uwe Schindler
Fix For: 4.0, 3.6.1, 5.0
Followup issue from SOLR-3566:
Whenever you clone the TermIndex, it also creates a clone of the underlying
IndexInputs. In high cocurrent environments, the clone method of MMapIndexInput
is a bottleneck (it has heavy work to do to manage the weak references in a
synchronized block).
Everywhere else in Lucene we use my new WeakIdentityMap for managing concurrent
weak maps. For this case I did not do this, as the WeakIdentityMap has no
iterators (it doe snot implement Map interface). This issue will add a key and
values iterator (the key iterator will not return GC'ed keys), so
MMapIndexInput can use WeakIdentityMap backed by ConcurrentHashMap and needs no
synchronization. ConcurrentHashMap has better concurrency because it
distributes the hash keys in different buckets per thread.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]