[
https://issues.apache.org/jira/browse/TS-3049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14116430#comment-14116430
]
Sudheer Vinukonda edited comment on TS-3049 at 8/30/14 3:38 PM:
----------------------------------------------------------------
Please note that this patch only tried to optimize the copy portion that was
actually introduced in TS-2889. With the copy as it is, I don't see browsers
(both spdy and non-spdy) having issues (although, I did not actually verify the
byte count at the client for each case). Are you suggesting the copy should be
avoided for spdy client?
Would it make sense to commit the patch (if necessary, even skip the copy
portion), since it solves the close connection handling and let the copy
portion be tracked using TS-2889?
was (Author: sudheerv):
Please note that this patch only tried to optimize the copy portion that was
actually introduced in TS-2889. With the copy as it is, I don't see browsers
(both spdy and non-spdy) having issues (although, I did not actually verify the
byte count at the client for each case). Are you suggesting the copy should be
avoided for spdy client?
Would it make sense to commit the patch, since it solves the close connection
handling and let the copy portion be tracked using TS-2889?
> SPDY requests returning 200 OK with empty body..
> ------------------------------------------------
>
> Key: TS-3049
> URL: https://issues.apache.org/jira/browse/TS-3049
> Project: Traffic Server
> Issue Type: Bug
> Components: SPDY
> Affects Versions: 5.0.1
> Reporter: Sudheer Vinukonda
> Assignee: Brian Geffon
> Priority: Blocker
> Fix For: 5.1.0
>
> Attachments: TS-3049.diff, ts3049.pcap
>
>
> Ran into another issue in our production, where some SPDY requests were
> returning a valid response (200 OK), but, with no data (empty body).
> Below is a sample response:
> {code}
> t=688758 [st= 1] SPDY_SESSION_SYN_STREAM
> --> fin = true
> --> :host: ********
> :method: GET
> :path: /********.js
> :scheme: https
> :version: HTTP/1.1
> accept:
> text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
> accept-encoding: gzip,deflate
> accept-language: en-US,en;q=0.8
> cache-control: max-age=0
> cookie: [215 bytes were stripped]
> user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS
> X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94
> Safari/537.36
> --> spdy_priority = 0
> --> stream_id = 1
> --> unidirectional = false
> t=688941 [st= 184] SPDY_SESSION_SYN_REPLY
> --> fin = false
> --> :status: 200 OK
> :version: HTTP/1.1
> accept-ranges: bytes
> age: 2
> cache-control: max-age=536112000
> content-encoding: gzip
> content-type: application/javascript
> date: Wed, 27 Aug 2014 23:39:53 GMT
> etag: "************************"
> expires: Sat, 05 Sep 2026 00:00:00 GMT
> last-modified: Wed, 27 Aug 2014 20:09:00 GMT
> server: ATS
> vary: Accept-Encoding
> via: HTTP/1.1 ********** (ApacheTrafficServer)
> x-ysws-request-id: **********
> x-ysws-visited-replicas: *********
> --> stream_id = 1
> t=688941 [st= 184] SPDY_SESSION_RECV_DATA
> --> fin = true
> --> size = 0
> --> stream_id = 1
> {code}
> Investigating further, it seems that the issue occurs, when the response from
> the origin is chunked. Debugging further, it looks like there's a bug in
> FetchSM - check_body_done() is broken for chunked encoding case.
> {code}
> bool
> FetchSM::check_body_done()
> {
> if (!check_chunked()) {
> if (resp_content_length == resp_recived_body_len +
> resp_reader->read_avail())
> return true;
> return false;
> }
> //
> // TODO: check whether the chunked body is done
> //
> return true;
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)