diff --git a/src/operations/execute_operation.ts b/src/operations/execute_operation.ts index c1750726fce..125eb2fdcdb 100644 --- a/src/operations/execute_operation.ts +++ b/src/operations/execute_operation.ts @@ -249,7 +249,7 @@ function executeWithServerSelection( if ((hasReadAspect && willRetryRead) || (hasWriteAspect && willRetryWrite)) { if (hasWriteAspect && willRetryWrite) { - operation.options.willRetryWrite = true; + operation.options.willRetryWrites = true; session.incrementTransactionNumber(); } diff --git a/src/operations/operation.ts b/src/operations/operation.ts index 82265d06f30..a93aa779196 100644 --- a/src/operations/operation.ts +++ b/src/operations/operation.ts @@ -57,7 +57,7 @@ export abstract class AbstractOperation { bsonOptions?: BSONSerializeOptions; // TODO: Each operation defines its own options, there should be better typing here - options: Document; + options: OperationOptions; [kSession]: ClientSession | undefined; diff --git a/src/sessions.ts b/src/sessions.ts index b1d13cc3bcf..f942c6acd34 100644 --- a/src/sessions.ts +++ b/src/sessions.ts @@ -964,10 +964,10 @@ export function applySession( command.lsid = serverSession.id; // first apply non-transaction-specific sessions data - const inTransaction = session.inTransaction() || isTransactionCommand(command); - const isRetryableWrite = options?.willRetryWrite || false; + const inTransaction = session.inTransaction() ?? isTransactionCommand(command); + const isRetryableWrite = options.willRetryWrites ?? false; - if (serverSession.txnNumber && (isRetryableWrite || inTransaction)) { + if (isRetryableWrite || inTransaction) { command.txnNumber = Long.fromNumber(serverSession.txnNumber); }