You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Carsten Ziegeler (JIRA)" <ji...@apache.org> on 2014/03/24 14:37:42 UTC

[jira] [Created] (SLING-3474) Concurrent modification exception in installer

Carsten Ziegeler created SLING-3474:
---------------------------------------

             Summary: Concurrent modification exception in installer
                 Key: SLING-3474
                 URL: https://issues.apache.org/jira/browse/SLING-3474
             Project: Sling
          Issue Type: Bug
          Components: Installer
    Affects Versions: Installer Core 3.5.0
            Reporter: Carsten Ziegeler
            Assignee: Carsten Ziegeler
             Fix For: Installer Core 3.5.2


The following exception might occur:
12.03.2014 23:21:49.899 *WARN* [CM Event Dispatcher (Fire ConfigurationEvent: pid=org.apache.sling.engine.impl.auth.SlingAuthenticator)] org.apache.sling.installer.core.impl.PersistentResourceList Unable to save persistent list: null
java.util.ConcurrentModificationException: null
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:926)
    at java.util.HashMap$EntryIterator.next(HashMap.java:966)
    at java.util.HashMap$EntryIterator.next(HashMap.java:964)
    at java.util.HashMap.writeObject(HashMap.java:1131)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1495)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
    at org.apache.sling.installer.core.impl.PersistentResourceList.save(PersistentResourceList.java:166)
    at org.apache.sling.installer.core.impl.OsgiInstallerImpl.resourceAddedOrUpdated(OsgiInstallerImpl.java:965)
    at org.apache.sling.installer.factories.configuration.impl.ConfigTaskCreator.configurationEvent(ConfigTaskCreator.java:138)
    at org.apache.felix.cm.impl.ConfigurationManager$FireConfigurationEvent.sendEvent(ConfigurationManager.java:2032)
    at org.apache.felix.cm.impl.ConfigurationManager$FireConfigurationEvent.run(ConfigurationManager.java:2002)
    at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:103)
    at java.lang.Thread.run(Thread.java:744)

While the installer works under the assumption that only the main thread can modify the installer state, the writeback mechanism can actually also change and persists state (as seen above). Therefore the code needs to be guarded against concurrent access.



--
This message was sent by Atlassian JIRA
(v6.2#6252)