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

Pierre De Rop updated FELIX-4385:
---------------------------------

    Attachment: FELIX-4385-integrationtest.tgz

Attached a proposed integration test which seems to reproduce the problem.

The test uses an executor for concurrently creating some ManagedServices and 
for each MS, a configuration is created. When all MS are updated with the 
configuration, then the ManagedServices are unregistered from the OSGI registry 
(concurrently) and the associated configurations are also deleted.
The test uses a special org.apache.felix.cm.integration.helper.Log class, which 
implements an OSGi LogService: this service just tracks if some warnings are 
logged (the configuration admin logs exceptions using OSGi Log Service).

The test is successful if no warns have been detected, and fails if some warns 
have been logged (like NullPointerExceptions).

Notice that using this test, a different stack trace occurs than the one 
initially reported in this issue:

ERROR - CM Configuration Updater (Update: pid=pid.2-80) : Unexpected problem 
executing task - java.lang.NullPointerException
        at 
org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1726)
        at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:103)
        at java.lang.Thread.run(Thread.java:744)


> NPE in Configuration Admin Service when deleting configuration
> --------------------------------------------------------------
>
>                 Key: FELIX-4385
>                 URL: https://issues.apache.org/jira/browse/FELIX-4385
>             Project: Felix
>          Issue Type: Bug
>          Components: Configuration Admin
>    Affects Versions: configadmin-1.8.2
>            Reporter: Pierre De Rop
>         Attachments: FELIX-4385-integrationtest.tgz, FELIX-4385.patch
>
>
> While writing a test for Apache Felix DependencyManager, I came across the 
> following exception from ConfigAdmin 1.8.0 (under high load):
> {code}
> ERROR - CM Configuration Updater (Delete: pid=Aspect2.pid23) : Unexpected 
> problem providing configuration Aspect2.pid23 to service 
> [org.osgi.service.cm.ManagedService, id=117, bundle=26/local] - 
> java.lang.NullPointerException
>         at java.lang.StringBuffer.<init>(StringBuffer.java:120)
>         at 
> org.apache.felix.cm.impl.ConfigurationManager.getTargetedConfiguration(ConfigurationManager.java:523)
>         at 
> org.apache.felix.cm.impl.ConfigurationManager$ConfigurationProvider.provideReplacement(ConfigurationManager.java:1666)
>         at 
> org.apache.felix.cm.impl.ConfigurationManager$DeleteConfiguration.run(ConfigurationManager.java:1816)
>         at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:103)
>         at java.lang.Thread.run(Thread.java:722)
> {code}
> I suspect that this NPE occurs in the following scenario:
> 1- one ManagedService listening to a given configuration pid is being 
> unregistered (from one thread)
> 2- concurrently, another thread is deleting the Configuration for the same 
> PID the ManagedService was registered for.
> I never wrote some test cases for configuration admin sub-project but I will 
> try to write one in order to reproduce the issue.
> For now, I'm using the attached patch, which seems to fix the problem.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to