You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by HasanK <ha...@gmail.com> on 2010/02/12 19:13:31 UTC

Tiff Image conversion in a multithreaded environment

Hi,
We are using Apache FOP 0.95 to produce TIFF images in CCITT T.6 format in a
j2ee application(thus this is a multithreaded environment). We also use FOP
0.95 to produce pdf images in the same application with the same inputs. A
while back we had an issue where producing the tiff images resulted in
extreme overlapping in the images(In some cases the application produced
blank images). Upon initial observation it was observed that the
transformation that results in the tiff images is not thread safe, while the
one producing the pdf images is. To test this hypothesis, we have produced
the test case named Test_FopTiffTransformMultithreaded.java(attached). This
test case provides proof of concept that the tiff image conversion is not
thread safe. A few notes on the test case:
1) The following jars would be needed in the class path:
-commons-io-1.3.1.jar
-fop-0.95.jar
-xml-apis-ext-1.3.04.jar
-xmlgraphics-commons-1.3.1.jar
-spring-2.0.5.jar
-junit-3.8.1.jar
-jdom.jar
-saxpath.jar
-commons-logging-1.04.jar
-avalon-framework-4.2.0.jar
2) The properties(static strings) in the test case translate as follows:
EXPECTED_THREAD_COUNT -> the expected number of threads we want to test
with(value 1 to N)
OUTPUT_FILE_DIRECTORY_PATH -> The file path to the directory where the
images are stored
OUTPUT_FILE_NAME -> The name of the file that will be output(for example if
this value is "image", and the thread count is 2, then the output files will
be named as "image0", "image1")
OUTPUT_FILE_FORMAT -> this value is expected to be either ".pdf" or ".tiff"
OUTPUT_FILE_FORMAT_TYPE -> this value is expected to be either "pdf" or
"tiff" and must match the file format in the OUTPUT_FILE_FORMAT above
PRINTABLE_FO_PATH -> the file path to the xsl transformation file
3) The xml file which will be rendered(named "InputFile.xml") in this test
case should be placed in the same directory as the test case.
4) Line 181 of this test case shows the following:
                // synchronized (fopFactory)
                // {
                transformer.transform(src, result);
                // }
This indicates a synchronization of the fopFactory object. If this
synchronization block is not present and the output is in tiff images, the
text in the images is overlapped. If this synchronization block is present,
there are SEVERE performance implications on our application as this
synchronization introduces performance issues(I can provide the performance
differential if needed). An example of the correct image(imageCorrect.tiff)
is attached and the overlapped image as a result of the multithreaded
process(EXPECTED_THREAD_COUNT >1) without
synchronization(imageIncorrect.tiff) is also attached.

I am attaching all the files(except the jars) that are needed for this test
case.

The following is my question. How can this tiff image problem be corrected?
As we are working with highly demanding customers(as everyone is :-):-)
http://old.nabble.com/file/p27567366/Test_FopTiffTransformMultithreaded.java
Test_FopTiffTransformMultithreaded.java 
http://old.nabble.com/file/p27567366/InputFile.xml InputFile.xml 
http://old.nabble.com/file/p27567366/Transformer.xsl Transformer.xsl 
http://old.nabble.com/file/p27567366/imageCorrect.tiff imageCorrect.tiff 
http://old.nabble.com/file/p27567366/imageIncorrect.tiff imageIncorrect.tiff
), we need to solve the performance problems as well as the tiff image
issue. We would be really grateful if this issue can be solved.
Thanks
Hasan
-- 
View this message in context: http://old.nabble.com/Tiff-Image-conversion-in-a-multithreaded-environment-tp27567366p27567366.html
Sent from the FOP - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: Tiff Image conversion in a multithreaded environment

Posted by HasanK <ha...@gmail.com>.
Hi,
any reply to my previous post?
-- 
View this message in context: http://old.nabble.com/Tiff-Image-conversion-in-a-multithreaded-environment-tp27567366p27595010.html
Sent from the FOP - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: Tiff Image conversion in a multithreaded environment

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
Hasan,

