Uploaded image for project: 'FOP'
  1. FOP
  2. FOP-2561

Multithreaded FOP conserve memory failure

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.0
    • None
    • None
    • None

    Description

      Hi Guys,

      I'm dealing with really large data so using conserve memory flag as below

      foUserAgent.setConserveMemoryPolicy(true);
      

      But it seems that in multithreaded mode all of the threads use the same default location set by the resolver:

      CachedRenderPagesModel.class:  tempBaseURI = TEMP_URI_GENERATOR.generate();
      
      So I can see in the logs:
      ...
      Delegating to default resolver for uri: tmp:/fop-page-873.ser
      ...
      

      But in multithreaded configuration I'm getting the below exception:

      13:59:53.334 [task-scheduler-4] ERROR org.apache.fop.apps.FOUserAgent- Error while serializing page 4. Reason: java.io.IOException: /tmp/fop-page-3.ser2704106194054979958.fop.tmp has been already created for /fop-page-3.ser
      java.io.IOException: /tmp/fop-page-3.ser2704106194054979958.fop.tmp has been already created for /fop-page-3.ser
      	at org.apache.fop.apps.io.ResourceResolverFactory$DefaultTempResourceResolver.createTempFile(ResourceResolverFactory.java:187) ~[fop-2.0.jar!/:na]
      	at org.apache.fop.apps.io.ResourceResolverFactory$DefaultTempResourceResolver.getOutputStream(ResourceResolverFactory.java:199) ~[fop-2.0.jar!/:na]
      	at org.apache.fop.apps.io.ResourceResolverFactory$TempAwareResourceResolver.getOutputStream(ResourceResolverFactory.java:159) ~[fop-2.0.jar!/:na]
      	at org.apache.fop.apps.io.ResourceResolverFactory$DefaultResourceResolver.getOutputStream(ResourceResolverFactory.java:126) ~[fop-2.0.jar!/:na]
      	at com.xxxxxxx.fop.XXXXXX.getOutputStream(XXXXXX.java:87) ~[xxx.jar!/:na]
      	at org.apache.fop.apps.io.InternalResourceResolver.getOutputStream(InternalResourceResolver.java:103) ~[fop-2.0.jar!/:na]
      	at org.apache.fop.area.CachedRenderPagesModel.savePage(CachedRenderPagesModel.java:128) [fop-2.0.jar!/:na]
      	at org.apache.fop.area.CachedRenderPagesModel.checkPreparedPages(CachedRenderPagesModel.java:110) [fop-2.0.jar!/:na]
      	at org.apache.fop.area.RenderPagesModel.addPage(RenderPagesModel.java:146) [fop-2.0.jar!/:na]
      

      Can you please advise if there is a way to maybe configure it for multithreaded mode - maybe I'm missing something? How to make this tmp files unique...
      Or it is rather a bug?

      Attachments

        Activity

          People

            Unassigned Unassigned
            zerkowsm Maciej Zerkowski
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: