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

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

[~frm] I looked into the test failure and it appears to be related to recent 
change. Whats happening is like below

{noformat}
07.09.2015 16:35:17.067 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[60, [org.apache.jackrabbit.oak.api.jmx.RepositoryManagementMBean]] 
ServiceEvent REGISTERED
07.09.2015 16:35:17.090 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[61, [org.apache.jackrabbit.api.jmx.QueryStatManagerMBean]] ServiceEvent 
REGISTERED
07.09.2015 16:35:17.092 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[62, [org.apache.jackrabbit.oak.api.jmx.RepositoryStatsMBean]] ServiceEvent 
REGISTERED
07.09.2015 16:35:17.094 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[63, [java.lang.Runnable]] ServiceEvent REGISTERED
07.09.2015 16:35:17.095 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[64, [org.apache.jackrabbit.oak.spi.gc.GCMonitor]] ServiceEvent REGISTERED
07.09.2015 16:35:17.096 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[65, [javax.jcr.Repository]] ServiceEvent REGISTERED
07.09.2015 16:35:17.097 *INFO* [main] org.apache.jackrabbit.oak-core Service 
[org.apache.jackrabbit.oak.security.SecurityProviderImpl,52, 
[org.apache.jackrabbit.oak.spi.security.SecurityProvider]] ServiceEvent 
REGISTERED
07.09.2015 16:35:17.098 *INFO* [main] org.apache.jackrabbit.oak-core Service 
[org.apache.jackrabbit.oak.security.authorization.restriction.RestrictionProviderImpl,66,
 
[org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionProvider]]
 ServiceEvent REGISTERED
07.09.2015 16:35:17.100 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[65, [javax.jcr.Repository]] ServiceEvent UNREGISTERING
07.09.2015 16:35:17.106 *INFO* [main] org.apache.jackrabbit.oak-core Service 
[org.apache.jackrabbit.oak.security.SecurityProviderImpl,52, 
[org.apache.jackrabbit.oak.spi.security.SecurityProvider]] ServiceEvent 
UNREGISTERING
07.09.2015 16:35:17.124 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[68, [java.util.concurrent.Executor]] ServiceEvent REGISTERED
07.09.2015 16:35:17.139 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[69, [java.lang.Runnable]] ServiceEvent REGISTERED
07.09.2015 16:35:17.140 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[70, [org.apache.jackrabbit.oak.api.jmx.IndexStatsMBean]] ServiceEvent 
REGISTERED
07.09.2015 16:35:17.141 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[71, [java.lang.Runnable]] ServiceEvent REGISTERED
07.09.2015 16:35:17.141 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[72, 
[org.apache.jackrabbit.oak.plugins.index.property.jmx.PropertyIndexAsyncReindexMBean]]
 ServiceEvent REGISTERED
07.09.2015 16:35:17.142 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[73, [org.apache.jackrabbit.oak.plugins.index.counter.jmx.NodeCounterMBean]] 
ServiceEvent REGISTERED
07.09.2015 16:35:17.143 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[74, [org.apache.jackrabbit.oak.api.jmx.QueryEngineSettingsMBean]] ServiceEvent 
REGISTERED
07.09.2015 16:35:17.148 *INFO* [main] org.apache.jackrabbit.oak-jcr Service 
[75, [org.apache.jackrabbit.oak.api.jmx.RepositoryManagementMBean]] 
ServiceEvent REGISTERED
{noformat}

it appears that Repository service gets re-registered possibly due to 
SecurityProvider getting restarted multiple times (see [logs|^mbean-test.log]) 
where you can see {{SecurityProvider}} getting registered and unregistered 
multiple times in a single startup. This would cause issue as once Repository 
is bounded with one SecurityProvider it would get recycled. I see that you used 
STATIC policy along with OPTIONAL_MULTIPLE. In such a case DS would still start 
SecurityProvider even if there are 0 reference of type OPTIONAL_MULTIPLE and 
later once a any matching service is registered the SecurityProvider would be 
reactivated.

Can you review the approach as as to avoid scenarios where repository gets 
reactivated in normal startup as such a situation would need to be avoided

> 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.6
>
>         Attachments: OAK-3201-01.patch, OAK-3201-02.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