[ https://issues.apache.org/jira/browse/FELIX-1746?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jed Wesley-Smith updated FELIX-1746: ------------------------------------ Attachment: FELIX-1746.patch Attached is a patch that adds a fully functional and tested CopyOnWriteMap implementation and a copy of the Java5 ConcurrentMap interface which it implements. This is then used in the ServiceRegistry to provide lock free read access to the m_serviceRegsMap. The CopyOnWriteMap has a full test suite and is based on the implementation in the atlassian-util-concurrent library, but backported to Java 1.3. > Reduce contention on ServiceRegistry.getServiceReferences(String, Filter) > ------------------------------------------------------------------------- > > Key: FELIX-1746 > URL: https://issues.apache.org/jira/browse/FELIX-1746 > Project: Felix > Issue Type: Improvement > Components: Framework > Affects Versions: felix-2.0.0 > Reporter: Jed Wesley-Smith > Attachments: blocked-threads.gif.jpg, FELIX-1746.patch > > > Performance testing has shown that there is significant contention on the > ServiceRegistry object's monitor during startup. This is caused by Spring DM > making lots of calls to the synchronized method > ServiceRegistry.getServiceReferences(String, Filter). This method is > synchronized in order to protect the m_serviceRegsMap HashMap, but the method > does a lot more work than simply accessing the map. > Propose changing the ServiceRegistry to use a thread-safe Map implementation > that does not require external synchronization, in particular a > CopyOnWriteMap. I will add a patch that includes a CopyOnWriteMap > implementation. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.