commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Bourg (JIRA)" <j...@apache.org>
Subject [jira] Created: (CONFIGURATION-390) AbstractHierarchicalFileConfiguration is not thread safe
Date Tue, 23 Jun 2009 15:50:07 GMT
AbstractHierarchicalFileConfiguration is not thread safe
--------------------------------------------------------

                 Key: CONFIGURATION-390
                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-390
             Project: Commons Configuration
          Issue Type: Bug
          Components: File reloading
    Affects Versions: 1.6
            Reporter: Emmanuel Bourg
             Fix For: 1.7


AbstractHierarchicalFileConfiguration doesn't implement the same locking mechanism found in
AbstractFileConfiguration. The consequence is that getting a property while the configuration
is being reloaded by another thread can return an invalid result.

This can be demonstrated by changing testDeadlockWithReload() in TestCombinedConfiguration
to use an XMLConfiguration instead of a PropertiesConfiguration.

Here is a reduced test case:

{code:java}
public void testConcurrentGetAndReload() throws Exception
{
    //final FileConfiguration config = new PropertiesConfiguration("test.properties");
    final FileConfiguration config = new XMLConfiguration("test.xml");
    config.setReloadingStrategy(new FileAlwaysReloadingStrategy());

    assertTrue("Property not found", config.getProperty("test.short") != null);

    new Thread()
    {
        public void run()
        {
            for (int i = 0; i < 1000; i++)
            {
                config.reload();
            }
        }
    }.start();
    
    for (int i = 0; i < 1000; i++)
    {
        assertTrue("Property not found", config.getProperty("test.short") != null); // failure
here
    }
}
{code}

The test doesn't always fail. It does about 50% of the time.


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


Mime
View raw message