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.