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)

Reply via email to