Arunan Sugunakumar created HTTPCORE-755:
-------------------------------------------

             Summary: Connection gets closed prematurely before Decoder gets 
completed
                 Key: HTTPCORE-755
                 URL: https://issues.apache.org/jira/browse/HTTPCORE-755
             Project: HttpComponents HttpCore
          Issue Type: Bug
          Components: HttpCore NIO
    Affects Versions: 4.4.16
            Reporter: Arunan Sugunakumar
         Attachments: Jmeter_script_1.jmx, NHttpReverseProxy.zip, 
chunk-backend.zip

Hi,

In httpcore-nio 4.4.16, sometimes the closed event (in NHttpClientEventHandler) 
gets triggered before the ContentDecoder gets completed. This is observed when 
the backend sends Chunk decoded messages and immediately closes the connection. 
Also to reproduce the issue, we had to do a load test with 20 threads and host 
the server and client on two different virtual machines. 

When we added debug logs, we found that the SSLIOsession goes into CLOSING 
state[1] while there are remaining data available in the inPlain buffer. As a 
result, the closeOutbound is called on the SSLEngine[2]. This sometimes makes 
the HandshakeStatus into NEED_UNWRAP which makes the session go into CLOSED 
state[3]. As a result, the session gets closed before consuming the data in the 
inPlain buffer.

I reproduced this scenario with the NHttpReverseProxy sample with the attached 
backend and invoked the ReverseProxy with a Jmeter script. I placed the backend 
jar in another server and the Proxy sample in another and invoked the Jmeter 
client from the local machine. 

 

The issue does not occur in httpcore-nio 4.4.9 but only from 4.4.10. This is 
occurring because we are making the session go into CLOSING state for 
endOfStream with this commit[4].

[1] - 
[https://github.com/apache/httpcomponents-core/blob/4.4.x/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java#L387]

[2] - 
[https://github.com/apache/httpcomponents-core/blob/4.4.x/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java#L390]

[3] - 
[https://github.com/apache/httpcomponents-core/blob/4.4.x/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java#L401]

[4] - 
[https://github.com/apache/httpcomponents-core/commit/08d9c3c30d57def4963d0807bce5f3023f5fcb35]

 

Regards,
Arunan



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to