The java driver hangs about waiting for results to return after a Client.close() is called. That creates problems if there is a desire to kill the client but there is a long run query on the server and that query is configured to an especially long timeout. I think there just needs to be a configuration for the amount of time the client will wait for results before just giving up and shutting down. A byproduct of this change is that by allowing the Client to close the channel while a query is executing creates a cancellation sort of functionality which should issue an interrupt to the traversal executing on the server.
With this change in place it sort of creates a feature somewhat at odds with the session "close" message which tries to release a specific session. The problem with that message is that it really is only useful if there is not already a message ahead of it getting processed and stuck otherwise it is queued and won't be processed until the message ahead of it is handled. Obviously, if the goal is to kill the session because of a long run process then this feature becomes a bit unhelpful. If the close of the channel accomplishes the same thing as the close message then I think we would want to deprecate the close message and remove it for 3.5.0.