File tree Expand file tree Collapse file tree
test/integration/client-backpressure Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -389,12 +389,18 @@ async function executeOperationWithRetries<
389389 ) ;
390390
391391 function canRetry ( operation : AbstractOperation , error : MongoError ) {
392- // always retryable
392+ // SystemOverloadedError is retryable, but still must respect retryReads/retryWrites settings
393393 if (
394394 error . hasErrorLabel ( MongoErrorLabel . SystemOverloadedError ) &&
395395 error . hasErrorLabel ( MongoErrorLabel . RetryableError )
396396 ) {
397- return true ;
397+ // runCommand requires BOTH retryReads and retryWrites to be enabled (per spec)
398+ if ( operation instanceof RunCommandOperation ) {
399+ return willRetryRead && willRetryWrite ;
400+ }
401+
402+ // For other operations, check if retries are enabled for the operation type
403+ return ( hasReadAspect && willRetryRead ) || ( hasWriteAspect && willRetryWrite ) ;
398404 }
399405
400406 // run command is only retryable if we get retryable overload errors
Original file line number Diff line number Diff line change @@ -4,6 +4,8 @@ import { type Test } from '../../tools/unified-spec-runner/schema';
44
55const skippedTests = {
66 'collection.dropIndexes retries at most maxAttempts=5 times' :
7+ 'TODO(NODE-6517): dropIndexes squashes all errors other than ns not found' ,
8+ 'collection.dropIndexes (write) does not retry if retryWrites=false' :
79 'TODO(NODE-6517): dropIndexes squashes all errors other than ns not found'
810} ;
911
You can’t perform that action at this time.
0 commit comments