[GODRIVER-394] Errors raised by drivers should include codeName string from server response Created: 30/Apr/18  Updated: 03/Aug/20  Resolved: 03/Aug/20

Status: Closed
Project: Go Driver
Component/s: Error Handling
Affects Version/s: None
Fix Version/s: None

Type: New Feature Priority: Major - P3
Reporter: Rathi Gnanasekaran Assignee: Divjot Arora (Inactive)
Resolution: Done 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

 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 Divjot Arora (Inactive) [ 03/Aug/20 ]

The WriteConcernError type already had a Name field, but there was a bug in our error conversions. I've filed GODRIVER-1706 to address that. Closing out this ticket in favor of that one.

Comment by Divjot Arora (Inactive) [ 17/Jul/20 ]

https://github.com/mongodb/mongo-go-driver/pull/458

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