[ 
https://issues.apache.org/jira/browse/CONFIGURATION-278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12500225
 ] 

Oliver Heger commented on CONFIGURATION-278:
--------------------------------------------

The internally used layoutData map should probably be better synchronized.

Just wondering: How can an event be received while the save() method is 
executed? Is the PropertiesConfiguration object that is accessed by multiple 
threads properly synchronized? We state that configurations need to be manually 
synchronized if they are modified concurrently.

> ConcurrentModificationException in PropertiesConfigurationLayout
> ----------------------------------------------------------------
>
>                 Key: CONFIGURATION-278
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-278
>             Project: Commons Configuration
>          Issue Type: Bug
>    Affects Versions: 1.4
>            Reporter: Emmanuel Bourg
>             Fix For: 1.5
>
>
> PropertiesConfigurationLayout is not thread safe, if a configuration event is 
> received when the configuration is being saved, a 
> ConcurrentModificationException is thrown :
> java.util.ConcurrentModificationException
>     at 
> org.apache.commons.collections.map.AbstractLinkedMap$LinkIterator.nextEntry(AbstractLinkedMap.java:555)
>     at 
> org.apache.commons.collections.map.AbstractLinkedMap$KeySetIterator.next(AbstractLinkedMap.java:455)
>     at 
> org.apache.commons.configuration.PropertiesConfigurationLayout.save(PropertiesConfigurationLayout.java:455)
>     at 
> org.apache.commons.configuration.PropertiesConfiguration.save(PropertiesConfiguration.java:410)
>     at 
> org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:517)
>     at 
> org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:484)
>     at 
> org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:451)
>     at 
> org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:425)
>     at 
> org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:373)
>     at 
> org.apache.commons.configuration.AbstractFileConfiguration.possiblySave(AbstractFileConfiguration.java:725)
>     at 
> org.apache.commons.configuration.AbstractFileConfiguration.clearProperty(AbstractFileConfiguration.java:764)
>     at 
> org.apache.commons.configuration.DataConfiguration.clearProperty(DataConfiguration.java:109)
>     at 
> org.apache.commons.configuration.AbstractConfiguration.setProperty(AbstractConfiguration.java:483)
> This happens easily in a multi threaded application using a central 
> configuration with auto saved enabled.

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to