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

Michael Noack commented on CONFIGURATION-788:
---------------------------------------------

Source for build failing: 
[https://travis-ci.org/github/apache/commons-configuration/builds/226884677

]I misinterpreted the build number of the failed build as the number of failed 
unit tests.

> 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)

Reply via email to