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)