[ https://issues.apache.org/jira/browse/CONFIGURATION-788?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Noack updated CONFIGURATION-788: ---------------------------------------- Attachment: 0002-CHANGED-AbstractFileConfiguration-Fixed-potential-NP.patch > AbstractHierarchicalFileConfiguration can lose data when #save() is > interrupted by JVM abort/power failure > ---------------------------------------------------------------------------------------------------------- > > Key: CONFIGURATION-788 > URL: https://issues.apache.org/jira/browse/CONFIGURATION-788 > Project: Commons Configuration > Issue Type: Bug > Components: File reloading > Affects Versions: 1.10 > Environment: This occurs in any environment with any use of > AbstractFileConfiguration#save(), AbstractFileConfiguration#save(URL) or > AbstractFileConfiguration#save(File). > Reporter: Michael Noack > Priority: Major > Labels: newbie > Attachments: > 0001-Implemented-keep-backup-feature-for-file-configurati.patch, > 0002-CHANGED-AbstractFileConfiguration-Fixed-potential-NP.patch > > > When saving the current configuration, either using any of the #save() > Methods or when setting a property while auto-save is enabled the method > AbstractFileConfiguration#save(URL) effectively wipes the file content when > opening the OutputStream. > If the JVM gets destroyed or the machine powered down before the new > configuration has been serialized to the file an empty file remains with no > configuration at all. > > I've created a patch on top of the RELEASE_1_10_BRANCH which introduces a > mitigation. The mitigation consists of a "keep backup" flag in > AbstractFileConfiguration which, if set, creates a copy of the current > configuration file before writing into it. > When a configuration exception occurs upon loading the configuration again > the exception will be caught and loading of the backup is attempted first > before rethrowing the exception when this fails as well. > To allow existing implementations to profit from this without touching all > instances a global flag has been added to > AbstractHierarchicalFileConfiguration which is then inherited by all future > delegates added to any instance of AbstractHierarchicalFileConfiguration. > Four unit tests for this mitigation feature have been added to > TestHierarchicalXMLConfiguration. > I've uploaded a repository with the commit to github: > https://github.com/noamik/commons-configuration/tree/RELEASE_1_11_BRANCH -- This message was sent by Atlassian Jira (v8.3.4#803005)