> -----Original Message-----
> From: Christopher Schultz [mailto:ch...@christopherschultz.net]
> Sent: Tuesday, July 26, 2011 6:15 PM
> To: Tomcat Users List
> Subject: Re: AJP-APR failures on Tomcat 7.0.16 with ISAPI Redirector
> 1.2.32
> 
> Konstantin,
> 
> Such a class would definitely be useful to post on the Wiki.
> 

Hi Christopher,

Some days ago I made an entry in the Tomcat Wiki with such a OutputStream 
decorator class:
http://wiki.apache.org/tomcat/FAQ/KnownIssues#ImageIOIssues

I see that you changed the flush() method in the decorator class to pass 
flush() calls to the underlying stream as long as the stream is set to be 
"active".

The reason that I didn't make this call-through was because it seems that 
flush() is the only method called by the ImageIO (when the Image Writer is 
garbage collected), and by preventing any pass-through of flush(), no errors 
can occur.

When flush() of the decorator class passes its call to the original stream as 
long as it's active, there may be a race condition between the request 
processing thread of the Servlet and the GC thread which collects the Image 
Writer, which possibly (but highly unlikely) could cause a flush() call (from 
GC thread) on the already closed stream, even if the "isActive" flag is 
volatile (please correct me if I'm wrong - I'm not a expert in how GC is 
working).

Also, it seems that ImageIO is calling flush() a few times while writing an 
image, and I wanted to avoid the unnecessary flush() calls. ;-)


Regards,

Konstantin Preißer 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to