Details
Description
When a Transport object throws a TransportException during an operation, RetryOnFailureOperation::execute calls TcpTransportFactory::invalidateTransport which in turn calls ConnectionPool::invalidateObject. ConnectionPool::invalidateObject removes the transport from the busy queue, destroys the Transport, and then adds a new Transport to the idle queue. When the new transport is created, it tries to connect to the server socket which fails. This prevents retry attempts and client failover from happening. This is a sporadic failure.