[ 
https://issues.apache.org/jira/browse/DOSGI-160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christian Schneider resolved DOSGI-160.
---------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.5
         Assignee: Christian Schneider
    
> RemoteServiceAdmin shuts itself down during startup
> ---------------------------------------------------
>
>                 Key: DOSGI-160
>                 URL: https://issues.apache.org/jira/browse/DOSGI-160
>             Project: CXF Distributed OSGi
>          Issue Type: Bug
>          Components: DSW
>    Affects Versions: 1.4.0
>         Environment: Oracle JDK 1.7.0_17, Karaf 2.3.1, DOSGi 1.4.0 (installed 
> from Karaf feature)
>            Reporter: Amichai Rothman
>            Assignee: Christian Schneider
>             Fix For: 1.5
>
>         Attachments: fix_activator_config_and_sync_issues.diff
>
>
> Every once in a while (quite often) the service export fails. Looking through 
> the logs, I found the message "RemoteServiceAdmin Implementation is shutting 
> down now" - during Karaf startup! It appears that the RSA is started, 
> services exported properly etc., but then it suddenly commits suicide a few 
> moments later with no other error or indication of who/what initiated the 
> shutdown or why.
> Further investigation shows the DSW Activator is getting a ConfigurationAdmin 
> updated event with null configuration (according to the OSGi specs, the 
> callback is guaranteed to be called - either with an existing configuration 
> or with null if none is available). The current implementation of the 
> callback stops the bundle, shutting down the service and printing the above 
> log message, but when the configuration is null it does not start it back up, 
> resulting in the observed behaviour.
> There's also a race condition in the class since from my understanding of the 
> specs the updated callback is called asynchronously from a separate thread, 
> and since it stops and possibly starts the bundle, this might cause the 
> start/stop methods to be run concurrently and more than once (the bundle 
> lifecycle start/stop along with the update-triggered start/stop).
> Finally, while debugging and attempting to fix this I came across a third 
> related issue - when the bundle is indeed started up again in the updated 
> method (e.g. if removing the null check or if a configuration is available), 
> the start method then re-registers the ManagedService, which causes the 
> updated method to be called again, which restarts the bundle again, etc. - in 
> an infinite loop. In practice I saw the server hang with 100% CPU usage 
> indefinitely, and in a later session with a debugger the loop was confirmed.
> Attached is a fix for the 3 related issues - when applied together everything 
> seems to work as expected. I'm new to this project, so please correct 
> anything I've missed.

--
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