[
https://issues.apache.org/jira/browse/CONFIGURATION-496?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oliver Heger resolved CONFIGURATION-496.
----------------------------------------
Resolution: Fixed
> Excessive Synchronization AbstractFileConfiguration
> ---------------------------------------------------
>
> Key: CONFIGURATION-496
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-496
> Project: Commons Configuration
> Issue Type: Bug
> Components: File reloading
> Affects Versions: 1.6, 1.7, 1.8
> Reporter: Tim Canavan
> Fix For: 2.0
>
>
> We are having a problem with commons configuration 1.6
> AbstractFileConfiguration
> During a stress test we are seeing that we have wait locks against this
> method causing this method not to complete for up to one second.
> We are using the FileReloadStrategy delegate which makes a check on the file
> system when now + interval is greater than the compare time.
> Why can't we make this check before the synchronized block thus increasing
> throughput. I have noticed in 1.8 that the caller to this method is
> synchronized. This seems like excessive synchronization. Any ideas how to
> solve this.
> {code}
> public void reload()
> {
> synchronized (reloadLock)
> {
> if (noReload == 0)
> {
> try
> {
> enterNoReload(); // avoid reentrant calls
> if (strategy.reloadingRequired())
> {
> if (getLogger().isInfoEnabled())
> {
> getLogger().info("Reloading configuration. URL is
> " + getURL());
> }
> fireEvent(EVENT_RELOAD, null, getURL(), true);
> setDetailEvents(false);
> boolean autoSaveBak = this.isAutoSave(); // save the
> current state
> this.setAutoSave(false); // deactivate autoSave to
> prevent information loss
> try
> {
> clear();
> load();
> }
> finally
> {
> this.setAutoSave(autoSaveBak); // set autoSave to
> previous value
> setDetailEvents(true);
> }
> fireEvent(EVENT_RELOAD, null, getURL(), false);
> // notify the strategy
> strategy.reloadingPerformed();
> }
> }
> catch (Exception e)
> {
> fireError(EVENT_RELOAD, null, null, e);
> // todo rollback the changes if the file can't be reloaded
> }
> finally
> {
> exitNoReload();
> }
> }
> }
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira