SAX, DOM, large XML documents and java.lang.OutOfMemory Errors

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

SAX, DOM, large XML documents and java.lang.OutOfMemory Errors

Henrik Pettersen
All,

I have a question about how Orbeon works internally, how it uses DOM
(it doesn't?) and SAX, and how Orbeon manages its memory.

My problem is that I am getting a "java.lang.OutOfMemoryError: Java
heap space" when I am parsing larger XML documents with the below
pipeline definition. This is (to me) somewhat unexpected, as I
imagined we are talking SAX events all the way,  (hopefully) making
the size of the input XML irrelevant. As a solution, I could of course
increase the heap space, but what would happen if I then sent a really
humongous XML document to my pipeline?

I have attached a zip file with a self contained application that
(sometimes) causes a OutOfMemory error when run on the default
settings of Tomcat 5.5.26, OS X 10.4 and Java 1.5.0_13-b05-241.

Here is my XPL definition:

<p:config xmlns:p="http://www.orbeon.com/oxf/pipeline"
    xmlns:oxf="http://www.orbeon.com/oxf/processors"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xforms="http://www.w3.org/2002/xforms">

    <!-- p:param name="instance" type="input"/ -->
    <p:param name="data" type="output"/>

    <!-- Read in the stylesheet definition -->
    <p:processor name="oxf:url-generator">
        <p:input name="config">
            <config>
                <url>transform.xsl</url>
                <content-type>text/xml</content-type>
                <validating>false</validating>
                <handle-xinclude>false</handle-xinclude>
            </config>
        </p:input>
        <p:output name="data" id="firstXslt" debug="firstXSLT"/>
    </p:processor>

    <!-- Read in the source XML -->
    <p:processor name="oxf:url-generator">
        <p:input name="config">
            <config>
                <url>smith.hotels.xml</url>
                <content-type>text/xml</content-type>
                <validating>false</validating>
                <handle-xinclude>false</handle-xinclude>
            </config>
        </p:input>
        <p:output name="data" id="smithXml" debug="smithXml"/>
    </p:processor>

    <!-- Create the Escenic format: Apply the stylesheet to the source xml  -->
    <p:processor name="oxf:xslt">
        <p:input name="data" href="#smithXml" debug="smithXml"/>
        <p:input name="config" href="#firstXslt" debug="firstXslt"/>
        <p:output name="data" id="escenicXml" debug="escenicXml"/>
    </p:processor>

    <!-- Wired off, just send the transformed XML back to the client
for now (using the identity processor below) -->
    <!-- Call the REST webservice -->
    <!--p:processor name="oxf:xforms-submission">
        <p:input name="submission">
            <xforms:submission method="put"
action="http://localhost:8080/timmy/import"/>
        </p:input>
        <p:input name="request" href="#escenicXml" debug="escenicXml"/>
        <p:output name="response" ref="data" debug="response"/>
    </p:processor-->

   <!-- Just return the transformed XML to the user for now.
        Once we get this right, will send it to the webservice instead
(see above) -->
    <p:processor name="oxf:identity">
        <p:input name="data" href="#escenicXml" debug="escenicXml"/>
        <p:output name="data" ref="data" debug="same"/>
    </p:processor>

</p:config>

And here is the stack trace:

java.lang.OutOfMemoryError: Java heap space
        at org.orbeon.oxf.xml.SAXStore.addToCharBuffer(SAXStore.java:424)
        at org.orbeon.oxf.xml.SAXStore.characters(SAXStore.java:269)
        at org.orbeon.oxf.xml.SAXStore.replay(SAXStore.java:197)
        at org.orbeon.oxf.processor.pipeline.TeeProcessor$1.readImpl(TeeProcessor.java:61)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1400(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$6.run(PipelineProcessor.java:564)
        at org.orbeon.oxf.processor.ProcessorImpl.executeParents(ProcessorImpl.java:536)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1500(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$InternalTopOutput.readImpl(PipelineProcessor.java:560)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)

The exception does not always occur, but appears more frequent with
multiple parallel requests (as expected). I am also seeing Broken Pipe
socket exceptions in the epilogue XPL (when we don't get OutOfMemory
errors), which I think is related to the size of the XML document
returned from the above XPL:

2008-08-15 15:05:34,250 ERROR ProcessorService  - Exception at line
348, column 55 of oxf:/config/epilogue-servlet.xpl (reading processor
output: name='data', id='converted')
java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:747)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347)
        at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:770)
        at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)
        at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:580)
        at org.apache.coyote.Response.doWrite(Response.java:560)
        at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:323)
        at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
        at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
        at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
        at org.orbeon.oxf.processor.serializer.store.ResultStoreOutputStream.write(ResultStoreOutputStream.java:47)
        at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
        at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(StreamEncoder.java:395)
        at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:136)
        at java.io.OutputStreamWriter.write(OutputStreamWriter.java:191)
        at org.orbeon.oxf.util.TextContentHandler.characters(TextContentHandler.java:22)
        at org.orbeon.oxf.processor.serializer.BinaryTextContentHandler.characters(BinaryTextContentHandler.java:166)
        at org.orbeon.oxf.util.ContentHandlerWriter.write(ContentHandlerWriter.java:95)
        at org.orbeon.saxon.tinytree.CharSlice.write(CharSlice.java:170)
        at org.orbeon.saxon.event.XMLEmitter.writeCharSequence(XMLEmitter.java:595)
        at org.orbeon.saxon.event.XMLEmitter.writeEscape(XMLEmitter.java:686)
        at org.orbeon.saxon.event.XMLEmitter.characters(XMLEmitter.java:550)
        at org.orbeon.saxon.event.ReceivingContentHandler.flush(ReceivingContentHandler.java:425)
        at org.orbeon.saxon.event.ReceivingContentHandler.endElement(ReceivingContentHandler.java:332)
        at org.orbeon.oxf.xml.ForwardingContentHandler.endElement(ForwardingContentHandler.java:52)
        at org.orbeon.oxf.xml.ForwardingContentHandler.endElement(ForwardingContentHandler.java:52)
        at org.orbeon.oxf.xml.SAXStore.replay(SAXStore.java:201)
        at org.orbeon.oxf.processor.pipeline.TeeProcessor$1.readImpl(TeeProcessor.java:61)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1400(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$6.run(PipelineProcessor.java:564)
        at org.orbeon.oxf.processor.ProcessorImpl.executeParents(ProcessorImpl.java:536)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1500(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$InternalTopOutput.readImpl(PipelineProcessor.java:560)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.serializer.legacy.XMLSerializer.readInput(XMLSerializer.java:58)
        at org.orbeon.oxf.processor.serializer.HttpTextSerializer$1.readImpl(HttpTextSerializer.java:101)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.serializer.HttpSerializer.readInput(HttpSerializer.java:42)
        at org.orbeon.oxf.processor.serializer.HttpSerializerBase$1.read(HttpSerializerBase.java:151)
        at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsObject(ProcessorImpl.java:452)
        at org.orbeon.oxf.processor.serializer.HttpSerializerBase.start(HttpSerializerBase.java:142)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:230)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:230)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:230)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
        at org.orbeon.oxf.processor.PageFlowControllerProcessor.start(PageFlowControllerProcessor.java:489)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.getInput(PipelineProcessor.java:136)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:85)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1400(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$6.run(PipelineProcessor.java:564)
        at org.orbeon.oxf.processor.ProcessorImpl.executeParents(ProcessorImpl.java:536)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1500(PipelineProcessor.java:62)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$InternalTopOutput.readImpl(PipelineProcessor.java:560)
        at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
        at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
        at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
        at org.orbeon.oxf.processor.NullSerializer.start(NullSerializer.java:31)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
        at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:230)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
        at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
        at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
        at org.orbeon.oxf.processor.PageFlowControllerProcessor.start(PageFlowControllerProcessor.java:489)
        at org.orbeon.oxf.pipeline.InitUtils.runProcessor(InitUtils.java:95)
        at org.orbeon.oxf.webapp.ProcessorService.service(ProcessorService.java:96)
        at org.orbeon.oxf.servlet.OPSServletDelegate.service(OPSServletDelegate.java:148)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
        at java.lang.Thread.run(Thread.java:613)


