[ https://issues.apache.org/jira/browse/TINKERPOP-2026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16599656#comment-16599656 ]
ASF GitHub Bot commented on TINKERPOP-2026: ------------------------------------------- GitHub user FlorianHockmann opened a pull request: https://github.com/apache/tinkerpop/pull/925 Make closing of connections robust TINKERPOP-2026 https://issues.apache.org/jira/browse/TINKERPOP-2026 This should solve the problem described in the ticket where apparently the server already initiated closing of the connection when the driver tries to close it which led to an exception. VOTE +1 You can merge this pull request into a Git repository by running: $ git pull https://github.com/apache/tinkerpop TINKERPOP-2026 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/tinkerpop/pull/925.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #925 ---- commit 4965803ae8e9283817e0171e1c463014c9166970 Author: Florian Hockmann <fh@...> Date: 2018-09-01T15:02:23Z Make closing of connections robust TINKERPOP-2026 ---- > Gremlin.Net.Driver should check ClientWebSocket.State before closing > -------------------------------------------------------------------- > > Key: TINKERPOP-2026 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2026 > Project: TinkerPop > Issue Type: Improvement > Components: dotnet > Affects Versions: 3.2.9 > Reporter: Florian Hockmann > Assignee: Florian Hockmann > Priority: Minor > > User [~samimajed] 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: > {code} > 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) > [...] > {code} > 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|https://github.com/SignalR/SignalR/blob/1fba14fa3437e24c204dfaf8a18db3fce8acad3c/src/Microsoft.AspNet.SignalR.Core/Owin/WebSockets/WebSocketHandler.cs#L92] > could be a good starting point as it uses the same underlying WebSocket > implementation. -- This message was sent by Atlassian JIRA (v7.6.3#76005)