...
BugZero found this defect 64 days ago.
FailCommands enabled only for the `find` command are activated by retryable writes because retryable writes send an internal find command against`config.transactions`, which activates the failCommand. This is visible to the write command if the failCommand is configured with blockTimeMS and blockConnection because the triggered failCommand blocks the find for blockTimeMS, which in turn blocks the write by blockTimeMS. As a potential fix, Max Hirschorn suggested: probably we should check in shouldActivateFailCommandFailPoint() for Client::isInDirectClient() and not activate the failpoint for the internal find command.
Configure a failCommand for `find`, specifying blockTimeMS and blockConnection: true: { configureFailPoint: 'failCommand', mode: { times: 1 }, data: { failCommands: ['find'], blockConnection: true, blockTimeMS: 10_000 } } execute a retryable write and observe the command is delayed by blockTimeMS. disable retryable writes and observe that the command is instantaneous.