[JIRA] (JENKINS-13936) Fitnesse results parsing uses too much heap

2012-05-29 Thread recampb...@java.net (JIRA)
recampbell created JENKINS-13936:


 Summary: Fitnesse results parsing uses too much heap
 Key: JENKINS-13936
 URL: https://issues.jenkins-ci.org/browse/JENKINS-13936
 Project: Jenkins
  Issue Type: Bug
  Components: fitnesse
Reporter: recampbell


We are seeing OOME's in Jenkins when parsing large Fitnesse results files 
(35mb). For example:
{quote}
Reading results as US-ASCII from /.../fitnesse-result.xml 
Parsing results... 
java.lang.OutOfMemoryError: Java heap space 
at java.util.Arrays.copyOf(Arrays.java:2882) 
at 
java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) 
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515) 
at java.lang.StringBuffer.append(StringBuffer.java:306) 
at 
com.sun.org.apache.xalan.internal.xsltc.runtime.StringValueHandler.characters(StringValueHandler.java:49)
 
at 
com.sun.org.apache.xml.internal.utils.FastStringBuffer.sendSAXcharacters(FastStringBuffer.java:998)
 
at 
com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM2.dispatchCharactersEvents(SAX2DTM2.java:3068)
 
at 
com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl.characters(SAXImpl.java:1562)
 
at 
com.sun.org.apache.xalan.internal.xsltc.dom.DOMAdapter.characters(DOMAdapter.java:330)
 
at GregorSamsa.template$dot$2() 
at GregorSamsa.applyTemplates() 
at GregorSamsa.template$dot$0() 
at GregorSamsa.applyTemplates() 
at GregorSamsa.applyTemplates() 
at GregorSamsa.transform() 
at 
com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:603)
 
at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:709)
 
at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
 
at 
hudson.plugins.fitnesse.NativePageCountsParser.transformRawResults(NativePageCountsParser.java:25)
 
at 
hudson.plugins.fitnesse.NativePageCountsParser.parse(NativePageCountsParser.java:17)
 
at 
hudson.plugins.fitnesse.FitnesseResultsRecorder.getResults(FitnesseResultsRecorder.java:131)
 
at 
hudson.plugins.fitnesse.FitnesseResultsRecorder.getResults(FitnesseResultsRecorder.java:109)
 
at 
hudson.plugins.fitnesse.FitnesseResultsRecorder.perform(FitnesseResultsRecorder.java:73)
 
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36) 
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:705) 
at 
hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:680)
 
at 
hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:658)
 
at hudson.model.Build$RunnerImpl.post2(Build.java:161) 
at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:627) 
at hudson.model.Run.run(Run.java:1400) 
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
at hudson.model.ResourceController.execute(ResourceController.java:88) 
Build step 'Publish Fitnesse results report' changed build result to FAILURE 
Build step 'Publish Fitnesse results report' marked build as failure 
{quote}

Perhaps it would be more efficient to use a streaming parser like SAX?



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[JIRA] (JENKINS-13936) Fitnesse results parsing uses too much heap

2012-05-29 Thread recampb...@java.net (JIRA)

 [ 
https://issues.jenkins-ci.org/browse/JENKINS-13936?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

recampbell updated JENKINS-13936:
-

Description: 
We are seeing OOME's in Jenkins when parsing large Fitnesse results files 
(35mb). For example:
{quote}
Reading results as US-ASCII from /.../fitnesse-result.xml 
Parsing results... 
java.lang.OutOfMemoryError: Java heap space 
at java.util.Arrays.copyOf(Arrays.java:2882) 
at 
java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) 
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515) 
at java.lang.StringBuffer.append(StringBuffer.java:306) 
at 
com.sun.org.apache.xalan.internal.xsltc.runtime.StringValueHandler.characters(StringValueHandler.java:49)
 
at 
com.sun.org.apache.xml.internal.utils.FastStringBuffer.sendSAXcharacters(FastStringBuffer.java:998)
 
at 
com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM2.dispatchCharactersEvents(SAX2DTM2.java:3068)
 
at 
com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl.characters(SAXImpl.java:1562)
 
at 
com.sun.org.apache.xalan.internal.xsltc.dom.DOMAdapter.characters(DOMAdapter.java:330)
 
at GregorSamsa.template$dot$2() 
at GregorSamsa.applyTemplates() 
at GregorSamsa.template$dot$0() 
at GregorSamsa.applyTemplates() 
at GregorSamsa.applyTemplates() 
at GregorSamsa.transform() 
at 
com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:603)
 
at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:709)
 
at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
 
at 
hudson.plugins.fitnesse.NativePageCountsParser.transformRawResults(NativePageCountsParser.java:25)
 
at 
hudson.plugins.fitnesse.NativePageCountsParser.parse(NativePageCountsParser.java:17)
 
at 
hudson.plugins.fitnesse.FitnesseResultsRecorder.getResults(FitnesseResultsRecorder.java:131)
 
at 
hudson.plugins.fitnesse.FitnesseResultsRecorder.getResults(FitnesseResultsRecorder.java:109)
 
at 
hudson.plugins.fitnesse.FitnesseResultsRecorder.perform(FitnesseResultsRecorder.java:73)
 
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:36) 
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:705) 
at 
hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:680)
 
at 
hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:658)
 
at hudson.model.Build$RunnerImpl.post2(Build.java:161) 
at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:627) 
at hudson.model.Run.run(Run.java:1400) 
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
at hudson.model.ResourceController.execute(ResourceController.java:88) 
Build step 'Publish Fitnesse results report' changed build result to FAILURE 
Build step 'Publish Fitnesse results report' marked build as failure 
{quote}

I'm fairly certain this OOME is due to memory usage by this parsing since we 
don't see OOME at any other time, and there is plenty of memory usually 
available according to our monitoring.



  was:
We are seeing OOME's in Jenkins when parsing large Fitnesse results files 
(35mb). For example:
{quote}
Reading results as US-ASCII from /.../fitnesse-result.xml 
Parsing results... 
java.lang.OutOfMemoryError: Java heap space 
at java.util.Arrays.copyOf(Arrays.java:2882) 
at 
java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) 
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515) 
at java.lang.StringBuffer.append(StringBuffer.java:306) 
at 
com.sun.org.apache.xalan.internal.xsltc.runtime.StringValueHandler.characters(StringValueHandler.java:49)
 
at 
com.sun.org.apache.xml.internal.utils.FastStringBuffer.sendSAXcharacters(FastStringBuffer.java:998)
 
at 
com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM2.dispatchCharactersEvents(SAX2DTM2.java:3068)
 
at 
com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl.characters(SAXImpl.java:1562)
 
at 
com.sun.org.apache.xalan.internal.xsltc.dom.DOMAdapter.characters(DOMAdapter.java:330)
 
at GregorSamsa.template$dot$2() 
at GregorSamsa.applyTemplates() 
at GregorSamsa.template$dot$0() 
at GregorSamsa.applyTemplates() 
at GregorSamsa.applyTemplates() 
at GregorSamsa.transform() 
at 
com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:603)
 
at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:709)
 
at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
 
at 
hudson.plugins.fitnesse.NativePageCountsParser.transformRawResults(NativePageCountsParser.java:25)
 
at 
hudson.plugins.fitnesse.NativePageCountsParser.parse(NativePageCountsParser.java:17)
 
at