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

John Ross commented on ARIES-1109:
----------------------------------

> ...afterwards I leave the container with exit.

Ah, that explains it. The last subsystem ID is read from the root subsystem's 
manifest as the AriesSubsystem-LastId header when the aries subsystems bundle 
is started. It is only updated with the latest value when the aries subsystems 
bundle is stopped. Note that the value of that header will remain at the last 
persisted value during runtime.

Issuing an "exit" command from the console does not result in a normal 
framework shutdown. Use "shutdown" or "close" instead.

We can consider updating the implementation to be a bit more robust. I see the 
following options.

(1) Add a JVM shutdown hook.

(2) Persist the last ID with each subsystem installation.

(3) Periodically persist the last ID in a background thread (i.e. batch the 
installations).
                
> Duplicate subsystem ids after restart of subsystem.core
> -------------------------------------------------------
>
>                 Key: ARIES-1109
>                 URL: https://issues.apache.org/jira/browse/ARIES-1109
>             Project: Aries
>          Issue Type: Bug
>          Components: Subsystem
>            Reporter: Stephan Siano
>         Attachments: a.esa, b.esa, c.esa
>
>
> aries subsystems will generate duplicate subsystem ids if the subsystem core 
> bundle (or the container) is restarted.
> Reproduction is quite easy:
> 1. install a subsystem -> this will get subsystem id 1
> 2. stop the org.apache.aries.subsystem.core bundle (or the OSGi container)
> 3. start the org.apache.aries.subsystem.core bundle (or the OSGi container)
> -> the subsystem installed in step 1 is still there and has id 1
> 4. Install another subsystem (different from the first)
> -> This will also get Id 1
> I think the error is in line 150 of the 
> org.apache.subsystems.core.internal.Subsystems class. There the static lastId 
> counter of the SubsystemIdentifier class is set to 0 before actually 
> populating the root subsystem.
> Maybe this should be set to the maximum id of the installed subsystems during 
> or after the population of the root subsystem

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to