You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Marcell Hegedus (JIRA)" <ji...@apache.org> on 2012/06/27 20:08:44 UTC
[jira] [Created] (IVY-1362) Memory leak and infinite loop in
ModuleId.java
Marcell Hegedus created IVY-1362:
------------------------------------
Summary: Memory leak and infinite loop in ModuleId.java
Key: IVY-1362
URL: https://issues.apache.org/jira/browse/IVY-1362
Project: Ivy
Issue Type: Bug
Components: Core
Affects Versions: 2.2.0
Environment: Eclipse / IvyDE
Reporter: Marcell Hegedus
ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
The same issue and a memory leak was fixed in IVY-791.
{code:title=Stacktrace of a hanging thread}
java.lang.Thread.State: RUNNABLE
at java.util.WeakHashMap.get(Unknown Source)
at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
at org.apache.ivy.Ivy.resolve(Ivy.java:512)
at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (IVY-1362) Memory leak and infinite loop in
ModuleId.java
Posted by "Marcell Hegedus (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13438631#comment-13438631 ]
Marcell Hegedus commented on IVY-1362:
--------------------------------------
Verified again and it is ok. Thank you!
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
> Key: IVY-1362
> URL: https://issues.apache.org/jira/browse/IVY-1362
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.2.0
> Environment: Eclipse / IvyDE
> Reporter: Marcell Hegedus
> Assignee: Maarten Coene
> Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> at java.util.WeakHashMap.get(Unknown Source)
> at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (IVY-1362) Memory leak and infinite loop in
ModuleId.java
Posted by "Marcell Hegedus (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13437552#comment-13437552 ]
Marcell Hegedus commented on IVY-1362:
--------------------------------------
Memory leak is not fixed. Please check the diff of IVY-791. This should be the same patch.
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
> Key: IVY-1362
> URL: https://issues.apache.org/jira/browse/IVY-1362
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.2.0
> Environment: Eclipse / IvyDE
> Reporter: Marcell Hegedus
> Assignee: Maarten Coene
> Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> at java.util.WeakHashMap.get(Unknown Source)
> at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (IVY-1362) Memory leak and infinite loop in
ModuleId.java
Posted by "Maarten Coene (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13437595#comment-13437595 ]
Maarten Coene commented on IVY-1362:
------------------------------------
Thanks for verifying, it did my homework again and hopefully it is ok now?
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
> Key: IVY-1362
> URL: https://issues.apache.org/jira/browse/IVY-1362
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.2.0
> Environment: Eclipse / IvyDE
> Reporter: Marcell Hegedus
> Assignee: Maarten Coene
> Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> at java.util.WeakHashMap.get(Unknown Source)
> at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Resolved] (IVY-1362) Memory leak and infinite loop in
ModuleId.java
Posted by "Maarten Coene (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maarten Coene resolved IVY-1362.
--------------------------------
Resolution: Fixed
Fix Version/s: 2.3.0
Assignee: Maarten Coene
Fixed in the next release. Thanks for reporting.
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
> Key: IVY-1362
> URL: https://issues.apache.org/jira/browse/IVY-1362
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.2.0
> Environment: Eclipse / IvyDE
> Reporter: Marcell Hegedus
> Assignee: Maarten Coene
> Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> at java.util.WeakHashMap.get(Unknown Source)
> at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Comment Edited] (IVY-1362) Memory leak and infinite loop in
ModuleId.java
Posted by "Maarten Coene (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/IVY-1362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13437595#comment-13437595 ]
Maarten Coene edited comment on IVY-1362 at 8/20/12 9:04 AM:
-------------------------------------------------------------
Thanks for verifying, I did my homework again and hopefully it is ok now?
was (Author: maartenc):
Thanks for verifying, it did my homework again and hopefully it is ok now?
> Memory leak and infinite loop in ModuleId.java
> ----------------------------------------------
>
> Key: IVY-1362
> URL: https://issues.apache.org/jira/browse/IVY-1362
> Project: Ivy
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.2.0
> Environment: Eclipse / IvyDE
> Reporter: Marcell Hegedus
> Assignee: Maarten Coene
> Fix For: 2.3.0
>
>
> ModuleId tries save memory by interning objects. This ModuleId cache is not synchronized and when it is mutated from concurrent threads it is possible that the WeakHashMap will contain a loop. As described in the blog post: ["A Beautiful Race Condition"|http://mailinator.blogspot.hu/2009/06/beautiful-race-condition.html]
> The same issue and a memory leak was fixed in IVY-791.
> {code:title=Stacktrace of a hanging thread}
> java.lang.Thread.State: RUNNABLE
> at java.util.WeakHashMap.get(Unknown Source)
> at org.apache.ivy.core.module.id.ModuleId.intern(ModuleId.java:63)
> at org.apache.ivy.core.module.id.ModuleId.newInstance(ModuleId.java:48)
> at org.apache.ivy.core.module.id.ModuleRevisionId.newInstance(ModuleRevisionId.java:100)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorBuilder.addDependency(PomModuleDescriptorBuilder.java:285)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:262)
> at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:108)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:659)
> at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:676)
> at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:993)
> at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:546)
> at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:266)
> at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:503)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
> at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:169)
> at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:287)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:696)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:769)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:781)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:704)
> at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:576)
> at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:237)
> at org.apache.ivy.Ivy.resolve(Ivy.java:512)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.resolve(IvyResolveJobThread.java:224)
> at org.apache.ivyde.eclipse.cpcontainer.IvyResolveJobThread.run(IvyResolveJobThread.java:127)
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira