Memory issue (was: Re: Major issue with image loading in FOP 0.95beta)

2008-05-08 Thread Jean-François El Fouly

Jeremias Maerki a écrit :
And my next problem is to find a way to force memory recycling after 
this long and hefty FOP processing, but until further investigated this 
is OT ;-)



You probably didn't get my hint earlier but with the new image loading
framework you should actually get away with lower memory settings. In my
tests I have been able to produce PDF with little text and many images
with 40MB of VM memory which wasn't possible with 0.94 and earlier.
  


Well, I got the hint, but it seems in contradiction with what I read.
So to take the picture from a bit higher:
- all XSL-FO transformation + FOP generation now work OK.
- this generates 20-30 documents (chapters) for a grand total of about 
150 Mb, to be bound together by iText.

- source XML is 1.5 Mb
- 1011 PNG images for a total of 151 Mb, the largest image is 715 kb.

Now the figures:
- XML - XSL-FO transformation + FOP generation take 15 minutes on a 
pretty decent DELL Server (running Debian 4.0) having all the physical 
RAM possible (staging server for several customers)
- JVM has 2000 Mb (which is BTW the grand max on this 
processor/server/OS/JVM architecture)

- only one instance of FOP launched (one document generation)
- the second next step in the publication process (opening the 150 Mb 
with iText to add the bookmarks) fails immediately (at file open) saying 
it cannot allocate memory


If I try to investigate memory usage using 
Runtime.getRuntime().getFreeMemory() and logging the figures with log4j, 
these are the figures I get:

- before XSLT + FOP: 1900 Mb free/2000 Mb
- end of XSLT + FOP: 241 Mb free
- set FopFactory instance to null as a desperate hint to the GC that FOP 
objects could be/should be recycled
- I force garbage collection using System.gc()[OK, in an application 
server this is a brute force approach, but could not see a more clever 
maneuver ATM]

- 350 Mb free/2000 Mb total
- Bind all chapters with iText
- 250 Mb free
- Force another GC
- 350 Mb free again (so the binding operation has no effect on the 
available memory).

- the next iText step still fails.

Now I don't take runtime.getXXXMemory() for bible word but at least it 
looks like the Xalan + FOP subsystem hogs 1500 Mb of RAM which I 
cannot recover.
So I hired the team member who's competent in profiler usage next week 
but I must say at the moment I'm still stuck :-(


Of course I've made my homework and read the f...riendly manual before 
daring to ask.

Did I miss any important indication ?



Re: Memory issue (was: Re: Major issue with image loading in FOP 0.95beta)

2008-05-08 Thread Jeremias Maerki
I've done extensive tests about memory allocation with FOP when
implementing the new image loading framework and in my case the memory
was always released. So, some results from a profiler would be helpful.

Anyway, what I meant with my hint was that the iText step might not be
necessary anymore and that you should be able to safely reduce -Xmx on
the JVM (provided your document doesn't contain to much non-image
content). But if you release FopFactory and the memory is still not
reclaimed something's wrong somewhere and I have a somewhat hard time
believing that FOP itself somehow still holds on to it. Please make sure
you don't hold on to the FOUserAgent and other FOP-related objects
because they might have a reference to the FopFactory.

On 08.05.2008 08:40:55 Jean-François El Fouly wrote:
 Jeremias Maerki a écrit :
  And my next problem is to find a way to force memory recycling after 
  this long and hefty FOP processing, but until further investigated this 
  is OT ;-)
  
 
  You probably didn't get my hint earlier but with the new image loading
  framework you should actually get away with lower memory settings. In my
  tests I have been able to produce PDF with little text and many images
  with 40MB of VM memory which wasn't possible with 0.94 and earlier.

 
 Well, I got the hint, but it seems in contradiction with what I read.
 So to take the picture from a bit higher:
 - all XSL-FO transformation + FOP generation now work OK.
 - this generates 20-30 documents (chapters) for a grand total of about 
 150 Mb, to be bound together by iText.
 - source XML is 1.5 Mb
 - 1011 PNG images for a total of 151 Mb, the largest image is 715 kb.
 
 Now the figures:
 - XML - XSL-FO transformation + FOP generation take 15 minutes on a 
 pretty decent DELL Server (running Debian 4.0) having all the physical 
 RAM possible (staging server for several customers)
 - JVM has 2000 Mb (which is BTW the grand max on this 
 processor/server/OS/JVM architecture)
 - only one instance of FOP launched (one document generation)
 - the second next step in the publication process (opening the 150 Mb 
 with iText to add the bookmarks) fails immediately (at file open) saying 
 it cannot allocate memory
 
 If I try to investigate memory usage using 
 Runtime.getRuntime().getFreeMemory() and logging the figures with log4j, 
 these are the figures I get:
 - before XSLT + FOP: 1900 Mb free/2000 Mb
 - end of XSLT + FOP: 241 Mb free
 - set FopFactory instance to null as a desperate hint to the GC that FOP 
 objects could be/should be recycled
 - I force garbage collection using System.gc()[OK, in an application 
 server this is a brute force approach, but could not see a more clever 
 maneuver ATM]
 - 350 Mb free/2000 Mb total
 - Bind all chapters with iText
 - 250 Mb free
 - Force another GC
 - 350 Mb free again (so the binding operation has no effect on the 
 available memory).
 - the next iText step still fails.
 
 Now I don't take runtime.getXXXMemory() for bible word but at least it 
 looks like the Xalan + FOP subsystem hogs 1500 Mb of RAM which I 
 cannot recover.
 So I hired the team member who's competent in profiler usage next week 
 but I must say at the moment I'm still stuck :-(
 
 Of course I've made my homework and read the f...riendly manual before 
 daring to ask.
 Did I miss any important indication ?
 




Jeremias Maerki


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Memory issue (was: Re: Major issue with image loading in FOP 0.95beta)

2008-05-08 Thread Andreas Delmelle

On May 8, 2008, at 08:40, Jean-François El Fouly wrote:

Hi


Jeremias Maerki a écrit :


And my next problem is to find a way to force memory recycling  
after this long and hefty FOP processing, but until further  
investigated this is OT ;-)
You probably didn't get my hint earlier but with the new image  
loading framework you should actually get away with lower memory  
settings. In my tests I have been able to produce PDF with little  
text and many images with 40MB of VM memory which wasn't possible  
with 0.94 and earlier.


Well, I got the hint, but it seems in contradiction with what I read.


There are, of course, other factors to take into account than simply  
document/image sizes.


Which Java VM are you using? Practically every time someone tells us  
about memory/GC issues, it appears they are using an implementation  
other than Sun (IBM, GNU...)
Up to now, we still have to find out why precisely non-Sun VMs have  
difficulties with FOP...


What options does the Java VM offer to tweak the GC? What options  
does it use by default?



So to take the picture from a bit higher:
- all XSL-FO transformation + FOP generation now work OK.
- this generates 20-30 documents (chapters) for a grand total of  
about 150 Mb, to be bound together by iText.

- source XML is 1.5 Mb
- 1011 PNG images for a total of 151 Mb, the largest image is 715 kb.

Now the figures:
- XML - XSL-FO transformation + FOP generation take 15 minutes on  
a pretty decent DELL Server (running Debian 4.0) having all the  
physical RAM possible (staging server for several customers)


How large would the resulting FO-files be if you dump them to the  
filesystem? The XML by itself says very little. From a 1.5MB XML, you  
could get a FO of a few KB or one of 26MB, depending on the stylesheet.


Does the stylesheet adhere to XSLT best practices? Does it generate a  
lot of redundant fo:blocks, fo:inlines?


- JVM has 2000 Mb (which is BTW the grand max on this processor/ 
server/OS/JVM architecture)

snip /

On my end, that has proven to be more than enough to generate one  
page-sequence with a table of 15 columns, spanning 500+ pages. (Note:  
only text-content, no images; more a test to check the memory usage  
without doing anything special, just a whole lot of FOs)


If I try to investigate memory usage using Runtime.getRuntime 
().getFreeMemory() and logging the figures with log4j, these are  
the figures I get:

- before XSLT + FOP: 1900 Mb free/2000 Mb
- end of XSLT + FOP: 241 Mb free


Yikes! That looks troublesome indeed... :/

- set FopFactory instance to null as a desperate hint to the GC  
that FOP objects could be/should be recycled
- I force garbage collection using System.gc()[OK, in an  
application server this is a brute force approach, but could not  
see a more clever maneuver ATM]


A nit, for the record: There is no such thing as 'forcing garbage  
collection'. The most you can do with System.gc() is indicate to the  
VM that it should run the GC as soon as possible. Admitted, most  
implementations do run the algorithm virtually immediately upon  
execution of the statement, but the Java spec does not mandate such  
behavior. In theory, if the VM is too busy, it could still postpone  
the actual GC-run, until it acquires the necessary resources...



