You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/02/17 12:01:00 UTC

[jira] [Commented] (TINKERPOP-1726) Support WebSockets ping/pong keep-alive in Gremlin server

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

ASF GitHub Bot commented on TINKERPOP-1726:
-------------------------------------------

GitHub user spmallette opened a pull request:

    https://github.com/apache/tinkerpop/pull/800

    TINKERPOP-1726 Added idleReadLimit and idleWriteLimit for Gremlin Server

    https://issues.apache.org/jira/browse/TINKERPOP-1726
    
    This enables Gremlin Server to periodically ping clients and auto-close zombie connections when a client disappears unexpectedly. I did a fair bit of manual testing as this wasn't easy to write unit tests for and it all seems to behave as expected. I did write a decent integration test so that's good. I'm not sure how useful this feature is for the more advanced drivers like the Java Driver because it constantly pings from its end to keep the connection alive even if the client isn't sending requests. I've also found that somehow the server was already pretty good at realizing when a client using the Java Driver goes dead completely (maybe something happening at a network level? i couldn't isolate it) and cleaning up. So...anyway, this seems like more of a precautionary feature for users who find they have a problem like the one described in the JIRA issue or perhaps if they are using a less featured driver. Note that the feature is disabled by default.
    
    All tests pass with `docker/build.sh -t -n -i`
    
    VOTE +1

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/apache/tinkerpop TINKERPOP-1726

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/tinkerpop/pull/800.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 #800
    
----
commit 10ab33410862ccb935e911b028c27f4cd835b70f
Author: Stephen Mallette <sp...@...>
Date:   2018-02-16T21:19:56Z

    TINKERPOP-1726 Added idleReadLimit and idleWriteLimit for Gremlin Server
    
    This enables Gremlin Server to periodically ping clients and auto-close zombie connections when a client disappears without issuing a close.

----


> Support WebSockets ping/pong keep-alive in Gremlin server
> ---------------------------------------------------------
>
>                 Key: TINKERPOP-1726
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1726
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: server
>    Affects Versions: 3.2.5
>            Reporter: Andy Davidoff
>            Priority: Major
>
> The ping/pong keep-alive system that is part of the WebSockets spec provides for successful identification of a dropped connection from either end of the connection.
> Currently, the Java client successfully issues keep-alive pings and receives pong replies from the server.  Unfortunately, the server does not actively ping clients, nor does it discover and react to dead clients when keep-alive fails.
> This can cause pending client writes to lock up the server indefinitely when a client spontaneously disconnects.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)