[
https://issues.apache.org/jira/browse/CONFIGURATION-788?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary D. Gregory closed CONFIGURATION-788.
-----------------------------------------
Resolution: Won't Fix
> 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)