You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Karl Pauls (JIRA)" <ji...@apache.org> on 2007/08/16 22:39:31 UTC

[jira] Commented: (FELIX-335) Configuration Admin updates with empty properties and throws NullPointerExceptions due to race condition

    [ https://issues.apache.org/jira/browse/FELIX-335?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12520362 ] 

Karl Pauls commented on FELIX-335:
----------------------------------

With your patch, I see the following exception appear quite often in a heavily multithreaded project:

java.lang.NullPointerException
        at org.apache.felix.cm.file.FilePersistenceManager.encodePid(FilePersistenceManager.java:140)
        at org.apache.felix.cm.file.FilePersistenceManager.getFile(FilePersistenceManager.java:473)
        at org.apache.felix.cm.file.FilePersistenceManager.store(FilePersistenceManager.java:394)
        at org.apache.felix.cm.impl.ConfigurationImpl.store(ConfigurationImpl.java:340)
        at org.apache.felix.cm.impl.ConfigurationImpl.setBundleLocation(ConfigurationImpl.java:223)
        at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceUpdate.run(ConfigurationManager.java:840)
        at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:89) 

> Configuration Admin updates with empty properties and throws NullPointerExceptions due to race condition
> --------------------------------------------------------------------------------------------------------
>
>                 Key: FELIX-335
>                 URL: https://issues.apache.org/jira/browse/FELIX-335
>             Project: Felix
>          Issue Type: Bug
>          Components: Configuration Admin
>            Reporter: Karl Pauls
>            Assignee: Felix Meschberger
>         Attachments: ConfigAdmin.FELIX-335.patch, empty-properties.patch
>
>
> There appears to be a race condition in the configuration admin that allows managed services to get updated with empty properties (but not null). Furthermore, due to the same bug NullPointerExceptions appear under heavy load. 
> Fortunately, I think I was able to isolate the bug. The issue is that configurations are persisted when created but before they are initialized (i.e., given a configuration). If during this window a new ManagedService appears it gets updated with an empty Dictionary. Likewise, if the configuration is re-read after such an update attempt it does not have a pid which causes the null pointer exceptions.
> The fix seems to be rather simple  (unless I'm missing something :-) but took me some time to figure out. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.