You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Oliver Heger (JIRA)" <ji...@apache.org> on 2007/05/30 22:07:16 UTC

[jira] Commented: (CONFIGURATION-278) ConcurrentModificationException in PropertiesConfigurationLayout

    [ 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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org