Is it the size of the input / source XML that causes an OutOfMemory
error? How about these broken pipes? If so, is there anything I can do
to resolve this (except from  -Xmx<size> )? Does anyone else have
experiences with dealing with large XML documents as inputs and/or
outputs? Am I just abusing Orbeon Forms with this type of use case?

Any insight would be much appreciated. Many thanks!

Sincerely,
Henrik Pettersen


--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws

smith.zip (530K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: SAX, DOM, large XML documents and java.lang.OutOfMemory Errors

Henrik Pettersen
Forgot to mention which version of Orbeon I am running:
orbeon-3.6.0.200806260137 nightly build

Henrik

On Fri, Aug 15, 2008 at 3:12 PM, Henrik Pettersen <[hidden email]> wrote:
All,

I have a question about how Orbeon works internally, how it uses DOM
(it doesn't?) and SAX, and how Orbeon manages its memory.

My problem is that I am getting a "java.lang.OutOfMemoryError: Java
heap space" when I am parsing larger XML documents with the below
pipeline definition. This is (to me) somewhat unexpected, as I
imagined we are talking SAX events all the way,  (hopefully) making
the size of the input XML irrelevant. As a solution, I could of course
increase the heap space, but what would happen if I then sent a really
humongous XML document to my pipeline?

I have attached a zip file with a self contained application that
(sometimes) causes a OutOfMemory error when run on the default
settings of Tomcat 5.5.26, OS X 10.4 and Java 1.5.0_13-b05-241.

Here is my XPL definition:

<p:config xmlns:p="http://www.orbeon.com/oxf/pipeline"
   xmlns:oxf="http://www.orbeon.com/oxf/processors"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:xforms="http://www.w3.org/2002/xforms">

   <!-- p:param name="instance" type="input"/ -->
   <p:param name="data" type="output"/>

   <!-- Read in the stylesheet definition -->
   <p:processor name="oxf:url-generator">
       <p:input name="config">
           <config>
               <url>transform.xsl</url>
               <content-type>text/xml</content-type>
               <validating>false</validating>
               <handle-xinclude>false</handle-xinclude>
           </config>
       </p:input>
       <p:output name="data" id="firstXslt" debug="firstXSLT"/>
   </p:processor>

   <!-- Read in the source XML -->
   <p:processor name="oxf:url-generator">
       <p:input name="config">
           <config>
               <url>smith.hotels.xml</url>
               <content-type>text/xml</content-type>
               <validating>false</validating>
               <handle-xinclude>false</handle-xinclude>
           </config>
       </p:input>
       <p:output name="data" id="smithXml" debug="smithXml"/>
   </p:processor>

   <!-- Create the Escenic format: Apply the stylesheet to the source xml  -->
   <p:processor name="oxf:xslt">
       <p:input name="data" href="#smithXml" debug="smithXml"/>
       <p:input name="config" href="#firstXslt" debug="firstXslt"/>
       <p:output name="data" id="escenicXml" debug="escenicXml"/>
   </p:processor>

   <!-- Wired off, just send the transformed XML back to the client
for now (using the identity processor below) -->
   <!-- Call the REST webservice -->
   <!--p:processor name="oxf:xforms-submission">
       <p:input name="submission">
           <xforms:submission method="put"
action="http://localhost:8080/timmy/import"/>
       </p:input>
       <p:input name="request" href="#escenicXml" debug="escenicXml"/>
       <p:output name="response" ref="data" debug="response"/>
   </p:processor-->

  <!-- Just return the transformed XML to the user for now.
       Once we get this right, will send it to the webservice instead
(see above) -->
   <p:processor name="oxf:identity">
       <p:input name="data" href="#escenicXml" debug="escenicXml"/>
       <p:output name="data" ref="data" debug="same"/>
   </p:processor>

</p:config>

And here is the stack trace:

java.lang.OutOfMemoryError: Java heap space
       at org.orbeon.oxf.xml.SAXStore.addToCharBuffer(SAXStore.java:424)
       at org.orbeon.oxf.xml.SAXStore.characters(SAXStore.java:269)
       at org.orbeon.oxf.xml.SAXStore.replay(SAXStore.java:197)
       at org.orbeon.oxf.processor.pipeline.TeeProcessor$1.readImpl(TeeProcessor.java:61)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1400(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$6.run(PipelineProcessor.java:564)
       at org.orbeon.oxf.processor.ProcessorImpl.executeParents(ProcessorImpl.java:536)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1500(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$InternalTopOutput.readImpl(PipelineProcessor.java:560)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)

The exception does not always occur, but appears more frequent with
multiple parallel requests (as expected). I am also seeing Broken Pipe
socket exceptions in the epilogue XPL (when we don't get OutOfMemory
errors), which I think is related to the size of the XML document
returned from the above XPL:

2008-08-15 15:05:34,250 ERROR ProcessorService  - Exception at line
348, column 55 of oxf:/config/epilogue-servlet.xpl (reading processor
output: name='data', id='converted')
java.net.SocketException: Broken pipe
       at java.net.SocketOutputStream.socketWrite0(Native Method)
       at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
       at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
       at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:747)
       at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:432)
       at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:347)
       at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:770)
       at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)
       at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:580)
       at org.apache.coyote.Response.doWrite(Response.java:560)
       at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361)
       at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:323)
       at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
       at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
       at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
       at org.orbeon.oxf.processor.serializer.store.ResultStoreOutputStream.write(ResultStoreOutputStream.java:47)
       at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
       at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(StreamEncoder.java:395)
       at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:136)
       at java.io.OutputStreamWriter.write(OutputStreamWriter.java:191)
       at org.orbeon.oxf.util.TextContentHandler.characters(TextContentHandler.java:22)
       at org.orbeon.oxf.processor.serializer.BinaryTextContentHandler.characters(BinaryTextContentHandler.java:166)
       at org.orbeon.oxf.util.ContentHandlerWriter.write(ContentHandlerWriter.java:95)
       at org.orbeon.saxon.tinytree.CharSlice.write(CharSlice.java:170)
       at org.orbeon.saxon.event.XMLEmitter.writeCharSequence(XMLEmitter.java:595)
       at org.orbeon.saxon.event.XMLEmitter.writeEscape(XMLEmitter.java:686)
       at org.orbeon.saxon.event.XMLEmitter.characters(XMLEmitter.java:550)
       at org.orbeon.saxon.event.ReceivingContentHandler.flush(ReceivingContentHandler.java:425)
       at org.orbeon.saxon.event.ReceivingContentHandler.endElement(ReceivingContentHandler.java:332)
       at org.orbeon.oxf.xml.ForwardingContentHandler.endElement(ForwardingContentHandler.java:52)
       at org.orbeon.oxf.xml.ForwardingContentHandler.endElement(ForwardingContentHandler.java:52)
       at org.orbeon.oxf.xml.SAXStore.replay(SAXStore.java:201)
       at org.orbeon.oxf.processor.pipeline.TeeProcessor$1.readImpl(TeeProcessor.java:61)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1400(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$6.run(PipelineProcessor.java:564)
       at org.orbeon.oxf.processor.ProcessorImpl.executeParents(ProcessorImpl.java:536)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1500(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$InternalTopOutput.readImpl(PipelineProcessor.java:560)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.serializer.legacy.XMLSerializer.readInput(XMLSerializer.java:58)
       at org.orbeon.oxf.processor.serializer.HttpTextSerializer$1.readImpl(HttpTextSerializer.java:101)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.serializer.HttpSerializer.readInput(HttpSerializer.java:42)
       at org.orbeon.oxf.processor.serializer.HttpSerializerBase$1.read(HttpSerializerBase.java:151)
       at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsObject(ProcessorImpl.java:452)
       at org.orbeon.oxf.processor.serializer.HttpSerializerBase.start(HttpSerializerBase.java:142)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:230)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:230)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:230)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
       at org.orbeon.oxf.processor.PageFlowControllerProcessor.start(PageFlowControllerProcessor.java:489)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.getInput(PipelineProcessor.java:136)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:85)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.IdentityProcessor$1.readImpl(IdentityProcessor.java:33)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$000(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$2.run(PipelineProcessor.java:92)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$100(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$1.readImpl(PipelineProcessor.java:90)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor$1.readImpl(ConcreteChooseProcessor.java:122)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1400(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$6.run(PipelineProcessor.java:564)
       at org.orbeon.oxf.processor.ProcessorImpl.executeParents(ProcessorImpl.java:536)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.access$1500(PipelineProcessor.java:62)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$InternalTopOutput.readImpl(PipelineProcessor.java:560)
       at org.orbeon.oxf.processor.ProcessorImpl$6.read(ProcessorImpl.java:994)
       at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1177)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:349)
       at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:354)
       at org.orbeon.oxf.processor.NullSerializer.start(NullSerializer.java:31)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
       at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:230)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor$11.run(PipelineProcessor.java:644)
       at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:518)
       at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:641)
       at org.orbeon.oxf.processor.PageFlowControllerProcessor.start(PageFlowControllerProcessor.java:489)
       at org.orbeon.oxf.pipeline.InitUtils.runProcessor(InitUtils.java:95)
       at org.orbeon.oxf.webapp.ProcessorService.service(ProcessorService.java:96)
       at org.orbeon.oxf.servlet.OPSServletDelegate.service(OPSServletDelegate.java:148)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
       at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
       at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
       at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
       at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
       at java.lang.Thread.run(Thread.java:613)


Is it the size of the input / source XML that causes an OutOfMemory
error? How about these broken pipes? If so, is there anything I can do
to resolve this (except from  -Xmx<size> )? Does anyone else have
experiences with dealing with large XML documents as inputs and/or
outputs? Am I just abusing Orbeon Forms with this type of use case?

Any insight would be much appreciated. Many thanks!

Sincerely,
Henrik Pettersen



--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws