[DRIVERS-478] Errors raised by drivers should include codeName string from server response Created: 26/Apr/18  Updated: 13/Apr/22

Status: Implementing
Project: Drivers
Component/s: None
Fix Version/s: None

Type: New Feature Priority: Major - P3
Reporter: Rathi Gnanasekaran Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: newdriver
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on CDRIVER-3147 CodeNames for command errors not repo... Blocked
depends on CXX-1570 Errors raised by drivers should inclu... Backlog
depends on RUST-173 Errors raised by drivers should inclu... Backlog
depends on CDRIVER-2635 Errors raised by drivers should inclu... Closed
depends on CSHARP-2256 Errors raised by drivers should inclu... Closed
depends on GODRIVER-394 Errors raised by drivers should inclu... Closed
depends on JAVA-2843 Exceptions should include codeName st... Closed
depends on MOTOR-215 Errors raised by drivers should inclu... Closed
depends on NODE-1447 Errors raised by drivers should inclu... Closed
depends on RUBY-1331 Errors raised by drivers should inclu... Closed
depends on SERVER-23501 Erroring command replies should inclu... Closed
Related
related to CDRIVER-3147 CodeNames for command errors not repo... Blocked
related to PHPC-1386 BulkWriteException and ExecutionTimeo... Blocked
Server Compat: 3.3
Driver Compliance:
Key Status/Resolution FixVersion
JAVA-2843 Fixed 3.8.0
NODE-1447 Works as Designed
CSHARP-2256 Fixed 2.7.0
RUBY-1331 Fixed 2.6.0
CXX-1570 Backlog
MOTOR-215 Fixed 2.0
GODRIVER-394 Done
CDRIVER-2635 Works as Designed 1.11.0
RUST-173 Backlog
SWIFT-489 Fixed 0.2.0
CDRIVER-3147 Blocked

 Description   

As of MongoDB 3.4, error responses from the server include not only the error code and message, but also a stringified representation of the error code, in the codeName field. Drivers should ensure that this code name is accessible from any errors that are returned or exceptions that are raised based on error responses from the server.

Example responses:

MongoDB Enterprise repl0:PRIMARY> db.runCommand({insert: "test", documents: []})
{
	"operationTime" : Timestamp(1524837772, 1),
	"ok" : 0,
	"errmsg" : "Write batch sizes must be between 1 and 100000. Got 0 operations.",
	"code" : 16,
	"codeName" : "InvalidLength",
}
 
MongoDB Enterprise repl0:PRIMARY> db.runCommand({insert: "test", writeConcern: {w: 10}, documents: [{_id: 2}]})
{
	"n" : 1,
	"opTime" : {
		"ts" : Timestamp(1524837850, 1),
		"t" : NumberLong(15)
	},
	"electionId" : ObjectId("7fffffff000000000000000f"),
	"writeConcernError" : {
		"code" : 100,
		"codeName" : "CannotSatisfyWriteConcern",
		"errmsg" : "Not enough data-bearing nodes"
	},
	"ok" : 1,
	"operationTime" : Timestamp(1524837850, 1),
	"$clusterTime" : {
		"clusterTime" : Timestamp(1524837850, 1),
		"signature" : {
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	}
}

Note that a writeConcernError document can also contain a codeName embedded within it. No evidence that the documents within the writeErrors array field do the same.


Generated at Thu Feb 08 08:21:37 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.