FileChangedReloadingStrategy.reloadingRequired() can fail
---------------------------------------------------------
Key: CONFIGURATION-302
URL: https://issues.apache.org/jira/browse/CONFIGURATION-302
Project: Commons Configuration
Issue Type: Bug
Affects Versions: 1.5
Reporter: Pino Navato
Priority: Minor
If reloadingRequired() returns true and you call it again before calling
reloadingPerformed(), the 2nd time it can return false (but you have not yet
reloaded!) because it doesn't check the file system again until the refresh
delay is expired.
Of course this is a very unusual test case (usually you reload immediately) but
the behaviour of the method should be consistent in this case too: if
reloadingRequired() returns true any subsequent call to this method should
return true until reloadingPerformed() is called.
In my project I have fixed the method by promoting the flag called "reloading"
to class scope so I that can check whether the previous call returned true or
false:
protected boolean reloading = false;
public boolean reloadingRequired()
{
if (!reloading)
{
long now = System.currentTimeMillis();
if (now > lastChecked + refreshDelay)
{
lastChecked = now;
if (hasChanged())
{
reloading = true;
}
}
}
return reloading;
}
Of course I reset this flag in init() and reloadingPerformed().
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.