https://issues.apache.org/bugzilla/show_bug.cgi?id=52746

             Bug #: 52746
           Summary: Classloader closed in middle of webapp deployment
           Product: Tomcat 7
           Version: 7.0.16
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: regression
          Priority: P2
         Component: Catalina
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: fr...@jfrog.org
    Classification: Unclassified


We have an application were all the jars reside in the shared (or common)
classloader of Tomcat, and then we are starting multiple webapp using the
common jars.
This setup works good with Java 1.6 and 1.7 on Tomcat 7.0.14.
When using Tomcat 7.0.16-19-22 and 26 (the 4 versions I tested), on both JVM,
we are getting the following for a random number of webapps (4 out of 11 always
deploys, 7 fails) on a single tomcat instance.

So, we tried to debug when, who, why the “java.util.zip.InflaterInputStream”
was closed before the web application finished loading the resources and
classes.
In debug mode with a breaking point on
“java.util.zip.InflaterInputStream#close” of course the bug does not happens :(
We tested with JDK 1.7.0_01 and 1.6.0_20, on Tomcat 7.0.16, 7.0.19, 7.0.22,
7.0.26. On all configurations we got the issue.

This error appears on all kind of resources from the jar (xml, properties,
classes, …), during a tomcat call to
"javax.servlet.ServletContextListener#contextInitialized".

For java 7 we got:
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException:
IOException parsing XML document from class path resource
[META-INF/spring/addons.xml]; nested exception is java.io.IOException: Stream
closed
    at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:408)
[spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
[spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
[spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
[spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
[spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
[spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
[spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:126)
[spring-context-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:92)
[spring-context-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
[spring-context-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
[spring-context-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
[spring-context-3.0.6.RELEASE.jar:3.0.6.RELEASE]
Caused by: java.io.IOException: Stream closed
    at
java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:67)
[na:1.7.0_01]
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:121)
[na:1.7.0_01]
    at java.io.FilterInputStream.read(FilterInputStream.java:83) [na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2905)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2937)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:302)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1750)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanLiteral(XMLEntityScanner.java:1071)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPseudoAttribute(XMLScanner.java:590)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLScanner.scanXMLDeclOrTextDecl(XMLScanner.java:407)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanXMLDeclOrTextDecl(XMLDocumentFragmentScannerImpl.java:913)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$XMLDeclDriver.next(XMLDocumentScannerImpl.java:775)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:430)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:240)
[na:1.7.0_01]
    at
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)
[na:1.7.0_01]
    at
org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
[spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)
[spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
    ... 20 common frames omitted

For Java 6 we got:
Caused by: java.util.zip.ZipException: ZipFile closed
        at java.util.zip.ZipFile.ensureOpenOrZipException(ZipFile.java:413)
[na:1.6.0_20]
        at java.util.zip.ZipFile.access$1100(ZipFile.java:29) [na:1.6.0_20]
        at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:445)
[na:1.6.0_20]
        at java.util.zip.ZipFile$1.fill(ZipFile.java:230) [na:1.6.0_20]
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)
[na:1.6.0_20]
        at java.io.FilterInputStream.read(FilterInputStream.java:116)
[na:1.6.0_20]
        at org.springframework.asm.ClassReader.a(Unknown Source)
[spring-asm-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        at org.springframework.asm.ClassReader.<init>(Unknown Source)
[spring-asm-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        at
org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:48)
[spring-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        at
org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
[spring-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        at
org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
[spring-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        at
org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
[spring-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        at
org.springframework.core.type.filter.AbstractTypeHierarchyTraversingFilter.match(AbstractTypeHierarchyTraversingFilter.java:105)
[spring-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        at
org.springframework.core.type.filter.AbstractTypeHierarchyTraversingFilter.match(AbstractTypeHierarchyTraversingFilter.java:76)
[spring-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        at
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.isCandidateComponent(ClassPathScanningCandidateComponentProvider.java:280)
[spring-context-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        at
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:214)
[spring-context-3.0.6.RELEASE.jar:3.0.6.RELEASE]
        ... 29 common frames omitted

We saw that the GC finalizer is closing the zip on finalize. Playing with
“-XX:+UseConcMarkSweepGC -XX:+UseParNewGC” has no effect.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to