snip /
Now I don't take runtime.getXXXMemory() for bible word but at least  
it looks like the Xalan + FOP subsystem hogs 1500 Mb of RAM which  
I cannot recover.
So I hired the team member who's competent in profiler usage next  
week but I must say at the moment I'm still stuck :-(


If you're not on a Sun VM, then I have a very vague feeling that he's  
going to discover the issue to be related to arrays, a special type  
of object, but I could be wrong about this. Someone once reported  
that the VM seemed to hold on to a lot of arrays. When profiling, he  
discovered that the arrays were referenced nowhere, but still the GC  
did not clean them up.


Of course I've made my homework and read the f...riendly manual  
before daring to ask.

Did I miss any important indication ?



I don't think so, but it seems we might do well by putting some of  
the info concerning JVM/GC implementation we have gathered so far, on  
the website or a Wiki.



Cheers

Andreas
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [SOLVED] Re: Major issue with image loading in FOP 0.95beta

2008-05-07 Thread Jeremias Maerki
On 06.05.2008 15:25:20 Jean-François El Fouly wrote:
 Jeremias Maerki a écrit :
  I've done that now: http://svn.apache.org/viewvc?rev=653704view=rev
  Jean-Fraçois, please download XG Commons Trunk, build it and switch to
  it. Then set
  -Dorg.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext.no-source-reuse=true
  (system property). Hopefully, this will change something. Please let me
  know if it does.

 Yes, your patch does the trick !
 I've built my chapter successfully, then all the chapters of the 
 document and it's OK.
 Congratulations and thanks very much !

Great, now we only have to figure out what the best variant is for a
long-term fix.

 Now I guess you all have to take a decision whether this patch belong to 
 0.95 release because it is probably needed in a number of situations...

If possible, this will go into 0.95.

 And my next problem is to find a way to force memory recycling after 
 this long and hefty FOP processing, but until further investigated this 
 is OT ;-)

You probably didn't get my hint earlier but with the new image loading
framework you should actually get away with lower memory settings. In my
tests I have been able to produce PDF with little text and many images
with 40MB of VM memory which wasn't possible with 0.94 and earlier.


Jeremias Maerki


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Major issue with image loading in FOP 0.95beta

2008-05-06 Thread Jeremias Maerki
Hmm, I guess it was a wise decision to make a beta release before the
final. Please note that the image loading framework is completely new.
The old one (while working fine for a specific set of image types) was a
paing to maintain and extend and it often ate much more memory than
necessary. Some hickups were to be expected and I was hoping I have been
able to fix most of them by now. But maybe not...

http://xmlgraphics.apache.org/fop/0.95/releaseNotes_0.95beta.html

I've done some experiments and put about 20 PNGs (some of which pretty
large) in my private SVN repository (SVN 1.4.5 over HTTPD 2.2). I ran a
multi-threaded test (Sun JVM 1.5.0_15, 4 threads, FOP 0.95beta with
XG Commons 1.3 and FOP Trunk with XG Commons Trunk) against that setup.

My machine: WinXP SP2, Intel Core2Duo E6600

