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]

Reply via email to