[ 
https://issues.apache.org/jira/browse/NIFI-3732?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bryan Bende updated NIFI-3732:
------------------------------
    Fix Version/s: 1.3.0

> Distributed cache clients should use a timeout when opening a connection
> ------------------------------------------------------------------------
>
>                 Key: NIFI-3732
>                 URL: https://issues.apache.org/jira/browse/NIFI-3732
>             Project: Apache NiFi
>          Issue Type: Bug
>    Affects Versions: 1.0.0, 1.1.0, 0.7.1, 1.1.1, 1.0.1
>            Reporter: Bryan Bende
>            Priority: Minor
>             Fix For: 1.3.0
>
>
> The DistributedMapCacheClient and DistributedSetCacheClient open a socket 
> connection using a CommsSession, either StandardCommsSession or 
> SSLCommsSession.
> StandardCommsSession does the following to create a connection:
> {code}
> socketChannel = SocketChannel.open(new InetSocketAddress(hostname, port));
> socketChannel.configureBlocking(false);
> {code}
> The problem is that calling open() with the address calls connect before we 
> have put the channel in non-blocking mode, so we could block indefinitely 
> here. 
> We should consider calling open(), then set a socket timeout from the timeout 
> property in the cache client, and then call connect(address).
> The SSLCommsSession works slightly differently because it uses the 
> SSLSocketChannel, but we should be able to do the same thing and pass in the 
> SocketChannel after connecting as described above.
> In addition, the clients implement a close() method from the cache client 
> interface, and its called from finalize(), but there should be an lifecycle 
> method that calls close when the service is stopped.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to