[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jakarta-commons-dev
Subject:    [jira] [Commented] (CONFIGURATION-788) AbstractHierarchicalFileConfiguration can lose data when #sav
From:       "Michael Noack (Jira)" <jira () apache ! org>
Date:       2020-03-31 18:34:01
Message-ID: JIRA.13295052.1585587829000.35995.1585679641641 () Atlassian ! JIRA
[Download RAW message or body]


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

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

I just wanted to add that we didn't build anything new with it. The product using it \
is itself almost two decades old. It has had this dependency for at least a decade. \
We have worked around the issue externally in the past but it kept reappearing as new \
developers joined the project unaware of it. This is why I decided to fix it where it \
occurs to have anyone profit from it automatically.

We certainly will move up to 2.x as soon as we can. Should the 2.x version be \
susceptible to it as well I will most likely provide a similar 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)


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic