[ 
https://issues.apache.org/jira/browse/QPID-8758?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18116006#comment-18116006
 ] 

ASF GitHub Bot commented on QPID-8758:
--------------------------------------

dakirily opened a new pull request, #441:
URL: https://github.com/apache/qpid-broker-j/pull/441

   This PR addresses JIRAs
   
   [QPID-8757](https://issues.apache.org/jira/browse/QPID-8757) [Broker-J] 
WebSocket idle checker queues unbounded tick jobs while a connection is 
writing, exhausting the broker heap
   [QPID-8758](https://issues.apache.org/jira/browse/QPID-8758) [Broker-J] 
Ensure AMQP-over-WebSocket connections terminate after an unanswered close
   
   It refactors the idle checker queue mechanism as well as WebSocket / AMQP 
connection lifecycle.
   
   Thanks to Marco Geri for the patches provided and for the testing.
   
   




> [Broker-J] Ensure AMQP-over-WebSocket connections terminate after an 
> unanswered close
> -------------------------------------------------------------------------------------
>
>                 Key: QPID-8758
>                 URL: https://issues.apache.org/jira/browse/QPID-8758
>             Project: Qpid
>          Issue Type: Bug
>          Components: Broker-J
>    Affects Versions: qpid-java-broker-10.1.0
>            Reporter: Daniil Kirilyuk
>            Assignee: Daniil Kirilyuk
>            Priority: Major
>             Fix For: qpid-java-broker-10.1.1
>
>
> AMQP-over-WebSocket connections may remain registered indefinitely when the 
> remote peer does not complete either the AMQP or WebSocket closing handshake.
> When an AMQP connection begins closing, a ConnectionClosingTicker is added 
> with a deadline based on connection.closeResponseTimeout. After that deadline 
> expires, the ticker invokes ServerNetworkConnection.close().
> For ordinary TCP connections, NonBlockingConnection.close() marks the 
> connection closed and wakes the selector, which proceeds with physical socket 
> teardown. For WebSocket connections, ConnectionWrapper.close() calls Jetty’s 
> Session.close(). This sends a WebSocket CLOSE frame and waits for the peer’s 
> CLOSE response.
> The WebSocket provider disables Jetty idle-timeout processing when the 
> session opens:
> {code:java}
> session.setIdleTimeout(Duration.ZERO);
> {code}
> Consequently, if the peer becomes unreachable without sending FIN or RST or 
> simply does not answer the CLOSE frame, Jetty has no deadline that forces the 
> underlying connection to terminate. The connection remains in 
> WebSocketProvider._activeConnections.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to