[CDRIVER-2635] Errors raised by drivers should include codeName string from server response Created: 30/Apr/18  Updated: 27/Oct/23  Resolved: 30/Apr/18

Status: Closed
Project: C Driver
Component/s: None
Affects Version/s: None
Fix Version/s: 1.11.0

Type: New Feature Priority: Major - P3
Reporter: Rathi Gnanasekaran Assignee: A. Jesse Jiryu Davis
Resolution: Works as Designed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
is depended on by DRIVERS-478 Errors raised by drivers should inclu... Implementing
Related
related to CDRIVER-3147 CodeNames for command errors not repo... 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.



 Comments   
Comment by A. Jesse Jiryu Davis [ 30/Apr/18 ]

Nearly all our APIs now allow the application to receive the server reply (whether on success or failure). The codeName field is available there, so the C Driver doesn't need to do anything.

Generated at Wed Feb 07 21:15:51 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.