[
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]