ASF GitHub Bot commented on TINKERPOP-1726:

Github user spmallette commented on a diff in the pull request:

    --- Diff: 
    @@ -147,7 +149,12 @@ public void init(final 
ServerGremlinExecutor<EventLoopGroup> serverGremlinExecut
         public void initChannel(final SocketChannel ch) throws Exception {
             final ChannelPipeline pipeline = ch.pipeline();
    -        if (sslContext.isPresent()) pipeline.addLast(PIPELINE_SSL, 
    +        sslContext.ifPresent(sslContext -> pipeline.addLast(PIPELINE_SSL, 
    +        // checks for no activity on a channel and triggers an event that 
is consumed by the OpSelectorHandler
    +        // and either closes the connection or sends a ping to see if the 
client is still alive
    +        if (supportsIdleMonitor())
    +            pipeline.addLast(new IdleStateHandler((int) 
(settings.idleReadLimit / 1000), (int) (settings.idleWriteLimit / 1000),0));
    --- End diff --
    The constructor for `IdleStateHandler` is seconds but all Gremlin Server 
time settings are milliseconds so i had to convert: 

> 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

Reply via email to