Mark,

On 2/25/2011 7:01 AM, Mark Thomas wrote:
> So, the questions we need to decide:
> 
> 1. Is the fix for bug 50748 correct? I think it is.

+0

> 2. Should Tomcat try and handle this situation (e.g. if any bytes have
> been written by a filter, commit the response). This could be tricky to
> get right when forwards are involved and the response is meant to have
> been cleared. I'm leaning towards not doing this.

The Filter definitely needs to be able to set headers and append content
to the response entity. I'm not sure about a Filter having a legitimate
reason to write content /before/ the servlet does to the response
entity... I'm having trouble thinking of a use case for that. Given
that, having the Filter write anything to the response stream/writer
seems reasonable to commit the response.

On the other hand, why should a filter act any differently than a
servlet? What I mean is that the response won't be committed when a
servlet writes to the response until the response buffer has been
filled, or an explicit flush() has been called. Also, a servlet should
have the opportunity to reset the response if possible given the commit
state.

I think that makes me -1 on this one.

> 3. Is any filter that writes to the response without wrapping it so any
> calls to setContentLength() can be intercepted and adjusted as necessary
> broken? I think it is.

+1

Where does this fail the TCK? Do we have a broken Filter, or does the
TCK test an unusual/stupid scenario?

> Thoughts? I'd like to reach some conclusions fairly speedily as this
> might hold up a 7.0.9 release. If we conclude that the filter is at
> fault in point 3, we'll need to raise a TCK challenge.

I guess that answers my question.

We could have a "just-pass-the-damned-TCK" configuration flag (or maybe
something less inflammatory) that would change this behavior to
commit-on-write for Filters.

-chris

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to