I've recently fixed a multi-threading problem in the Java2D renderer
which is also responsible for creating TIFF images:
http://svn.apache.org/viewvc?rev=895012&view=rev

Please check if FOP Trunk works for you. Good luck!

On 12.02.2010 19:13:31 HasanK wrote:
> 
> Hi,
> We are using Apache FOP 0.95 to produce TIFF images in CCITT T.6 format in a
> j2ee application(thus this is a multithreaded environment). We also use FOP
> 0.95 to produce pdf images in the same application with the same inputs. A
> while back we had an issue where producing the tiff images resulted in
> extreme overlapping in the images(In some cases the application produced
> blank images). Upon initial observation it was observed that the
> transformation that results in the tiff images is not thread safe, while the
> one producing the pdf images is. To test this hypothesis, we have produced
> the test case named Test_FopTiffTransformMultithreaded.java(attached). This
> test case provides proof of concept that the tiff image conversion is not
> thread safe. A few notes on the test case:
> 1) The following jars would be needed in the class path:
> -commons-io-1.3.1.jar
> -fop-0.95.jar
> -xml-apis-ext-1.3.04.jar
> -xmlgraphics-commons-1.3.1.jar
> -spring-2.0.5.jar
> -junit-3.8.1.jar
> -jdom.jar
> -saxpath.jar
> -commons-logging-1.04.jar
> -avalon-framework-4.2.0.jar
> 2) The properties(static strings) in the test case translate as follows:
> EXPECTED_THREAD_COUNT -> the expected number of threads we want to test
> with(value 1 to N)
> OUTPUT_FILE_DIRECTORY_PATH -> The file path to the directory where the
> images are stored
> OUTPUT_FILE_NAME -> The name of the file that will be output(for example if
> this value is "image", and the thread count is 2, then the output files will
> be named as "image0", "image1")
> OUTPUT_FILE_FORMAT -> this value is expected to be either ".pdf" or ".tiff"
> OUTPUT_FILE_FORMAT_TYPE -> this value is expected to be either "pdf" or
> "tiff" and must match the file format in the OUTPUT_FILE_FORMAT above
> PRINTABLE_FO_PATH -> the file path to the xsl transformation file
> 3) The xml file which will be rendered(named "InputFile.xml") in this test
> case should be placed in the same directory as the test case.
> 4) Line 181 of this test case shows the following:
>                 // synchronized (fopFactory)
>                 // {
>                 transformer.transform(src, result);
>                 // }
> This indicates a synchronization of the fopFactory object. If this
> synchronization block is not present and the output is in tiff images, the
> text in the images is overlapped. If this synchronization block is present,
> there are SEVERE performance implications on our application as this
> synchronization introduces performance issues(I can provide the performance
> differential if needed). An example of the correct image(imageCorrect.tiff)
> is attached and the overlapped image as a result of the multithreaded
> process(EXPECTED_THREAD_COUNT >1) without
> synchronization(imageIncorrect.tiff) is also attached.
> 
> I am attaching all the files(except the jars) that are needed for this test
> case.
> 
> The following is my question. How can this tiff image problem be corrected?
> As we are working with highly demanding customers(as everyone is :-):-)
> http://old.nabble.com/file/p27567366/Test_FopTiffTransformMultithreaded.java
> Test_FopTiffTransformMultithreaded.java 
> http://old.nabble.com/file/p27567366/InputFile.xml InputFile.xml 
> http://old.nabble.com/file/p27567366/Transformer.xsl Transformer.xsl 
> http://old.nabble.com/file/p27567366/imageCorrect.tiff imageCorrect.tiff 
> http://old.nabble.com/file/p27567366/imageIncorrect.tiff imageIncorrect.tiff
> ), we need to solve the performance problems as well as the tiff image
> issue. We would be really grateful if this issue can be solved.
> Thanks
> Hasan
> -- 
> View this message in context: http://old.nabble.com/Tiff-Image-conversion-in-a-multithreaded-environment-tp27567366p27567366.html
> Sent from the FOP - Users mailing list archive at Nabble.com.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org




Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org