Description
Query to a remote server via the websocket client hangs indefinitely if the server becomes unavailable.
Consider the code snippet below.
// Create a websocket client final Client client = Cluster.build().addContactPoint(<endpoint>).create().connect(); // submit a query ResultSet resultSet = client.submit("g.V().id()"); // wait for all the results resultSet.all().join();
If the
client.submit(...)
call succeeds (that is the server is available/reachable) but before getting the results from the server, the server becomes unavailable/unreachable, then the client code hangs indefinitely at
resultSet.all().join()
.
The right behavior would be to throw an exception indicating the server is not available anymore. The hanging behavior suggests that the channelInactive call from websocket connection may not be getting propagated properly (perhaps getting swallowed somewhere).