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: [email protected]
For additional commands, e-mail: [email protected]