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

Emmanuel Bourg edited comment on CONFIGURATION-136 at 6/21/09 3:28 PM:
-----------------------------------------------------------------------

This issue has been on the todo list for quite some time. It could be quickly
fixed by changing the reload() method in AbstractFileConfiguration, it may look
like this :

{code:java}
    public void reload()
    {
        synchronized (reloadLock)
        {
            if (noReload == 0 && strategy.reloadingRequired())
            {
                // save the properties
                Map previousProperties = new LinkedMap(store);

                try
                {
                    clear();
                    load();

                    // notify the strategy
                    strategy.reloadingPerformed();
                }
                catch (Exception e)
                {
                    e.printStackTrace();

                    // rollback the changes
                    store = previousProperties;
                }
            }
        }
    }
{code}

I'm not sure it's the best way to rollback the changes though, copying the
properties seems expensive. Any idea ? Should we add a safeReload flag to
enable/disable this feature ?


      was (Author: ebourg):
    This issue has been on the todo list for quite some time. It could be 
quickly
fixed by changing the reload() method in AbstractFileConfiguration, it may look
like this :

    public void reload()
    {
        synchronized (reloadLock)
        {
            if (noReload == 0 && strategy.reloadingRequired())
            {
                // save the properties
                Map previousProperties = new LinkedMap(store);

                try
                {
                    clear();
                    load();

                    // notify the strategy
                    strategy.reloadingPerformed();
                }
                catch (Exception e)
                {
                    e.printStackTrace();

                    // rollback the changes
                    store = previousProperties;
                }
            }
        }
    }

I'm not sure it's the best way to rollback the changes though, copying the
properties seems expensive. Any idea ? Should we add a safeReload flag to
enable/disable this feature ?

  
> Reloading may corrupt the configuration
> ---------------------------------------
>
>                 Key: CONFIGURATION-136
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-136
>             Project: Commons Configuration
>          Issue Type: Bug
>          Components: File reloading
>    Affects Versions: 1.1
>            Reporter: nicolas de loof
>             Fix For: 1.7
>
>
> Current reloading process clears current properties and load updated values 
> from
> resource reader. If an IO error occurs (or invalid format), the configuration
> gets corrupted and the application becomes unstable.
> It may be better for hot-reload to put loaded values into a temporary 
> Properties
> and replace previous values only when reloading is successful. 
> It may also allow to use a 'currentlty-reloading' flag in the synchronized
> 'reload' block to avoid blocking threads during a reload (they could access
> safelly the 'old' properties until reload is finished)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to