elsloo opened a new issue #7230:
URL: https://github.com/apache/trafficserver/issues/7230


   When an object requested through ATS that has both `Transfer-Encoding: 
Chunked` and `Content-Length` headers, ATS appears to assume the object is 
chunked and follows those code paths accordingly. However, we observed a case 
on an object (<500 bytes, if relevant) that led the HttpSM to the following 
location:
   
   https://github.com/apache/trafficserver/blob/8.1.x/proxy/http/HttpSM.cc#L2923
   
   This leads to a successful `pssc` (200, 206), `pfsc=INTR`, 
`crc=ERR_READ_ERROR` being logged, but an empty reply to the client. No 
response headers, no error message in the body; nothing. The only way to find 
the issue was to put ATS into debug, see the error message, then, armed with 
this knowledge, hunt for the issue. In our case, the `Transfer-Encoding` should 
not have been present.
   
   While these headers should be used independently, it happened. If this were 
to occur in the future, our ideal state would be a real HTTP 5xx error response 
served to the client instead of nothing, and something more meaningful would be 
logged such that debug is no longer necessary to find the hint that this is the 
problem. `pfsc=INTR` is misleading, because the transaction completed 
successfully between ATS and the upstream system. Instead, ATS should have 
logged `pfsc=FIN` and, if anything, `cfsc` was `INTR` but that still is not 
really descriptive enough to know why the transaction was interrupted/aborted.
   
   The system that served this object to ATS, was, itself, an ATS cache. It was 
able to successfully cache the object with both headers present, and 
presumably, the IMS process allowed this condition to remain for a prolonged 
period of time. A secondary aspect of this issue is that when ATS makes the 
request itself as a consequence of an ATS client request, it can cache the 
response and serve it successfully, as far as its logs are concerned. However, 
the downstream cache, while it is able to fully read the response and the 
upstream cache logs it as a success, it then aborts the request as described. 
One could argue that the upstream cache should have generated an error that 
would have propagated to the downstream cache.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to