Description
add_user() run against a server that requires commands for managing users ignores the write concern properties on the Database or MongoClient itself (write concern options must be passed as keyword arguments instead). This is probably most reliably seen from a debugger, but Mongo Orchestration is running into trouble with this.
Reproduction:
>>> import pymongo
|
>>> import pdb
|
>>> client = pymongo.MongoClient(w='majority', fsync=True)
|
>>> db = client.admin
|
>>> pdb.runcall(db.add_user, 'luke', 'ekul')
|
...
|
(pdb) b 337 # This is the line that calls self["$cmd"].find in Database._command in the v2.8 branch right now.
|
(pdb) l
|
333 (command_name,
|
334 modes[extra_opts['read_preference']]),
|
335 UserWarning, stacklevel=3)
|
336
|
337 -> cursor = self["$cmd"].find(command, **extra_opts).limit(-1)
|
338 for doc in cursor:
|
339 result = doc
|
340
|
341 if check:
|
342 msg = "command %s on namespace %s failed: %%s" % (
|
343 repr(command).replace("%", "%%"), self.name + '.$cmd')
|
(pdb) p command
|
SON([('createUser', 'luke'), ('pwd', u'df09194d5851bba0ba590bba915e6460'), ('digestPassword', False), ('roles', ['root']), ('writeConcern', {})])
|
(pdb) p extra_opts
|
{'tag_sets': [{}], 'as_class': None, '_uuid_subtype': 3, 'read_preference': 0, 'secondary_acceptable_latency_ms': 15.0, 'compile_re': True, 'slave_okay': False, '_must_use_master': True}
|