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

List:       jakarta-commons-dev
Subject:    [jira] Commented: (CONFIGURATION-390)
From:       "Ralph Goers (JIRA)" <jira () apache ! org>
Date:       2009-09-29 23:56:34
Message-ID: 971927688.1254268594420.JavaMail.jira () brutus
[Download RAW message or body]


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

Ralph Goers commented on CONFIGURATION-390:
-------------------------------------------

I've made some more changes on the branch. I was getting out of memory errors in some \
unit tests because clear was not creating a new root node. I also included \
DynamicCombinedConfiguration in the locking and now it passes all the tests.

Although I may push this to trunk I am going to keep looking into this to see if \
there is a better way to deal with this as it is going to impact performance.

> 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
> 
> Attachments: commons-configuration-390.patch, configtest.tar.gz, TestSuite.txt
> 
> 
> 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.


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

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