PYTHON-2863 Allow hint for unacknowledged writes using OP_MSG when supported by the server (#830)

This commit is contained in:
Steven Silvester 2022-01-20 08:18:13 -06:00 committed by GitHub
parent c9229ace26
commit f074cfb696
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 3546 additions and 1661 deletions

View File

@ -149,12 +149,14 @@ class _Bulk(object):
self.bypass_doc_val = bypass_document_validation
self.uses_collation = False
self.uses_array_filters = False
self.uses_hint = False
self.uses_hint_update = False
self.uses_hint_delete = False
self.is_retryable = True
self.retrying = False
self.started_retryable_write = False
# Extra state so that we know where to pick up on a retry attempt.
self.current_run = None
self.next_run = None
@property
def bulk_ctx_class(self):
@ -188,7 +190,7 @@ class _Bulk(object):
self.uses_array_filters = True
cmd['arrayFilters'] = array_filters
if hint is not None:
self.uses_hint = True
self.uses_hint_update = True
cmd['hint'] = hint
if multi:
# A bulk_write containing an update_many is not retryable.
@ -207,7 +209,7 @@ class _Bulk(object):
self.uses_collation = True
cmd['collation'] = collation
if hint is not None:
self.uses_hint = True
self.uses_hint_update = True
cmd['hint'] = hint
self.ops.append((_UPDATE, cmd))
@ -220,7 +222,7 @@ class _Bulk(object):
self.uses_collation = True
cmd['collation'] = collation
if hint is not None:
self.uses_hint = True
self.uses_hint_delete = True
cmd['hint'] = hint
if limit == _DELETE_ALL:
# A bulk_write containing a delete_many is not retryable.
@ -254,25 +256,39 @@ class _Bulk(object):
yield run
def _execute_command(self, generator, write_concern, session,
sock_info, op_id, retryable, full_result):
sock_info, op_id, retryable, full_result,
final_write_concern=None):
db_name = self.collection.database.name
client = self.collection.database.client
listeners = client._event_listeners
if not self.current_run:
self.current_run = next(generator)
self.next_run = None
run = self.current_run
# sock_info.command validates the session, but we use
# sock_info.write_command.
sock_info.validate_session(client, session)
last_run = False
while run:
if not self.retrying:
self.next_run = next(generator, None)
if self.next_run is None:
last_run = True
cmd_name = _COMMANDS[run.op_type]
bwc = self.bulk_ctx_class(
db_name, cmd_name, sock_info, op_id, listeners, session,
run.op_type, self.collection.codec_options)
while run.idx_offset < len(run.ops):
# If this is the last possible operation, use the
# final write concern.
if last_run and (len(run.ops) - run.idx_offset) == 1:
write_concern = final_write_concern or write_concern
cmd = SON([(cmd_name, self.collection.name),
('ordered', self.ordered)])
if not write_concern.is_server_default:
@ -290,25 +306,31 @@ class _Bulk(object):
sock_info.send_cluster_time(cmd, session, client)
sock_info.add_server_api(cmd)
ops = islice(run.ops, run.idx_offset, None)
# Run as many ops as possible in one command.
result, to_send = bwc.execute(cmd, ops, client)
if write_concern.acknowledged:
result, to_send = bwc.execute(cmd, ops, client)
# Retryable writeConcernErrors halt the execution of this run.
wce = result.get('writeConcernError', {})
if wce.get('code', 0) in _RETRYABLE_ERROR_CODES:
# Synthesize the full bulk result without modifying the
# current one because this write operation may be retried.
full = copy.deepcopy(full_result)
_merge_command(run, full, run.idx_offset, result)
_raise_bulk_write_error(full)
# Retryable writeConcernErrors halt the execution of this run.
wce = result.get('writeConcernError', {})
if wce.get('code', 0) in _RETRYABLE_ERROR_CODES:
# Synthesize the full bulk result without modifying the
# current one because this write operation may be retried.
full = copy.deepcopy(full_result)
_merge_command(run, full, run.idx_offset, result)
_raise_bulk_write_error(full)
_merge_command(run, full_result, run.idx_offset, result)
# We're no longer in a retry once a command succeeds.
self.retrying = False
self.started_retryable_write = False
_merge_command(run, full_result, run.idx_offset, result)
# We're no longer in a retry once a command succeeds.
self.retrying = False
self.started_retryable_write = False
if self.ordered and "writeErrors" in result:
break
else:
to_send = bwc.execute_unack(cmd, ops, client)
if self.ordered and "writeErrors" in result:
break
run.idx_offset += len(to_send)
# We're supposed to continue if errors are
@ -316,7 +338,7 @@ class _Bulk(object):
if self.ordered and full_result['writeErrors']:
break
# Reset our state
self.current_run = run = next(generator, None)
self.current_run = run = self.next_run
def execute_command(self, generator, write_concern, session):
"""Execute using write commands.
@ -377,7 +399,7 @@ class _Bulk(object):
run.idx_offset += len(to_send)
self.current_run = run = next(generator, None)
def execute_command_no_results(self, sock_info, generator):
def execute_command_no_results(self, sock_info, generator, write_concern):
"""Execute write commands with OP_MSG and w=0 WriteConcern, ordered.
"""
full_result = {
@ -393,16 +415,16 @@ class _Bulk(object):
# Ordered bulk writes have to be acknowledged so that we stop
# processing at the first error, even when the application
# specified unacknowledged writeConcern.
write_concern = WriteConcern()
initial_write_concern = WriteConcern()
op_id = _randint()
try:
self._execute_command(
generator, write_concern, None,
sock_info, op_id, False, full_result)
generator, initial_write_concern, None,
sock_info, op_id, False, full_result, write_concern)
except OperationFailure:
pass
def execute_no_results(self, sock_info, generator):
def execute_no_results(self, sock_info, generator, write_concern):
"""Execute all operations, returning no results (w=0).
"""
if self.uses_collation:
@ -411,16 +433,21 @@ class _Bulk(object):
if self.uses_array_filters:
raise ConfigurationError(
'arrayFilters is unsupported for unacknowledged writes.')
if self.uses_hint:
# Guard against unsupported unacknowledged writes.
unack = write_concern and not write_concern.acknowledged
if unack and self.uses_hint_delete and sock_info.max_wire_version < 9:
raise ConfigurationError(
'hint is unsupported for unacknowledged writes.')
'Must be connected to MongoDB 4.4+ to use hint on unacknowledged delete commands.')
if unack and self.uses_hint_update and sock_info.max_wire_version < 8:
raise ConfigurationError(
'Must be connected to MongoDB 4.2+ to use hint on unacknowledged update commands.')
# Cannot have both unacknowledged writes and bypass document validation.
if self.bypass_doc_val:
raise OperationFailure("Cannot set bypass_document_validation with"
" unacknowledged write concern")
if self.ordered:
return self.execute_command_no_results(sock_info, generator)
return self.execute_command_no_results(sock_info, generator, write_concern)
return self.execute_op_msg_no_results(sock_info, generator)
def execute(self, write_concern, session):
@ -443,6 +470,6 @@ class _Bulk(object):
client = self.collection.database.client
if not write_concern.acknowledged:
with client._socket_for_writes(session) as sock_info:
self.execute_no_results(sock_info, generator)
self.execute_no_results(sock_info, generator, write_concern)
else:
return self.execute_command(generator, write_concern, session)

View File

@ -608,9 +608,9 @@ class Collection(common.BaseObject):
else:
update_doc['arrayFilters'] = array_filters
if hint is not None:
if not acknowledged:
if not acknowledged and sock_info.max_wire_version < 8:
raise ConfigurationError(
'hint is unsupported for unacknowledged writes.')
'Must be connected to MongoDB 4.2+ to use hint on unacknowledged update commands.')
if not isinstance(hint, str):
hint = helpers._index_document(hint)
update_doc['hint'] = hint
@ -961,9 +961,9 @@ class Collection(common.BaseObject):
else:
delete_doc['collation'] = collation
if hint is not None:
if not acknowledged:
if not acknowledged and sock_info.max_wire_version < 9:
raise ConfigurationError(
'hint is unsupported for unacknowledged writes.')
'Must be connected to MongoDB 4.4+ to use hint on unacknowledged delete commands.')
if not isinstance(hint, str):
hint = helpers._index_document(hint)
delete_doc['hint'] = hint
@ -2277,8 +2277,9 @@ class Collection(common.BaseObject):
write_concern = self._write_concern_for_cmd(cmd, session)
def _find_and_modify(session, sock_info, retryable_write):
acknowledged = write_concern.acknowledged
if array_filters is not None:
if not write_concern.acknowledged:
if not acknowledged:
raise ConfigurationError(
'arrayFilters is unsupported for unacknowledged '
'writes.')
@ -2286,10 +2287,10 @@ class Collection(common.BaseObject):
if hint is not None:
if sock_info.max_wire_version < 8:
raise ConfigurationError(
'Must be connected to MongoDB 4.2+ to use hint.')
if not write_concern.acknowledged:
'Must be connected to MongoDB 4.2+ to use hint on find and modify commands.')
elif (not acknowledged and sock_info.max_wire_version < 9):
raise ConfigurationError(
'hint is unsupported for unacknowledged writes.')
'Must be connected to MongoDB 4.4+ to use hint on unacknowledged find and modify commands.')
cmd['hint'] = hint
if not write_concern.is_server_default:
cmd['writeConcern'] = write_concern.document

View File

@ -0,0 +1,269 @@
{
"description": "bulkWrite-deleteMany-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
],
"tests": [
{
"description": "Unacknowledged deleteMany with hint string fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteMany": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged deleteMany with hint document fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteMany": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged deleteMany with hint string on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteMany": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"delete": "coll0",
"deletes": [
{
"q": {
"_id": {
"$gt": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"limit": 0
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged deleteMany with hint document on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteMany": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"delete": "coll0",
"deletes": [
{
"q": {
"_id": {
"$gt": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"limit": 0
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,265 @@
{
"description": "bulkWrite-deleteOne-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged deleteOne with hint string fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged deleteOne with hint document fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged deleteOne with hint string on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"delete": "coll0",
"deletes": [
{
"q": {
"_id": {
"$gt": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"limit": 1
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged deleteOne with hint document on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"delete": "coll0",
"deletes": [
{
"q": {
"_id": {
"$gt": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"limit": 1
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,293 @@
{
"description": "bulkWrite-replaceOne-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged replaceOne with hint string fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"replaceOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": "_id_"
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged replaceOne with hint document fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"replaceOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": {
"_id": 1
}
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged replaceOne with hint string on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"replaceOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": "_id_"
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"x": 111
},
"multi": {
"$$unsetOrMatches": false
},
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged replaceOne with hint document on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"replaceOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": {
"_id": 1
}
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"x": 111
},
"multi": {
"$$unsetOrMatches": false
},
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,305 @@
{
"description": "bulkWrite-updateMany-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
],
"tests": [
{
"description": "Unacknowledged updateMany with hint string fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateMany": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged updateMany with hint document fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateMany": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged updateMany with hint string on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateMany": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"$inc": {
"x": 1
}
},
"multi": true,
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged updateMany with hint document on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateMany": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"$inc": {
"x": 1
}
},
"multi": true,
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,305 @@
{
"description": "bulkWrite-updateOne-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged updateOne with hint string fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged updateOne with hint document fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
}
}
]
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged updateOne with hint string on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"$inc": {
"x": 1
}
},
"multi": {
"$$unsetOrMatches": false
},
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged updateOne with hint document on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateOne": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
}
}
]
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"$inc": {
"x": 1
}
},
"multi": {
"$$unsetOrMatches": false
},
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,245 @@
{
"description": "deleteMany-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
],
"tests": [
{
"description": "Unacknowledged deleteMany with hint string fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "deleteMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged deleteMany with hint document fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "deleteMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged deleteMany with hint string on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "deleteMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"delete": "coll0",
"deletes": [
{
"q": {
"_id": {
"$gt": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"limit": 0
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged deleteMany with hint document on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "deleteMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"delete": "coll0",
"deletes": [
{
"q": {
"_id": {
"$gt": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"limit": 0
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,241 @@
{
"description": "deleteOne-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged deleteOne with hint string fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "deleteOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged deleteOne with hint document fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "deleteOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged deleteOne with hint string on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "deleteOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"delete": "coll0",
"deletes": [
{
"q": {
"_id": {
"$gt": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"limit": 1
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged deleteOne with hint document on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "deleteOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"delete": "coll0",
"deletes": [
{
"q": {
"_id": {
"$gt": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"limit": 1
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,225 @@
{
"description": "findOneAndDelete-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged findOneAndDelete with hint string fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndDelete",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged findOneAndDelete with hint document fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndDelete",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged findOneAndDelete with hint string on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndDelete",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
},
"expectResult": {
"$$unsetOrMatches": null
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"findAndModify": "coll0",
"query": {
"_id": {
"$gt": 1
}
},
"remove": true,
"hint": {
"$$type": [
"string",
"object"
]
},
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged findOneAndDelete with hint document on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndDelete",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
},
"expectResult": {
"$$unsetOrMatches": null
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"findAndModify": "coll0",
"query": {
"_id": {
"$gt": 1
}
},
"remove": true,
"hint": {
"$$type": [
"string",
"object"
]
},
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,248 @@
{
"description": "findOneAndReplace-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
},
{
"collection": {
"id": "collection1",
"database": "database0",
"collectionName": "coll0"
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged findOneAndReplace with hint string fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndReplace",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": "_id_"
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged findOneAndReplace with hint document fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndReplace",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": {
"_id": 1
}
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged findOneAndReplace with hint string on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndReplace",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": "_id_"
},
"expectResult": {
"$$unsetOrMatches": null
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"findAndModify": "coll0",
"query": {
"_id": {
"$gt": 1
}
},
"update": {
"x": 111
},
"hint": {
"$$type": [
"string",
"object"
]
},
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged findOneAndReplace with hint document on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndReplace",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": {
"_id": 1
}
},
"expectResult": {
"$$unsetOrMatches": null
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"findAndModify": "coll0",
"query": {
"_id": {
"$gt": 1
}
},
"update": {
"x": 111
},
"hint": {
"$$type": [
"string",
"object"
]
},
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,253 @@
{
"description": "findOneAndUpdate-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged findOneAndUpdate with hint string fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndUpdate",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged findOneAndUpdate with hint document fails with client-side error on pre-4.4 server",
"runOnRequirements": [
{
"maxServerVersion": "4.2.99"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndUpdate",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged findOneAndUpdate with hint string on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndUpdate",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
},
"expectResult": {
"$$unsetOrMatches": null
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"findAndModify": "coll0",
"query": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged findOneAndUpdate with hint document on 4.4+ server",
"runOnRequirements": [
{
"minServerVersion": "4.4.0"
}
],
"operations": [
{
"object": "collection0",
"name": "findOneAndUpdate",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
},
"expectResult": {
"$$unsetOrMatches": null
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"findAndModify": "coll0",
"query": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"$$type": [
"string",
"object"
]
},
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,269 @@
{
"description": "replaceOne-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged replaceOne with hint string fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "replaceOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": "_id_"
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged replaceOne with hint document fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "replaceOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": {
"_id": 1
}
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged replaceOne with hint string on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "replaceOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": "_id_"
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"x": 111
},
"multi": {
"$$unsetOrMatches": false
},
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged replaceOne with hint document on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "replaceOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": {
"_id": 1
}
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"x": 111
},
"multi": {
"$$unsetOrMatches": false
},
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -1,193 +0,0 @@
{
"description": "unacknowledged-bulkWrite-delete-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "BulkWrite_delete_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "BulkWrite_delete_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
},
{
"_id": 4,
"x": 44
}
]
}
],
"tests": [
{
"description": "Unacknowledged bulkWrite deleteOne with hints fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteOne": {
"filter": {
"_id": 1
},
"hint": "_id_"
}
},
{
"deleteOne": {
"filter": {
"_id": 2
},
"hint": {
"_id": 1
}
}
}
],
"ordered": true
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "BulkWrite_delete_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
},
{
"_id": 4,
"x": 44
}
]
}
]
},
{
"description": "Unacknowledged bulkWrite deleteMany with hints fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"deleteMany": {
"filter": {
"_id": {
"$lt": 3
}
},
"hint": "_id_"
}
},
{
"deleteMany": {
"filter": {
"_id": {
"$gte": 4
}
},
"hint": {
"_id": 1
}
}
}
],
"ordered": true
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "BulkWrite_delete_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
},
{
"_id": 4,
"x": 44
}
]
}
]
}
]
}

View File

@ -1,284 +0,0 @@
{
"description": "unacknowledged-bulkWrite-update-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "Bulkwrite_update_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "Bulkwrite_update_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
},
{
"_id": 4,
"x": 44
}
]
}
],
"tests": [
{
"description": "Unacknowledged bulkWrite updateOne with hints fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateOne": {
"filter": {
"_id": 1
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
}
},
{
"updateOne": {
"filter": {
"_id": 1
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
}
}
],
"ordered": true
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "Bulkwrite_update_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
},
{
"_id": 4,
"x": 44
}
]
}
]
},
{
"description": "Unacknowledged bulkWrite updateMany with hints fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"updateMany": {
"filter": {
"_id": {
"$lt": 3
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
}
},
{
"updateMany": {
"filter": {
"_id": {
"$lt": 3
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
}
}
],
"ordered": true
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "Bulkwrite_update_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
},
{
"_id": 4,
"x": 44
}
]
}
]
},
{
"description": "Unacknowledged bulkWrite replaceOne with hints fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "bulkWrite",
"arguments": {
"requests": [
{
"replaceOne": {
"filter": {
"_id": 3
},
"replacement": {
"x": 333
},
"hint": "_id_"
}
},
{
"replaceOne": {
"filter": {
"_id": 4
},
"replacement": {
"x": 444
},
"hint": {
"_id": 1
}
}
}
],
"ordered": true
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "Bulkwrite_update_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
},
{
"_id": 4,
"x": 44
}
]
}
]
}
]
}

View File

@ -1,149 +0,0 @@
{
"description": "unacknowledged-deleteMany-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "DeleteMany_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "DeleteMany_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
],
"tests": [
{
"description": "Unacknowledged deleteMany with hint string fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "deleteMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": "_id_"
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "DeleteMany_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
]
},
{
"description": "Unacknowledged deleteMany with hint document fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "deleteMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "DeleteMany_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
]
}
]
}

View File

@ -1,133 +0,0 @@
{
"description": "unacknowledged-deleteOne-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "DeleteOne_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "DeleteOne_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged deleteOne with hint string fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "deleteOne",
"arguments": {
"filter": {
"_id": 1
},
"hint": "_id_"
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "DeleteOne_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
},
{
"description": "Unacknowledged deleteOne with hint document fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "deleteOne",
"arguments": {
"filter": {
"_id": 1
},
"hint": {
"_id": 1
}
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "DeleteOne_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
}
]
}

View File

@ -1,133 +0,0 @@
{
"description": "unacknowledged-findOneAndDelete-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "findOneAndDelete_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "findOneAndDelete_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged findOneAndDelete with hint string fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "findOneAndDelete",
"arguments": {
"filter": {
"_id": 1
},
"hint": "_id_"
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "findOneAndDelete_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
},
{
"description": "Unacknowledged findOneAndDelete with hint document fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "findOneAndDelete",
"arguments": {
"filter": {
"_id": 1
},
"hint": {
"_id": 1
}
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "findOneAndDelete_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
}
]
}

View File

@ -1,139 +0,0 @@
{
"description": "unacknowledged-findOneAndReplace-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "FindOneAndReplace_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "FindOneAndReplace_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged findOneAndReplace with hint string fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "findOneAndReplace",
"arguments": {
"filter": {
"_id": 1
},
"replacement": {
"x": 33
},
"hint": "_id_"
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "FindOneAndReplace_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
},
{
"description": "Unacknowledged findOneAndReplace with hint document fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "findOneAndReplace",
"arguments": {
"filter": {
"_id": 1
},
"replacement": {
"x": 33
},
"hint": {
"_id": 1
}
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "FindOneAndReplace_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
}
]
}

View File

@ -1,143 +0,0 @@
{
"description": "unacknowledged-findOneAndUpdate-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "FindOneAndUpdate_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "FindOneAndUpdate_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged findOneAndUpdate with hint string fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "findOneAndUpdate",
"arguments": {
"filter": {
"_id": 1
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "FindOneAndUpdate_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
},
{
"description": "Unacknowledged findOneAndUpdate with hint document fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "findOneAndUpdate",
"arguments": {
"filter": {
"_id": 1
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "FindOneAndUpdate_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
}
]
}

View File

@ -1,143 +0,0 @@
{
"description": "unacknowledged-replaceOne-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "ReplaceOne_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "ReplaceOne_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged ReplaceOne with hint string fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "replaceOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": "_id_"
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "ReplaceOne_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
},
{
"description": "Unacknowledged ReplaceOne with hint document fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "replaceOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"replacement": {
"x": 111
},
"hint": {
"_id": 1
}
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "ReplaceOne_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
}
]
}

View File

@ -1,159 +0,0 @@
{
"description": "unacknowledged-updateMany-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "Updatemany_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "Updatemany_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
],
"tests": [
{
"description": "Unacknowledged updateMany with hint string fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "updateMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "Updatemany_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
]
},
{
"description": "Unacknowledged updateMany with hint document fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "updateMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "Updatemany_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
]
}
]
}

View File

@ -1,147 +0,0 @@
{
"description": "unacknowledged-updateOne-hint-clientError",
"schemaVersion": "1.1",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "crud-v2"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "UpdateOne_hint",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "UpdateOne_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged updateOne with hint string fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "updateOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "UpdateOne_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
},
{
"description": "Unacknowledged updateOne with hint document fails with client-side error",
"operations": [
{
"object": "collection0",
"name": "updateOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
],
"outcome": [
{
"collectionName": "UpdateOne_hint",
"databaseName": "crud-v2",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
]
}
]
}

View File

@ -0,0 +1,281 @@
{
"description": "updateMany-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
},
{
"_id": 3,
"x": 33
}
]
}
],
"tests": [
{
"description": "Unacknowledged updateMany with hint string fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "updateMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged updateMany with hint document fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "updateMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged updateMany with hint string on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "updateMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"$inc": {
"x": 1
}
},
"multi": true,
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged updateMany with hint document on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "updateMany",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"$inc": {
"x": 1
}
},
"multi": true,
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}

View File

@ -0,0 +1,281 @@
{
"description": "updateOne-hint-unacknowledged",
"schemaVersion": "1.0",
"createEntities": [
{
"client": {
"id": "client0",
"observeEvents": [
"commandStartedEvent"
]
}
},
{
"database": {
"id": "database0",
"client": "client0",
"databaseName": "db0"
}
},
{
"collection": {
"id": "collection0",
"database": "database0",
"collectionName": "coll0",
"collectionOptions": {
"writeConcern": {
"w": 0
}
}
}
}
],
"initialData": [
{
"collectionName": "coll0",
"databaseName": "db0",
"documents": [
{
"_id": 1,
"x": 11
},
{
"_id": 2,
"x": 22
}
]
}
],
"tests": [
{
"description": "Unacknowledged updateOne with hint string fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "updateOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged updateOne with hint document fails with client-side error on pre-4.2 server",
"runOnRequirements": [
{
"maxServerVersion": "4.0.99"
}
],
"operations": [
{
"object": "collection0",
"name": "updateOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
},
"expectError": {
"isClientError": true
}
}
],
"expectEvents": [
{
"client": "client0",
"events": []
}
]
},
{
"description": "Unacknowledged updateOne with hint string on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "updateOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": "_id_"
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"$inc": {
"x": 1
}
},
"multi": {
"$$unsetOrMatches": false
},
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
},
{
"description": "Unacknowledged updateOne with hint document on 4.2+ server",
"runOnRequirements": [
{
"minServerVersion": "4.2.0"
}
],
"operations": [
{
"object": "collection0",
"name": "updateOne",
"arguments": {
"filter": {
"_id": {
"$gt": 1
}
},
"update": {
"$inc": {
"x": 1
}
},
"hint": {
"_id": 1
}
},
"expectResult": {
"$$unsetOrMatches": {
"acknowledged": {
"$$unsetOrMatches": false
}
}
}
}
],
"expectEvents": [
{
"client": "client0",
"events": [
{
"commandStartedEvent": {
"command": {
"update": "coll0",
"updates": [
{
"q": {
"_id": {
"$gt": 1
}
},
"u": {
"$inc": {
"x": 1
}
},
"multi": {
"$$unsetOrMatches": false
},
"upsert": {
"$$unsetOrMatches": false
},
"hint": {
"$$type": [
"string",
"object"
]
}
}
],
"writeConcern": {
"w": 0
}
}
}
}
]
}
]
}
]
}