But I cannot see any errors or strange behaviour. Once all the images
have been loaded once they are not requested from the SVN server again 
(at least as long there's enough memory in the JVM). The only thing I've
seen is that if I start a number of threads simultaneously and let them
render the same FO document, each document causes the same files to be
loaded as the framework currently doesn't synchronize concurrent initial
requests for the same URL. Once the PNG is in the cache there are no
more requests against the SVN server.

I dialed the available memory down so the image cache cannot hold all
the images in cache to force the image framework to reload the images
every time. Nothing bad happened. But I don't have a large hardware park
that would allow me to throw more at my SVN repository.

Another thing I've done is put an TCP proxy in between to find out
what's going on on that level. There was no obvious misbehaviour to be
seen there.

I fear you'll have to dive in yourself and find out what exactly is
going wrong. Just to give you an idea what's going on:

FOP always preloads an image before it fully loads it. That means that
it detects the image format and extracts some basic metadata so FOP
knows about the image's intrinsic size. That is used for layout and
allows us not to fully load the image into memory at layout time. Only
when rendering the output file the image is fully loaded. Whenever
possible the original connection that the preloading has been done with
is reused (because some people generate dynamic images using servlets).
The basic change related to your problem with the new image loading
framework: Instead of working with normal InputStreams, the new
framework works with ImageIO's ImageInputStream which provides
convenient methods for working with image files. For non-File-URLs, the
ImageInputStream is created using ImageIO.createImageInputStream(Object).
By default, ImageIO uses a cached stream where the stream data is
copied to a local file in a temp directory from which the actual data is
accessed. One thing you can try is to disable this caching to see if
anything changes: ImageIO.setUseCache(false) should do that (call it at
application startup or before you create the FopFactory). If that
changes the behaviour it may give us an idea where to look next.

You can also enable some logging in the image loading framework to get
some information what's going on inside. That would be the
org.apache.xmlgraphics.image.loader category.

Without being able to reproduce the behaviour it is difficult to help.
Some further questions from my side:
- How many different PNGs are being accessed?
- Are they smaller or bigger files?
- Are you running FOP in a multi-threaded fashion? Or from many
different machines against the SVN repository?

On 05.05.2008 18:09:55 Jean-François El Fouly wrote:
 Andreas Delmelle a écrit :
  On May 5, 2008, at 17:22, Jean-François El Fouly wrote:
 
  Hi
 
  Sorry, I guess in the strictest sense this is xmlgraphics-common 
  related now, but it was discovered and investigated using FOP 0.95beta.
 
  We upgraded from 0.94 to use the new bookmarks features and our 
  software became globally unstable, hanging randomly during PDF 
  generation -- to be precise, getting all kinds of random problems 
  during image loading.
  The images we use are stored in SVN and retrieved via their HTTP URLs 
  from an SVN server. Reading the SVN logs, we see a very different 
  behaviour between 0.94 (which worked fine and has been retested 
  since) and 0.95beta: the FOP requests litteraly suffocate the SVN 
  server, sending quite a lot of requests for images and taking way too 
  long to consume the responses. So, after a (random) while, the SVN 
  server gives up (timeout) and the FOP application on the other side 
  crashes immediately after. At least that is how we understand the 
  problem after testing and reading all sorts of server logs (with a 
  sysadmin) for a whole day.
  This looks like a major regression and makes 0.95beta completely 
  unusable for us -- though we badly need the new features :-(
 
  If anybody had an idea, I must say I'd be extremely grateful...
 
  Two 

Re: Major issue with image loading in FOP 0.95beta

2008-05-06 Thread Jeremias Maerki
On 05.05.2008 23:39:15 Jean-François El Fouly wrote:
 Andreas Delmelle a écrit :
  For now, you also spoke about the requests suffocating the server. 
  Do you mean that there are also a lot /more/ requests, or only that 
  they take longer to process on the FOP-side? If you also have an 
  increase in the total number of requests, this could mean that the 
  image-loading framework (unnecessarily?) tries to access the same 
  images multiple times, which may already provide a pointer as to where 
  to start looking in the code.
 
 No, but the behaviour looks very different in the server traces.
 
 FOP 0.94: a sequence of : one request / one response / one request / one 
 response etc.
 with constant (server) response time seen in the server logs.
 
 Same application with FOP 0.95beta: seems to launch a whole bunch of 
 requests at the same time, say 5..10.15.. requests for different images 
 seen at the same time in the logs. And more a few seconds later.
 Now the way we interpret the SVN server logs is that the corresponding 
 responses are consumed slower and slower and the SVN server response 
 time traced in the logs is growing in a linear way until it reaches the 
 server timeout (300 s = 5 min. was the default). Then the SVN server 
 supposes nobody's listening to an answer and somehow closes the 
 connection. And then FOP on the other side crashes immediately.
 Looks somehow like someone very hungry ordering 10 plates at the same 
 time in a restaurant and eating slowly. Until the waiter gives up. (If 
 you forgive me the comparison.)

I've just re-read that and it suddenly made me think: could it be that
you produce really large FO documents (not many smaller ones) with many
images and the effect here is simply the timeout of the HTTP connection because
it is kept open after preloading the image? I'll add a system property
to the image loader framework so you can disable the stream reusage.
That could work around the problem. For a longer-term solution I see two
possibilities:
1. Add a hint to fo:external-graphic that a URL is dynamic and that the
stream should be reused. Otherwise, it is closed immediately and
reopened when the full image is read. That idea is not new but never got
realized.
2. Add some intelligence to the stream cache so it closes the stream if
it is not rerequested within a given time frame to avoid timeouts.



Jeremias Maerki


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Major issue with image loading in FOP 0.95beta

2008-05-06 Thread Jean-François El Fouly

Jeremias Maerki a écrit :

I've just re-read that and it suddenly made me think: could it be that
you produce really large FO documents (not many smaller ones) with many
images and the effect here is simply the timeout of the HTTP connection because
it is kept open after preloading the image? I'll add a system property
to the image loader framework so you can disable the stream reusage.
That could work around the problem. For a longer-term solution I see two
possibilities:
1. Add a hint to fo:external-graphic that a URL is dynamic and that the
stream should be reused. Otherwise, it is closed immediately and
reopened when the full image is read. That idea is not new but never got
realized.
2. Add some intelligence to the stream cache so it closes the stream if
it is not rerequested within a given time frame to avoid timeouts.
  
In fact we produce a very large document but it used to make FOP explode 
(OutOfMemoryError) just to generate one section. So we generate each 
chapter separately and bind them using iText. Basically that is why we 
need 0.95beta to use the named destinations, otherwise we can't add 
bookmarks at the end.

So the problem occurs generating just one chapter.

Here are the figures:
- That chapter has 174 images, 84 unique PNG's for a total of 14 Mb. The 
smallest image is 2 kb, the largest is 395 kb.
The whole chapter generated with FOP 0.94 is 69 pages, for a PDF that 
weighs 14.8 Mb.


The whole document is about 900 pages and currently weighs about 150 Mb.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Major issue with image loading in FOP 0.95beta

2008-05-06 Thread Jeremias Maerki
On 06.05.2008 10:14:03 Jeremias Maerki wrote:
 On 05.05.2008 23:39:15 Jean-François El Fouly wrote:
  Andreas Delmelle a écrit :
   For now, you also spoke about the requests suffocating the server. 
   Do you mean that there are also a lot /more/ requests, or only that 
   they take longer to process on the FOP-side? If you also have an 
   increase in the total number of requests, this could mean that the 
   image-loading framework (unnecessarily?) tries to access the same 
   images multiple times, which may already provide a pointer as to where 
   to start looking in the code.
  
  No, but the behaviour looks very different in the server traces.
  
  FOP 0.94: a sequence of : one request / one response / one request / one 
  response etc.
  with constant (server) response time seen in the server logs.
  
  Same application with FOP 0.95beta: seems to launch a whole bunch of 
  requests at the same time, say 5..10.15.. requests for different images 
  seen at the same time in the logs. And more a few seconds later.
  Now the way we interpret the SVN server logs is that the corresponding 
  responses are consumed slower and slower and the SVN server response 
  time traced in the logs is growing in a linear way until it reaches the 
  server timeout (300 s = 5 min. was the default). Then the SVN server 
  supposes nobody's listening to an answer and somehow closes the 
  connection. And then FOP on the other side crashes immediately.
  Looks somehow like someone very hungry ordering 10 plates at the same 
  time in a restaurant and eating slowly. Until the waiter gives up. (If 
  you forgive me the comparison.)
 
 I've just re-read that and it suddenly made me think: could it be that
 you produce really large FO documents (not many smaller ones) with many
 images and the effect here is simply the timeout of the HTTP connection 
 because
 it is kept open after preloading the image? I'll add a system property
 to the image loader framework so you can disable the stream reusage.

I've done that now: http://svn.apache.org/viewvc?rev=653704view=rev
Jean-Fraçois, please download XG Commons Trunk, build it and switch to
it. Then set
-Dorg.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext.no-source-reuse=true
(system property). Hopefully, this will change something. Please let me
know if it does.

 That could work around the problem. For a longer-term solution I see two
 possibilities:
 1. Add a hint to fo:external-graphic that a URL is dynamic and that the
 stream should be reused. Otherwise, it is closed immediately and
 reopened when the full image is read. That idea is not new but never got
 realized.
 2. Add some intelligence to the stream cache so it closes the stream if
 it is not rerequested within a given time frame to avoid timeouts.




Jeremias Maerki


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Major issue with image loading in FOP 0.95beta

2008-05-06 Thread Jean-François El Fouly

I'll dive but just to answer the simplest questions:

Jeremias Maerki a écrit :

Without being able to reproduce the behaviour it is difficult to help.
Some further questions from my side:
- How many different PNGs are being accessed?
  

84

- Are they smaller or bigger files?
  

2 kb to 395 kb.

- Are you running FOP in a multi-threaded fashion? Or from many
different machines against the SVN repository?
  
No, the problem is fully reproductible with one instance of FOP (running 
in JBoss which is a multithreaded server but FOP is given one thread 
only, basically the document is generated as a response from a HTTP 
request).



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Major issue with image loading in FOP 0.95beta

2008-05-06 Thread Jeremias Maerki
On 06.05.2008 10:29:52 Jean-François El Fouly wrote:
 Jeremias Maerki a écrit :
  I've just re-read that and it suddenly made me think: could it be that
  you produce really large FO documents (not many smaller ones) with many
  images and the effect here is simply the timeout of the HTTP connection 
  because
  it is kept open after preloading the image? I'll add a system property
  to the image loader framework so you can disable the stream reusage.
  That could work around the problem. For a longer-term solution I see two
  possibilities:
  1. Add a hint to fo:external-graphic that a URL is dynamic and that the
  stream should be reused. Otherwise, it is closed immediately and
  reopened when the full image is read. That idea is not new but never got
  realized.
  2. Add some intelligence to the stream cache so it closes the stream if
  it is not rerequested within a given time frame to avoid timeouts.

 In fact we produce a very large document but it used to make FOP explode 
 (OutOfMemoryError) just to generate one section. So we generate each 
 chapter separately and bind them using iText. Basically that is why we 
 need 0.95beta to use the named destinations, otherwise we can't add 
 bookmarks at the end.
 So the problem occurs generating just one chapter.

Hehe, in that case I'm pretty sure that FOP 0.95beta should be able to
generate the full document in one run once we've sorted out the timout
problem. Provided you generate one page-sequence for each chapter.

 Here are the figures:
 - That chapter has 174 images, 84 unique PNG's for a total of 14 Mb. The 
 smallest image is 2 kb, the largest is 395 kb.
 The whole chapter generated with FOP 0.94 is 69 pages, for a PDF that 
 weighs 14.8 Mb.
 
 The whole document is about 900 pages and currently weighs about 150 Mb.

Ok, that gives me a good confidence that my temporary fix should address
your problem.

Jeremias Maerki


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[SOLVED] Re: Major issue with image loading in FOP 0.95beta

2008-05-06 Thread Jean-François El Fouly

Jeremias Maerki a écrit :

I've done that now: http://svn.apache.org/viewvc?rev=653704view=rev
Jean-Fraçois, please download XG Commons Trunk, build it and switch to
it. Then set
-Dorg.apache.xmlgraphics.image.loader.impl.AbstractImageSessionContext.no-source-reuse=true
(system property). Hopefully, this will change something. Please let me
know if it does.
  

Yes, your patch does the trick !
I've built my chapter successfully, then all the chapters of the 
document and it's OK.

Congratulations and thanks very much !

Now I guess you all have to take a decision whether this patch belong to 
0.95 release because it is probably needed in a number of situations...


And my next problem is to find a way to force memory recycling after 
this long and hefty FOP processing, but until further investigated this 
is OT ;-)




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Major issue with image loading in FOP 0.95beta

2008-05-05 Thread Andreas Delmelle

On May 5, 2008, at 17:22, Jean-François El Fouly wrote:

Hi

Sorry, I guess in the strictest sense this is xmlgraphics-common  
related now, but it was discovered and investigated using FOP  
0.95beta.


We upgraded from 0.94 to use the new bookmarks features and our  
software became globally unstable, hanging randomly during PDF  
generation -- to be precise, getting all kinds of random problems  
during image loading.
The images we use are stored in SVN and retrieved via their HTTP  
URLs from an SVN server. Reading the SVN logs, we see a very  
different behaviour between 0.94 (which worked fine and has been  
retested since) and 0.95beta: the FOP requests litteraly  
suffocate the SVN server, sending quite a lot of requests for  
images and taking way too long to consume the responses. So, after  
a (random) while, the SVN server gives up (timeout) and the FOP  
application on the other side crashes immediately after. At least  
that is how we understand the problem after testing and reading all  
sorts of server logs (with a sysadmin) for a whole day.
This looks like a major regression and makes 0.95beta completely  
unusable for us -- though we badly need the new features :-(


If anybody had an idea, I must say I'd be extremely grateful...


Two questions, for the moment:
Which image format(s) are you using?
Does the JAI/ImageIO implementation on the box where FOP runs, have a  
native codec to read that format?


If one of the formats is TIFF, and the answer to the second question  
is No, then a possible solution may be to try out a more recent  
version of the xmlgraphics-commons jar.
Jeremias has recently re-activated the old FOP TIFF-loader to avoid  
the fallback to Sun's default pure Java implementation, which is  
significantly slower.



Other than that, I wouldn't have a clue, unfortunately.


HTH!

Andreas
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Major issue with image loading in FOP 0.95beta

2008-05-05 Thread Jean-François El Fouly

Andreas Delmelle a écrit :

On May 5, 2008, at 17:22, Jean-François El Fouly wrote:

Hi

Sorry, I guess in the strictest sense this is xmlgraphics-common 
related now, but it was discovered and investigated using FOP 0.95beta.


We upgraded from 0.94 to use the new bookmarks features and our 
software became globally unstable, hanging randomly during PDF 
generation -- to be precise, getting all kinds of random problems 
during image loading.
The images we use are stored in SVN and retrieved via their HTTP URLs 
from an SVN server. Reading the SVN logs, we see a very different 
behaviour between 0.94 (which worked fine and has been retested 
since) and 0.95beta: the FOP requests litteraly suffocate the SVN 
server, sending quite a lot of requests for images and taking way too 
long to consume the responses. So, after a (random) while, the SVN 
server gives up (timeout) and the FOP application on the other side 
crashes immediately after. At least that is how we understand the 
problem after testing and reading all sorts of server logs (with a 
sysadmin) for a whole day.
This looks like a major regression and makes 0.95beta completely 
unusable for us -- though we badly need the new features :-(


If anybody had an idea, I must say I'd be extremely grateful...


Two questions, for the moment:
Which image format(s) are you using?

PNG only (but lots of them).
Does the JAI/ImageIO implementation on the box where FOP runs, have a 
native codec to read that format?


Will ask / investigate (it's a production server to which I don't have 
direct access). Debian 4.0 on JDK 1.5.0_11 and JBoss 4.2.1.GA.

Thanks !



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Major issue with image loading in FOP 0.95beta

2008-05-05 Thread Andreas Delmelle

On May 5, 2008, at 18:09, Jean-François El Fouly wrote:



Two questions, for the moment:
Which image format(s) are you using?

PNG only (but lots of them).


OK, we recently bumped into Mac OS not having a native TIFF codec.  
With a bit of fiddling, one could make the Sun default pure Java  
implementation available as a fallback, but that ran about 30 times  
slower than FOP's own TIFF loader from 0.94.


Maybe a similar thing is happening with PNG, I don't know. I really  
hope Jeremias chimes in later...


For now, you also spoke about the requests suffocating the server.  
Do you mean that there are also a lot /more/ requests, or only that  
they take longer to process on the FOP-side? If you also have an  
increase in the total number of requests, this could mean that the  
image-loading framework (unnecessarily?) tries to access the same  
images multiple times, which may already provide a pointer as to  
where to start looking in the code.




Cheers

Andreas
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Major issue with image loading in FOP 0.95beta

2008-05-05 Thread Jean-François El Fouly

Andreas Delmelle a écrit :
For now, you also spoke about the requests suffocating the server. 
Do you mean that there are also a lot /more/ requests, or only that 
they take longer to process on the FOP-side? If you also have an 
increase in the total number of requests, this could mean that the 
image-loading framework (unnecessarily?) tries to access the same 
images multiple times, which may already provide a pointer as to where 
to start looking in the code.



No, but the behaviour looks very different in the server traces.

FOP 0.94: a sequence of : one request / one response / one request / one 
response etc.

with constant (server) response time seen in the server logs.

Same application with FOP 0.95beta: seems to launch a whole bunch of 
requests at the same time, say 5..10.15.. requests for different images 
seen at the same time in the logs. And more a few seconds later.
Now the way we interpret the SVN server logs is that the corresponding 
responses are consumed slower and slower and the SVN server response 
time traced in the logs is growing in a linear way until it reaches the 
server timeout (300 s = 5 min. was the default). Then the SVN server 
supposes nobody's listening to an answer and somehow closes the 
connection. And then FOP on the other side crashes immediately.
Looks somehow like someone very hungry ordering 10 plates at the same 
time in a restaurant and eating slowly. Until the waiter gives up. (If 
you forgive me the comparison.)


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]