[ 
https://issues.apache.org/jira/browse/FELIX-1746?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12767976#action_12767976
 ] 

Karl Pauls commented on FELIX-1746:
-----------------------------------

Jed, the reason for the catch (IllegalStateException) is that we are changing 
the locking. Previously, when we've been looking for a service, we had the 
service registry lock. Subsequently, services couldn't be unregistered while we 
where inside the lookup. Now they can be. As a consequence, the call to 
getReference() outside the service registry lock can result in an 
IllegalStateException if the service has been unregistered. As a lookup isn't 
allowed to throw that exception we need to catch it. 

> Eliminate 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
>            Assignee: Karl Pauls
>         Attachments: blocked-threads.gif.jpg, FELIX-1746-alt.patch, 
> FELIX-1746-alt2.patch, 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.

Reply via email to