-
Notifications
You must be signed in to change notification settings - Fork 987
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: Fix a leak of WebSocketClients. (#2051)
Every time we establish an active WS to another relay we create a new WebSocketClient instance. This comes with its own QueuedThreadPool with 8 threads and if we lose the reference without calling stop() it leaks. When the existing web socket closing arrives before the signaling that expires the relay, we try do WebSocketClient.stop() and then doConnect(). The call to stop() can take a while, and if in the meantime the relay is expired in signaling we end up running doConnect() on an expired relay. In this case we create a new WebSocketClient, which is never stopped. This fix uses a single WebSocketClient instance shared between all relays, and does not attempt to re-connect if the reason for the disconnect is RELAY_CLOSED. It re-uses the "webSocket: ColibriWebSocket" field for sockets created both actively and passively.
- Loading branch information
Showing
1 changed file
with
24 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters