@@ -102,15 +102,17 @@ def _index_document(index_list):
102102 return index
103103
104104
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 ,
106107 parse_write_concern_error = False ):
107108 """Check the response to a command for errors.
108109 """
109110 if "ok" not in response :
110111 # Server didn't recognize our message as a command.
111112 raise OperationFailure (response .get ("$err" ),
112113 response .get ("code" ),
113- response )
114+ response ,
115+ max_wire_version )
114116
115117 if parse_write_concern_error and 'writeConcernError' in response :
116118 _raise_write_concern_error (response ['writeConcernError' ])
@@ -146,25 +148,30 @@ def _check_command_response(response, msg=None, allowable_errors=None,
146148 details .get ("assertion" , "" ))
147149 raise OperationFailure (errmsg ,
148150 details .get ("assertionCode" ),
149- response )
151+ response ,
152+ max_wire_version )
150153
151154 # Other errors
152155 # findAndModify with upsert can raise duplicate key error
153156 if code in (11000 , 11001 , 12582 ):
154- raise DuplicateKeyError (errmsg , code , response )
157+ raise DuplicateKeyError (errmsg , code , response ,
158+ max_wire_version )
155159 elif code == 50 :
156- raise ExecutionTimeout (errmsg , code , response )
160+ raise ExecutionTimeout (errmsg , code , response ,
161+ max_wire_version )
157162 elif code == 43 :
158- raise CursorNotFound (errmsg , code , response )
163+ raise CursorNotFound (errmsg , code , response ,
164+ max_wire_version )
159165
160166 msg = msg or "%s"
161- raise OperationFailure (msg % errmsg , code , response )
167+ raise OperationFailure (msg % errmsg , code , response ,
168+ max_wire_version )
162169
163170
164- def _check_gle_response (result ):
171+ def _check_gle_response (result , max_wire_version ):
165172 """Return getlasterror response as a dict, or raise OperationFailure."""
166173 # Did getlasterror itself fail?
167- _check_command_response (result )
174+ _check_command_response (result , max_wire_version )
168175
169176 if result .get ("wtimeout" , False ):
170177 # MongoDB versions before 1.8.0 return the error message in an "errmsg"
0 commit comments