@@ -102,15 +102,17 @@ def _index_document(index_list):
102
102
return index
103
103
104
104
105
- def _check_command_response (response , msg = None , allowable_errors = None ,
105
+ def _check_command_response (response , max_wire_version , msg = None ,
106
+ allowable_errors = None ,
106
107
parse_write_concern_error = False ):
107
108
"""Check the response to a command for errors.
108
109
"""
109
110
if "ok" not in response :
110
111
# Server didn't recognize our message as a command.
111
112
raise OperationFailure (response .get ("$err" ),
112
113
response .get ("code" ),
113
- response )
114
+ response ,
115
+ max_wire_version )
114
116
115
117
if parse_write_concern_error and 'writeConcernError' in response :
116
118
_raise_write_concern_error (response ['writeConcernError' ])
@@ -146,25 +148,30 @@ def _check_command_response(response, msg=None, allowable_errors=None,
146
148
details .get ("assertion" , "" ))
147
149
raise OperationFailure (errmsg ,
148
150
details .get ("assertionCode" ),
149
- response )
151
+ response ,
152
+ max_wire_version )
150
153
151
154
# Other errors
152
155
# findAndModify with upsert can raise duplicate key error
153
156
if code in (11000 , 11001 , 12582 ):
154
- raise DuplicateKeyError (errmsg , code , response )
157
+ raise DuplicateKeyError (errmsg , code , response ,
158
+ max_wire_version )
155
159
elif code == 50 :
156
- raise ExecutionTimeout (errmsg , code , response )
160
+ raise ExecutionTimeout (errmsg , code , response ,
161
+ max_wire_version )
157
162
elif code == 43 :
158
- raise CursorNotFound (errmsg , code , response )
163
+ raise CursorNotFound (errmsg , code , response ,
164
+ max_wire_version )
159
165
160
166
msg = msg or "%s"
161
- raise OperationFailure (msg % errmsg , code , response )
167
+ raise OperationFailure (msg % errmsg , code , response ,
168
+ max_wire_version )
162
169
163
170
164
- def _check_gle_response (result ):
171
+ def _check_gle_response (result , max_wire_version ):
165
172
"""Return getlasterror response as a dict, or raise OperationFailure."""
166
173
# Did getlasterror itself fail?
167
- _check_command_response (result )
174
+ _check_command_response (result , max_wire_version )
168
175
169
176
if result .get ("wtimeout" , False ):
170
177
# MongoDB versions before 1.8.0 return the error message in an "errmsg"
0 commit comments