Merge branch 'master' of github.com:mongodb/mongo-python-driver
This commit is contained in:
commit
cb14e33d30
@ -2031,6 +2031,17 @@ tasks:
|
||||
- func: "attach benchmark test results"
|
||||
- func: "send dashboard data"
|
||||
|
||||
- name: "perf-8.0-standalone"
|
||||
tags: ["perf"]
|
||||
commands:
|
||||
- func: "bootstrap mongo-orchestration"
|
||||
vars:
|
||||
VERSION: "8.0"
|
||||
TOPOLOGY: "server"
|
||||
- func: "run perf tests"
|
||||
- func: "attach benchmark test results"
|
||||
- func: "send dashboard data"
|
||||
|
||||
- name: "assign-pr-reviewer"
|
||||
tags: ["pr"]
|
||||
allowed_requesters: ["patch", "github_pr"]
|
||||
@ -3041,6 +3052,7 @@ buildvariants:
|
||||
tasks:
|
||||
- name: "perf-6.0-standalone"
|
||||
- name: "perf-6.0-standalone-ssl"
|
||||
- name: "perf-8.0-standalone"
|
||||
|
||||
# Platform notes
|
||||
# i386 builds of OpenSSL or Cyrus SASL are not available
|
||||
|
||||
2
.github/workflows/test-python.yml
vendored
2
.github/workflows/test-python.yml
vendored
@ -96,7 +96,7 @@ jobs:
|
||||
- name: Start MongoDB
|
||||
uses: supercharge/mongodb-github-action@1.10.0
|
||||
with:
|
||||
mongodb-version: 4.4
|
||||
mongodb-version: '8.0.0-rc4'
|
||||
- name: Run tests
|
||||
run: |
|
||||
hatch run doctest:test
|
||||
|
||||
@ -35,5 +35,6 @@
|
||||
.. automethod:: get_database
|
||||
.. automethod:: server_info
|
||||
.. automethod:: watch
|
||||
.. automethod:: bulk_write
|
||||
.. automethod:: __getitem__
|
||||
.. automethod:: __getattr__
|
||||
|
||||
@ -35,5 +35,6 @@
|
||||
.. automethod:: get_database
|
||||
.. automethod:: server_info
|
||||
.. automethod:: watch
|
||||
.. automethod:: bulk_write
|
||||
.. automethod:: __getitem__
|
||||
.. automethod:: __getattr__
|
||||
|
||||
@ -16,7 +16,19 @@ PyMongo 4.9 brings a number of improvements including:
|
||||
:class:`~pymongo.asynchronous.cursor.AsyncCursor`,
|
||||
and :class:`~pymongo.asynchronous.command_cursor.AsyncCommandCursor`
|
||||
as an asynchronous-friendly alternative to ``list(cursor)``.
|
||||
|
||||
- Added :meth:`~pymongo.mongo_client.MongoClient.bulk_write` to :class:`~pymongo.mongo_client.MongoClient`
|
||||
and :class:`~pymongo.asynchronous.mongo_client.AsyncMongoClient`,
|
||||
enabling users to perform insert, update, and delete operations
|
||||
against mixed namespaces in a minimized number of round trips.
|
||||
Please see :doc:`examples/client_bulk` for more information.
|
||||
- Added support for the ``namespace`` parameter to the
|
||||
:class:`~pymongo.operations.InsertOne`,
|
||||
:class:`~pymongo.operations.ReplaceOne`,
|
||||
:class:`~pymongo.operations.UpdateOne`,
|
||||
:class:`~pymongo.operations.UpdateMany`,
|
||||
:class:`~pymongo.operations.DeleteOne`, and
|
||||
:class:`~pymongo.operations.DeleteMany` operations, so
|
||||
they can be used in the new :meth:`~pymongo.mongo_client.MongoClient.bulk_write`.
|
||||
|
||||
Issues Resolved
|
||||
...............
|
||||
|
||||
188
doc/examples/client_bulk.rst
Normal file
188
doc/examples/client_bulk.rst
Normal file
@ -0,0 +1,188 @@
|
||||
Client Bulk Write Operations
|
||||
=============================
|
||||
|
||||
.. testsetup::
|
||||
|
||||
from pymongo import MongoClient
|
||||
|
||||
client = MongoClient()
|
||||
client.drop_database("client_bulk_example")
|
||||
db = client.client_bulk_example
|
||||
client.db.drop_collection("test_one")
|
||||
client.db.drop_collection("test_two")
|
||||
client.db.drop_collection("test_three")
|
||||
client.db.drop_collection("test_four")
|
||||
client.db.drop_collection("test_five")
|
||||
client.db.drop_collection("test_six")
|
||||
|
||||
The :meth:`~pymongo.mongo_client.MongoClient.bulk_write`
|
||||
method has been added to :class:`~pymongo.mongo_client.MongoClient` in PyMongo 4.9.
|
||||
This method enables users to perform batches of write operations **across
|
||||
multiple namespaces** in a minimized number of round trips, and
|
||||
to receive detailed results for each operation performed.
|
||||
|
||||
.. note:: This method requires MongoDB server version 8.0+.
|
||||
|
||||
Basic Usage
|
||||
------------
|
||||
|
||||
A list of insert, update, and delete operations can be passed into the
|
||||
:meth:`~pymongo.mongo_client.MongoClient.bulk_write` method. Each request
|
||||
must include the namespace on which to perform the operation.
|
||||
|
||||
PyMongo will automatically split the given requests into smaller sub-batches based on
|
||||
the maximum message size accepted by MongoDB, supporting very large bulk write operations.
|
||||
|
||||
The return value is an instance of
|
||||
:class:`~pymongo.results.ClientBulkWriteResult`.
|
||||
|
||||
.. _summary_client_bulk:
|
||||
|
||||
Summary Results
|
||||
.................
|
||||
|
||||
By default, the returned :class:`~pymongo.results.ClientBulkWriteResult` instance will contain a
|
||||
summary of the types of operations performed in the bulk write, along with their respective counts.
|
||||
|
||||
.. doctest::
|
||||
:options: +NORMALIZE_WHITESPACE
|
||||
|
||||
>>> from pymongo import InsertOne, DeleteOne, UpdateOne
|
||||
>>> models = [
|
||||
... InsertOne(namespace="db.test_one", document={"_id": 1}),
|
||||
... InsertOne(namespace="db.test_two", document={"_id": 2}),
|
||||
... DeleteOne(namespace="db.test_one", filter={"_id": 1}),
|
||||
... UpdateOne(
|
||||
... namespace="db.test_two",
|
||||
... filter={"_id": 4},
|
||||
... update={"$inc": {"j": 1}},
|
||||
... upsert=True,
|
||||
... ),
|
||||
... ]
|
||||
>>> result = client.bulk_write(models)
|
||||
>>> result.inserted_count
|
||||
2
|
||||
>>> result.deleted_count
|
||||
1
|
||||
>>> result.modified_count
|
||||
0
|
||||
>>> result.upserted_count
|
||||
1
|
||||
|
||||
.. _verbose_client_bulk:
|
||||
|
||||
Verbose Results
|
||||
.................
|
||||
|
||||
If the ``verbose_results`` parameter is set to True, the returned :class:`~pymongo.results.ClientBulkWriteResult`
|
||||
instance will also include detailed results about each successful operation performed as part of the bulk write.
|
||||
|
||||
.. doctest::
|
||||
:options: +NORMALIZE_WHITESPACE
|
||||
|
||||
>>> from pymongo import InsertOne, DeleteMany, ReplaceOne, UpdateMany
|
||||
>>> models = [
|
||||
... DeleteMany(
|
||||
... namespace="db.test_two", filter={}
|
||||
... ), # Delete all documents from the previous example
|
||||
... InsertOne(namespace="db.test_one", document={"_id": 1}),
|
||||
... InsertOne(namespace="db.test_one", document={"_id": 2}),
|
||||
... InsertOne(namespace="db.test_two", document={"_id": 3}),
|
||||
... UpdateMany(namespace="db.test_one", filter={}, update={"$set": {"foo": "bar"}}),
|
||||
... ReplaceOne(
|
||||
... namespace="db.test_two", filter={"j": 1}, replacement={"_id": 4}, upsert=True
|
||||
... ),
|
||||
... ]
|
||||
>>> result = client.bulk_write(models, verbose_results=True)
|
||||
>>> result.delete_results
|
||||
{0: DeleteResult({'ok': 1.0, 'idx': 0, 'n': 2}, ...)}
|
||||
>>> result.insert_results
|
||||
{1: InsertOneResult(1, ...),
|
||||
2: InsertOneResult(2, ...),
|
||||
3: InsertOneResult(3, ...)}
|
||||
>>> result.update_results
|
||||
{4: UpdateResult({'ok': 1.0, 'idx': 4, 'n': 2, 'nModified': 2}, ...),
|
||||
5: UpdateResult({'ok': 1.0, 'idx': 5, 'n': 1, 'nModified': 0, 'upserted': {'_id': 4}}, ...)}
|
||||
|
||||
|
||||
Handling Errors
|
||||
----------------
|
||||
|
||||
If any errors occur during the bulk write, a :class:`~pymongo.errors.ClientBulkWriteException` will be raised.
|
||||
If a server, connection, or network error occurred, the ``error`` field of the exception will contain
|
||||
that error.
|
||||
|
||||
Individual write errors or write concern errors get recorded in the ``write_errors`` and ``write_concern_errors`` fields of the exception.
|
||||
The ``partial_result`` field gets populated with the results of any operations that were successfully completed before the exception was raised.
|
||||
|
||||
.. _ordered_client_bulk:
|
||||
|
||||
Ordered Operations
|
||||
....................
|
||||
|
||||
In an ordered bulk write (the default), if an individual write fails, no further operations will get executed.
|
||||
For example, a duplicate key error on the third operation below aborts the remaining two operations.
|
||||
|
||||
.. doctest::
|
||||
:options: +NORMALIZE_WHITESPACE
|
||||
|
||||
>>> from pymongo import InsertOne, DeleteOne
|
||||
>>> from pymongo.errors import ClientBulkWriteException
|
||||
>>> models = [
|
||||
... InsertOne(namespace="db.test_three", document={"_id": 3}),
|
||||
... InsertOne(namespace="db.test_four", document={"_id": 4}),
|
||||
... InsertOne(namespace="db.test_three", document={"_id": 3}), # Duplicate _id
|
||||
... InsertOne(namespace="db.test_four", document={"_id": 5}),
|
||||
... DeleteOne(namespace="db.test_three", filter={"_id": 3}),
|
||||
... ]
|
||||
>>> try:
|
||||
... client.bulk_write(models)
|
||||
... except ClientBulkWriteException as cbwe:
|
||||
... exception = cbwe
|
||||
...
|
||||
>>> exception.write_errors
|
||||
[{'ok': 0.0,
|
||||
'idx': 2,
|
||||
'code': 11000,
|
||||
'errmsg': 'E11000 duplicate key error ... dup key: { _id: 3 }', ...
|
||||
'op': {'insert': 'db.test_three', 'document': {'_id': 3}}}]
|
||||
>>> exception.partial_result.inserted_count
|
||||
2
|
||||
>>> exception.partial_result.deleted_count
|
||||
0
|
||||
|
||||
.. _unordered_client_bulk:
|
||||
|
||||
Unordered Operations
|
||||
.....................
|
||||
|
||||
If the ``ordered`` parameter is set to False, all operations in the bulk write will be attempted, regardless of any individual write errors that occur.
|
||||
For example, the fourth and fifth write operations below get executed successfully, despite the duplicate key error on the third operation.
|
||||
|
||||
.. doctest::
|
||||
:options: +NORMALIZE_WHITESPACE
|
||||
|
||||
>>> from pymongo import InsertOne, DeleteOne
|
||||
>>> from pymongo.errors import ClientBulkWriteException
|
||||
>>> models = [
|
||||
... InsertOne(namespace="db.test_five", document={"_id": 5}),
|
||||
... InsertOne(namespace="db.test_six", document={"_id": 6}),
|
||||
... InsertOne(namespace="db.test_five", document={"_id": 5}), # Duplicate _id
|
||||
... InsertOne(namespace="db.test_six", document={"_id": 7}),
|
||||
... DeleteOne(namespace="db.test_five", filter={"_id": 5}),
|
||||
... ]
|
||||
>>> try:
|
||||
... client.bulk_write(models, ordered=False)
|
||||
... except ClientBulkWriteException as cbwe:
|
||||
... exception = cbwe
|
||||
...
|
||||
>>> exception.write_errors
|
||||
[{'ok': 0.0,
|
||||
'idx': 2,
|
||||
'code': 11000,
|
||||
'errmsg': 'E11000 duplicate key error ... dup key: { _id: 5 }', ...
|
||||
'op': {'insert': 'db.test_five', 'document': {'_id': 5}}}]
|
||||
>>> exception.partial_result.inserted_count
|
||||
3
|
||||
>>> exception.partial_result.deleted_count
|
||||
1
|
||||
@ -22,6 +22,7 @@ MongoDB, you can start it like so:
|
||||
copydb
|
||||
custom_type
|
||||
bulk
|
||||
client_bulk
|
||||
datetimes
|
||||
geo
|
||||
gevent
|
||||
|
||||
@ -550,7 +550,8 @@ class _AsyncClientBulk:
|
||||
if result.get("error"):
|
||||
error = result["error"]
|
||||
retryable_top_level_error = (
|
||||
isinstance(error.details, dict)
|
||||
hasattr(error, "details")
|
||||
and isinstance(error.details, dict)
|
||||
and error.details.get("code", 0) in _RETRYABLE_ERROR_CODES
|
||||
)
|
||||
retryable_network_error = isinstance(
|
||||
|
||||
@ -2274,8 +2274,8 @@ class AsyncMongoClient(common.BaseObject, Generic[_DocumentType]):
|
||||
1
|
||||
>>> result.modified_count
|
||||
0
|
||||
>>> result.upserted_ids
|
||||
{3: ObjectId('54f62ee28891e756a6e1abd5')}
|
||||
>>> result.upserted_count
|
||||
1
|
||||
>>> async for doc in db.test.find({}):
|
||||
... print(doc)
|
||||
...
|
||||
@ -2312,6 +2312,8 @@ class AsyncMongoClient(common.BaseObject, Generic[_DocumentType]):
|
||||
|
||||
:return: An instance of :class:`~pymongo.results.ClientBulkWriteResult`.
|
||||
|
||||
.. seealso:: For more info, see :doc:`/examples/client_bulk`.
|
||||
|
||||
.. seealso:: :ref:`writes-and-ids`
|
||||
|
||||
.. note:: requires MongoDB server version 8.0+.
|
||||
@ -2562,7 +2564,9 @@ class _ClientConnectionRetryable(Generic[T]):
|
||||
if not self._retryable:
|
||||
raise
|
||||
if isinstance(exc, ClientBulkWriteException) and exc.error:
|
||||
retryable_write_error_exc = exc.error.has_error_label("RetryableWriteError")
|
||||
retryable_write_error_exc = isinstance(
|
||||
exc.error, PyMongoError
|
||||
) and exc.error.has_error_label("RetryableWriteError")
|
||||
else:
|
||||
retryable_write_error_exc = exc.has_error_label("RetryableWriteError")
|
||||
if retryable_write_error_exc:
|
||||
|
||||
@ -342,10 +342,10 @@ class ClientBulkWriteException(OperationFailure):
|
||||
return self.details.get("writeConcernErrors", [])
|
||||
|
||||
@property
|
||||
def write_errors(self) -> Optional[Mapping[int, WriteError]]:
|
||||
def write_errors(self) -> Optional[list[WriteError]]:
|
||||
"""Errors that occurred during the execution of individual write operations.
|
||||
|
||||
This map will contain at most one entry if the bulk write was ordered.
|
||||
This list will contain at most one entry if the bulk write was ordered.
|
||||
"""
|
||||
return self.details.get("writeErrors", {})
|
||||
|
||||
|
||||
@ -985,11 +985,10 @@ _OP_MSG_OVERHEAD = 1000
|
||||
|
||||
|
||||
def _client_construct_op_msg(
|
||||
command: Mapping[str, Any],
|
||||
to_send_ops: list[Mapping[str, Any]],
|
||||
to_send_ns: list[Mapping[str, Any]],
|
||||
command_encoded: bytes,
|
||||
to_send_ops_encoded: list[bytes],
|
||||
to_send_ns_encoded: list[bytes],
|
||||
ack: bool,
|
||||
opts: CodecOptions,
|
||||
buf: _BytesIO,
|
||||
) -> int:
|
||||
# Write flags
|
||||
@ -998,7 +997,7 @@ def _client_construct_op_msg(
|
||||
|
||||
# Type 0 Section
|
||||
buf.write(b"\x00")
|
||||
buf.write(_dict_to_bson(command, False, opts))
|
||||
buf.write(command_encoded)
|
||||
|
||||
# Type 1 Section for ops
|
||||
buf.write(b"\x01")
|
||||
@ -1007,8 +1006,8 @@ def _client_construct_op_msg(
|
||||
buf.write(b"\x00\x00\x00\x00")
|
||||
buf.write(b"ops\x00")
|
||||
# Write all the ops documents
|
||||
for op in to_send_ops:
|
||||
buf.write(_dict_to_bson(op, False, opts))
|
||||
for op_encoded in to_send_ops_encoded:
|
||||
buf.write(op_encoded)
|
||||
resume_location = buf.tell()
|
||||
# Write type 1 section size
|
||||
length = buf.tell()
|
||||
@ -1023,8 +1022,8 @@ def _client_construct_op_msg(
|
||||
buf.write(b"\x00\x00\x00\x00")
|
||||
buf.write(b"nsInfo\x00")
|
||||
# Write all the nsInfo documents
|
||||
for ns in to_send_ns:
|
||||
buf.write(_dict_to_bson(ns, False, opts))
|
||||
for ns_encoded in to_send_ns_encoded:
|
||||
buf.write(ns_encoded)
|
||||
# Write type 1 section size
|
||||
length = buf.tell()
|
||||
buf.seek(size_location)
|
||||
@ -1045,19 +1044,23 @@ def _client_batched_op_msg_impl(
|
||||
|
||||
def _check_doc_size_limits(
|
||||
op_type: str,
|
||||
document: Mapping[str, Any],
|
||||
doc_size: int,
|
||||
limit: int,
|
||||
) -> int:
|
||||
doc_size = len(_dict_to_bson(document, False, opts))
|
||||
) -> None:
|
||||
if doc_size > limit:
|
||||
_raise_document_too_large(op_type, doc_size, limit)
|
||||
return doc_size
|
||||
|
||||
max_bson_size = ctx.max_bson_size
|
||||
max_write_batch_size = ctx.max_write_batch_size
|
||||
max_message_size = ctx.max_message_size
|
||||
|
||||
# Don't include bulkWrite-command-agnostic fields in document size calculations.
|
||||
command_encoded = _dict_to_bson(command, False, opts)
|
||||
# When OP_MSG is used unacknowledged we have to check command
|
||||
# document size client-side or applications won't be notified.
|
||||
if not ack:
|
||||
_check_doc_size_limits("bulkWrite", len(command_encoded), max_bson_size + _COMMAND_OVERHEAD)
|
||||
|
||||
# Don't include bulkWrite-command-agnostic fields in batch-splitting calculations.
|
||||
abridged_keys = ["bulkWrite", "errorsOnly", "ordered"]
|
||||
if command.get("bypassDocumentValidation"):
|
||||
abridged_keys.append("bypassDocumentValidation")
|
||||
@ -1068,17 +1071,14 @@ def _client_batched_op_msg_impl(
|
||||
command_abridged = {key: command[key] for key in abridged_keys}
|
||||
command_len_abridged = len(_dict_to_bson(command_abridged, False, opts))
|
||||
|
||||
# When OP_MSG is used unacknowledged we have to check command
|
||||
# document size client-side or applications won't be notified.
|
||||
if not ack:
|
||||
_check_doc_size_limits("bulkWrite", command_abridged, max_bson_size + _COMMAND_OVERHEAD)
|
||||
|
||||
# Maximum combined size of the ops and nsInfo document sequences.
|
||||
max_doc_sequences_bytes = max_message_size - (_OP_MSG_OVERHEAD + command_len_abridged)
|
||||
|
||||
ns_info = {}
|
||||
to_send_ops: list[Mapping[str, Any]] = []
|
||||
to_send_ns: list[Mapping[str, int]] = []
|
||||
to_send_ops_encoded: list[bytes] = []
|
||||
to_send_ns_encoded: list[bytes] = []
|
||||
total_ops_length = 0
|
||||
total_ns_length = 0
|
||||
idx = 0
|
||||
@ -1088,11 +1088,13 @@ def _client_batched_op_msg_impl(
|
||||
# Check insert/replace document size if unacknowledged.
|
||||
if real_op_type == "insert":
|
||||
if not ack:
|
||||
_check_doc_size_limits(real_op_type, op_doc["document"], max_bson_size)
|
||||
doc_size = len(_dict_to_bson(op_doc["document"], False, opts))
|
||||
_check_doc_size_limits(real_op_type, doc_size, max_bson_size)
|
||||
if real_op_type == "replace":
|
||||
op_type = "update"
|
||||
if not ack:
|
||||
_check_doc_size_limits(real_op_type, op_doc["updateMods"], max_bson_size)
|
||||
doc_size = len(_dict_to_bson(op_doc["updateMods"], False, opts))
|
||||
_check_doc_size_limits(real_op_type, doc_size, max_bson_size)
|
||||
|
||||
ns_doc_to_send = None
|
||||
ns_length = 0
|
||||
@ -1108,30 +1110,40 @@ def _client_batched_op_msg_impl(
|
||||
op_doc_to_send[op_type] = ns_info[namespace] # type: ignore[index]
|
||||
|
||||
# Encode current operation doc and, if newly added, namespace doc.
|
||||
op_length = len(_dict_to_bson(op_doc_to_send, False, opts))
|
||||
op_doc_encoded = _dict_to_bson(op_doc_to_send, False, opts)
|
||||
op_length = len(op_doc_encoded)
|
||||
if ns_doc_to_send:
|
||||
ns_length = len(_dict_to_bson(ns_doc_to_send, False, opts))
|
||||
ns_doc_encoded = _dict_to_bson(ns_doc_to_send, False, opts)
|
||||
ns_length = len(ns_doc_encoded)
|
||||
|
||||
# Check operation document size if unacknowledged.
|
||||
if not ack:
|
||||
_check_doc_size_limits(op_type, op_doc_to_send, max_bson_size + _COMMAND_OVERHEAD)
|
||||
_check_doc_size_limits(op_type, op_length, max_bson_size + _COMMAND_OVERHEAD)
|
||||
|
||||
new_message_size = total_ops_length + total_ns_length + op_length + ns_length
|
||||
# We have enough data, return this batch.
|
||||
if new_message_size > max_doc_sequences_bytes:
|
||||
break
|
||||
|
||||
# Add op and ns documents to this batch.
|
||||
to_send_ops.append(op_doc_to_send)
|
||||
to_send_ops_encoded.append(op_doc_encoded)
|
||||
total_ops_length += op_length
|
||||
if ns_doc_to_send:
|
||||
to_send_ns.append(ns_doc_to_send)
|
||||
to_send_ns_encoded.append(ns_doc_encoded)
|
||||
total_ns_length += ns_length
|
||||
|
||||
idx += 1
|
||||
|
||||
# We have enough documents, return this batch.
|
||||
if idx == max_write_batch_size:
|
||||
break
|
||||
|
||||
# Construct the entire OP_MSG.
|
||||
length = _client_construct_op_msg(command, to_send_ops, to_send_ns, ack, opts, buf)
|
||||
length = _client_construct_op_msg(
|
||||
command_encoded, to_send_ops_encoded, to_send_ns_encoded, ack, buf
|
||||
)
|
||||
|
||||
return to_send_ops, to_send_ns, length
|
||||
|
||||
|
||||
@ -548,7 +548,8 @@ class _ClientBulk:
|
||||
if result.get("error"):
|
||||
error = result["error"]
|
||||
retryable_top_level_error = (
|
||||
isinstance(error.details, dict)
|
||||
hasattr(error, "details")
|
||||
and isinstance(error.details, dict)
|
||||
and error.details.get("code", 0) in _RETRYABLE_ERROR_CODES
|
||||
)
|
||||
retryable_network_error = isinstance(
|
||||
|
||||
@ -2263,8 +2263,8 @@ class MongoClient(common.BaseObject, Generic[_DocumentType]):
|
||||
1
|
||||
>>> result.modified_count
|
||||
0
|
||||
>>> result.upserted_ids
|
||||
{3: ObjectId('54f62ee28891e756a6e1abd5')}
|
||||
>>> result.upserted_count
|
||||
1
|
||||
>>> for doc in db.test.find({}):
|
||||
... print(doc)
|
||||
...
|
||||
@ -2301,6 +2301,8 @@ class MongoClient(common.BaseObject, Generic[_DocumentType]):
|
||||
|
||||
:return: An instance of :class:`~pymongo.results.ClientBulkWriteResult`.
|
||||
|
||||
.. seealso:: For more info, see :doc:`/examples/client_bulk`.
|
||||
|
||||
.. seealso:: :ref:`writes-and-ids`
|
||||
|
||||
.. note:: requires MongoDB server version 8.0+.
|
||||
@ -2549,7 +2551,9 @@ class _ClientConnectionRetryable(Generic[T]):
|
||||
if not self._retryable:
|
||||
raise
|
||||
if isinstance(exc, ClientBulkWriteException) and exc.error:
|
||||
retryable_write_error_exc = exc.error.has_error_label("RetryableWriteError")
|
||||
retryable_write_error_exc = isinstance(
|
||||
exc.error, PyMongoError
|
||||
) and exc.error.has_error_label("RetryableWriteError")
|
||||
else:
|
||||
retryable_write_error_exc = exc.has_error_label("RetryableWriteError")
|
||||
if retryable_write_error_exc:
|
||||
|
||||
@ -19,12 +19,18 @@ import sys
|
||||
|
||||
sys.path[0:0] = [""]
|
||||
|
||||
from test.asynchronous import AsyncIntegrationTest, async_client_context, unittest
|
||||
from test.asynchronous import (
|
||||
AsyncIntegrationTest,
|
||||
async_client_context,
|
||||
unittest,
|
||||
)
|
||||
from test.utils import (
|
||||
OvertCommandListener,
|
||||
async_rs_or_single_client,
|
||||
)
|
||||
from unittest.mock import patch
|
||||
|
||||
from pymongo.asynchronous.client_bulk import _AsyncClientBulk
|
||||
from pymongo.encryption_options import _HAVE_PYMONGOCRYPT, AutoEncryptionOpts
|
||||
from pymongo.errors import (
|
||||
ClientBulkWriteException,
|
||||
@ -53,6 +59,20 @@ class TestClientBulkWrite(AsyncIntegrationTest):
|
||||
context.exception._message,
|
||||
)
|
||||
|
||||
@async_client_context.require_version_min(8, 0, 0, -24)
|
||||
async def test_handles_non_pymongo_error(self):
|
||||
with patch.object(
|
||||
_AsyncClientBulk, "write_command", return_value={"error": TypeError("mock type error")}
|
||||
):
|
||||
client = await async_rs_or_single_client()
|
||||
self.addAsyncCleanup(client.close)
|
||||
|
||||
models = [InsertOne(namespace="db.coll", document={"a": "b"})]
|
||||
with self.assertRaises(ClientBulkWriteException) as context:
|
||||
await client.bulk_write(models=models)
|
||||
self.assertIsInstance(context.exception.error, TypeError)
|
||||
self.assertFalse(hasattr(context.exception.error, "details"))
|
||||
|
||||
|
||||
# https://github.com/mongodb/specifications/tree/master/source/crud/tests
|
||||
class TestClientBulkWriteCRUD(AsyncIntegrationTest):
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": false,
|
||||
"isreplicaset": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": false,
|
||||
"isreplicaset": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -56,7 +56,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -56,7 +56,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -34,7 +34,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"c:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -59,7 +59,7 @@
|
||||
"d:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -103,7 +103,7 @@
|
||||
"e:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -147,7 +147,7 @@
|
||||
"c:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -39,7 +39,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
"setName": "rs",
|
||||
"logicalSessionTimeoutMinutes": 3,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -58,7 +58,7 @@
|
||||
"isWritablePrimary": false,
|
||||
"isreplicaset": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -104,7 +104,7 @@
|
||||
"setName": "rs",
|
||||
"arbiterOnly": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -152,7 +152,7 @@
|
||||
"setName": "rs",
|
||||
"logicalSessionTimeoutMinutes": 2,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -194,7 +194,7 @@
|
||||
"hidden": true,
|
||||
"logicalSessionTimeoutMinutes": 1,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -244,7 +244,7 @@
|
||||
"setName": "rs",
|
||||
"logicalSessionTimeoutMinutes": null,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -49,7 +49,7 @@
|
||||
"a:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
"helloOk": true,
|
||||
"isWritablePrimary": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -40,7 +40,7 @@
|
||||
"a:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -50,7 +50,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -67,7 +67,7 @@
|
||||
"$oid": "000000000000000000000002"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -114,7 +114,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -67,7 +67,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -114,7 +114,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -49,7 +49,7 @@
|
||||
],
|
||||
"setName": "wrong",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
"ok": 1,
|
||||
"helloOk": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
"C:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
"C:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -67,7 +67,7 @@
|
||||
"C:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"setVersion": 1,
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 7
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -66,7 +66,7 @@
|
||||
"$oid": "000000000000000000000002"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -116,7 +116,7 @@
|
||||
"setVersion": 1,
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 7
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -167,7 +167,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 7
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -41,7 +41,7 @@
|
||||
"isWritablePrimary": false,
|
||||
"isreplicaset": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -41,7 +41,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -38,7 +38,7 @@
|
||||
{
|
||||
"ok": 1,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -44,7 +44,7 @@
|
||||
],
|
||||
"setName": "wrong",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -39,7 +39,7 @@
|
||||
"$oid": "000000000000000000000002"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -115,7 +115,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -159,7 +159,7 @@
|
||||
"$oid": "000000000000000000000003"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -203,7 +203,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -39,7 +39,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -115,7 +115,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -159,7 +159,7 @@
|
||||
"$oid": "000000000000000000000002"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -203,7 +203,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"setName": "rs",
|
||||
"primary": "b:27017",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -48,7 +48,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
"ok": 1,
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -51,7 +51,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -86,7 +86,7 @@
|
||||
"c:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -127,7 +127,7 @@
|
||||
"c:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
"me": "a:27017",
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -52,7 +52,7 @@
|
||||
"me": "c:27017",
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
],
|
||||
"setName": "wrong",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -49,7 +49,7 @@
|
||||
"helloOk": true,
|
||||
"isWritablePrimary": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -84,7 +84,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -120,7 +120,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
"helloOk": true,
|
||||
"isWritablePrimary": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
"a:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -46,7 +46,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -32,7 +32,7 @@
|
||||
"c:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -32,7 +32,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -59,7 +59,7 @@
|
||||
{
|
||||
"ok": 0,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -32,7 +32,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -59,7 +59,7 @@
|
||||
{
|
||||
"ok": 0,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
"ok": 1,
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
],
|
||||
"setName": "wrong",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -51,7 +51,7 @@
|
||||
],
|
||||
"setName": "wrong",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
"setName": "rs",
|
||||
"setVersion": 2,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 7
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -56,7 +56,7 @@
|
||||
"setName": "rs",
|
||||
"setVersion": 1,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 7
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -45,7 +45,7 @@
|
||||
],
|
||||
"setName": "wrong",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"b:27017"
|
||||
],
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
"$oid": "000000000000000000000001"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 7
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -64,7 +64,7 @@
|
||||
"setName": "rs",
|
||||
"setVersion": 2,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 7
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -108,7 +108,7 @@
|
||||
"$oid": "000000000000000000000002"
|
||||
},
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 7
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
],
|
||||
"setName": "wrong",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
"msg": "isdbgrid",
|
||||
"logicalSessionTimeoutMinutes": 1,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -25,7 +25,7 @@
|
||||
"msg": "isdbgrid",
|
||||
"logicalSessionTimeoutMinutes": 2,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -56,7 +56,7 @@
|
||||
"msg": "isdbgrid",
|
||||
"logicalSessionTimeoutMinutes": 1,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -67,7 +67,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -23,7 +23,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -76,7 +76,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -23,7 +23,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -26,7 +26,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 2,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"msg": "isdbgrid",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
"helloOk": true,
|
||||
"isWritablePrimary": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
],
|
||||
"setName": "wrong",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
@ -45,7 +45,7 @@
|
||||
],
|
||||
"setName": "rs",
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
"helloOk": true,
|
||||
"isWritablePrimary": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"isWritablePrimary": true,
|
||||
"logicalSessionTimeoutMinutes": 7,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
"helloOk": true,
|
||||
"isWritablePrimary": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
[
|
||||
@ -21,7 +21,7 @@
|
||||
"helloOk": true,
|
||||
"isWritablePrimary": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
"helloOk": true,
|
||||
"isWritablePrimary": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
"ok": 1,
|
||||
"ismaster": true,
|
||||
"minWireVersion": 0,
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 50,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1000001"
|
||||
@ -19,7 +19,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1"
|
||||
@ -37,7 +37,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 50,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1000001"
|
||||
@ -49,7 +49,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1"
|
||||
@ -63,7 +63,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1"
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
},
|
||||
{
|
||||
"address": "b:27017",
|
||||
@ -25,7 +25,7 @@
|
||||
"$numberLong": "2"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
},
|
||||
{
|
||||
"address": "c:27017",
|
||||
@ -37,7 +37,7 @@
|
||||
"$numberLong": "1"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -56,7 +56,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
},
|
||||
{
|
||||
"address": "b:27017",
|
||||
@ -68,7 +68,7 @@
|
||||
"$numberLong": "2"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
"in_latency_window": [
|
||||
@ -82,7 +82,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
},
|
||||
{
|
||||
"address": "b:27017",
|
||||
@ -25,7 +25,7 @@
|
||||
"$numberLong": "2"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
},
|
||||
{
|
||||
"address": "c:27017",
|
||||
@ -37,7 +37,7 @@
|
||||
"$numberLong": "1"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -56,7 +56,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
},
|
||||
{
|
||||
"address": "b:27017",
|
||||
@ -68,7 +68,7 @@
|
||||
"$numberLong": "2"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
"in_latency_window": [
|
||||
@ -82,7 +82,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
},
|
||||
{
|
||||
"address": "b:27017",
|
||||
@ -25,7 +25,7 @@
|
||||
"$numberLong": "2"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
},
|
||||
{
|
||||
"address": "c:27017",
|
||||
@ -37,7 +37,7 @@
|
||||
"$numberLong": "1"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -56,7 +56,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
},
|
||||
{
|
||||
"address": "b:27017",
|
||||
@ -68,7 +68,7 @@
|
||||
"$numberLong": "2"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
],
|
||||
"in_latency_window": [
|
||||
@ -82,7 +82,7 @@
|
||||
"$numberLong": "2"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6
|
||||
"maxWireVersion": 21
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
{
|
||||
"address": "c:27017",
|
||||
"type": "RSSecondary",
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"avg_rtt_ms": 5,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
@ -35,7 +35,7 @@
|
||||
{
|
||||
"address": "c:27017",
|
||||
"type": "RSSecondary",
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"avg_rtt_ms": 5,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
@ -48,7 +48,7 @@
|
||||
{
|
||||
"address": "c:27017",
|
||||
"type": "RSSecondary",
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"avg_rtt_ms": 5,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1000001"
|
||||
@ -20,7 +20,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1"
|
||||
@ -39,7 +39,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1000001"
|
||||
@ -53,7 +53,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1000001"
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"tags": {
|
||||
"data_center": "tokyo"
|
||||
}
|
||||
@ -28,7 +28,7 @@
|
||||
"$numberLong": "1"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"tags": {
|
||||
"data_center": "nyc"
|
||||
}
|
||||
@ -58,7 +58,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"tags": {
|
||||
"data_center": "tokyo"
|
||||
}
|
||||
@ -75,7 +75,7 @@
|
||||
"$numberLong": "125002"
|
||||
}
|
||||
},
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"tags": {
|
||||
"data_center": "tokyo"
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "125002"
|
||||
@ -23,7 +23,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "2"
|
||||
@ -38,7 +38,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "1"
|
||||
@ -53,7 +53,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "2"
|
||||
@ -80,7 +80,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "2"
|
||||
@ -97,7 +97,7 @@
|
||||
"type": "RSSecondary",
|
||||
"avg_rtt_ms": 5,
|
||||
"lastUpdateTime": 0,
|
||||
"maxWireVersion": 6,
|
||||
"maxWireVersion": 21,
|
||||
"lastWrite": {
|
||||
"lastWriteDate": {
|
||||
"$numberLong": "2"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user