[ https://issues.apache.org/jira/browse/IVY-1147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maarten Coene updated IVY-1147: ------------------------------- Fix Version/s: 2.2.0-RC1 (was: trunk) > Use of a shared DocumentBuilder causes SAXException during parallel > resolutions > ------------------------------------------------------------------------------- > > Key: IVY-1147 > URL: https://issues.apache.org/jira/browse/IVY-1147 > Project: Ivy > Issue Type: Bug > Components: Core > Affects Versions: 2.1.0 > Environment: Vista 32bit Sun JDK 1.6.0_17 > Reporter: Brian Atkinson > Assignee: Maarten Coene > Fix For: 2.2.0-RC1 > > > I am in need of running multiple instances of ivy in parallel from within the > same jvm. When I do this I am seeing the following exception: > org.xml.sax.SAXException: FWK005 parse may not be called while parsing. > at > com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:253) > at > com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283) > at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:153) > at org.apache.ivy.util.XMLHelper.parseToDom(XMLHelper.java:198) > at org.apache.ivy.plugins.parser.m2.PomReader.<init>(PomReader.java:94) > at > org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:115) > at > org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:105) > at > org.apache.ivy.core.cache.DefaultRepositoryCacheManager$MyModuleDescriptorProvider.provideModule(DefaultRepositoryCacheManager.java:638) > at > org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68) > at > org.apache.ivy.core.cache.DefaultRepositoryCacheManager.getStaledMd(DefaultRepositoryCacheManager.java:655) > at > org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:942) > at > org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:542) > at > org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:263) > at > org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:501) > at > org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:130) > at > org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:130) > at org.apache.ivy.core.resolve.IvyNode.loadData(IvyNode.java:170) > at org.apache.ivy.core.resolve.VisitNode.loadData(VisitNode.java:274) > at > org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:671) > at > org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:757) > at > org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:679) > at > org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:551) > at > org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:235) > at > org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:193) > at > org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:138) > at > org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:134) > at org.apache.ivy.Ivy.resolve(Ivy.java:473) > It seems that the DocumentBuilder created in > org.apache.ivy.util.XMLHelper.getDocBuilder(EntityResolver) is stored in a > static variable and only initialized once. Would it be possible to cache the > DocumentBuilderFactory rather then the DocumentBuilder? Doing this would > allow for parallel XML parsing. Additionally the entity resolver provided on > the first call is the only one used for the lifetime of the DocumentBuilder. > I don't know if this was intended, but the method signature does not seem to > suggest it. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.