Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.6
-
None
-
None
Description
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:
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 } }
The test doesn't always fail. It does about 50% of the time.
Attachments
Attachments
Issue Links
- is related to
-
CONFIGURATION-344 Deadlock during refresh properties
- Closed