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

John Ross commented on ARIES-1434:
----------------------------------

The state of the user started subsystem is checked in StartAction.run. A 
resolution will only occur if the subsystem is in the INSTALLED state. However, 
once the resolution of the starting subsystem begins, the resolve method will 
be called recursively on any children. The resolve method does not prevent 
subsystems in the RESOLVED state from resolving because this state can apply to 
persisted subsystems coming back online after a framework or core bundle 
restart which need their export sharing policies set.

It is possible to weed out child subsystems in the ACTIVE state, but it will be 
necessary to distinguish between a persistently started child and one that is 
already "live" and has simply been resolved or started before its parent.

> org.osgi.framework.BundleException: Region 
> 'application.a.esa;0.0.0;osgi.subsystem.application;1' is already connected 
> to region 'composite.a.esa;0.0.0;osgi.subsystem.composite;2
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: ARIES-1434
>                 URL: https://issues.apache.org/jira/browse/ARIES-1434
>             Project: Aries
>          Issue Type: Bug
>          Components: Subsystem
>    Affects Versions: subsystem-2.0.4
>            Reporter: John Ross
>            Assignee: John Ross
>             Fix For: subsystem-2.0.6
>
>
> Starting a parent subsystem which has an already started child subsystem with 
> an export sharing policy results in the exception below [1]. The exception 
> occurs because the implementation attempts to set the already existing export 
> sharing policy of the child subsystem during resolution.
> [1]
> org.osgi.framework.BundleException: Region 
> 'application.a.esa;0.0.0;osgi.subsystem.application;1' is already connected 
> to region 'composite.a.esa;0.0.0;osgi.subsystem.composite;2
>       at 
> org.eclipse.equinox.internal.region.StandardRegionDigraph.connect(StandardRegionDigraph.java:158)
>       at 
> org.eclipse.equinox.internal.region.BundleIdBasedRegion.connectRegion(BundleIdBasedRegion.java:176)
>       at 
> org.apache.aries.subsystem.core.internal.StartAction.setExportIsolationPolicy(StartAction.java:267)
>       at 
> org.apache.aries.subsystem.core.internal.StartAction.resolve(StartAction.java:237)
>       at 
> org.apache.aries.subsystem.core.internal.StartAction.resolve(StartAction.java:184)
>       at 
> org.apache.aries.subsystem.core.internal.StartAction.run(StartAction.java:116)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at 
> org.apache.aries.subsystem.core.internal.BasicSubsystem.start(BasicSubsystem.java:295)
>       at 
> org.apache.aries.subsystem.itests.SubsystemTest.startSubsystemFromInstalled(SubsystemTest.java:874)
>       at 
> org.apache.aries.subsystem.itests.SubsystemTest.startSubsystem(SubsystemTest.java:868)
>       at 
> org.apache.aries.subsystem.itests.defect.AriesXXXXTest.test(AriesXXXXTest.java:80)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
>       at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>       at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
>       at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>       at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>       at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>       at 
> org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:67)
>       at 
> org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:37)
>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
>       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
>       at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
>       at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
>       at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
>       at 
> org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.invokeViaJUnit(JUnitProbeInvoker.java:125)
>       at 
> org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.findAndInvoke(JUnitProbeInvoker.java:98)
>       at 
> org.ops4j.pax.exam.invoker.junit.internal.JUnitProbeInvoker.call(JUnitProbeInvoker.java:74)
>       at 
> org.ops4j.pax.exam.nat.internal.NativeTestContainer.call(NativeTestContainer.java:108)
>       at 
> org.ops4j.pax.exam.spi.reactors.EagerSingleStagedReactor.invoke(EagerSingleStagedReactor.java:109)
>       at 
> org.ops4j.pax.exam.junit.impl.ProbeRunner$2.evaluate(ProbeRunner.java:278)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>       at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>       at org.ops4j.pax.exam.junit.impl.ProbeRunner.run(ProbeRunner.java:112)
>       at org.ops4j.pax.exam.junit.PaxExam.run(PaxExam.java:93)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>       at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)



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

Reply via email to