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