JDK-8150704 : XALAN: ERROR: 'No more DTM IDs are available' when transforming with lots of temporary result trees
  • Type: Bug
  • Component: xml
  • Sub-Component: jaxp
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2016-02-26
  • Updated: 2016-07-21
  • Resolved: 2016-03-10
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 JDK 9
8u102Fixed 9 b110Fixed
Related Reports
Duplicate :  
Description
When XSL transformation with Xalan involves too many temporary result trees, the transformation can run out of DTM IDs, resulting in an exception like:
ERROR:  'No more DTM IDs are available'
javax.xml.transform.TransformerException: com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are available
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:746)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:351)
        at Transform.main(Transform.java:14)

I'm attaching an example to reproduce.

Expected output:
"Looks like no exception. Bye."

Actual output:
ERROR:  'No more DTM IDs are available'
javax.xml.transform.TransformerException: com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are available
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:746)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:351)
        at Transform.main(Transform.java:14)
Caused by: com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are available
        at com.sun.org.apache.xml.internal.dtm.ref.DTMManagerDefault.addDTM(DTMManagerDefault.java:151)
        at com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager.getDTM(XSLTCDTMManager.java:397)
        at com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager.getDTM(XSLTCDTMManager.java:215)
        at com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl.getResultTreeFrag(SAXImpl.java:1831)
        at com.sun.org.apache.xalan.internal.xsltc.dom.DOMAdapter.getResultTreeFrag(DOMAdapter.java:437)
        at template.dodot()
        at template.recursefinal()
        at template.recursefinal()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.template$dot$0()
        at template.applyTemplates()
        at template.transform()
        at com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:620)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:739)
        ... 2 more
---------
com.sun.org.apache.xml.internal.dtm.DTMException: No more DTM IDs are available
        at com.sun.org.apache.xml.internal.dtm.ref.DTMManagerDefault.addDTM(DTMManagerDefault.java:151)
        at com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager.getDTM(XSLTCDTMManager.java:397)
        at com.sun.org.apache.xalan.internal.xsltc.dom.XSLTCDTMManager.getDTM(XSLTCDTMManager.java:215)
        at com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl.getResultTreeFrag(SAXImpl.java:1831)
        at com.sun.org.apache.xalan.internal.xsltc.dom.DOMAdapter.getResultTreeFrag(DOMAdapter.java:437)
        at template.dodot()
        at template.recursefinal()
        at template.recursefinal()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse2()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.recurse1()
        at template.template$dot$0()
        at template.applyTemplates()
        at template.transform()
        at com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:620)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:739)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:351)
        at Transform.main(Transform.java:14)