Author: ssteiner Date: Tue Jul 23 10:41:07 2019 New Revision: 1863625 URL: http://svn.apache.org/viewvc?rev=1863625&view=rev Log: FOP-2874: Conserve memory policy fails in multi-threaded environment
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/area/CachedRenderPagesModel.java xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ConserveMemoryTestCase.java Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/area/CachedRenderPagesModel.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/area/CachedRenderPagesModel.java?rev=1863625&r1=1863624&r2=1863625&view=diff ============================================================================== --- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/area/CachedRenderPagesModel.java (original) +++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/area/CachedRenderPagesModel.java Tue Jul 23 10:41:07 2019 @@ -123,8 +123,8 @@ public class CachedRenderPagesModel exte try { // save page to cache ObjectOutputStream tempstream; - String fname = "fop-page-" + page.getPageIndex() + ".ser"; - URI tempURI = tempBaseURI.resolve(fname); + String fname = "/fop-page-" + page.getPageIndex() + ".ser"; + URI tempURI = URI.create(tempBaseURI + fname); OutputStream outStream = renderer.getUserAgent().getResourceResolver().getOutputStream(tempURI); tempstream = new ObjectOutputStream(new BufferedOutputStream(outStream)); try { Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ConserveMemoryTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ConserveMemoryTestCase.java?rev=1863625&r1=1863624&r2=1863625&view=diff ============================================================================== --- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ConserveMemoryTestCase.java (original) +++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/render/ConserveMemoryTestCase.java Tue Jul 23 10:41:07 2019 @@ -19,6 +19,9 @@ package org.apache.fop.render; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import javax.xml.transform.Result; import javax.xml.transform.Source; @@ -38,8 +41,8 @@ import org.apache.fop.apps.FopFactory; public class ConserveMemoryTestCase { @Test - public void testLink() throws TransformerException, SAXException { - String fo = "<fo:root xmlns:fo=\"http://www.w3.org/1999/XSL/Format\">\n" + public void testLink() throws Throwable { + final String fo = "<fo:root xmlns:fo=\"http://www.w3.org/1999/XSL/Format\">\n" + " <fo:layout-master-set>\n" + " <fo:simple-page-master master-name=\"simple\" page-height=\"27.9cm\" page-width=\"21.6cm\">\n" + " <fo:region-body />\n" @@ -51,7 +54,26 @@ public class ConserveMemoryTestCase { + " </fo:flow>\n" + " </fo:page-sequence>\n" + "</fo:root>"; - foToOutput(fo); + + ExecutorService es = Executors.newCachedThreadPool(); + final Throwable[] ex = new Throwable[1]; + for (int i = 0; i < 5; i++) { + Runnable thread = new Runnable() { + public void run() { + try { + foToOutput(fo); + } catch (Throwable e) { + ex[0] = e; + } + } + }; + es.execute(thread); + } + es.shutdown(); + es.awaitTermination(1, TimeUnit.MINUTES); + if (ex[0] != null) { + throw ex[0]; + } } private void foToOutput(String fo) throws SAXException, TransformerException { --------------------------------------------------------------------- To unsubscribe, e-mail: fop-commits-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-commits-h...@xmlgraphics.apache.org