From b006a8d2692a07952b0e1a52350bf61d26061196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Linus=20Unneb=C3=A4ck?= Date: Thu, 15 Sep 2022 17:45:02 +0200 Subject: [PATCH] fix(NODE-3541): allow unacknowledged write with hint --- src/operations/delete.ts | 12 ++++++++---- src/operations/update.ts | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/operations/delete.ts b/src/operations/delete.ts index ccdfd1c80b6..127d5d3f515 100644 --- a/src/operations/delete.ts +++ b/src/operations/delete.ts @@ -90,10 +90,14 @@ export class DeleteOperation extends CommandOperation { : undefined; } - const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0; - if (unacknowledgedWrite || maxWireVersion(server) < 5) { - if (this.statements.find((o: Document) => o.hint)) { - callback(new MongoCompatibilityError(`Servers < 3.4 do not support hint on delete`)); + if (maxWireVersion(server) < 9) { + const hintPresent = this.statements.some(o => o.hint); + const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0; + + if (hintPresent && unacknowledgedWrite) { + callback( + new MongoCompatibilityError(`Servers < 4.4 do not support hint on unacknowledged delete`) + ); return; } } diff --git a/src/operations/update.ts b/src/operations/update.ts index 43760c14314..615d090a142 100644 --- a/src/operations/update.ts +++ b/src/operations/update.ts @@ -122,10 +122,14 @@ export class UpdateOperation extends CommandOperation { return; } - const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0; - if (unacknowledgedWrite || maxWireVersion(server) < 5) { - if (this.statements.find((o: Document) => o.hint)) { - callback(new MongoCompatibilityError(`Servers < 3.4 do not support hint on update`)); + if (maxWireVersion(server) < 8) { + const hintPresent = this.statements.some(o => o.hint); + const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0; + + if (hintPresent && unacknowledgedWrite) { + callback( + new MongoCompatibilityError(`Servers < 4.2 do not support hint on unacknowledged update`) + ); return; } }