-
Type: Investigation
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Tools and Replicator
Previously, mongos would not return the writeConcernError field for insert/update/delete operations if there was also a writeError and the writes were ordered (unordered writes would return both the writeError and writeConcernError as long as at least one write succeeded).
Now, writeConcernErrors are always returned (alongside any writeErrors), regardless of how many writes succeeded and their being ordered or unordered.
Description of Linked Ticket
mongos does not report writeConcernError in presence of writeErrors.
This behavior is unexpected because it is different from the behavior of mongod which report both writeConcernError and writeErrors:
shard01 [direct: primary] test> db.runCommand({"insert": "coll", "documents": [{_id: 3}], writeConcern: { w: "majority", j: true, wtimeout: 1000 }}) Uncaught: MongoWriteConcernError: waiting for replication timed out Additional information: { wtimeout: true, writeConcern: { w: 'majority', j: true, wtimeout: 1000, provenance: 'clientSupplied' } } Result: { n: 0, electionId: ObjectId("7fffffff0000000000000001"), opTime: { ts: Timestamp({ t: 1687374618, i: 1 }), t: Long("1") }, writeErrors: [ { index: 0, code: 11000, errmsg: 'E11000 duplicate key error collection: test.coll index: _id_ dup key: { _id: 3 }', keyPattern: { _id: 1 }, keyValue: { _id: 3 } } ], writeConcernError: { code: 64, codeName: 'WriteConcernFailed', errmsg: 'waiting for replication timed out', errInfo: { wtimeout: true, writeConcern: { w: 'majority', j: true, wtimeout: 1000, provenance: 'clientSupplied' } } }, ok: 1, lastCommittedOpTime: Timestamp({ t: 1687371016, i: 1 }), '$clusterTime': { clusterTime: Timestamp({ t: 1687374623, i: 1 }), signature: { hash: Binary(Buffer.from("0000000000000000000000000000000000000000", "hex"), 0), keyId: Long("0") } }, operationTime: Timestamp({ t: 1687374618, i: 1 }) }
- depends on
-
SERVER-78311 mongos does not report writeConcernError in presence of writeErrors for insert command
- Closed