Description
User Sami described in a comment for TINKERPOP-2019 a situation where the Gremlin.Net.Driver tries to close a ClientWebSocket which fails because it was apparently already closed:
System.Net.WebSockets.WebSocketException: at System.Net.WebSockets.WebSocketValidate.ThrowIfInvalidState (System.Net.WebSockets.Client, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a) at System.Net.WebSockets.WinHttpWebSocketState.InterlockedCheckAndUpdateState (System.Net.WebSockets.Client, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a) at System.Net.WebSockets.WinHttpWebSocket+<CloseAsync>d__30.MoveNext (System.Net.WebSockets.Client, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a) [...] at Gremlin.Net.Driver.WebSocketConnection+<CloseAsync>d__4.MoveNext (Gremlin.Net, Version=3.3.0.0, Culture=neutral, PublicKeyToken=d2035e9aa387a711) [...]
Gremlin.Net should check the state of the ClientWebSocket before trying to close it as the server could have already closed the connection.
The implementation for this in SignalR could be a good starting point as it uses the same underlying WebSocket implementation.
Attachments
Issue Links
- is duplicated by
-
TINKERPOP-2043 CloseAndRemoveAllConnections bubbles up System.Net.Http.WinHttpException and doesn't recover
- Closed
- links to