[ 
https://issues.apache.org/jira/browse/TS-5092?focusedWorklogId=34465&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-34465
 ]

ASF GitHub Bot logged work on TS-5092:
--------------------------------------

                Author: ASF GitHub Bot
            Created on: 01/Jan/17 16:53
            Start Date: 01/Jan/17 16:53
    Worklog Time Spent: 10m 
      Work Description: Github user maskit commented on a diff in the pull 
request:

    https://github.com/apache/trafficserver/pull/1262#discussion_r94286274
  
    --- Diff: proxy/http2/Http2ConnectionState.cc ---
    @@ -728,18 +732,18 @@ rcv_continuation_frame(Http2ConnectionState &cstate, 
const Http2Frame &frame)
         cstate.clear_continued_stream_id();
     
         if (!stream->change_state(HTTP2_FRAME_TYPE_CONTINUATION, 
frame.header().flags)) {
    -      return Http2Error(HTTP2_ERROR_CLASS_CONNECTION, 
HTTP2_ERROR_PROTOCOL_ERROR);
    +      return Http2Error(HTTP2_ERROR_CLASS_CONNECTION, 
HTTP2_ERROR_PROTOCOL_ERROR, "continuation no state change");
         }
     
         Http2ErrorCode result = 
stream->decode_header_blocks(*cstate.local_hpack_handle);
     
         if (result != HTTP2_ERROR_NO_ERROR) {
           if (result == HTTP2_ERROR_COMPRESSION_ERROR) {
    -        return Http2Error(HTTP2_ERROR_CLASS_CONNECTION, 
HTTP2_ERROR_COMPRESSION_ERROR);
    +        return Http2Error(HTTP2_ERROR_CLASS_CONNECTION, 
HTTP2_ERROR_COMPRESSION_ERROR, "continuation compression error");
           } else if (result == HTTP2_ERROR_ENHANCE_YOUR_CALM) {
    -        return Http2Error(HTTP2_ERROR_CLASS_CONNECTION, 
HTTP2_ERROR_ENHANCE_YOUR_CALM);
    +        return Http2Error(HTTP2_ERROR_CLASS_CONNECTION, 
HTTP2_ERROR_ENHANCE_YOUR_CALM, "continuation enhance your calm");
           } else {
    -        return Http2Error(HTTP2_ERROR_CLASS_STREAM, 
HTTP2_ERROR_PROTOCOL_ERROR);
    +        return Http2Error(HTTP2_ERROR_CLASS_CONNECTION, 
HTTP2_ERROR_PROTOCOL_ERROR, "continuation decode error");
    --- End diff --
    
    This case is actually not for a decode error but HTTP2 violation, such as 
using uppercase in header names. All decode errors should be handled as 
compression error. We don't have to abandon all following requests with a 
connection error, because the HPACK decoder instance keeps valid status. Please 
see 8.1.2.6.
    
    I'd put a message like "continuation malformed request".


Issue Time Tracking
-------------------

    Worklog Id:     (was: 34465)
    Time Spent: 40m  (was: 0.5h)

> ATS handling of too many concurrent streams too agressive and maybe out of 
> spec
> -------------------------------------------------------------------------------
>
>                 Key: TS-5092
>                 URL: https://issues.apache.org/jira/browse/TS-5092
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: HTTP/2
>            Reporter: Susan Hinrichs
>            Assignee: Susan Hinrichs
>             Fix For: 7.1.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> This issue was identified while debugging new errors seen by an internal team 
> after they enabled HTTP/2 in their client. On the backend, they saw an 
> increase in the cases were ATS sends the origin the POST header but no POST 
> body and then closes the connection.
> With the addition of Error() messages we were able to see a case where the 
> client is trying to open the 101'st stream on a session. This is beyond the 
> 100 max concurrent stream limit, so ATS shuts down the session which kills 
> the previous 100 streams.
> A closer reading of section 5.1.2 of the spec 
> (https://tools.ietf.org/html/rfc7540#section-5.1.2) indicates that this 
> should be a stream error and not a connection error. Bryan Call, Masaori, and 
> Maskit confirmed this interpretation. Maskit also noted that the other error 
> case in the current createStream method must be treated as a connection error.
> Presumably the client library is expecting the refused stream case so it can 
> try again later.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to