dependent restart causes ComponentNameAlreadyInUseException: Name 
'blueprintContainer' is already in use by a registered component
----------------------------------------------------------------------------------------------------------------------------------

                 Key: ARIES-802
                 URL: https://issues.apache.org/jira/browse/ARIES-802
             Project: Aries
          Issue Type: Bug
          Components: Blueprint
    Affects Versions: blueprint-core-0.4.1
         Environment: karaf 2.2.4
            Reporter: Aki Yoshida
             Fix For: blueprint-0.4.0


I saw this problem several months ago. This problem still occurs in the current 
trunk 0.4.1-snapshot. 

I have two bundles A and B running and A depends on B. In my concrete case, A 
is an application scenario bundle depending on B the cxf bundle.

Initially, both are running and have status Active. When I stop B, A goes to 
status GracePeriod. When I start B again, A is started but does not come back 
to status Active but goes to status "Failure" with the following error:

2011-12-14 01:12:49,755 | ERROR | rint Extender: 2 | BlueprintContainerImpl     
      | container.BlueprintContainerImpl
  362 | 10 - org.apache.aries.blueprint - 0.4.1.SNAPSHOT | Unable to start 
blueprint container for bundle tmp.test-osgi-cxf-provider-bp
org.apache.aries.blueprint.ComponentNameAlreadyInUseException: Name 
'blueprintContainer' is already in use by a registered component
        at 
org.apache.aries.blueprint.parser.ComponentDefinitionRegistryImpl.registerComponentDefinition(ComponentDefinitionRegistryImpl.java:88)[10:org.apache.aries.blueprint:0.4.1.SNAPSHOT]
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:286)[10:org.apache.aries.blueprint:0.4.1.SNAPSHOT]
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:241)[10:org.apache.aries.blueprint:0.4.1.SNAPSHOT]
        at 
org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)[10:org.apache.aries.blueprint:0.4.1.SNAPSHOT]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)[:1.6.0_24]
        at 
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_24]
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_24]
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)[:1.6.0_24]
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)[:1.6.0_24]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_24]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_24]
        at java.lang.Thread.run(Thread.java:662)[:1.6.0_24]


The cause of this problem seems to be that this bundle's blueprint container's 
component definition map is not cleared up prior to getting restarted. This 
calls ComponentRegistryImpl's registerComponentDefinition and this method 
checks if the same named component is already in the map. 

I added a line of code to clear up the definition map and this made the bundle 
start and its status go to Active.

Please take a look at the attached file.

Regards, aki


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to