[ 
https://issues.apache.org/jira/browse/OAK-3201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14745023#comment-14745023
 ] 

Chetan Mehrotra commented on OAK-3201:
--------------------------------------

Missed reviewing it due to other issues. Some quick comments 
* {{SecurityProviderRegistration}} has a pretty big synchronized block. Holding 
synchronized block while making the registration can lead to deadlocks like the 
one we saw in OAK-2401
* Having synchornized for all getServices might pose problem - Securityprovider 
is invoked on critical path in concurrent manner. So we should avoid having any 
synchronized blocks in getServices call. Note that default implementation of 
Whitboard makes quite an effort to avoid synchronized blocks in getServices 
call.
* No default value for {{requiredServicePids}}. For e.g. we already have 
{{RestrictionProviderImpl}} registered as a service so it should be part of 
default pids otherwise current issue still remains i.e. if 
{{RestrictionProviderImpl}} comes later then it would not picked up


> Use static references in SecurityProviderImpl for composite services
> --------------------------------------------------------------------
>
>                 Key: OAK-3201
>                 URL: https://issues.apache.org/jira/browse/OAK-3201
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core
>            Reporter: Francesco Mari
>            Assignee: Francesco Mari
>             Fix For: 1.3.7
>
>         Attachments: OAK-3201-01.patch, OAK-3201-02.patch, OAK-3201-03.patch, 
> OAK-3201-04.patch, OAK-3201-05.patch, OAK-3201-06.patch, mbean-test.log
>
>
> {{SecurityProviderImpl}} has dynamic references to many other services, like 
> {{RestrictionProvider}}, that represent the configuration of this component.
> Being these services dynamic, the OSGi runtime has no clear dependency 
> relationship between the {{SecurityProviderImpl}} and the required services. 
> Thus, it may happen that an instance of {{SecurityProviderImpl}} is published 
> before the services it requires are started, creating a window where the 
> {{SecurityProviderimpl}} is operating differently from the way it's 
> configured.
> I suggest to turn the dynamic references in {{SecurityProviderImpl}} to 
> static ones to improve the consistency of the implementation.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to