[ 
https://issues.apache.org/jira/browse/XALANJ-2439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15490240#comment-15490240
 ] 

Thomas Scheffler commented on XALANJ-2439:
------------------------------------------

I notice the same problem as Eric. After transforming a few ten thousend 
documents, I get:
{noformat}
org.apache.xml.dtm.DTMException: Keine weiteren Dokumenttypmodell-IDs verfügbar
        at 
org.apache.xml.dtm.ref.DTMManagerDefault.addDTM(DTMManagerDefault.java:148)
        at 
org.apache.xml.dtm.ref.DTMManagerDefault.getDTM(DTMManagerDefault.java:326)
        at org.apache.xpath.XPathContext.getRTFDTM(XPathContext.java:1258)
        at 
org.apache.xalan.transformer.TransformerImpl.transformToRTF(TransformerImpl.java:1911)
        at 
org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:312)
        at 
org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:248)
        at 
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
        at 
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
        at 
org.apache.xalan.transformer.TransformerImpl.transformToRTF(TransformerImpl.java:1990)
        at 
org.apache.xalan.transformer.TransformerImpl.transformToRTF(TransformerImpl.java:1912)
        at 
org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:312)
        at 
org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:248)
        at 
org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:425)
        at org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:265)
        at 
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
        at 
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178)
        at 
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
        at 
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
        at 
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
        at 
org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:425)
        at org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:265)
        at 
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395)
        at 
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:178)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
        at 
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1376)
        at 
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2402)
        at 
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2272)
        at 
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1358)
        at 
org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3449)
        at 
org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:408)
        at 
org.apache.xerces.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:734)
        at 
org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScannerImpl.java:525)
        at 
org.apache.xerces.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1938)
        at 
org.apache.xerces.impl.XMLEntityScanner.load(XMLEntityScanner.java:1773)
        at 
org.apache.xerces.impl.XMLEntityScanner.skipSpaces(XMLEntityScanner.java:1304)
        at 
org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(XMLDocumentScannerImpl.java:1239)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
        at 
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:875)
        at 
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:798)
        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
        at 
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1198)
        at 
[my custom code stack is here]
{noformat}

