W3C home > Mailing lists > Public > xproc-dev@w3.org > November 2009

Memory issues processing 100's input files through xproc script from oxygen 11 calabash

From: Alex Muir <alex.g.muir@gmail.com>
Date: Thu, 26 Nov 2009 19:30:54 +0000
Message-ID: <88b533b90911261130s4e967959s5ca8a37babb1ceb@mail.gmail.com>
To: XProc Dev <xproc-dev@w3.org>
Hi,

I'm not really certain how to go about detecting the location of a memory
problem running xproc in oxygen. I'm getting the memory in oxygen increasing
to 580,000K when running  the following generalized xproc script with
hundreds of input files using calabash, after the script fails the memory
stays at that level. The script processes a few hundred files correctly
before getting an error. I'm loading the files in the xslt as unparsed text
and there are a series of XSLT scripts generally using analyze-string to
identify some content or another and updating the xml content.


I submitted an error to oxygen just in case it can be reproduced. Are tests
being run to process hundreds of input files between say 1000KB to 8000KB
with an initial xsl loading and converting unparsed text into xml using
xproc?

I suppose I'm probably doing something wrong but can anyone reproduce a
similar problem?


<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:meta="
http://www.metaheuristica.com"
  xmlns:c="http://www.w3.org/ns/xproc-step" xmlns:cx="
http://xmlcalabash.com/ns/extensions"
  name="Createi4EnrichMarkup">

    Markup</p:documentation>

  <p:import href="Library.xpl"/>

  <p:input port="source">
    <p:document href="blank.xml"/>
  </p:input>


  <p:output port="result" sequence="true"/>

   <p:variable name="source-folder" select="'file:/C:/2008/'"/>
  <p:variable name="output-folder" select="'../a/'"/>
  <p:variable name="outputFolderNoPageBreaks" select="'../a/d/'"/>
  <p:variable name="outputFolderNoMTOC" select="'../a/x/'"/>
  <p:directory-list>
    <p:with-option name="path" select="$source-folder">
      <p:empty/>
    </p:with-option>
  </p:directory-list>

  <p:for-each name="forEachFile">

    <p:iteration-source select="//c:file"/>
    <!-- <p:output port="result"/>-->

    <p:variable name="fileName" select="c:file/@name"/>


       <!-- series of p:xslt call -->



    <p:choose>
      <p:when test="/document[@YYY= 'true']">
        <p:output port="result"/>


          <!-- series of p:xslt call -->


        <p:choose>
          <p:when test="/document[@XXX >= 15]">
            <p:output port="result"/>


         <!-- series of p:xslt call -->



            <p:documentation> Store XML file Output </p:documentation>
            <p:identity name="out_file"/>
            <p:store name="store">
              <p:with-option name="href"
                select="replace(replace(concat($output-folder, $fileName,
'.xml'),'.html',''),' ','')">
                <p:pipe step="out_file" port="result"/>
              </p:with-option>
            </p:store>

            <p:documentation> Create result XML </p:documentation>
            <p:identity>
              <p:input port="source">
                <p:pipe step="store" port="result"/>
              </p:input>
            </p:identity>

          </p:when>


          <p:otherwise>

            <p:output port="result"/>
            <p:documentation> Store XML file Output </p:documentation>
            <p:identity name="out_file"/>
            <p:store name="store">
              <p:with-option name="href"
                select="replace(replace(concat($outputFolderNoMTOC,
$fileName, '.xml'),'.html',''),' ','')">
                <p:pipe step="out_file" port="result"/>
              </p:with-option>
            </p:store>


            <p:documentation> Create result XML </p:documentation>
            <p:identity>
              <p:input port="source">
                <p:pipe step="store" port="result"/>
              </p:input>
            </p:identity>

          </p:otherwise>

        </p:choose>

      </p:when>
      <p:otherwise>

        <p:output port="result"/>
        <p:documentation> Store XML file Output </p:documentation>
        <p:identity name="out_file"/>
        <p:store name="store">
          <p:with-option name="href"
            select="replace(replace(concat($outputFolderNoPageBreaks,
$fileName, '.xml'),'.html',''),' ','')">
            <p:pipe step="out_file" port="result"/>
          </p:with-option>
        </p:store>


        <p:documentation> Create result XML </p:documentation>
        <p:identity>
          <p:input port="source">
            <p:pipe step="store" port="result"/>
          </p:input>
        </p:identity>

      </p:otherwise>


    </p:choose>





  </p:for-each>

  <p:documentation>Wrap result XML </p:documentation>
  <p:wrap-sequence wrapper="forEachFile"/>
  <p:identity/>
</p:declare-step>


Regards
-- 

Alex
https://sites.google.com/a/utg.edu.gm/alex
Received on Thursday, 26 November 2009 19:31:27 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 26 November 2009 19:31:28 GMT