@@ -102,7 +102,7 @@ def _index_document(index_list):
102
102
return index
103
103
104
104
105
- def _check_command_response (response , max_wire_version , msg = None ,
105
+ def _check_command_response (response , max_wire_version ,
106
106
allowable_errors = None ,
107
107
parse_write_concern_error = False ):
108
108
"""Check the response to a command for errors.
@@ -117,55 +117,47 @@ def _check_command_response(response, max_wire_version, msg=None,
117
117
if parse_write_concern_error and 'writeConcernError' in response :
118
118
_raise_write_concern_error (response ['writeConcernError' ])
119
119
120
- if not response ["ok" ]:
121
-
122
- details = response
123
- # Mongos returns the error details in a 'raw' object
124
- # for some errors.
125
- if "raw" in response :
126
- for shard in itervalues (response ["raw" ]):
127
- # Grab the first non-empty raw error from a shard.
128
- if shard .get ("errmsg" ) and not shard .get ("ok" ):
129
- details = shard
130
- break
131
-
132
- errmsg = details ["errmsg" ]
133
- if (allowable_errors is None
134
- or (errmsg not in allowable_errors
135
- and details .get ("code" ) not in allowable_errors )):
136
-
137
- code = details .get ("code" )
138
- # Server is "not master" or "recovering"
139
- if code in _NOT_MASTER_CODES :
140
- raise NotMasterError (errmsg , response )
141
- elif ("not master" in errmsg
142
- or "node is recovering" in errmsg ):
143
- raise NotMasterError (errmsg , response )
144
-
145
- # Server assertion failures
146
- if errmsg == "db assertion failure" :
147
- errmsg = ("db assertion failure, assertion: '%s'" %
148
- details .get ("assertion" , "" ))
149
- raise OperationFailure (errmsg ,
150
- details .get ("assertionCode" ),
151
- response ,
152
- max_wire_version )
153
-
154
- # Other errors
155
- # findAndModify with upsert can raise duplicate key error
156
- if code in (11000 , 11001 , 12582 ):
157
- raise DuplicateKeyError (errmsg , code , response ,
158
- max_wire_version )
159
- elif code == 50 :
160
- raise ExecutionTimeout (errmsg , code , response ,
161
- max_wire_version )
162
- elif code == 43 :
163
- raise CursorNotFound (errmsg , code , response ,
164
- max_wire_version )
165
-
166
- msg = msg or "%s"
167
- raise OperationFailure (msg % errmsg , code , response ,
168
- max_wire_version )
120
+ if response ["ok" ]:
121
+ return
122
+
123
+ details = response
124
+ # Mongos returns the error details in a 'raw' object
125
+ # for some errors.
126
+ if "raw" in response :
127
+ for shard in itervalues (response ["raw" ]):
128
+ # Grab the first non-empty raw error from a shard.
129
+ if shard .get ("errmsg" ) and not shard .get ("ok" ):
130
+ details = shard
131
+ break
132
+
133
+ errmsg = details ["errmsg" ]
134
+ code = details .get ("code" )
135
+
136
+ # For allowable errors, only check for error messages when the code is not
137
+ # included.
138
+ if allowable_errors :
139
+ if code is not None :
140
+ if code in allowable_errors :
141
+ return
142
+ elif errmsg in allowable_errors :
143
+ return
144
+
145
+ # Server is "not master" or "recovering"
146
+ if code in _NOT_MASTER_CODES :
147
+ raise NotMasterError (errmsg , response )
148
+ elif "not master" in errmsg or "node is recovering" in errmsg :
149
+ raise NotMasterError (errmsg , response )
150
+
151
+ # Other errors
152
+ # findAndModify with upsert can raise duplicate key error
153
+ if code in (11000 , 11001 , 12582 ):
154
+ raise DuplicateKeyError (errmsg , code , response , max_wire_version )
155
+ elif code == 50 :
156
+ raise ExecutionTimeout (errmsg , code , response , max_wire_version )
157
+ elif code == 43 :
158
+ raise CursorNotFound (errmsg , code , response , max_wire_version )
159
+
160
+ raise OperationFailure (errmsg , code , response , max_wire_version )
169
161
170
162
171
163
def _check_gle_response (result , max_wire_version ):
0 commit comments