> [PATCH] XSLTC resource leak causes 'No more DTM IDs are available' error
> ------------------------------------------------------------------------
>
>                 Key: XALANJ-2439
>                 URL: https://issues.apache.org/jira/browse/XALANJ-2439
>             Project: XalanJ2
>          Issue Type: Bug
>          Components: XSLTC
>    Affects Versions: The Latest Development Code
>         Environment: Linux and Windows XP with Sun JRE 1.5.0_15 and 1.6.0_05
>            Reporter: Helge Schulz
>            Priority: Minor
>             Fix For: The Latest Development Code
>
>         Attachments: DOMLeak-4-NodeSetAndMultiDOM.xsl, 
> DOMLeak-XSLT-Test-1.0.jar, DOMLeak-Xalan-SVN-r584164.patch
>
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> The Xalan XSLT compiler (XSLTC) has several resource leaks in handling
> result tree fragments in XSLT variables and parameters. If a variable
> or parameter declaration contains XML elements, a new DOM tree is created
> and a new internal integer id is reserved for it. The garbage collector can
> never retrieve this DOM tree, because the id registration holds a reference
> to it. This bug prevents the transformation of large input files, because
> complex templates creates many result tree fragments and exceeds often the
> absolute limit of possible DOM trees in XSLTC (2^16 = 65535). If this
> limit is reached, XSLTC throws the following exception: 
> DTMException: No more DTM IDs are available
> The attached patch adds a new release method to the DOM interface and calls
> it, when the scope of a variable or parameter is leaved.
> You can test this patch with the attached JAR file. This file can be
> called with
> java -Xmx800M -jar DOMLeak-XSLT-Test-X.Y.jar
> This file contains four test style sheets with expected output files.
> This bug exists also in *all* Sun JRE 1.5 and 1.6 versions, because the
> Xalan XSLTC source code is used in the 'com.sun.org.apache.xalan.internal'
> packages. The attached test JAR file contains also a patch for the current
> Sun JRE version 1.6.0_5 and a fix JAR file to be installed into the
> '../jre/lib/endorsed' directory of the JRE installation.
> Please add the attached test files to the Xalan test suite. I have
> released them under Apache license version 2.0. 
> Helge Schulz - http://OpenSHORE.org
> ----------
> Here is the output of running my test cases with several Java version:
> test:
> apply-with-all-versions:
>     [apply] Buildfile: build.xml
>     [apply] test-java:
>     [apply]      [echo] Test Sun Java 1.4.2_17 with integrated XSLT
>     [apply]      [java]    Testing DOMLeak-1-ResultTreeInVariable.xsl... Ok.
>     [apply]      [java]    Testing DOMLeak-2-ResultTreeInCallParameter.xsl... 
> Ok.
>     [apply]      [java]    Testing 
> DOMLeak-3-ResultTreeInApplyParameter.xsl... Ok.
>     [apply]      [java]    Testing DOMLeak-4-NodeSetAndMultiDOM.xsl... Ok.
>     [apply]      [echo] 
>     [apply]      [echo] Test Sun Java 1.4.2_17 with latest Xalan (SVN 
> revision 584164)
>     [apply]      [java]    Testing DOMLeak-1-ResultTreeInVariable.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [java]    Testing DOMLeak-2-ResultTreeInCallParameter.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [java]    Testing 
> DOMLeak-3-ResultTreeInApplyParameter.xsl... ERROR:  'No more DTM IDs are 
> available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [java]    Testing DOMLeak-4-NodeSetAndMultiDOM.xsl... ERROR: 
>  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [echo] 
>     [apply]      [echo] Test Sun Java 1.4.2_17 with fixed Xalan
>     [apply]      [java]    Testing DOMLeak-1-ResultTreeInVariable.xsl... Ok.
>     [apply]      [java]    Testing DOMLeak-2-ResultTreeInCallParameter.xsl... 
> Ok.
>     [apply]      [java]    Testing 
> DOMLeak-3-ResultTreeInApplyParameter.xsl... Ok.
>     [apply]      [java]    Testing DOMLeak-4-NodeSetAndMultiDOM.xsl... Ok.
>     [apply] BUILD SUCCESSFUL
>     [apply] Total time: 1 minute 21 seconds
>     [apply] Buildfile: build.xml
>     [apply] test-java:
>     [apply]      [echo] Test Sun Java 1.5.0_15 with integrated XSLT
>     [apply]      [java]    Testing DOMLeak-1-ResultTreeInVariable.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are 
> available
>     [apply]      [java]    Testing DOMLeak-2-ResultTreeInCallParameter.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are 
> available
>     [apply]      [java]    Testing 
> DOMLeak-3-ResultTreeInApplyParameter.xsl... ERROR:  'No more DTM IDs are 
> available'
>     [apply]      [java]       XSLT Exception: 
> com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are 
> available
>     [apply]      [java]    Testing DOMLeak-4-NodeSetAndMultiDOM.xsl... ERROR: 
>  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are 
> available
>     [apply]      [echo] 
>     [apply]      [echo] Test Sun Java 1.5.0_15 with latest Xalan (SVN 
> revision 584164)
>     [apply]      [java]    Testing DOMLeak-1-ResultTreeInVariable.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [java]    Testing DOMLeak-2-ResultTreeInCallParameter.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [java]    Testing 
> DOMLeak-3-ResultTreeInApplyParameter.xsl... ERROR:  'No more DTM IDs are 
> available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [java]    Testing DOMLeak-4-NodeSetAndMultiDOM.xsl... ERROR: 
>  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [echo] 
>     [apply]      [echo] Test Sun Java 1.5.0_15 with fixed Xalan
>     [apply]      [java]    Testing DOMLeak-1-ResultTreeInVariable.xsl... Ok.
>     [apply]      [java]    Testing DOMLeak-2-ResultTreeInCallParameter.xsl... 
> Ok.
>     [apply]      [java]    Testing 
> DOMLeak-3-ResultTreeInApplyParameter.xsl... Ok.
>     [apply]      [java]    Testing DOMLeak-4-NodeSetAndMultiDOM.xsl... Ok.
>     [apply] BUILD SUCCESSFUL
>     [apply] Total time: 2 minutes 13 seconds
>     [apply] Buildfile: build.xml
>     [apply] test-java:
>     [apply]      [echo] Test Sun Java 1.6.0_05 with integrated XSLT
>     [apply]      [java]    Testing DOMLeak-1-ResultTreeInVariable.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are 
> available
>     [apply]      [java]    Testing DOMLeak-2-ResultTreeInCallParameter.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are 
> available
>     [apply]      [java]    Testing 
> DOMLeak-3-ResultTreeInApplyParameter.xsl... ERROR:  'No more DTM IDs are 
> available'
>     [apply]      [java]       XSLT Exception: 
> com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are 
> available
>     [apply]      [java]    Testing DOMLeak-4-NodeSetAndMultiDOM.xsl... ERROR: 
>  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are 
> available
>     [apply]      [echo] 
>     [apply]      [echo] Test Sun Java 1.6.0_05 with latest Xalan (SVN 
> revision 584164)
>     [apply]      [java]    Testing DOMLeak-1-ResultTreeInVariable.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [java]    Testing DOMLeak-2-ResultTreeInCallParameter.xsl... 
> ERROR:  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [java]    Testing 
> DOMLeak-3-ResultTreeInApplyParameter.xsl... ERROR:  'No more DTM IDs are 
> available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [java]    Testing DOMLeak-4-NodeSetAndMultiDOM.xsl... ERROR: 
>  'No more DTM IDs are available'
>     [apply]      [java]       XSLT Exception: 
> org.apache.xml.dtm.DTMException: No more DTM IDs are available
>     [apply]      [echo] 
>     [apply]      [echo] Test Sun Java 1.6.0_05 with fixed Xalan
>     [apply]      [java]    Testing DOMLeak-1-ResultTreeInVariable.xsl... Ok.
>     [apply]      [java]    Testing DOMLeak-2-ResultTreeInCallParameter.xsl... 
> Ok.
>     [apply]      [java]    Testing 
> DOMLeak-3-ResultTreeInApplyParameter.xsl... Ok.
>     [apply]      [java]    Testing DOMLeak-4-NodeSetAndMultiDOM.xsl... Ok.
>     [apply] BUILD SUCCESSFUL
>     [apply] Total time: 1 minute 42 seconds
> BUILD SUCCESSFUL
> Total time: 5 minutes 22 seconds



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@xalan.apache.org
For additional commands, e-mail: dev-h...@xalan.apache.org

Reply via email to