I keep seeing connections in the connection pool being closed in the Gremlin Java driver, and it looks like there are no keep alive messages being sent to keep the connection open. However, after a write happens to the connection, the keep alive seems to start and keep the connection open, based on observations from tcpdump. The problem with this is that sometimes when we make a query to the client, we get a connection which is closed, and an exception is thrown. This results in an increase in customer-impacting faults, and retries are likely to pull down another connection which is also closed in a pool with a lot of connections. Larger pools are necessary with longer running queries to have sufficient concurrency.
It looks like when keep alive was added, it was written to only start the keep alive after there is a write to the connection. In the case where a connection is created as part of a connection pool during initialization, I can't find where any write would be made to start the keep alive. Is there another a mechanism to start this keep alive when a connection is created?