[
https://issues.apache.org/jira/browse/CONFIGURATION-687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16391882#comment-16391882
]
Luke Hamaty commented on CONFIGURATION-687:
-------------------------------------------
I'll consider it. Or maybe a patch. I am not sure when, and I might have to
clear with management.
> Memory leak and related issues with CombinedConfigurationBuilder
> ----------------------------------------------------------------
>
> Key: CONFIGURATION-687
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-687
> Project: Commons Configuration
> Issue Type: Bug
> Components: File reloading
> Affects Versions: 2.2
> Reporter: Luke Hamaty
> Priority: Major
> Attachments: ReloadCombinedBug.zip
>
>
> In CombinedConfigurationBuilder, each call to resetResult() adds new builders
> to the list of child builders. Likewise, and likely for the same reason, for
> ReloadingCombinedConfigurationBuilder, the resetResult() call adds to the
> list of subcontrollers.
> When resetResult() is called because of an reload update, the next _n_ calls
> to getReloadingController().checkForReloading() will also initiate reloading,
> causing a reset and increasing the number of subcontrollers. So the first
> change causes 1 reload, the second change causes 2 reloads, and it doubles
> each time, so the 7th touch leads to 128 reloads!
> Functionally, there are no apparent symptoms until memory exhaustion and/or
> thrashing occur.
> This seems to be happen because
> CombinedConfigurationBuilder.initResultInstance rebuilds from the parameters
> without clearing all of the existing state, particularly _sourceData_, so
> SourceData ends up adding the reconstructed builders on top of the existing
> ones. Correcting this could be as simple as cleaning up and clearing
> sourceData to force creation of new SourceData.
> Code in attached zip (maven project) demonstrates the issue.
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)