-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Konstantin,
On 8/23/2011 4:02 PM, Konstantin Preißer wrote: > 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). I added the flush() pass-through in case you actually wanted to flush the stream. It seems reasonable that you might want to flush the buffer at some point, and turning flush() into a no-op didn't seem like a good idea. I would expect the image writer to be available for GC after the request was processed, but I guess the request could have operations after the ImageIO is actually done and you're right: the GC could kick-in virtually at any time. If you use your wrapper class as a fire-and-forget kind of thing while maintaining the original reference to the OutputStream, I suppose you still have complete control over flushing that underlying stream. > Also, it seems that ImageIO is calling flush() a few times while > writing an image, and I wanted to avoid the unnecessary flush() > calls. ;-) That's a different story :) - -chris -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk5UEXkACgkQ9CaO5/Lv0PCiNQCgu1foU5uwo63iExja+Wf+WPys 8iIAoJRaIucq9losxjKp0kkhUs6ycZYj =HDoE -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org