We are getting intermittent transport failures from the SDK which appear to only happen when there are periods of inactivity. This leads me to believe that we are missing a timeout in our configuration, but I’m not sure which values to set.
Here is the exception:
Save change marker result status: TransportFailure, message: An existing connection was forcibly closed by the remote host, should retry: False, exception: System.Net.Sockets.SocketException (0x80004005): An existing connection was forcibly closed by the remote host
at Couchbase.IO.Connection.Send(Byte[] buffer)
at Couchbase.IO.Services.PooledIOService.Execute[T](IOperation`1 operation, IConnection connection)
at Couchbase.Authentication.SASL.ScramShaMechanism.Authenticate(IConnection connection, String username, String password)
at Couchbase.Authentication.SASL.ScramShaMechanism.Authenticate(IConnection connection)
at Couchbase.IO.Services.PooledIOService.Authenticate(IConnection connection)
at Couchbase.IO.Services.PooledIOService.<ExecuteAsync>d__13`1.MoveNext()
Subsequent calls to the cluster are successful, so it’s like the first one wakes up the connection and fails with the transport failure, and then any requests after that succeed as expected.
Also, the IOperationResult.ShouldRetry() is returning false, even though the source indicates that it should be returning true for transport failures. Maybe I’m looking at the wrong implementation?