mongo 2.13.1 → 2.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +36 -39
- data/Rakefile +49 -20
- data/bin/mongo_console +2 -0
- data/lib/mongo/active_support.rb +3 -0
- data/lib/mongo/address/ipv4.rb +4 -1
- data/lib/mongo/address/ipv6.rb +4 -1
- data/lib/mongo/address/unix.rb +3 -0
- data/lib/mongo/address/validator.rb +3 -0
- data/lib/mongo/address.rb +4 -1
- data/lib/mongo/auth/aws/conversation.rb +4 -8
- data/lib/mongo/auth/aws/credentials.rb +38 -0
- data/lib/mongo/auth/aws/credentials_cache.rb +75 -0
- data/lib/mongo/auth/aws/credentials_retriever.rb +174 -36
- data/lib/mongo/auth/aws/request.rb +3 -2
- data/lib/mongo/auth/aws.rb +8 -5
- data/lib/mongo/auth/base.rb +25 -9
- data/lib/mongo/auth/conversation_base.rb +35 -0
- data/lib/mongo/auth/cr/conversation.rb +9 -29
- data/lib/mongo/auth/cr.rb +3 -0
- data/lib/mongo/auth/credential_cache.rb +3 -0
- data/lib/mongo/auth/gssapi/conversation.rb +7 -15
- data/lib/mongo/auth/gssapi.rb +3 -0
- data/lib/mongo/auth/ldap/conversation.rb +6 -14
- data/lib/mongo/auth/ldap.rb +3 -0
- data/lib/mongo/auth/roles.rb +19 -16
- data/lib/mongo/auth/sasl_conversation_base.rb +4 -13
- data/lib/mongo/auth/scram/conversation.rb +3 -0
- data/lib/mongo/auth/scram.rb +5 -2
- data/lib/mongo/auth/scram256/conversation.rb +3 -0
- data/lib/mongo/auth/scram256.rb +3 -0
- data/lib/mongo/auth/scram_conversation_base.rb +10 -34
- data/lib/mongo/auth/stringprep/profiles/sasl.rb +3 -0
- data/lib/mongo/auth/stringprep/tables.rb +3 -0
- data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +2 -2
- data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +2 -1
- data/lib/mongo/auth/stringprep.rb +4 -1
- data/lib/mongo/auth/user/view.rb +19 -9
- data/lib/mongo/auth/user.rb +3 -0
- data/lib/mongo/auth/x509/conversation.rb +7 -25
- data/lib/mongo/auth/x509.rb +3 -0
- data/lib/mongo/auth.rb +16 -2
- data/lib/mongo/background_thread.rb +16 -2
- data/lib/mongo/bson.rb +3 -0
- data/lib/mongo/bulk_write/combineable.rb +3 -0
- data/lib/mongo/bulk_write/ordered_combiner.rb +3 -0
- data/lib/mongo/bulk_write/result.rb +13 -1
- data/lib/mongo/bulk_write/result_combiner.rb +5 -4
- data/lib/mongo/bulk_write/transformable.rb +3 -0
- data/lib/mongo/bulk_write/unordered_combiner.rb +3 -0
- data/lib/mongo/bulk_write/validatable.rb +3 -0
- data/lib/mongo/bulk_write.rb +156 -45
- data/lib/mongo/caching_cursor.rb +77 -0
- data/lib/mongo/client.rb +367 -41
- data/lib/mongo/client_encryption.rb +217 -10
- data/lib/mongo/cluster/periodic_executor.rb +7 -3
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +101 -43
- data/lib/mongo/cluster/reapers/socket_reaper.rb +4 -1
- data/lib/mongo/cluster/sdam_flow.rb +67 -17
- data/lib/mongo/cluster/topology/base.rb +16 -9
- data/lib/mongo/cluster/topology/load_balanced.rb +102 -0
- data/lib/mongo/cluster/topology/no_replica_set_options.rb +3 -0
- data/lib/mongo/cluster/topology/replica_set_no_primary.rb +3 -0
- data/lib/mongo/cluster/topology/replica_set_with_primary.rb +3 -0
- data/lib/mongo/cluster/topology/sharded.rb +3 -0
- data/lib/mongo/cluster/topology/single.rb +4 -1
- data/lib/mongo/cluster/topology/unknown.rb +3 -0
- data/lib/mongo/cluster/topology.rb +31 -8
- data/lib/mongo/cluster.rb +210 -116
- data/lib/mongo/cluster_time.rb +3 -0
- data/lib/mongo/collection/helpers.rb +43 -0
- data/lib/mongo/collection/queryable_encryption.rb +162 -0
- data/lib/mongo/collection/view/aggregation.rb +94 -24
- data/lib/mongo/collection/view/builder/aggregation.rb +19 -17
- data/lib/mongo/collection/view/builder/map_reduce.rb +18 -49
- data/lib/mongo/collection/view/builder.rb +3 -4
- data/lib/mongo/collection/view/change_stream/retryable.rb +3 -0
- data/lib/mongo/collection/view/change_stream.rb +71 -22
- data/lib/mongo/collection/view/explainable.rb +30 -8
- data/lib/mongo/collection/view/immutable.rb +3 -0
- data/lib/mongo/collection/view/iterable.rb +121 -24
- data/lib/mongo/collection/view/map_reduce.rb +76 -25
- data/lib/mongo/collection/view/readable.rb +147 -67
- data/lib/mongo/collection/view/writable.rb +296 -162
- data/lib/mongo/collection/view.rb +42 -41
- data/lib/mongo/collection.rb +356 -89
- data/lib/mongo/condition_variable.rb +58 -0
- data/lib/mongo/config/options.rb +63 -0
- data/lib/mongo/config/validators/option.rb +27 -0
- data/lib/mongo/config.rb +43 -0
- data/lib/mongo/crypt/auto_decryption_context.rb +3 -0
- data/lib/mongo/crypt/auto_encrypter.rb +142 -15
- data/lib/mongo/crypt/auto_encryption_context.rb +3 -0
- data/lib/mongo/crypt/binary.rb +3 -0
- data/lib/mongo/crypt/binding.rb +717 -151
- data/lib/mongo/crypt/context.rb +74 -5
- data/lib/mongo/crypt/data_key_context.rb +15 -104
- data/lib/mongo/crypt/encryption_io.rb +101 -64
- data/lib/mongo/crypt/explicit_decryption_context.rb +3 -0
- data/lib/mongo/crypt/explicit_encrypter.rb +235 -29
- data/lib/mongo/crypt/explicit_encryption_context.rb +78 -21
- data/lib/mongo/crypt/explicit_encryption_expression_context.rb +30 -0
- data/lib/mongo/crypt/handle.rb +171 -86
- data/lib/mongo/crypt/hooks.rb +28 -2
- data/lib/mongo/crypt/kms/aws/credentials.rb +83 -0
- data/lib/mongo/crypt/kms/aws/master_document.rb +78 -0
- data/lib/mongo/crypt/kms/aws.rb +20 -0
- data/lib/mongo/crypt/kms/azure/access_token.rb +54 -0
- data/lib/mongo/crypt/kms/azure/credentials.rb +103 -0
- data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +122 -0
- data/lib/mongo/crypt/kms/azure/master_document.rb +79 -0
- data/lib/mongo/crypt/kms/azure.rb +21 -0
- data/lib/mongo/crypt/kms/credentials.rb +96 -0
- data/lib/mongo/crypt/kms/gcp/credentials.rb +127 -0
- data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +58 -0
- data/lib/mongo/crypt/kms/gcp/master_document.rb +99 -0
- data/lib/mongo/crypt/kms/gcp.rb +21 -0
- data/lib/mongo/crypt/kms/kmip/credentials.rb +68 -0
- data/lib/mongo/crypt/kms/kmip/master_document.rb +74 -0
- data/lib/mongo/crypt/kms/kmip.rb +19 -0
- data/lib/mongo/crypt/kms/local/credentials.rb +65 -0
- data/lib/mongo/crypt/kms/local/master_document.rb +43 -0
- data/lib/mongo/crypt/kms/local.rb +19 -0
- data/lib/mongo/crypt/kms/master_key_document.rb +65 -0
- data/lib/mongo/crypt/kms.rb +122 -0
- data/lib/mongo/crypt/kms_context.rb +3 -0
- data/lib/mongo/crypt/rewrap_many_data_key_context.rb +46 -0
- data/lib/mongo/crypt/rewrap_many_data_key_result.rb +37 -0
- data/lib/mongo/crypt/status.rb +11 -2
- data/lib/mongo/crypt.rb +18 -0
- data/lib/mongo/cursor/kill_spec.rb +76 -0
- data/lib/mongo/cursor.rb +150 -43
- data/lib/mongo/database/view.rb +55 -10
- data/lib/mongo/database.rb +95 -25
- data/lib/mongo/dbref.rb +4 -105
- data/lib/mongo/distinguishing_semaphore.rb +4 -1
- data/lib/mongo/error/auth_error.rb +3 -0
- data/lib/mongo/error/bad_load_balancer_target.rb +26 -0
- data/lib/mongo/error/bulk_write_error.rb +49 -5
- data/lib/mongo/error/change_stream_resumable.rb +3 -0
- data/lib/mongo/error/client_closed.rb +24 -0
- data/lib/mongo/error/closed_stream.rb +3 -0
- data/lib/mongo/error/connection_check_out_timeout.rb +3 -0
- data/lib/mongo/error/connection_perished.rb +5 -0
- data/lib/mongo/error/connection_unavailable.rb +27 -0
- data/lib/mongo/error/credential_check_error.rb +3 -0
- data/lib/mongo/error/crypt_error.rb +3 -0
- data/lib/mongo/error/extra_file_chunk.rb +3 -0
- data/lib/mongo/error/failed_string_prep_validation.rb +3 -0
- data/lib/mongo/error/file_not_found.rb +3 -0
- data/lib/mongo/error/handshake_error.rb +3 -0
- data/lib/mongo/error/insufficient_iteration_count.rb +3 -0
- data/lib/mongo/error/internal_driver_error.rb +25 -0
- data/lib/mongo/error/invalid_address.rb +3 -0
- data/lib/mongo/error/invalid_application_name.rb +3 -0
- data/lib/mongo/error/invalid_bulk_operation.rb +3 -0
- data/lib/mongo/error/invalid_bulk_operation_type.rb +3 -0
- data/lib/mongo/error/invalid_collection_name.rb +3 -0
- data/lib/mongo/error/invalid_config_option.rb +21 -0
- data/lib/mongo/error/invalid_cursor_operation.rb +3 -0
- data/lib/mongo/error/invalid_database_name.rb +3 -0
- data/lib/mongo/error/invalid_document.rb +3 -0
- data/lib/mongo/error/invalid_file.rb +3 -0
- data/lib/mongo/error/invalid_file_revision.rb +3 -0
- data/lib/mongo/error/invalid_max_connecting.rb +28 -0
- data/lib/mongo/error/invalid_min_pool_size.rb +3 -0
- data/lib/mongo/error/invalid_nonce.rb +3 -0
- data/lib/mongo/error/invalid_read_concern.rb +31 -0
- data/lib/mongo/error/invalid_read_option.rb +4 -1
- data/lib/mongo/error/invalid_replacement_document.rb +30 -9
- data/lib/mongo/error/invalid_server_auth_host.rb +3 -0
- data/lib/mongo/error/invalid_server_auth_response.rb +3 -0
- data/lib/mongo/error/invalid_server_preference.rb +3 -0
- data/lib/mongo/error/invalid_session.rb +3 -0
- data/lib/mongo/error/invalid_signature.rb +3 -0
- data/lib/mongo/error/invalid_transaction_operation.rb +3 -0
- data/lib/mongo/error/invalid_txt_record.rb +3 -0
- data/lib/mongo/error/invalid_update_document.rb +30 -7
- data/lib/mongo/error/invalid_uri.rb +3 -0
- data/lib/mongo/error/invalid_write_concern.rb +3 -0
- data/lib/mongo/error/kms_error.rb +3 -0
- data/lib/mongo/error/labelable.rb +72 -0
- data/lib/mongo/error/lint_error.rb +3 -0
- data/lib/mongo/error/max_bson_size.rb +3 -0
- data/lib/mongo/error/max_message_size.rb +3 -0
- data/lib/mongo/error/mismatched_domain.rb +3 -0
- data/lib/mongo/error/missing_connection.rb +27 -0
- data/lib/mongo/error/missing_file_chunk.rb +11 -2
- data/lib/mongo/error/missing_password.rb +3 -0
- data/lib/mongo/error/missing_resume_token.rb +3 -0
- data/lib/mongo/error/missing_scram_server_signature.rb +3 -0
- data/lib/mongo/error/missing_service_id.rb +26 -0
- data/lib/mongo/error/mongocryptd_spawn_error.rb +3 -0
- data/lib/mongo/error/multi_index_drop.rb +3 -0
- data/lib/mongo/error/need_primary_server.rb +3 -0
- data/lib/mongo/error/no_server_available.rb +3 -0
- data/lib/mongo/error/no_service_connection_available.rb +49 -0
- data/lib/mongo/error/no_srv_records.rb +3 -0
- data/lib/mongo/error/notable.rb +24 -0
- data/lib/mongo/error/operation_failure.rb +57 -87
- data/lib/mongo/error/parser.rb +69 -13
- data/lib/mongo/error/pool_cleared_error.rb +40 -0
- data/lib/mongo/error/pool_closed_error.rb +6 -16
- data/lib/mongo/error/pool_error.rb +45 -0
- data/lib/mongo/error/pool_paused_error.rb +40 -0
- data/lib/mongo/error/raise_original_error.rb +3 -0
- data/lib/mongo/error/read_write_retryable.rb +108 -0
- data/lib/mongo/error/sdam_error_detection.rb +16 -5
- data/lib/mongo/error/server_api_conflict.rb +26 -0
- data/lib/mongo/error/server_api_not_supported.rb +27 -0
- data/lib/mongo/error/server_certificate_revoked.rb +25 -0
- data/lib/mongo/error/server_not_usable.rb +36 -0
- data/lib/mongo/error/session_ended.rb +3 -0
- data/lib/mongo/error/session_not_materialized.rb +29 -0
- data/lib/mongo/error/sessions_not_supported.rb +3 -0
- data/lib/mongo/error/snapshot_session_invalid_server_version.rb +31 -0
- data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +30 -0
- data/lib/mongo/error/socket_error.rb +3 -0
- data/lib/mongo/error/socket_timeout_error.rb +3 -0
- data/lib/mongo/error/unchangeable_collection_option.rb +3 -0
- data/lib/mongo/error/unexpected_chunk_length.rb +3 -0
- data/lib/mongo/error/unexpected_response.rb +3 -0
- data/lib/mongo/error/unknown_payload_type.rb +3 -0
- data/lib/mongo/error/unmet_dependency.rb +24 -0
- data/lib/mongo/error/unsupported_array_filters.rb +3 -0
- data/lib/mongo/error/unsupported_collation.rb +3 -0
- data/lib/mongo/error/unsupported_features.rb +3 -0
- data/lib/mongo/error/unsupported_message_type.rb +3 -0
- data/lib/mongo/error/unsupported_option.rb +17 -12
- data/lib/mongo/error/write_retryable.rb +3 -0
- data/lib/mongo/error.rb +31 -38
- data/lib/mongo/event/base.rb +3 -0
- data/lib/mongo/event/listeners.rb +3 -0
- data/lib/mongo/event/publisher.rb +3 -0
- data/lib/mongo/event/subscriber.rb +3 -0
- data/lib/mongo/event.rb +3 -0
- data/lib/mongo/grid/file/chunk.rb +6 -2
- data/lib/mongo/grid/file/info.rb +5 -1
- data/lib/mongo/grid/file.rb +3 -0
- data/lib/mongo/grid/fs_bucket.rb +86 -46
- data/lib/mongo/grid/stream/read.rb +28 -7
- data/lib/mongo/grid/stream/write.rb +3 -0
- data/lib/mongo/grid/stream.rb +3 -0
- data/lib/mongo/grid.rb +3 -0
- data/lib/mongo/id.rb +10 -5
- data/lib/mongo/index/view.rb +68 -58
- data/lib/mongo/index.rb +3 -0
- data/lib/mongo/lint.rb +5 -1
- data/lib/mongo/loggable.rb +5 -2
- data/lib/mongo/logger.rb +6 -3
- data/lib/mongo/monitoring/cmap_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/command_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/base.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_closed.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_created.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/connection_ready.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +17 -4
- data/lib/mongo/monitoring/event/cmap/pool_closed.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/pool_created.rb +3 -0
- data/lib/mongo/monitoring/event/cmap/pool_ready.rb +67 -0
- data/lib/mongo/monitoring/event/cmap.rb +4 -0
- data/lib/mongo/monitoring/event/command_failed.rb +38 -5
- data/lib/mongo/monitoring/event/command_started.rb +23 -3
- data/lib/mongo/monitoring/event/command_succeeded.rb +36 -3
- data/lib/mongo/monitoring/event/secure.rb +39 -5
- data/lib/mongo/monitoring/event/server_closed.rb +3 -0
- data/lib/mongo/monitoring/event/server_description_changed.rb +4 -1
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +32 -18
- data/lib/mongo/monitoring/event/server_heartbeat_started.rb +3 -0
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +30 -16
- data/lib/mongo/monitoring/event/server_opening.rb +3 -0
- data/lib/mongo/monitoring/event/topology_changed.rb +3 -0
- data/lib/mongo/monitoring/event/topology_closed.rb +3 -0
- data/lib/mongo/monitoring/event/topology_opening.rb +3 -0
- data/lib/mongo/monitoring/event.rb +3 -0
- data/lib/mongo/monitoring/publishable.rb +38 -12
- data/lib/mongo/monitoring/sdam_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/server_closed_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/server_opening_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +3 -0
- data/lib/mongo/monitoring.rb +20 -8
- data/lib/mongo/operation/aggregate/op_msg.rb +3 -0
- data/lib/mongo/operation/aggregate/result.rb +12 -8
- data/lib/mongo/operation/aggregate.rb +4 -2
- data/lib/mongo/operation/collections_info/result.rb +24 -1
- data/lib/mongo/operation/collections_info.rb +10 -2
- data/lib/mongo/operation/command/op_msg.rb +9 -0
- data/lib/mongo/operation/command.rb +4 -2
- data/lib/mongo/operation/context.rb +138 -0
- data/lib/mongo/operation/count/op_msg.rb +12 -0
- data/lib/mongo/operation/count.rb +4 -2
- data/lib/mongo/operation/create/op_msg.rb +13 -0
- data/lib/mongo/operation/create.rb +4 -2
- data/lib/mongo/operation/create_index/op_msg.rb +21 -4
- data/lib/mongo/operation/create_index.rb +4 -2
- data/lib/mongo/operation/create_user/op_msg.rb +3 -0
- data/lib/mongo/operation/create_user.rb +4 -2
- data/lib/mongo/operation/delete/bulk_result.rb +5 -0
- data/lib/mongo/operation/delete/op_msg.rb +13 -1
- data/lib/mongo/operation/delete/result.rb +6 -0
- data/lib/mongo/operation/delete.rb +3 -2
- data/lib/mongo/operation/distinct/op_msg.rb +13 -0
- data/lib/mongo/operation/distinct.rb +4 -2
- data/lib/mongo/operation/drop/op_msg.rb +3 -0
- data/lib/mongo/operation/drop.rb +4 -2
- data/lib/mongo/operation/drop_database/op_msg.rb +3 -0
- data/lib/mongo/operation/drop_database.rb +4 -2
- data/lib/mongo/operation/drop_index/op_msg.rb +8 -1
- data/lib/mongo/operation/drop_index.rb +4 -2
- data/lib/mongo/operation/explain/op_msg.rb +17 -0
- data/lib/mongo/operation/explain/result.rb +6 -0
- data/lib/mongo/operation/explain.rb +4 -3
- data/lib/mongo/operation/find/builder/command.rb +111 -0
- data/lib/mongo/operation/find/builder/flags.rb +61 -0
- data/lib/mongo/operation/find/builder/modifiers.rb +89 -0
- data/lib/mongo/operation/find/builder.rb +20 -0
- data/lib/mongo/operation/find/op_msg.rb +15 -0
- data/lib/mongo/operation/find/result.rb +16 -0
- data/lib/mongo/operation/find.rb +5 -3
- data/lib/mongo/operation/get_more/command_builder.rb +42 -0
- data/lib/mongo/operation/get_more/op_msg.rb +4 -0
- data/lib/mongo/operation/get_more/result.rb +6 -0
- data/lib/mongo/operation/get_more.rb +5 -3
- data/lib/mongo/operation/indexes/op_msg.rb +3 -0
- data/lib/mongo/operation/indexes/result.rb +8 -0
- data/lib/mongo/operation/indexes.rb +4 -3
- data/lib/mongo/operation/insert/bulk_result.rb +13 -1
- data/lib/mongo/operation/insert/op_msg.rb +11 -5
- data/lib/mongo/operation/insert/result.rb +14 -3
- data/lib/mongo/operation/insert.rb +3 -2
- data/lib/mongo/operation/kill_cursors/command_builder.rb +35 -0
- data/lib/mongo/operation/kill_cursors/op_msg.rb +13 -0
- data/lib/mongo/operation/kill_cursors.rb +5 -3
- data/lib/mongo/operation/list_collections/op_msg.rb +7 -1
- data/lib/mongo/operation/list_collections/result.rb +12 -1
- data/lib/mongo/operation/list_collections.rb +4 -2
- data/lib/mongo/operation/map_reduce/op_msg.rb +4 -1
- data/lib/mongo/operation/map_reduce/result.rb +29 -0
- data/lib/mongo/operation/map_reduce.rb +4 -2
- data/lib/mongo/operation/op_msg_base.rb +3 -0
- data/lib/mongo/operation/parallel_scan/op_msg.rb +3 -0
- data/lib/mongo/operation/parallel_scan/result.rb +7 -0
- data/lib/mongo/operation/parallel_scan.rb +4 -2
- data/lib/mongo/operation/remove_user/op_msg.rb +3 -0
- data/lib/mongo/operation/remove_user.rb +4 -2
- data/lib/mongo/operation/result.rb +67 -11
- data/lib/mongo/operation/shared/bypass_document_validation.rb +4 -0
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +4 -0
- data/lib/mongo/operation/shared/executable.rb +61 -17
- data/lib/mongo/operation/shared/executable_no_validate.rb +5 -2
- data/lib/mongo/operation/shared/executable_transaction_label.rb +3 -0
- data/lib/mongo/operation/shared/idable.rb +5 -1
- data/lib/mongo/operation/shared/limited.rb +4 -0
- data/lib/mongo/operation/shared/object_id_generator.rb +4 -0
- data/lib/mongo/operation/shared/op_msg_executable.rb +59 -0
- data/lib/mongo/operation/shared/polymorphic_lookup.rb +3 -0
- data/lib/mongo/operation/shared/polymorphic_result.rb +3 -0
- data/lib/mongo/operation/shared/read_preference_supported.rb +44 -37
- data/lib/mongo/operation/shared/response_handling.rb +32 -27
- data/lib/mongo/operation/shared/result/aggregatable.rb +4 -0
- data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +3 -0
- data/lib/mongo/operation/shared/sessions_supported.rb +55 -20
- data/lib/mongo/operation/shared/specifiable.rb +15 -29
- data/lib/mongo/operation/shared/validatable.rb +87 -0
- data/lib/mongo/operation/shared/write.rb +28 -28
- data/lib/mongo/operation/shared/write_concern_supported.rb +4 -0
- data/lib/mongo/operation/update/bulk_result.rb +3 -0
- data/lib/mongo/operation/update/op_msg.rb +12 -4
- data/lib/mongo/operation/update/result.rb +11 -0
- data/lib/mongo/operation/update.rb +3 -2
- data/lib/mongo/operation/update_user/op_msg.rb +3 -0
- data/lib/mongo/operation/update_user.rb +4 -2
- data/lib/mongo/operation/users_info/op_msg.rb +3 -0
- data/lib/mongo/operation/users_info/result.rb +6 -0
- data/lib/mongo/operation/users_info.rb +4 -2
- data/lib/mongo/operation/write_command/op_msg.rb +43 -0
- data/lib/mongo/operation/write_command.rb +31 -0
- data/lib/mongo/operation.rb +17 -4
- data/lib/mongo/options/mapper.rb +3 -0
- data/lib/mongo/options/redacted.rb +3 -0
- data/lib/mongo/options.rb +3 -0
- data/lib/mongo/protocol/bit_vector.rb +6 -1
- data/lib/mongo/protocol/caching_hash.rb +52 -0
- data/lib/mongo/protocol/compressed.rb +54 -5
- data/lib/mongo/protocol/get_more.rb +3 -0
- data/lib/mongo/protocol/kill_cursors.rb +3 -0
- data/lib/mongo/protocol/message.rb +27 -10
- data/lib/mongo/protocol/msg.rb +61 -17
- data/lib/mongo/protocol/query.rb +53 -32
- data/lib/mongo/protocol/registry.rb +3 -0
- data/lib/mongo/protocol/reply.rb +3 -0
- data/lib/mongo/protocol/serializers.rb +27 -17
- data/lib/mongo/protocol.rb +4 -3
- data/lib/mongo/query_cache.rb +300 -0
- data/lib/mongo/retryable/base_worker.rb +91 -0
- data/lib/mongo/retryable/read_worker.rb +296 -0
- data/lib/mongo/retryable/write_worker.rb +364 -0
- data/lib/mongo/retryable.rb +33 -446
- data/lib/mongo/semaphore.rb +4 -1
- data/lib/mongo/server/app_metadata/environment.rb +259 -0
- data/lib/mongo/server/app_metadata/platform.rb +114 -0
- data/lib/mongo/server/app_metadata/truncator.rb +142 -0
- data/lib/mongo/server/app_metadata.rb +117 -94
- data/lib/mongo/server/connection.rb +126 -22
- data/lib/mongo/server/connection_base.rb +49 -21
- data/lib/mongo/server/connection_common.rb +76 -3
- data/lib/mongo/server/connection_pool/generation_manager.rb +115 -0
- data/lib/mongo/server/connection_pool/populator.rb +35 -30
- data/lib/mongo/server/connection_pool.rb +776 -206
- data/lib/mongo/server/description/features.rb +34 -25
- data/lib/mongo/server/description/load_balancer.rb +33 -0
- data/lib/mongo/server/description.rb +126 -17
- data/lib/mongo/server/monitor/app_metadata.rb +4 -1
- data/lib/mongo/server/monitor/connection.rb +66 -50
- data/lib/mongo/server/monitor.rb +62 -32
- data/lib/mongo/server/pending_connection.rb +77 -44
- data/lib/mongo/server/push_monitor/connection.rb +3 -0
- data/lib/mongo/server/push_monitor.rb +54 -20
- data/lib/mongo/server/round_trip_time_averager.rb +6 -3
- data/lib/mongo/server.rb +197 -67
- data/lib/mongo/server_selector/base.rb +65 -11
- data/lib/mongo/server_selector/nearest.rb +6 -4
- data/lib/mongo/server_selector/primary.rb +6 -4
- data/lib/mongo/server_selector/primary_preferred.rb +6 -4
- data/lib/mongo/server_selector/secondary.rb +6 -4
- data/lib/mongo/server_selector/secondary_preferred.rb +8 -11
- data/lib/mongo/server_selector.rb +3 -0
- data/lib/mongo/session/server_session.rb +3 -0
- data/lib/mongo/session/session_pool.rb +26 -2
- data/lib/mongo/session.rb +164 -38
- data/lib/mongo/socket/ocsp_cache.rb +99 -0
- data/lib/mongo/socket/ocsp_verifier.rb +344 -0
- data/lib/mongo/socket/ssl.rb +56 -24
- data/lib/mongo/socket/tcp.rb +6 -0
- data/lib/mongo/socket/unix.rb +3 -0
- data/lib/mongo/socket.rb +71 -16
- data/lib/mongo/srv/monitor.rb +10 -26
- data/lib/mongo/srv/resolver.rb +41 -13
- data/lib/mongo/srv/result.rb +3 -0
- data/lib/mongo/srv.rb +3 -0
- data/lib/mongo/timeout.rb +6 -1
- data/lib/mongo/topology_version.rb +4 -1
- data/lib/mongo/uri/options_mapper.rb +867 -0
- data/lib/mongo/uri/srv_protocol.rb +13 -11
- data/lib/mongo/uri.rb +100 -400
- data/lib/mongo/utils.rb +44 -1
- data/lib/mongo/version.rb +4 -1
- data/lib/mongo/write_concern/acknowledged.rb +3 -0
- data/lib/mongo/write_concern/base.rb +3 -0
- data/lib/mongo/write_concern/unacknowledged.rb +3 -0
- data/lib/mongo/write_concern.rb +3 -0
- data/lib/mongo.rb +58 -0
- data/mongo.gemspec +16 -7
- data/spec/NOTES.aws-auth.md +12 -7
- data/spec/README.md +106 -3
- data/spec/atlas/atlas_connectivity_spec.rb +3 -0
- data/spec/atlas/operations_spec.rb +5 -7
- data/spec/integration/auth_spec.rb +58 -15
- data/spec/integration/awaited_ismaster_spec.rb +9 -6
- data/spec/integration/aws_auth_credentials_cache_spec.rb +51 -0
- data/spec/integration/aws_auth_request_spec.rb +4 -1
- data/spec/integration/aws_credentials_retriever_spec.rb +34 -1
- data/spec/integration/aws_lambda_examples_spec.rb +68 -0
- data/spec/integration/bson_symbol_spec.rb +8 -3
- data/spec/integration/bulk_insert_spec.rb +3 -0
- data/spec/integration/bulk_write_error_message_spec.rb +74 -0
- data/spec/integration/bulk_write_spec.rb +67 -0
- data/spec/integration/change_stream_examples_spec.rb +3 -0
- data/spec/integration/change_stream_spec.rb +18 -9
- data/spec/integration/check_clean_slate_spec.rb +3 -0
- data/spec/integration/client_authentication_options_spec.rb +76 -36
- data/spec/integration/client_connectivity_spec.rb +4 -1
- data/spec/integration/client_construction_aws_auth_spec.rb +14 -2
- data/spec/integration/client_construction_spec.rb +153 -8
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +13 -10
- data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +172 -169
- data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +3 -1
- data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +3 -0
- data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +43 -4
- data/spec/integration/client_side_encryption/auto_encryption_spec.rb +148 -2
- data/spec/integration/client_side_encryption/automatic_data_encryption_keys_prose_spec.rb +153 -0
- data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +6 -3
- data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +6 -3
- data/spec/integration/client_side_encryption/client_close_spec.rb +4 -1
- data/spec/integration/client_side_encryption/corpus_spec.rb +67 -35
- data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +42 -42
- data/spec/integration/client_side_encryption/data_key_spec.rb +101 -8
- data/spec/integration/client_side_encryption/decryption_events_prose_spec.rb +159 -0
- data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +62 -0
- data/spec/integration/client_side_encryption/explicit_queryable_encryption_spec.rb +150 -0
- data/spec/integration/client_side_encryption/external_key_vault_spec.rb +9 -6
- data/spec/integration/client_side_encryption/kms_tls_options_spec.rb +436 -0
- data/spec/integration/client_side_encryption/kms_tls_spec.rb +92 -0
- data/spec/integration/client_side_encryption/mongocryptd_prose_spec.rb +105 -0
- data/spec/integration/client_side_encryption/on_demand_aws_credentials_spec.rb +49 -0
- data/spec/integration/client_side_encryption/on_demand_azure_credentials_spec.rb +46 -0
- data/spec/integration/client_side_encryption/on_demand_gcp_credentials_spec.rb +47 -0
- data/spec/integration/client_side_encryption/queryable_encryption_examples_spec.rb +114 -0
- data/spec/integration/client_side_encryption/range_explicit_encryption_prose_spec.rb +536 -0
- data/spec/integration/client_side_encryption/rewrap_prose_spec.rb +114 -0
- data/spec/integration/client_side_encryption/unique_index_on_key_alt_names_prose_spec.rb +89 -0
- data/spec/integration/client_side_encryption/views_spec.rb +4 -1
- data/spec/integration/client_spec.rb +14 -4
- data/spec/integration/client_update_spec.rb +9 -2
- data/spec/integration/collection_indexes_prose_spec.rb +3 -0
- data/spec/integration/command_monitoring_spec.rb +64 -26
- data/spec/integration/command_spec.rb +5 -24
- data/spec/integration/connect_single_rs_name_spec.rb +6 -3
- data/spec/integration/connection/faas_env_spec.rb +62 -0
- data/spec/integration/connection_pool_populator_spec.rb +33 -8
- data/spec/integration/connection_spec.rb +58 -36
- data/spec/integration/crud_spec.rb +217 -1
- data/spec/integration/cursor_pinning_spec.rb +125 -0
- data/spec/integration/cursor_reaping_spec.rb +62 -19
- data/spec/integration/docs_examples_spec.rb +12 -2
- data/spec/integration/error_detection_spec.rb +3 -0
- data/spec/integration/fork_reconnect_spec.rb +73 -9
- data/spec/integration/get_more_spec.rb +4 -1
- data/spec/integration/grid_fs_bucket_spec.rb +7 -4
- data/spec/integration/heartbeat_events_spec.rb +8 -5
- data/spec/integration/map_reduce_spec.rb +81 -0
- data/spec/integration/mmapv1_spec.rb +3 -0
- data/spec/integration/mongos_pinning_spec.rb +3 -0
- data/spec/integration/ocsp_connectivity_spec.rb +29 -0
- data/spec/integration/ocsp_verifier_cache_spec.rb +191 -0
- data/spec/integration/ocsp_verifier_spec.rb +358 -0
- data/spec/integration/operation_failure_code_spec.rb +4 -1
- data/spec/integration/operation_failure_message_spec.rb +91 -0
- data/spec/integration/query_cache_spec.rb +1343 -0
- data/spec/integration/query_cache_transactions_spec.rb +193 -0
- data/spec/integration/read_concern_spec.rb +4 -1
- data/spec/integration/read_preference_spec.rb +20 -13
- data/spec/integration/reconnect_spec.rb +39 -13
- data/spec/integration/retryable_errors_spec.rb +4 -1
- data/spec/integration/retryable_reads_errors_spec.rb +110 -0
- data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +5 -2
- data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +5 -1
- data/spec/integration/retryable_writes/shared/adds_diagnostics.rb +3 -0
- data/spec/integration/retryable_writes/shared/does_not_support_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/only_supports_legacy_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +5 -0
- data/spec/integration/retryable_writes/shared/performs_modern_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/performs_no_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/supports_legacy_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/supports_modern_retries.rb +3 -0
- data/spec/integration/retryable_writes/shared/supports_retries.rb +3 -0
- data/spec/integration/retryable_writes_errors_spec.rb +162 -1
- data/spec/integration/sdam_error_handling_spec.rb +159 -8
- data/spec/integration/sdam_events_spec.rb +94 -31
- data/spec/integration/sdam_prose_spec.rb +7 -4
- data/spec/integration/secondary_reads_spec.rb +103 -0
- data/spec/integration/server_description_spec.rb +3 -0
- data/spec/integration/server_monitor_spec.rb +7 -2
- data/spec/integration/server_selection_spec.rb +39 -0
- data/spec/integration/server_selector_spec.rb +29 -7
- data/spec/integration/server_spec.rb +27 -25
- data/spec/integration/shell_examples_spec.rb +3 -0
- data/spec/integration/size_limit_spec.rb +7 -1
- data/spec/integration/snappy_compression_spec.rb +28 -0
- data/spec/integration/snapshot_query_examples_spec.rb +129 -0
- data/spec/integration/srv_monitoring_spec.rb +82 -5
- data/spec/integration/srv_spec.rb +60 -0
- data/spec/integration/ssl_uri_options_spec.rb +3 -0
- data/spec/integration/step_down_spec.rb +28 -7
- data/spec/integration/time_zone_querying_spec.rb +3 -0
- data/spec/integration/transaction_pinning_spec.rb +134 -0
- data/spec/integration/transactions_api_examples_spec.rb +3 -0
- data/spec/integration/transactions_examples_spec.rb +26 -7
- data/spec/integration/truncated_utf8_spec.rb +26 -0
- data/spec/integration/versioned_api_examples_spec.rb +120 -0
- data/spec/integration/x509_auth_spec.rb +5 -2
- data/spec/integration/zlib_compression_spec.rb +4 -1
- data/spec/integration/zstd_compression_spec.rb +29 -0
- data/spec/kerberos/kerberos_spec.rb +3 -0
- data/spec/lite_spec_helper.rb +59 -16
- data/spec/mongo/address/ipv4_spec.rb +3 -0
- data/spec/mongo/address/ipv6_spec.rb +10 -0
- data/spec/mongo/address/unix_spec.rb +4 -0
- data/spec/mongo/address/validator_spec.rb +3 -0
- data/spec/mongo/address_spec.rb +33 -13
- data/spec/mongo/auth/aws/credential_cache_spec.rb +63 -0
- data/spec/mongo/auth/aws/credentials_retriever_spec.rb +90 -0
- data/spec/mongo/auth/aws/credentials_spec.rb +46 -0
- data/spec/mongo/auth/aws/request_region_spec.rb +3 -0
- data/spec/mongo/auth/aws/request_spec.rb +3 -0
- data/spec/mongo/auth/cr_spec.rb +6 -24
- data/spec/mongo/auth/gssapi/conversation_spec.rb +3 -0
- data/spec/mongo/auth/invalid_mechanism_spec.rb +3 -0
- data/spec/mongo/auth/ldap/conversation_spec.rb +4 -1
- data/spec/mongo/auth/ldap_spec.rb +10 -4
- data/spec/mongo/auth/scram/conversation_spec.rb +26 -23
- data/spec/mongo/auth/scram256/conversation_spec.rb +23 -20
- data/spec/mongo/auth/scram_negotiation_spec.rb +5 -1
- data/spec/mongo/auth/scram_spec.rb +5 -3
- data/spec/mongo/auth/stringprep/profiles/sasl_spec.rb +3 -0
- data/spec/mongo/auth/stringprep_spec.rb +3 -0
- data/spec/mongo/auth/user/view_spec.rb +99 -1
- data/spec/mongo/auth/user_spec.rb +4 -1
- data/spec/mongo/auth/x509/conversation_spec.rb +6 -3
- data/spec/mongo/auth/x509_spec.rb +5 -3
- data/spec/mongo/auth_spec.rb +3 -0
- data/spec/mongo/bson_spec.rb +3 -0
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +3 -0
- data/spec/mongo/bulk_write/result_spec.rb +18 -1
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +3 -0
- data/spec/mongo/bulk_write_spec.rb +149 -25
- data/spec/mongo/caching_cursor_spec.rb +73 -0
- data/spec/mongo/client_construction_spec.rb +1112 -546
- data/spec/mongo/client_encryption_spec.rb +27 -30
- data/spec/mongo/client_spec.rb +445 -139
- data/spec/mongo/cluster/cursor_reaper_spec.rb +66 -23
- data/spec/mongo/cluster/periodic_executor_spec.rb +6 -1
- data/spec/mongo/cluster/socket_reaper_spec.rb +3 -0
- data/spec/mongo/cluster/topology/replica_set_spec.rb +13 -10
- data/spec/mongo/cluster/topology/sharded_spec.rb +6 -3
- data/spec/mongo/cluster/topology/single_spec.rb +20 -8
- data/spec/mongo/cluster/topology/unknown_spec.rb +4 -1
- data/spec/mongo/cluster/topology_spec.rb +4 -1
- data/spec/mongo/cluster_spec.rb +183 -192
- data/spec/mongo/cluster_time_spec.rb +3 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +181 -83
- data/spec/mongo/collection/view/builder/find_command_spec.rb +7 -0
- data/spec/mongo/collection/view/builder/op_query_spec.rb +7 -0
- data/spec/mongo/collection/view/change_stream_resume_spec.rb +8 -3
- data/spec/mongo/collection/view/change_stream_spec.rb +18 -2
- data/spec/mongo/collection/view/explainable_spec.rb +90 -4
- data/spec/mongo/collection/view/immutable_spec.rb +3 -0
- data/spec/mongo/collection/view/iterable_spec.rb +3 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +46 -2
- data/spec/mongo/collection/view/readable_spec.rb +868 -1
- data/spec/mongo/collection/view/writable_spec.rb +147 -32
- data/spec/mongo/collection/view_spec.rb +3 -0
- data/spec/mongo/collection_crud_spec.rb +4471 -0
- data/spec/mongo/collection_ddl_spec.rb +587 -0
- data/spec/mongo/collection_spec.rb +106 -4839
- data/spec/mongo/condition_variable_spec.rb +104 -0
- data/spec/mongo/config/options_spec.rb +76 -0
- data/spec/mongo/config_spec.rb +74 -0
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +21 -2
- data/spec/mongo/crypt/auto_encrypter_spec.rb +266 -5
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +21 -2
- data/spec/mongo/crypt/binary_spec.rb +3 -5
- data/spec/mongo/crypt/binding/binary_spec.rb +3 -5
- data/spec/mongo/crypt/binding/context_spec.rb +71 -23
- data/spec/mongo/crypt/binding/helpers_spec.rb +3 -5
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +21 -52
- data/spec/mongo/crypt/binding/status_spec.rb +3 -5
- data/spec/mongo/crypt/binding/version_spec.rb +50 -5
- data/spec/mongo/crypt/binding_unloaded_spec.rb +17 -0
- data/spec/mongo/crypt/data_key_context_spec.rb +45 -114
- data/spec/mongo/crypt/encryption_io_spec.rb +5 -0
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +36 -2
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +98 -2
- data/spec/mongo/crypt/handle_spec.rb +189 -155
- data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +3 -0
- data/spec/mongo/crypt/hooks_spec.rb +30 -0
- data/spec/mongo/crypt/kms/azure/credentials_retriever_spec.rb +86 -0
- data/spec/mongo/crypt/kms/credentials_spec.rb +373 -0
- data/spec/mongo/crypt/kms_spec.rb +62 -0
- data/spec/mongo/crypt/status_spec.rb +3 -5
- data/spec/mongo/crypt_spec.rb +21 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +11 -2
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +11 -2
- data/spec/mongo/cursor_spec.rb +230 -19
- data/spec/mongo/database_spec.rb +263 -25
- data/spec/mongo/distinguishing_semaphore_spec.rb +9 -6
- data/spec/mongo/error/bulk_write_error_spec.rb +6 -3
- data/spec/mongo/error/crypt_error_spec.rb +3 -0
- data/spec/mongo/error/max_bson_size_spec.rb +3 -0
- data/spec/mongo/error/no_server_available_spec.rb +4 -1
- data/spec/mongo/error/notable_spec.rb +3 -0
- data/spec/mongo/error/operation_failure_heavy_spec.rb +53 -1
- data/spec/mongo/error/operation_failure_spec.rb +94 -31
- data/spec/mongo/error/parser_spec.rb +40 -6
- data/spec/mongo/error/unsupported_option_spec.rb +3 -0
- data/spec/mongo/event/publisher_spec.rb +3 -0
- data/spec/mongo/event/subscriber_spec.rb +3 -0
- data/spec/mongo/grid/file/chunk_spec.rb +7 -4
- data/spec/mongo/grid/file/info_spec.rb +3 -0
- data/spec/mongo/grid/file_spec.rb +4 -1
- data/spec/mongo/grid/fs_bucket_spec.rb +40 -17
- data/spec/mongo/grid/stream/read_spec.rb +33 -10
- data/spec/mongo/grid/stream/write_spec.rb +6 -9
- data/spec/mongo/grid/stream_spec.rb +4 -1
- data/spec/mongo/id_spec.rb +4 -1
- data/spec/mongo/index/view_spec.rb +138 -4
- data/spec/mongo/lint_spec.rb +4 -1
- data/spec/mongo/logger_spec.rb +16 -11
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +3 -0
- data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +4 -1
- data/spec/mongo/monitoring/event/command_failed_spec.rb +59 -2
- data/spec/mongo/monitoring/event/command_started_spec.rb +3 -0
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +46 -6
- data/spec/mongo/monitoring/event/secure_spec.rb +28 -4
- data/spec/mongo/monitoring/event/server_closed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/server_description_changed_spec.rb +3 -0
- data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/server_heartbeat_started_spec.rb +3 -0
- data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +4 -1
- data/spec/mongo/monitoring/event/server_opening_spec.rb +4 -1
- data/spec/mongo/monitoring/event/topology_changed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/topology_closed_spec.rb +4 -1
- data/spec/mongo/monitoring/event/topology_opening_spec.rb +4 -1
- data/spec/mongo/monitoring_spec.rb +3 -0
- data/spec/mongo/operation/aggregate/result_spec.rb +7 -2
- data/spec/mongo/operation/aggregate_spec.rb +5 -1
- data/spec/mongo/operation/collections_info_spec.rb +7 -1
- data/spec/mongo/operation/command_spec.rb +11 -5
- data/spec/mongo/operation/create/op_msg_spec.rb +244 -0
- data/spec/mongo/operation/create_index_spec.rb +9 -3
- data/spec/mongo/operation/create_user_spec.rb +9 -3
- data/spec/mongo/operation/delete/bulk_spec.rb +12 -6
- data/spec/mongo/operation/delete/op_msg_spec.rb +20 -8
- data/spec/mongo/operation/delete_spec.rb +13 -36
- data/spec/mongo/operation/drop_index_spec.rb +9 -2
- data/spec/mongo/operation/find/builder/flags_spec.rb +109 -0
- data/spec/mongo/operation/find/builder/modifiers_spec.rb +213 -0
- data/spec/mongo/operation/indexes_spec.rb +8 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +14 -8
- data/spec/mongo/operation/insert/op_msg_spec.rb +25 -14
- data/spec/mongo/operation/insert_spec.rb +17 -43
- data/spec/mongo/operation/limited_spec.rb +3 -0
- data/spec/mongo/operation/map_reduce_spec.rb +8 -2
- data/spec/mongo/operation/read_preference_legacy_spec.rb +39 -42
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +33 -5
- data/spec/mongo/operation/remove_user_spec.rb +9 -3
- data/spec/mongo/operation/result_spec.rb +30 -5
- data/spec/mongo/operation/specifiable_spec.rb +3 -0
- data/spec/mongo/operation/update/bulk_spec.rb +13 -7
- data/spec/mongo/operation/update/op_msg_spec.rb +20 -8
- data/spec/mongo/operation/update_spec.rb +12 -35
- data/spec/mongo/operation/update_user_spec.rb +7 -1
- data/spec/mongo/options/redacted_spec.rb +4 -1
- data/spec/mongo/protocol/caching_hash_spec.rb +37 -0
- data/spec/mongo/protocol/compressed_spec.rb +29 -12
- data/spec/mongo/protocol/get_more_spec.rb +3 -0
- data/spec/mongo/protocol/kill_cursors_spec.rb +3 -0
- data/spec/mongo/protocol/msg_spec.rb +48 -66
- data/spec/mongo/protocol/query_spec.rb +6 -3
- data/spec/mongo/protocol/registry_spec.rb +3 -0
- data/spec/mongo/protocol/reply_spec.rb +3 -0
- data/spec/mongo/query_cache_middleware_spec.rb +55 -0
- data/spec/mongo/query_cache_spec.rb +453 -0
- data/spec/mongo/retryable_spec.rb +42 -7
- data/spec/mongo/semaphore_spec.rb +9 -6
- data/spec/mongo/server/app_metadata/environment_spec.rb +209 -0
- data/spec/mongo/server/app_metadata/truncator_spec.rb +158 -0
- data/spec/mongo/server/app_metadata_spec.rb +55 -52
- data/spec/mongo/server/connection_auth_spec.rb +9 -10
- data/spec/mongo/server/connection_common_spec.rb +87 -0
- data/spec/mongo/server/connection_pool/populator_spec.rb +22 -3
- data/spec/mongo/server/connection_pool_spec.rb +635 -58
- data/spec/mongo/server/connection_spec.rb +226 -204
- data/spec/mongo/server/description/features_spec.rb +27 -0
- data/spec/mongo/server/description_query_methods_spec.rb +4 -1
- data/spec/mongo/server/description_spec.rb +625 -594
- data/spec/mongo/server/monitor/app_metadata_spec.rb +3 -1
- data/spec/mongo/server/monitor/connection_spec.rb +81 -9
- data/spec/mongo/server/monitor_spec.rb +31 -18
- data/spec/mongo/server/push_monitor_spec.rb +95 -0
- data/spec/mongo/server/round_trip_time_averager_spec.rb +3 -0
- data/spec/mongo/server_selector/nearest_spec.rb +8 -2
- data/spec/mongo/server_selector/primary_preferred_spec.rb +8 -2
- data/spec/mongo/server_selector/primary_spec.rb +8 -2
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +14 -8
- data/spec/mongo/server_selector/secondary_spec.rb +8 -2
- data/spec/mongo/server_selector_spec.rb +143 -18
- data/spec/mongo/server_spec.rb +49 -6
- data/spec/mongo/session/server_session_spec.rb +3 -0
- data/spec/mongo/session/session_pool_spec.rb +45 -10
- data/spec/mongo/session_spec.rb +29 -6
- data/spec/mongo/session_transaction_spec.rb +17 -36
- data/spec/mongo/socket/ssl_spec.rb +91 -75
- data/spec/mongo/socket/tcp_spec.rb +3 -0
- data/spec/mongo/socket/unix_spec.rb +4 -0
- data/spec/mongo/socket_spec.rb +5 -2
- data/spec/mongo/srv/monitor_spec.rb +3 -0
- data/spec/mongo/srv/result_spec.rb +3 -0
- data/spec/mongo/timeout_spec.rb +3 -0
- data/spec/mongo/tls_context_hooks_spec.rb +40 -0
- data/spec/mongo/uri/options_mapper_spec.rb +1605 -0
- data/spec/mongo/uri/srv_protocol_spec.rb +330 -36
- data/spec/mongo/uri_option_parsing_spec.rb +52 -16
- data/spec/mongo/uri_spec.rb +238 -42
- data/spec/mongo/utils_spec.rb +42 -0
- data/spec/mongo/write_concern/acknowledged_spec.rb +3 -0
- data/spec/mongo/write_concern/unacknowledged_spec.rb +3 -0
- data/spec/mongo/write_concern_spec.rb +3 -0
- data/spec/runners/auth.rb +26 -2
- data/spec/runners/change_streams/outcome.rb +3 -0
- data/spec/runners/change_streams/spec.rb +4 -1
- data/spec/runners/change_streams/test.rb +5 -2
- data/spec/runners/cmap/verifier.rb +4 -1
- data/spec/runners/cmap.rb +192 -46
- data/spec/runners/command_monitoring.rb +4 -1
- data/spec/runners/connection_string.rb +48 -126
- data/spec/runners/crud/context.rb +3 -0
- data/spec/runners/crud/operation.rb +21 -7
- data/spec/runners/crud/outcome.rb +3 -0
- data/spec/runners/crud/requirement.rb +76 -6
- data/spec/runners/crud/spec.rb +9 -3
- data/spec/runners/crud/test.rb +4 -1
- data/spec/runners/crud/test_base.rb +4 -20
- data/spec/runners/crud/verifier.rb +20 -4
- data/spec/runners/crud.rb +23 -1
- data/spec/runners/gridfs.rb +4 -1
- data/spec/runners/read_write_concern_document.rb +4 -1
- data/spec/runners/sdam/verifier.rb +3 -0
- data/spec/runners/sdam.rb +9 -5
- data/spec/runners/server_selection.rb +5 -2
- data/spec/runners/server_selection_rtt.rb +5 -2
- data/spec/runners/transactions/operation.rb +30 -10
- data/spec/runners/transactions/spec.rb +5 -2
- data/spec/runners/transactions/test.rb +69 -21
- data/spec/runners/transactions.rb +14 -8
- data/spec/runners/unified/assertions.rb +379 -0
- data/spec/runners/unified/change_stream_operations.rb +52 -0
- data/spec/runners/unified/client_side_encryption_operations.rb +83 -0
- data/spec/runners/unified/crud_operations.rb +332 -0
- data/spec/runners/unified/ddl_operations.rb +255 -0
- data/spec/runners/unified/entity_map.rb +42 -0
- data/spec/runners/unified/error.rb +29 -0
- data/spec/runners/unified/event_subscriber.rb +110 -0
- data/spec/runners/unified/exceptions.rb +24 -0
- data/spec/runners/unified/grid_fs_operations.rb +79 -0
- data/spec/runners/unified/support_operations.rb +333 -0
- data/spec/runners/unified/test.rb +585 -0
- data/spec/runners/unified/test_group.rb +31 -0
- data/spec/runners/unified/thread_operations.rb +73 -0
- data/spec/runners/unified.rb +109 -0
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +378 -0
- data/spec/shared/lib/mrss/docker_runner.rb +295 -0
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +238 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +113 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +37 -0
- data/spec/shared/share/Dockerfile.erb +330 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +416 -0
- data/spec/shared/shlib/set_env.sh +169 -0
- data/spec/solo/clean_exit_spec.rb +22 -0
- data/spec/spec_helper.rb +11 -5
- data/spec/spec_tests/auth_spec.rb +30 -13
- data/spec/spec_tests/change_streams_unified_spec.rb +14 -0
- data/spec/spec_tests/client_side_encryption_spec.rb +27 -1
- data/spec/spec_tests/client_side_encryption_unified_spec.rb +26 -0
- data/spec/spec_tests/cmap_spec.rb +41 -17
- data/spec/spec_tests/collection_management_spec.rb +13 -0
- data/spec/spec_tests/command_monitoring_unified_spec.rb +13 -0
- data/spec/spec_tests/connection_string_spec.rb +3 -0
- data/spec/spec_tests/crud_spec.rb +3 -10
- data/spec/spec_tests/crud_unified_spec.rb +13 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +41 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +103 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +120 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +351 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +1169 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +1069 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +307 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams.yml +927 -0
- data/spec/spec_tests/data/client_side_encryption/aggregate.yml +3 -17
- data/spec/spec_tests/data/client_side_encryption/awsTemporary.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/azureKMS.yml +46 -0
- data/spec/spec_tests/data/client_side_encryption/badQueries.yml +12 -2
- data/spec/spec_tests/data/client_side_encryption/basic.yml +3 -17
- data/spec/spec_tests/data/client_side_encryption/bulk.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +2 -2
- data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +5 -4
- data/spec/spec_tests/data/client_side_encryption/count.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/create-and-createIndexes.yml +58 -0
- data/spec/spec_tests/data/client_side_encryption/delete.yml +2 -16
- data/spec/spec_tests/data/client_side_encryption/distinct.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/explain.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/find.yml +2 -16
- data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/fle2v2-BypassQueryAnalysis.yml +89 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Compact.yml +82 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection-OldServer.yml +61 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection.yml +937 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-DecryptExistingData.yml +66 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Delete.yml +100 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml +79 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-jsonSchema.yml +102 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFieldsMap-defaults.yml +58 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-FindOneAndUpdate.yml +200 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Indexed.yml +96 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Unindexed.yml +89 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-MissingKey.yml +43 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-NoEncryption.yml +44 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Aggregate.yml +241 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Correctness.yml +422 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Delete.yml +182 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-FindOneAndUpdate.yml +239 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-InsertFind.yml +235 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Update.yml +252 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Aggregate.yml +1687 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Correctness.yml +293 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Delete.yml +905 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-FindOneAndUpdate.yml +1684 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-InsertFind.yml +1680 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Update.yml +1697 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Aggregate.yml +329 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Correctness.yml +424 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Delete.yml +226 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-FindOneAndUpdate.yml +327 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-InsertFind.yml +319 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Update.yml +336 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Aggregate.yml +913 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Correctness.yml +292 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Delete.yml +518 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-FindOneAndUpdate.yml +911 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-InsertFind.yml +907 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Update.yml +924 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Aggregate.yml +325 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Correctness.yml +424 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Delete.yml +224 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-FindOneAndUpdate.yml +323 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-InsertFind.yml +319 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Update.yml +338 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Aggregate.yml +241 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Correctness.yml +423 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Delete.yml +182 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-FindOneAndUpdate.yml +239 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-InsertFind.yml +235 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Update.yml +254 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Aggregate.yml +241 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Correctness.yml +422 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Delete.yml +182 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-FindOneAndUpdate.yml +239 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-InsertFind.yml +235 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Update.yml +254 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-WrongType.yml +43 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Update.yml +210 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-validatorAndPartialFieldExpression.yml +169 -0
- data/spec/spec_tests/data/client_side_encryption/gcpKMS.yml +46 -0
- data/spec/spec_tests/data/client_side_encryption/getMore.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/insert.yml +2 -16
- data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/localKMS.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/localSchema.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +3 -1
- data/spec/spec_tests/data/client_side_encryption/missingKey.yml +2 -9
- data/spec/spec_tests/data/client_side_encryption/noSchema.yml +39 -0
- data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/types.yml +44 -70
- data/spec/spec_tests/data/client_side_encryption/unified/addKeyAltName.yml +194 -0
- data/spec/spec_tests/data/client_side_encryption/unified/createDataKey-kms_providers-invalid.yml +67 -0
- data/spec/spec_tests/data/client_side_encryption/unified/createDataKey.yml +309 -0
- data/spec/spec_tests/data/client_side_encryption/unified/deleteKey.yml +159 -0
- data/spec/spec_tests/data/client_side_encryption/unified/getKey.yml +105 -0
- data/spec/spec_tests/data/client_side_encryption/unified/getKeyByAltName.yml +104 -0
- data/spec/spec_tests/data/client_side_encryption/unified/getKeys.yml +122 -0
- data/spec/spec_tests/data/client_side_encryption/unified/removeKeyAltName.yml +157 -0
- data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-decrypt_failure.yml +69 -0
- data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey-encrypt_failure.yml +122 -0
- data/spec/spec_tests/data/client_side_encryption/unified/rewrapManyDataKey.yml +432 -0
- data/spec/spec_tests/data/client_side_encryption/updateMany.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/updateOne.yml +1 -8
- data/spec/spec_tests/data/client_side_encryption/validatorAndPartialFieldExpression.yml +166 -0
- data/spec/spec_tests/data/cmap/connection-must-have-id.yml +2 -0
- data/spec/spec_tests/data/cmap/connection-must-order-ids.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkin-destroy-stale.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkin-make-available.yml +3 -1
- data/spec/spec_tests/data/cmap/pool-checkin.yml +5 -0
- data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +8 -2
- data/spec/spec_tests/data/cmap/pool-checkout-custom-maxConnecting-is-enforced.yml +50 -0
- data/spec/spec_tests/data/cmap/pool-checkout-error-closed.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-is-enforced.yml +81 -0
- data/spec/spec_tests/data/cmap/pool-checkout-maxConnecting-timeout.yml +71 -0
- data/spec/spec_tests/data/cmap/pool-checkout-minPoolSize-connection-maxConnecting.yml +64 -0
- data/spec/spec_tests/data/cmap/pool-checkout-multiple.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-checkout-no-idle.yml +6 -0
- data/spec/spec_tests/data/cmap/pool-checkout-no-stale.yml +8 -0
- data/spec/spec_tests/data/cmap/pool-checkout-returned-connection-maxConnecting.yml +88 -0
- data/spec/spec_tests/data/cmap/pool-clear-interrupt-immediately.yml +49 -0
- data/spec/spec_tests/data/cmap/pool-clear-interrupting-pending-connections.yml +43 -0
- data/spec/spec_tests/data/cmap/pool-clear-min-size.yml +41 -0
- data/spec/spec_tests/data/cmap/pool-clear-paused.yml +18 -0
- data/spec/spec_tests/data/cmap/pool-clear-ready.yml +39 -0
- data/spec/spec_tests/data/cmap/pool-clear-schedule-run-interruptInUseConnections-false.yml +48 -0
- data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-create-max-size.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-create-min-size-error.yml +43 -0
- data/spec/spec_tests/data/cmap/pool-create-min-size.yml +12 -0
- data/spec/spec_tests/data/cmap/pool-ready-ready.yml +22 -0
- data/spec/spec_tests/data/cmap/pool-ready.yml +30 -0
- data/spec/spec_tests/data/cmap/wait-queue-fairness.yml +2 -0
- data/spec/spec_tests/data/cmap/wait-queue-timeout.yml +6 -1
- data/spec/spec_tests/data/collection_management/clustered-indexes.yml +135 -0
- data/spec/spec_tests/data/collection_management/createCollection-pre_and_post_images.yml +50 -0
- data/spec/spec_tests/data/collection_management/modifyCollection-errorResponse.yml +59 -0
- data/spec/spec_tests/data/collection_management/modifyCollection-pre_and_post_images.yml +58 -0
- data/spec/spec_tests/data/collection_management/timeseries-collection.yml +164 -0
- data/spec/spec_tests/data/command_monitoring_unified/bulkWrite.yml +68 -0
- data/spec/spec_tests/data/command_monitoring_unified/command.yml +50 -0
- data/spec/spec_tests/data/command_monitoring_unified/deleteMany.yml +79 -0
- data/spec/spec_tests/data/command_monitoring_unified/deleteOne.yml +79 -0
- data/spec/spec_tests/data/command_monitoring_unified/find.yml +254 -0
- data/spec/spec_tests/data/command_monitoring_unified/insertMany.yml +79 -0
- data/spec/spec_tests/data/command_monitoring_unified/insertOne.yml +77 -0
- data/spec/spec_tests/data/command_monitoring_unified/pre-42-server-connection-id.yml +56 -0
- data/spec/spec_tests/data/command_monitoring_unified/redacted-commands.yml +348 -0
- data/spec/spec_tests/data/command_monitoring_unified/server-connection-id.yml +56 -0
- data/spec/spec_tests/data/command_monitoring_unified/unacknowledgedBulkWrite.yml +55 -0
- data/spec/spec_tests/data/command_monitoring_unified/updateMany.yml +87 -0
- data/spec/spec_tests/data/command_monitoring_unified/updateOne.yml +118 -0
- data/spec/spec_tests/data/command_monitoring_unified/writeConcernError.yml +80 -0
- data/spec/spec_tests/data/connection_string/valid-warnings.yml +24 -0
- data/spec/spec_tests/data/crud/read/aggregate-collation.yml +2 -1
- data/spec/spec_tests/data/crud/read/aggregate-out.yml +1 -0
- data/spec/spec_tests/data/crud/read/count-collation.yml +2 -1
- data/spec/spec_tests/data/crud/read/distinct-collation.yml +2 -1
- data/spec/spec_tests/data/crud/read/find-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/bulkWrite-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/bulkWrite.yml +26 -22
- data/spec/spec_tests/data/crud/write/deleteMany-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/deleteOne-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/findOneAndDelete-collation.yml +3 -2
- data/spec/spec_tests/data/crud/write/findOneAndReplace-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/findOneAndUpdate-collation.yml +3 -2
- data/spec/spec_tests/data/crud/write/insertMany.yml +26 -22
- data/spec/spec_tests/data/crud/write/replaceOne-collation.yml +3 -2
- data/spec/spec_tests/data/crud/write/updateMany-collation.yml +2 -1
- data/spec/spec_tests/data/crud/write/updateOne-collation.yml +2 -1
- data/spec/spec_tests/data/crud_unified/aggregate-allowdiskuse.yml +75 -0
- data/spec/spec_tests/data/crud_unified/aggregate-let.yml +138 -0
- data/spec/spec_tests/data/crud_unified/aggregate-merge-errorResponse.yml +42 -0
- data/spec/spec_tests/data/crud_unified/aggregate-merge.yml +185 -0
- data/spec/spec_tests/data/crud_unified/aggregate-out-readConcern.yml +171 -0
- data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +155 -0
- data/spec/spec_tests/data/crud_unified/aggregate.yml +215 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters-clientError.yml +98 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-arrayFilters.yml +174 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-comment.yml +189 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-clientError.yml +113 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint-serverError.yml +142 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-delete-hint.yml +154 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-hint-unacknowledged.yml +98 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-deleteMany-let.yml +86 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-hint-unacknowledged.yml +97 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-deleteOne-let.yml +86 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-errorResponse.yml +50 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-insertOne-dots_and_dollars.yml +138 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-dots_and_dollars.yml +165 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-hint-unacknowledged.yml +103 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-replaceOne-let.yml +93 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-clientError.yml +148 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint-serverError.yml +239 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-update-hint.yml +256 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-update-validation.yml +73 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-dots_and_dollars.yml +150 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-hint-unacknowledged.yml +104 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateMany-let.yml +96 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-dots_and_dollars.yml +150 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-hint-unacknowledged.yml +103 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-updateOne-let.yml +95 -0
- data/spec/spec_tests/data/crud_unified/countDocuments-comment.yml +92 -0
- data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +151 -0
- data/spec/spec_tests/data/crud_unified/db-aggregate.yml +73 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-comment.yml +97 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint-clientError.yml +87 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint-serverError.yml +107 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint-unacknowledged.yml +90 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint.yml +99 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-let.yml +93 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-comment.yml +98 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint-clientError.yml +80 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint-serverError.yml +100 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint-unacknowledged.yml +89 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint.yml +95 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-let.yml +91 -0
- data/spec/spec_tests/data/crud_unified/distinct-comment.yml +98 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount-comment.yml +95 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +181 -0
- data/spec/spec_tests/data/crud_unified/find-allowdiskuse-clientError.yml +55 -0
- data/spec/spec_tests/data/crud_unified/find-allowdiskuse-serverError.yml +68 -0
- data/spec/spec_tests/data/crud_unified/find-allowdiskuse.yml +79 -0
- data/spec/spec_tests/data/crud_unified/find-comment.yml +166 -0
- data/spec/spec_tests/data/crud_unified/find-let.yml +71 -0
- data/spec/spec_tests/data/crud_unified/find.yml +68 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-comment.yml +96 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-clientError.yml +91 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-serverError.yml +107 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint-unacknowledged.yml +88 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-hint.yml +102 -0
- data/spec/spec_tests/data/crud_unified/findOneAndDelete-let.yml +86 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-comment.yml +101 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-dots_and_dollars.yml +140 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-clientError.yml +83 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-serverError.yml +99 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-unacknowledged.yml +96 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint.yml +98 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-let.yml +94 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-comment.yml +95 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-dots_and_dollars.yml +127 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-errorResponse.yml +69 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-clientError.yml +84 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-serverError.yml +100 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-unacknowledged.yml +92 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint.yml +99 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-let.yml +96 -0
- data/spec/spec_tests/data/crud_unified/insertMany-comment.yml +93 -0
- data/spec/spec_tests/data/crud_unified/insertMany-dots_and_dollars.yml +128 -0
- data/spec/spec_tests/data/crud_unified/insertOne-comment.yml +91 -0
- data/spec/spec_tests/data/crud_unified/insertOne-dots_and_dollars.yml +238 -0
- data/spec/spec_tests/data/crud_unified/insertOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-comment.yml +105 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-dots_and_dollars.yml +180 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-hint-unacknowledged.yml +95 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-hint.yml +108 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-let.yml +98 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-validation.yml +37 -0
- data/spec/spec_tests/data/crud_unified/updateMany-comment.yml +104 -0
- data/spec/spec_tests/data/crud_unified/updateMany-dots_and_dollars.yml +138 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint-clientError.yml +91 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint-serverError.yml +115 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint-unacknowledged.yml +96 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint.yml +115 -0
- data/spec/spec_tests/data/crud_unified/updateMany-let.yml +107 -0
- data/spec/spec_tests/data/crud_unified/updateMany-validation.yml +39 -0
- data/spec/spec_tests/data/crud_unified/updateOne-comment.yml +104 -0
- data/spec/spec_tests/data/crud_unified/updateOne-dots_and_dollars.yml +138 -0
- data/spec/spec_tests/data/crud_unified/updateOne-errorResponse.yml +47 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint-clientError.yml +85 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint-serverError.yml +109 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint-unacknowledged.yml +95 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint.yml +109 -0
- data/spec/spec_tests/data/crud_unified/updateOne-let.yml +102 -0
- data/spec/spec_tests/data/crud_unified/updateOne-validation.yml +37 -0
- data/spec/spec_tests/data/crud_unified/updateWithPipelines.yml +299 -0
- data/spec/spec_tests/data/gridfs_unified/delete.yml +198 -0
- data/spec/spec_tests/data/gridfs_unified/download.yml +241 -0
- data/spec/spec_tests/data/gridfs_unified/downloadByName.yml +159 -0
- data/spec/spec_tests/data/gridfs_unified/upload-disableMD5.yml +92 -0
- data/spec/spec_tests/data/gridfs_unified/upload.yml +288 -0
- data/spec/spec_tests/data/load_balancers/event-monitoring.yml +99 -0
- data/spec/spec_tests/data/load_balancers/lb-connection-establishment.yml +36 -0
- data/spec/spec_tests/data/load_balancers/non-lb-connection-establishment.yml +56 -0
- data/spec/spec_tests/data/load_balancers/server-selection.yml +50 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Secondary.yml +4 -4
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +4 -4
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +5 -5
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +5 -5
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/Sharded/SmallMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/Single/SmallMaxStaleness.yml +1 -1
- data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/legacy/aggregate-serverErrors.yml +157 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-client.watch-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-client.watch.yml +62 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.coll.watch-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.coll.watch.yml +66 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.watch-serverErrors.yml +154 -0
- data/spec/spec_tests/data/retryable_reads/legacy/changeStreams-db.watch.yml +62 -0
- data/spec/spec_tests/data/retryable_reads/legacy/count-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/legacy/countDocuments-serverErrors.yml +150 -0
- data/spec/spec_tests/data/retryable_reads/legacy/distinct-serverErrors.yml +156 -0
- data/spec/spec_tests/data/retryable_reads/legacy/estimatedDocumentCount-serverErrors.yml +148 -0
- data/spec/spec_tests/data/retryable_reads/legacy/find-serverErrors.yml +160 -0
- data/spec/spec_tests/data/retryable_reads/legacy/findOne-serverErrors.yml +154 -0
- data/spec/spec_tests/data/retryable_reads/legacy/gridfs-download-serverErrors.yml +173 -0
- data/spec/spec_tests/data/retryable_reads/legacy/gridfs-downloadByName-serverErrors.yml +174 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listCollectionNames-serverErrors.yml +143 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listCollectionObjects-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listCollections-serverErrors.yml +143 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseNames-serverErrors.yml +143 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listDatabaseObjects-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listDatabases-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listIndexNames-serverErrors.yml +144 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listIndexNames.yml +60 -0
- data/spec/spec_tests/data/retryable_reads/legacy/listIndexes-serverErrors.yml +145 -0
- data/spec/spec_tests/data/retryable_reads/legacy/mapReduce.yml +62 -0
- data/spec/spec_tests/data/retryable_reads/unified/handshakeError.yml +1342 -0
- data/spec/spec_tests/data/retryable_writes/legacy/bulkWrite-serverErrors.yml +130 -0
- data/spec/spec_tests/data/retryable_writes/legacy/bulkWrite.yml +402 -0
- data/spec/spec_tests/data/retryable_writes/legacy/deleteOne-serverErrors.yml +73 -0
- data/spec/spec_tests/data/retryable_writes/legacy/findOneAndDelete-serverErrors.yml +74 -0
- data/spec/spec_tests/data/retryable_writes/legacy/findOneAndReplace-serverErrors.yml +80 -0
- data/spec/spec_tests/data/retryable_writes/legacy/findOneAndUpdate-serverErrors.yml +79 -0
- data/spec/spec_tests/data/retryable_writes/legacy/insertMany-serverErrors.yml +84 -0
- data/spec/spec_tests/data/retryable_writes/legacy/insertOne-serverErrors.yml +527 -0
- data/spec/spec_tests/data/retryable_writes/legacy/replaceOne-serverErrors.yml +82 -0
- data/spec/spec_tests/data/retryable_writes/legacy/updateOne-serverErrors.yml +82 -0
- data/spec/spec_tests/data/retryable_writes/unified/bulkWrite-serverErrors.yml +96 -0
- data/spec/spec_tests/data/retryable_writes/unified/handshakeError.yml +785 -0
- data/spec/spec_tests/data/retryable_writes/unified/insertOne-noWritesPerformedError.yml +54 -0
- data/spec/spec_tests/data/retryable_writes/unified/insertOne-serverErrors.yml +78 -0
- data/spec/spec_tests/data/sdam/errors/error_handling_handshake.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-network-error.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-network-timeout-error.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-LegacyNotPrimary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotPrimaryNoSecondaryOk.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotPrimaryOrSecondary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotWritablePrimary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-LegacyNotPrimary.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotPrimaryNoSecondaryOk.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotPrimaryOrSecondary.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotWritablePrimary.yml +52 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-LegacyNotPrimary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotPrimaryNoSecondaryOk.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotPrimaryOrSecondary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotWritablePrimary.yml +61 -0
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/post-42-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/post-42-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/post-42-LegacyNotPrimary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-NotPrimaryNoSecondaryOk.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-NotPrimaryOrSecondary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-NotWritablePrimary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/post-42-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/post-42-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/pre-42-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/pre-42-LegacyNotPrimary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-NotPrimaryNoSecondaryOk.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-NotPrimaryOrSecondary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-NotWritablePrimary.yml +47 -0
- data/spec/spec_tests/data/sdam/errors/pre-42-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/pre-42-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/prefer-error-code.yml +54 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedAtShutdown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-InterruptedDueToReplStateChange.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotPrimaryNoSecondaryOk.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotPrimaryOrSecondary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotWritablePrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-PrimarySteppedDown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-ShutdownInProgress.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedAtShutdown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-InterruptedDueToReplStateChange.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-LegacyNotPrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotPrimaryNoSecondaryOk.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotPrimaryOrSecondary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotWritablePrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-PrimarySteppedDown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-ShutdownInProgress.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-network.yml +6 -4
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-timeout.yml +6 -4
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedAtShutdown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-InterruptedDueToReplStateChange.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-LegacyNotPrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotPrimaryNoSecondaryOk.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotPrimaryOrSecondary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotWritablePrimary.yml +91 -0
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-PrimarySteppedDown.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-ShutdownInProgress.yml +4 -2
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-network.yml +6 -4
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-timeout.yml +6 -4
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedAtShutdown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-InterruptedDueToReplStateChange.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-LegacyNotPrimary.yml +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotPrimaryNoSecondaryOk.yml +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotPrimaryOrSecondary.yml +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotWritablePrimary.yml +65 -0
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-PrimarySteppedDown.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-ShutdownInProgress.yml +2 -1
- data/spec/spec_tests/data/sdam/errors/write_errors_ignored.yml +42 -0
- data/spec/spec_tests/data/sdam/load-balanced/discover_load_balancer.yml +25 -0
- data/spec/spec_tests/data/sdam/rs/compatible.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/compatible_unknown.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_arbiters.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_arbiters_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_ghost.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_ghost_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_hidden.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_hidden_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_passives.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/discover_passives_replicaset.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/discover_primary.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_primary_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_rsother.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_rsother_replicaset.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/discover_secondary.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discover_secondary_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/discovery.yml +8 -4
- data/spec/spec_tests/data/sdam/rs/electionId_precedence_setVersion.yml +62 -0
- data/spec/spec_tests/data/sdam/rs/equal_electionids.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/hosts_differ_from_seeds.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/incompatible_arbiter.yml +3 -1
- data/spec/spec_tests/data/sdam/rs/incompatible_ghost.yml +3 -1
- data/spec/spec_tests/data/sdam/rs/incompatible_other.yml +3 -1
- data/spec/spec_tests/data/sdam/rs/ls_timeout.yml +12 -6
- data/spec/spec_tests/data/sdam/rs/member_reconfig.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/member_standalone.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/new_primary.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/new_primary_new_electionid.yml +6 -3
- data/spec/spec_tests/data/sdam/rs/new_primary_new_setversion.yml +6 -3
- data/spec/spec_tests/data/sdam/rs/new_primary_wrong_set_name.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/non_rs_member.yml +1 -0
- data/spec/spec_tests/data/sdam/rs/normalize_case.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/normalize_case_me.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/null_election_id-pre-6.0.yml +175 -0
- data/spec/spec_tests/data/sdam/rs/null_election_id.yml +28 -22
- data/spec/spec_tests/data/sdam/rs/primary_becomes_ghost.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_becomes_mongos.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_becomes_standalone.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/primary_changes_set_name.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_disconnect.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/primary_disconnect_electionid.yml +10 -5
- data/spec/spec_tests/data/sdam/rs/primary_disconnect_setversion.yml +10 -5
- data/spec/spec_tests/data/sdam/rs/primary_hint_from_secondary_with_mismatched_me.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_mismatched_me.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml +5 -3
- data/spec/spec_tests/data/sdam/rs/primary_reports_new_member.yml +8 -4
- data/spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/primary_wrong_set_name.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/repeated.yml +9 -5
- data/spec/spec_tests/data/sdam/rs/replicaset_rsnp.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/response_from_removed.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/sec_not_auth.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0-pre-6.0.yml +87 -0
- data/spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0.yml +5 -3
- data/spec/spec_tests/data/sdam/rs/secondary_mismatched_me.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/secondary_wrong_set_name_with_primary.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/set_version_can_rollback.yml +101 -0
- data/spec/spec_tests/data/sdam/rs/setversion_equal_max_without_electionid.yml +78 -0
- data/spec/spec_tests/data/sdam/rs/setversion_greaterthan_max_without_electionid.yml +79 -0
- data/spec/spec_tests/data/sdam/rs/setversion_without_electionid-pre-6.0.yml +79 -0
- data/spec/spec_tests/data/sdam/rs/setversion_without_electionid.yml +13 -12
- data/spec/spec_tests/data/sdam/rs/stepdown_change_set_name.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/too_new.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/too_old.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/topology_version_equal.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/topology_version_greater.yml +10 -5
- data/spec/spec_tests/data/sdam/rs/topology_version_less.yml +4 -2
- data/spec/spec_tests/data/sdam/rs/unexpected_mongos.yml +2 -1
- data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid-pre-6.0.yml +117 -0
- data/spec/spec_tests/data/sdam/rs/use_setversion_without_electionid.yml +29 -24
- data/spec/spec_tests/data/sdam/rs/wrong_set_name.yml +2 -1
- data/spec/spec_tests/data/sdam/sharded/compatible.yml +4 -2
- data/spec/spec_tests/data/sdam/sharded/discover_single_mongos.yml +2 -1
- data/spec/spec_tests/data/sdam/sharded/ls_timeout_mongos.yml +9 -5
- data/spec/spec_tests/data/sdam/sharded/mongos_disconnect.yml +6 -3
- data/spec/spec_tests/data/sdam/sharded/multiple_mongoses.yml +4 -2
- data/spec/spec_tests/data/sdam/sharded/non_mongos_removed.yml +4 -2
- data/spec/spec_tests/data/sdam/sharded/too_new.yml +4 -2
- data/spec/spec_tests/data/sdam/sharded/too_old.yml +4 -2
- data/spec/spec_tests/data/sdam/single/compatible.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_external_ip.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_mongos.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_replicaset.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_rsarbiter.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_rsprimary.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_rssecondary.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_standalone.yml +2 -1
- data/spec/spec_tests/data/sdam/single/direct_connection_wrong_set_name.yml +4 -2
- data/spec/spec_tests/data/sdam/single/discover_standalone.yml +2 -1
- data/spec/spec_tests/data/sdam/single/ls_timeout_standalone.yml +2 -1
- data/spec/spec_tests/data/sdam/single/not_ok_response.yml +5 -3
- data/spec/spec_tests/data/sdam/single/standalone_removed.yml +2 -1
- data/spec/spec_tests/data/sdam/single/standalone_using_legacy_hello.yml +34 -0
- data/spec/spec_tests/data/sdam/single/too_new.yml +2 -1
- data/spec/spec_tests/data/sdam/single/too_old.yml +2 -1
- data/spec/spec_tests/data/sdam/single/too_old_then_upgraded.yml +4 -2
- data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +2 -4
- data/spec/spec_tests/data/sdam_monitoring/load_balancer.yml +65 -0
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml +40 -40
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary.yml +40 -40
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +4 -3
- data/spec/spec_tests/data/sdam_monitoring/required_replica_set.yml +3 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone.yml +3 -3
- data/spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +4 -4
- data/spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.yml +2 -2
- data/spec/spec_tests/data/sdam_unified/auth-error.yml +130 -0
- data/spec/spec_tests/data/sdam_unified/auth-misc-command-error.yml +132 -0
- data/spec/spec_tests/data/sdam_unified/auth-network-error.yml +132 -0
- data/spec/spec_tests/data/sdam_unified/auth-network-timeout-error.yml +138 -0
- data/spec/spec_tests/data/sdam_unified/auth-shutdown-error.yml +133 -0
- data/spec/spec_tests/data/sdam_unified/cancel-server-check.yml +143 -0
- data/spec/spec_tests/data/sdam_unified/connectTimeoutMS.yml +130 -0
- data/spec/spec_tests/data/sdam_unified/find-network-error.yml +135 -0
- data/spec/spec_tests/data/sdam_unified/find-network-timeout-error.yml +119 -0
- data/spec/spec_tests/data/sdam_unified/find-shutdown-error.yml +163 -0
- data/spec/spec_tests/data/sdam_unified/hello-command-error.yml +233 -0
- data/spec/spec_tests/data/sdam_unified/hello-network-error.yml +228 -0
- data/spec/spec_tests/data/sdam_unified/hello-timeout.yml +318 -0
- data/spec/spec_tests/data/sdam_unified/insert-network-error.yml +137 -0
- data/spec/spec_tests/data/sdam_unified/insert-shutdown-error.yml +162 -0
- data/spec/spec_tests/data/sdam_unified/interruptInUse-pool-clear.yml +340 -0
- data/spec/spec_tests/data/sdam_unified/minPoolSize-error.yml +125 -0
- data/spec/spec_tests/data/sdam_unified/pool-cleared-error.yml +239 -0
- data/spec/spec_tests/data/sdam_unified/rediscover-quickly-after-step-down.yml +144 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-directConnection.yml +14 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-no-results.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-replicaSet-errors.yml +6 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-multiple-hosts.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-txt.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true-txt.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-conflicts_with_loadBalanced-true.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero-txt.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/encoded-userinfo-and-db.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/loadBalanced-false-txt.yml +10 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srv-service-name.yml +11 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet-txt.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-conflicts_with_replicaSet.yml +5 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-equal_to_srv_records.yml +16 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-greater_than_srv_records.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-less_than_srv_records.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero-txt.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/srvMaxHosts-zero.yml +15 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-admin-database.yml +13 -0
- data/spec/spec_tests/data/seed_list_discovery/replica-set/uri-with-auth.yml +12 -0
- data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-equal_to_srv_records.yml +13 -0
- data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-greater_than_srv_records.yml +12 -0
- data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-less_than_srv_records.yml +10 -0
- data/spec/spec_tests/data/seed_list_discovery/sharded/srvMaxHosts-zero.yml +11 -0
- data/spec/spec_tests/data/server_selection/Unknown/read/ghost.yml +11 -0
- data/spec/spec_tests/data/server_selection/Unknown/write/ghost.yml +11 -0
- data/spec/spec_tests/data/sessions_unified/driver-sessions-server-support.yml +123 -0
- data/spec/spec_tests/data/sessions_unified/implicit-sessions-default-causal-consistency.yml +119 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-client-error.yml +75 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-server-error.yml +102 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +258 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +482 -0
- data/spec/spec_tests/data/transactions/error-labels.yml +4 -1
- data/spec/spec_tests/data/transactions/errors-client.yml +8 -9
- data/spec/spec_tests/data/transactions/mongos-pin-auto.yml +3 -0
- data/spec/spec_tests/data/transactions/mongos-recovery-token.yml +3 -1
- data/spec/spec_tests/data/transactions/pin-mongos.yml +6 -3
- data/spec/spec_tests/data/transactions/retryable-abort.yml +7 -7
- data/spec/spec_tests/data/transactions/retryable-commit.yml +7 -7
- data/spec/spec_tests/data/transactions_unified/do-not-retry-read-in-transaction.yml +64 -0
- data/spec/spec_tests/data/transactions_unified/mongos-unpin.yml +172 -0
- data/spec/spec_tests/data/transactions_unified/retryable-abort-handshake.yml +118 -0
- data/spec/spec_tests/data/transactions_unified/retryable-commit-handshake.yml +118 -0
- data/spec/spec_tests/data/unified/valid-fail/entity-findCursor-malformed.yml +31 -0
- data/spec/spec_tests/data/unified/valid-fail/entity-findCursor.yml +31 -0
- data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError-malformed.yml +34 -0
- data/spec/spec_tests/data/unified/valid-fail/ignoreResultAndError.yml +35 -0
- data/spec/spec_tests/data/unified/valid-fail/operation-failure.yml +31 -0
- data/spec/spec_tests/data/unified/valid-fail/operation-unsupported.yml +13 -0
- data/spec/spec_tests/data/unified/valid-pass/assertNumberConnectionsCheckedOut.yml +17 -0
- data/spec/spec_tests/data/unified/valid-pass/collectionData-createOptions.yml +37 -0
- data/spec/spec_tests/data/unified/valid-pass/entity-client-cmap-events.yml +40 -0
- data/spec/spec_tests/data/unified/valid-pass/entity-client-storeEventsAsEntities.yml +37 -0
- data/spec/spec_tests/data/unified/valid-pass/expectedError-errorResponse.yml +39 -0
- data/spec/spec_tests/data/unified/valid-pass/expectedEventsForClient-eventType.yml +66 -0
- data/spec/spec_tests/data/unified/valid-pass/expectedEventsForClient-ignoreExtraEvents.yml +78 -0
- data/spec/spec_tests/data/unified/valid-pass/ignoreResultAndError.yml +34 -0
- data/spec/spec_tests/data/unified/valid-pass/observeSensitiveCommands.yml +255 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-change-streams.yml +241 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-command-monitoring.yml +102 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +190 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-gridfs.yml +155 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +193 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +210 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +215 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +235 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +169 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +171 -0
- data/spec/spec_tests/data/uri_options/auth-options.yml +25 -0
- data/spec/spec_tests/data/uri_options/compression-options.yml +7 -4
- data/spec/spec_tests/data/uri_options/connection-options.yml +60 -0
- data/spec/spec_tests/data/uri_options/read-preference-options.yml +24 -0
- data/spec/spec_tests/data/uri_options/ruby-connection-options.yml +1 -0
- data/spec/spec_tests/data/uri_options/srv-options.yml +96 -0
- data/spec/spec_tests/data/uri_options/tls-options.yml +160 -4
- data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +419 -0
- data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +413 -0
- data/spec/spec_tests/data/versioned_api/runcommand-helper-no-api-version-declared.yml +75 -0
- data/spec/spec_tests/data/versioned_api/test-commands-deprecation-errors.yml +47 -0
- data/spec/spec_tests/data/versioned_api/test-commands-strict-mode.yml +46 -0
- data/spec/spec_tests/data/versioned_api/transaction-handling.yml +128 -0
- data/spec/spec_tests/gridfs_spec.rb +3 -0
- data/spec/spec_tests/gridfs_unified_spec.rb +13 -0
- data/spec/spec_tests/load_balancers_spec.rb +15 -0
- data/spec/spec_tests/max_staleness_spec.rb +3 -0
- data/spec/spec_tests/read_write_concern_connection_string_spec.rb +3 -0
- data/spec/spec_tests/read_write_concern_document_spec.rb +3 -0
- data/spec/spec_tests/read_write_concern_operaton_spec.rb +3 -0
- data/spec/spec_tests/retryable_reads_spec.rb +11 -3
- data/spec/spec_tests/retryable_reads_unified_spec.rb +22 -0
- data/spec/spec_tests/retryable_writes_spec.rb +14 -8
- data/spec/spec_tests/retryable_writes_unified_spec.rb +21 -0
- data/spec/spec_tests/sdam_monitoring_spec.rb +14 -6
- data/spec/spec_tests/sdam_spec.rb +9 -2
- data/spec/spec_tests/sdam_unified_spec.rb +13 -0
- data/spec/spec_tests/seed_list_discovery_spec.rb +127 -0
- data/spec/spec_tests/server_selection_rtt_spec.rb +3 -0
- data/spec/spec_tests/server_selection_spec.rb +3 -0
- data/spec/spec_tests/sessions_unified_spec.rb +13 -0
- data/spec/spec_tests/transactions_api_spec.rb +3 -0
- data/spec/spec_tests/transactions_spec.rb +3 -0
- data/spec/spec_tests/transactions_unified_spec.rb +13 -0
- data/spec/spec_tests/unified_spec.rb +18 -0
- data/spec/spec_tests/uri_options_spec.rb +50 -33
- data/spec/spec_tests/versioned_api_spec.rb +13 -0
- data/spec/stress/cleanup_spec.rb +3 -0
- data/spec/stress/connection_pool_stress_spec.rb +3 -61
- data/spec/stress/connection_pool_timing_spec.rb +14 -35
- data/spec/stress/fork_reconnect_stress_spec.rb +17 -18
- data/spec/stress/push_monitor_close_spec.rb +44 -0
- data/spec/support/authorization.rb +4 -1
- data/spec/support/aws_utils/base.rb +3 -0
- data/spec/support/aws_utils/inspector.rb +3 -0
- data/spec/support/aws_utils/orchestrator.rb +22 -7
- data/spec/support/aws_utils/provisioner.rb +3 -0
- data/spec/support/aws_utils.rb +6 -2
- data/spec/support/background_thread_registry.rb +7 -14
- data/spec/support/certificates/README.md +3 -2
- data/spec/support/certificates/atlas-ocsp-ca.crt +103 -0
- data/spec/support/certificates/atlas-ocsp.crt +152 -0
- data/spec/support/certificates/retrieve-atlas-cert +40 -0
- data/spec/support/client_registry.rb +17 -6
- data/spec/support/client_registry_macros.rb +17 -5
- data/spec/support/cluster_tools.rb +17 -9
- data/spec/support/common_shortcuts.rb +134 -10
- data/spec/support/constraints.rb +16 -246
- data/spec/support/crypt/corpus/corpus-encrypted.json +9515 -0
- data/spec/support/crypt/corpus/corpus-key-aws.json +32 -32
- data/spec/support/crypt/corpus/corpus-key-azure.json +33 -0
- data/spec/support/crypt/corpus/corpus-key-gcp.json +35 -0
- data/spec/support/crypt/corpus/corpus-key-kmip.json +32 -0
- data/spec/support/crypt/corpus/corpus-key-local.json +30 -30
- data/spec/support/crypt/corpus/corpus-schema.json +4399 -121
- data/spec/support/crypt/corpus/corpus.json +4999 -37
- data/spec/support/crypt/data_keys/key_document_azure.json +33 -0
- data/spec/support/crypt/data_keys/key_document_gcp.json +37 -0
- data/spec/support/crypt/data_keys/key_document_kmip.json +32 -0
- data/spec/support/crypt/encrypted_fields/encryptedFields.json +32 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-Date.json +30 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalNoPrecision.json +21 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-DecimalPrecision.json +29 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoubleNoPrecision.json +21 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-DoublePrecision.json +30 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-Int.json +27 -0
- data/spec/support/crypt/encrypted_fields/range-encryptedFields-Long.json +27 -0
- data/spec/support/crypt/keys/key1-document.json +30 -0
- data/spec/support/crypt/schema_maps/schema_map_azure.json +17 -0
- data/spec/support/crypt/schema_maps/schema_map_azure_key_alt_names.json +12 -0
- data/spec/support/crypt/schema_maps/schema_map_gcp.json +17 -0
- data/spec/support/crypt/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
- data/spec/support/crypt/schema_maps/schema_map_kmip.json +17 -0
- data/spec/support/crypt/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
- data/spec/support/crypt.rb +271 -13
- data/spec/support/dns.rb +3 -0
- data/spec/support/json_ext_formatter.rb +3 -0
- data/spec/support/keyword_struct.rb +3 -0
- data/spec/support/local_resource_registry.rb +3 -0
- data/spec/support/macros.rb +29 -0
- data/spec/support/matchers.rb +33 -1
- data/spec/support/mongos_macros.rb +24 -0
- data/spec/support/monitoring_ext.rb +3 -0
- data/spec/support/ocsp +1 -0
- data/spec/support/primary_socket.rb +3 -0
- data/spec/support/sdam_formatter_integration.rb +3 -0
- data/spec/support/shared/app_metadata.rb +179 -0
- data/spec/support/shared/auth_context.rb +17 -0
- data/spec/support/shared/protocol.rb +3 -0
- data/spec/support/shared/scram_conversation.rb +5 -1
- data/spec/support/shared/server_selector.rb +6 -3
- data/spec/support/shared/session.rb +20 -11
- data/spec/support/spec_config.rb +248 -24
- data/spec/support/spec_setup.rb +51 -38
- data/spec/support/using_hash.rb +40 -0
- data/spec/support/utils.rb +353 -172
- data.tar.gz.sig +0 -0
- metadata +2052 -1217
- metadata.gz.sig +0 -0
- data/lib/mongo/collection/view/builder/find_command.rb +0 -150
- data/lib/mongo/collection/view/builder/flags.rb +0 -62
- data/lib/mongo/collection/view/builder/modifiers.rb +0 -80
- data/lib/mongo/collection/view/builder/op_query.rb +0 -91
- data/lib/mongo/cursor/builder/get_more_command.rb +0 -77
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +0 -108
- data/lib/mongo/cursor/builder/op_get_more.rb +0 -61
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +0 -103
- data/lib/mongo/cursor/builder.rb +0 -18
- data/lib/mongo/operation/aggregate/command.rb +0 -44
- data/lib/mongo/operation/collections_info/command.rb +0 -40
- data/lib/mongo/operation/command/command.rb +0 -38
- data/lib/mongo/operation/count/command.rb +0 -38
- data/lib/mongo/operation/create/command.rb +0 -38
- data/lib/mongo/operation/create_index/command.rb +0 -42
- data/lib/mongo/operation/create_user/command.rb +0 -43
- data/lib/mongo/operation/delete/command.rb +0 -46
- data/lib/mongo/operation/delete/legacy.rb +0 -54
- data/lib/mongo/operation/distinct/command.rb +0 -38
- data/lib/mongo/operation/drop/command.rb +0 -38
- data/lib/mongo/operation/drop_database/command.rb +0 -38
- data/lib/mongo/operation/drop_index/command.rb +0 -42
- data/lib/mongo/operation/explain/command.rb +0 -39
- data/lib/mongo/operation/explain/legacy.rb +0 -38
- data/lib/mongo/operation/find/command.rb +0 -39
- data/lib/mongo/operation/find/legacy/result.rb +0 -41
- data/lib/mongo/operation/find/legacy.rb +0 -40
- data/lib/mongo/operation/get_more/command.rb +0 -39
- data/lib/mongo/operation/get_more/legacy.rb +0 -36
- data/lib/mongo/operation/indexes/command.rb +0 -39
- data/lib/mongo/operation/indexes/legacy.rb +0 -45
- data/lib/mongo/operation/insert/command.rb +0 -56
- data/lib/mongo/operation/insert/legacy.rb +0 -65
- data/lib/mongo/operation/kill_cursors/command.rb +0 -37
- data/lib/mongo/operation/kill_cursors/legacy.rb +0 -37
- data/lib/mongo/operation/list_collections/command.rb +0 -43
- data/lib/mongo/operation/map_reduce/command.rb +0 -40
- data/lib/mongo/operation/parallel_scan/command.rb +0 -55
- data/lib/mongo/operation/remove_user/command.rb +0 -43
- data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +0 -56
- data/lib/mongo/operation/shared/op_msg_or_command.rb +0 -44
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +0 -47
- data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +0 -47
- data/lib/mongo/operation/update/command.rb +0 -47
- data/lib/mongo/operation/update/legacy/result.rb +0 -102
- data/lib/mongo/operation/update/legacy.rb +0 -65
- data/lib/mongo/operation/update_user/command.rb +0 -42
- data/lib/mongo/operation/users_info/command.rb +0 -43
- data/lib/mongo/protocol/delete.rb +0 -169
- data/lib/mongo/protocol/insert.rb +0 -178
- data/lib/mongo/protocol/update.rb +0 -211
- data/lib/mongo/server/context.rb +0 -69
- data/spec/mongo/collection/view/builder/flags_spec.rb +0 -106
- data/spec/mongo/collection/view/builder/modifiers_spec.rb +0 -210
- data/spec/mongo/cursor/builder/op_kill_cursors_spec.rb +0 -61
- data/spec/mongo/dbref_spec.rb +0 -149
- data/spec/mongo/operation/delete/command_spec.rb +0 -112
- data/spec/mongo/operation/find/legacy_spec.rb +0 -125
- data/spec/mongo/operation/get_more_spec.rb +0 -58
- data/spec/mongo/operation/insert/command_spec.rb +0 -115
- data/spec/mongo/operation/kill_cursors_spec.rb +0 -41
- data/spec/mongo/operation/update/command_spec.rb +0 -119
- data/spec/mongo/protocol/delete_spec.rb +0 -182
- data/spec/mongo/protocol/insert_spec.rb +0 -176
- data/spec/mongo/protocol/update_spec.rb +0 -201
- data/spec/mongo/server/app_metadata_shared.rb +0 -136
- data/spec/spec_tests/change_streams_spec.rb +0 -90
- data/spec/spec_tests/command_monitoring_spec.rb +0 -66
- data/spec/spec_tests/data/change_streams/change-streams-errors.yml +0 -102
- data/spec/spec_tests/data/change_streams/change-streams-resume-errorLabels.yml +0 -1105
- data/spec/spec_tests/data/change_streams/change-streams-resume-whitelist.yml +0 -1173
- data/spec/spec_tests/data/change_streams/change-streams.yml +0 -537
- data/spec/spec_tests/data/command_monitoring/bulkWrite.yml +0 -49
- data/spec/spec_tests/data/command_monitoring/command.yml +0 -61
- data/spec/spec_tests/data/command_monitoring/deleteMany.yml +0 -55
- data/spec/spec_tests/data/command_monitoring/deleteOne.yml +0 -55
- data/spec/spec_tests/data/command_monitoring/find.yml +0 -266
- data/spec/spec_tests/data/command_monitoring/insertMany.yml +0 -75
- data/spec/spec_tests/data/command_monitoring/insertOne.yml +0 -51
- data/spec/spec_tests/data/command_monitoring/unacknowledgedBulkWrite.yml +0 -34
- data/spec/spec_tests/data/command_monitoring/updateMany.yml +0 -65
- data/spec/spec_tests/data/command_monitoring/updateOne.yml +0 -90
- data/spec/spec_tests/data/crud_v2/aggregate-merge.yml +0 -103
- data/spec/spec_tests/data/crud_v2/aggregate-out-readConcern.yml +0 -110
- data/spec/spec_tests/data/crud_v2/bulkWrite-arrayFilters.yml +0 -103
- data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-clientError.yml +0 -63
- data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint-serverError.yml +0 -92
- data/spec/spec_tests/data/crud_v2/bulkWrite-delete-hint.yml +0 -103
- data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-clientError.yml +0 -90
- data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint-serverError.yml +0 -147
- data/spec/spec_tests/data/crud_v2/bulkWrite-update-hint.yml +0 -164
- data/spec/spec_tests/data/crud_v2/db-aggregate.yml +0 -38
- data/spec/spec_tests/data/crud_v2/deleteMany-hint-clientError.yml +0 -43
- data/spec/spec_tests/data/crud_v2/deleteMany-hint-serverError.yml +0 -62
- data/spec/spec_tests/data/crud_v2/deleteMany-hint.yml +0 -58
- data/spec/spec_tests/data/crud_v2/deleteOne-hint-clientError.yml +0 -41
- data/spec/spec_tests/data/crud_v2/deleteOne-hint-serverError.yml +0 -60
- data/spec/spec_tests/data/crud_v2/deleteOne-hint.yml +0 -57
- data/spec/spec_tests/data/crud_v2/find-allowdiskuse-clientError.yml +0 -28
- data/spec/spec_tests/data/crud_v2/find-allowdiskuse-serverError.yml +0 -44
- data/spec/spec_tests/data/crud_v2/find-allowdiskuse.yml +0 -50
- data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-clientError.yml +0 -45
- data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint-serverError.yml +0 -60
- data/spec/spec_tests/data/crud_v2/findOneAndDelete-hint.yml +0 -56
- data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint-serverError.yml +0 -59
- data/spec/spec_tests/data/crud_v2/findOneAndReplace-hint.yml +0 -55
- data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint-serverError.yml +0 -58
- data/spec/spec_tests/data/crud_v2/findOneAndUpdate-hint.yml +0 -55
- data/spec/spec_tests/data/crud_v2/replaceOne-hint.yml +0 -61
- data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-delete-hint-clientError.yml +0 -60
- data/spec/spec_tests/data/crud_v2/unacknowledged-bulkWrite-update-hint-clientError.yml +0 -88
- data/spec/spec_tests/data/crud_v2/unacknowledged-deleteMany-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/unacknowledged-deleteOne-hint-clientError.yml +0 -38
- data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndDelete-hint-clientError.yml +0 -42
- data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndReplace-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/unacknowledged-findOneAndUpdate-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/unacknowledged-replaceOne-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/unacknowledged-updateMany-hint-clientError.yml +0 -43
- data/spec/spec_tests/data/crud_v2/unacknowledged-updateOne-hint-clientError.yml +0 -40
- data/spec/spec_tests/data/crud_v2/updateMany-hint-clientError.yml +0 -45
- data/spec/spec_tests/data/crud_v2/updateMany-hint-serverError.yml +0 -66
- data/spec/spec_tests/data/crud_v2/updateMany-hint.yml +0 -65
- data/spec/spec_tests/data/crud_v2/updateOne-hint-clientError.yml +0 -43
- data/spec/spec_tests/data/crud_v2/updateOne-hint-serverError.yml +0 -62
- data/spec/spec_tests/data/crud_v2/updateOne-hint.yml +0 -61
- data/spec/spec_tests/data/crud_v2/updateWithPipelines.yml +0 -157
- data/spec/spec_tests/data/retryable_reads/aggregate-serverErrors.yml +0 -157
- data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch-serverErrors.yml +0 -149
- data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch.yml +0 -61
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch-serverErrors.yml +0 -149
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch.yml +0 -65
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch-serverErrors.yml +0 -153
- data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch.yml +0 -61
- data/spec/spec_tests/data/retryable_reads/count-serverErrors.yml +0 -150
- data/spec/spec_tests/data/retryable_reads/countDocuments-serverErrors.yml +0 -150
- data/spec/spec_tests/data/retryable_reads/distinct-serverErrors.yml +0 -156
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors.yml +0 -148
- data/spec/spec_tests/data/retryable_reads/find-serverErrors.yml +0 -160
- data/spec/spec_tests/data/retryable_reads/findOne-serverErrors.yml +0 -154
- data/spec/spec_tests/data/retryable_reads/gridfs-download-serverErrors.yml +0 -173
- data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName-serverErrors.yml +0 -174
- data/spec/spec_tests/data/retryable_reads/listCollectionNames-serverErrors.yml +0 -143
- data/spec/spec_tests/data/retryable_reads/listCollectionObjects-serverErrors.yml +0 -144
- data/spec/spec_tests/data/retryable_reads/listCollections-serverErrors.yml +0 -143
- data/spec/spec_tests/data/retryable_reads/listDatabaseNames-serverErrors.yml +0 -143
- data/spec/spec_tests/data/retryable_reads/listDatabaseObjects-serverErrors.yml +0 -144
- data/spec/spec_tests/data/retryable_reads/listDatabases-serverErrors.yml +0 -144
- data/spec/spec_tests/data/retryable_reads/listIndexNames-serverErrors.yml +0 -144
- data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +0 -60
- data/spec/spec_tests/data/retryable_reads/listIndexes-serverErrors.yml +0 -145
- data/spec/spec_tests/data/retryable_reads/mapReduce.yml +0 -60
- data/spec/spec_tests/data/retryable_writes/bulkWrite-serverErrors.yml +0 -130
- data/spec/spec_tests/data/retryable_writes/bulkWrite.yml +0 -396
- data/spec/spec_tests/data/retryable_writes/deleteOne-serverErrors.yml +0 -73
- data/spec/spec_tests/data/retryable_writes/findOneAndDelete-serverErrors.yml +0 -74
- data/spec/spec_tests/data/retryable_writes/findOneAndReplace-serverErrors.yml +0 -80
- data/spec/spec_tests/data/retryable_writes/findOneAndUpdate-serverErrors.yml +0 -79
- data/spec/spec_tests/data/retryable_writes/insertMany-serverErrors.yml +0 -84
- data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +0 -526
- data/spec/spec_tests/data/retryable_writes/replaceOne-serverErrors.yml +0 -82
- data/spec/spec_tests/data/retryable_writes/updateOne-serverErrors.yml +0 -82
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotMaster.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotMasterNoSlaveOk.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-greater-NotMasterOrSecondary.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotMaster.yml +0 -51
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotMasterNoSlaveOk.yml +0 -51
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-missing-NotMasterOrSecondary.yml +0 -51
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotMaster.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotMasterNoSlaveOk.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/non-stale-topologyVersion-proccessId-changed-NotMasterOrSecondary.yml +0 -60
- data/spec/spec_tests/data/sdam/errors/post-42-NotMaster.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/post-42-NotMasterNoSlaveOk.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/post-42-NotMasterOrSecondary.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/pre-42-NotMaster.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/pre-42-NotMasterNoSlaveOk.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/pre-42-NotMasterOrSecondary.yml +0 -46
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotMaster.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotMasterNoSlaveOk.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-NotMasterOrSecondary.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotMaster.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotMasterNoSlaveOk.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-afterHandshakeCompletes-NotMasterOrSecondary.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotMaster.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotMasterNoSlaveOk.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-generation-beforeHandshakeCompletes-NotMasterOrSecondary.yml +0 -89
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotMaster.yml +0 -64
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotMasterNoSlaveOk.yml +0 -64
- data/spec/spec_tests/data/sdam/errors/stale-topologyVersion-NotMasterOrSecondary.yml +0 -64
- data/spec/spec_tests/data/sdam/single/direct_connection_slave.yml +0 -34
- data/spec/spec_tests/data/sdam_integration/cancel-server-check.yml +0 -96
- data/spec/spec_tests/data/sdam_integration/connectTimeoutMS.yml +0 -88
- data/spec/spec_tests/data/sdam_integration/find-network-error.yml +0 -83
- data/spec/spec_tests/data/sdam_integration/find-shutdown-error.yml +0 -116
- data/spec/spec_tests/data/sdam_integration/insert-network-error.yml +0 -86
- data/spec/spec_tests/data/sdam_integration/insert-shutdown-error.yml +0 -115
- data/spec/spec_tests/data/sdam_integration/isMaster-command-error.yml +0 -168
- data/spec/spec_tests/data/sdam_integration/isMaster-network-error.yml +0 -162
- data/spec/spec_tests/data/sdam_integration/isMaster-timeout.yml +0 -229
- data/spec/spec_tests/data/sdam_integration/rediscover-quickly-after-step-down.yml +0 -87
- data/spec/spec_tests/dns_seedlist_discovery_spec.rb +0 -68
- data/spec/spec_tests/sdam_integration_spec.rb +0 -13
- data/spec/support/child_process_helper.rb +0 -78
- data/spec/support/cluster_config.rb +0 -207
- data/spec/support/crypt/corpus/corpus_encrypted.json +0 -4152
- data/spec/support/event_subscriber.rb +0 -212
- data/spec/support/lite_constraints.rb +0 -141
- data/spec/support/spec_organizer.rb +0 -129
- /data/spec/spec_tests/data/retryable_reads/{aggregate-merge.yml → legacy/aggregate-merge.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{aggregate.yml → legacy/aggregate.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{count.yml → legacy/count.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{countDocuments.yml → legacy/countDocuments.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{distinct.yml → legacy/distinct.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount.yml → legacy/estimatedDocumentCount.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{find.yml → legacy/find.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{findOne.yml → legacy/findOne.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{gridfs-download.yml → legacy/gridfs-download.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{gridfs-downloadByName.yml → legacy/gridfs-downloadByName.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listCollectionNames.yml → legacy/listCollectionNames.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listCollectionObjects.yml → legacy/listCollectionObjects.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listCollections.yml → legacy/listCollections.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listDatabaseNames.yml → legacy/listDatabaseNames.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listDatabaseObjects.yml → legacy/listDatabaseObjects.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listDatabases.yml → legacy/listDatabases.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listIndexes.yml → legacy/listIndexes.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{bulkWrite-errorLabels.yml → legacy/bulkWrite-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{deleteMany.yml → legacy/deleteMany.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{deleteOne-errorLabels.yml → legacy/deleteOne-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{deleteOne.yml → legacy/deleteOne.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndDelete-errorLabels.yml → legacy/findOneAndDelete-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndDelete.yml → legacy/findOneAndDelete.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndReplace-errorLabels.yml → legacy/findOneAndReplace-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndReplace.yml → legacy/findOneAndReplace.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate-errorLabels.yml → legacy/findOneAndUpdate-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate.yml → legacy/findOneAndUpdate.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{insertMany-errorLabels.yml → legacy/insertMany-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{insertMany.yml → legacy/insertMany.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{insertOne-errorLabels.yml → legacy/insertOne-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{insertOne.yml → legacy/insertOne.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{replaceOne-errorLabels.yml → legacy/replaceOne-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{replaceOne.yml → legacy/replaceOne.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{updateMany.yml → legacy/updateMany.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{updateOne-errorLabels.yml → legacy/updateOne-errorLabels.yml} +0 -0
- /data/spec/spec_tests/data/retryable_writes/{updateOne.yml → legacy/updateOne.yml} +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/direct-connection-false.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/direct-connection-true.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/longer-parent-in-return.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/misformatted-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/no-results.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/not-enough-parts.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-result-default-port.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-txt-record-multiple-strings.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/one-txt-record.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch1.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch2.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch3.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch4.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/parent-part-mismatch5.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/returned-parent-too-short.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/returned-parent-wrong.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-results-default-port.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-results-nonstandard-port.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/two-txt-records.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-not-allowed-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-overridden-ssl-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-overridden-uri-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/txt-record-with-unallowed-option.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/uri-with-port.yml +0 -0
- /data/spec/spec_tests/data/{dns_seedlist_discovery → seed_list_discovery/replica-set}/uri-with-two-hosts.yml +0 -0
data/lib/mongo/collection.rb
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# rubocop:todo all
|
|
3
|
+
|
|
1
4
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
2
5
|
#
|
|
3
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -14,6 +17,8 @@
|
|
|
14
17
|
|
|
15
18
|
require 'mongo/bulk_write'
|
|
16
19
|
require 'mongo/collection/view'
|
|
20
|
+
require 'mongo/collection/helpers'
|
|
21
|
+
require 'mongo/collection/queryable_encryption'
|
|
17
22
|
|
|
18
23
|
module Mongo
|
|
19
24
|
|
|
@@ -24,6 +29,8 @@ module Mongo
|
|
|
24
29
|
class Collection
|
|
25
30
|
extend Forwardable
|
|
26
31
|
include Retryable
|
|
32
|
+
include QueryableEncryption
|
|
33
|
+
include Helpers
|
|
27
34
|
|
|
28
35
|
# The capped option.
|
|
29
36
|
#
|
|
@@ -44,8 +51,8 @@ module Mongo
|
|
|
44
51
|
# @return [ Hash ] The collection options.
|
|
45
52
|
attr_reader :options
|
|
46
53
|
|
|
47
|
-
# Get client, cluster, read preference,
|
|
48
|
-
def_delegators :database, :client, :cluster
|
|
54
|
+
# Get client, cluster, read preference, write concern, and encrypted_fields_map from client.
|
|
55
|
+
def_delegators :database, :client, :cluster, :encrypted_fields_map
|
|
49
56
|
|
|
50
57
|
# Delegate to the cluster for the next primary.
|
|
51
58
|
def_delegators :cluster, :next_primary
|
|
@@ -55,6 +62,19 @@ module Mongo
|
|
|
55
62
|
# @since 2.1.0
|
|
56
63
|
CHANGEABLE_OPTIONS = [ :read, :read_concern, :write, :write_concern ].freeze
|
|
57
64
|
|
|
65
|
+
# Options map to transform create collection options.
|
|
66
|
+
#
|
|
67
|
+
# @api private
|
|
68
|
+
CREATE_COLLECTION_OPTIONS = {
|
|
69
|
+
:time_series => :timeseries,
|
|
70
|
+
:expire_after => :expireAfterSeconds,
|
|
71
|
+
:clustered_index => :clusteredIndex,
|
|
72
|
+
:change_stream_pre_and_post_images => :changeStreamPreAndPostImages,
|
|
73
|
+
:encrypted_fields => :encryptedFields,
|
|
74
|
+
:validator => :validator,
|
|
75
|
+
:view_on => :viewOn
|
|
76
|
+
}
|
|
77
|
+
|
|
58
78
|
# Check if a collection is equal to another object. Will check the name and
|
|
59
79
|
# the database for equality.
|
|
60
80
|
#
|
|
@@ -63,7 +83,7 @@ module Mongo
|
|
|
63
83
|
#
|
|
64
84
|
# @param [ Object ] other The object to check.
|
|
65
85
|
#
|
|
66
|
-
# @return [ true
|
|
86
|
+
# @return [ true | false ] If the objects are equal.
|
|
67
87
|
#
|
|
68
88
|
# @since 2.0.0
|
|
69
89
|
def ==(other)
|
|
@@ -80,9 +100,58 @@ module Mongo
|
|
|
80
100
|
# @param [ String, Symbol ] name The collection name.
|
|
81
101
|
# @param [ Hash ] options The collection options.
|
|
82
102
|
#
|
|
83
|
-
# @option
|
|
103
|
+
# @option opts [ true | false ] :capped Create a fixed-sized collection.
|
|
104
|
+
# @option opts [ Hash ] :change_stream_pre_and_post_images Used to enable
|
|
105
|
+
# pre- and post-images on the created collection.
|
|
106
|
+
# The hash may have the following items:
|
|
107
|
+
# - *:enabled* -- true or false.
|
|
108
|
+
# @option opts [ Hash ] :clustered_index Create a clustered index.
|
|
109
|
+
# This option specifies how this collection should be clustered on _id.
|
|
110
|
+
# The hash may have the following items:
|
|
111
|
+
# - *:key* -- The clustered index key field. Must be set to { _id: 1 }.
|
|
112
|
+
# - *:unique* -- Must be set to true. The collection will not accept
|
|
113
|
+
# inserted or updated documents where the clustered index key value
|
|
114
|
+
# matches an existing value in the index.
|
|
115
|
+
# - *:name* -- Optional. A name that uniquely identifies the clustered index.
|
|
116
|
+
# @option opts [ Hash ] :collation The collation to use.
|
|
117
|
+
# @option opts [ Hash ] :encrypted_fields Hash describing encrypted fields
|
|
118
|
+
# for queryable encryption.
|
|
119
|
+
# @option opts [ Integer ] :expire_after Number indicating
|
|
120
|
+
# after how many seconds old time-series data should be deleted.
|
|
121
|
+
# @option opts [ Integer ] :max The maximum number of documents in a
|
|
122
|
+
# capped collection. The size limit takes precedents over max.
|
|
123
|
+
# @option opts [ Array<Hash> ] :pipeline An array of pipeline stages.
|
|
124
|
+
# A view will be created by applying this pipeline to the view_on
|
|
125
|
+
# collection or view.
|
|
126
|
+
# @option options [ Hash ] :read_concern The read concern options hash,
|
|
127
|
+
# with the following optional keys:
|
|
128
|
+
# - *:level* -- the read preference level as a symbol; valid values
|
|
129
|
+
# are *:local*, *:majority*, and *:snapshot*
|
|
130
|
+
# @option options [ Hash ] :read The read preference options.
|
|
131
|
+
# The hash may have the following items:
|
|
132
|
+
# - *:mode* -- read preference specified as a symbol; valid values are
|
|
133
|
+
# *:primary*, *:primary_preferred*, *:secondary*, *:secondary_preferred*
|
|
134
|
+
# and *:nearest*.
|
|
135
|
+
# - *:tag_sets* -- an array of hashes.
|
|
136
|
+
# - *:local_threshold*.
|
|
137
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
|
138
|
+
# @option opts [ Integer ] :size The size of the capped collection.
|
|
139
|
+
# @option opts [ Hash ] :time_series Create a time-series collection.
|
|
140
|
+
# The hash may have the following items:
|
|
141
|
+
# - *:timeField* -- The name of the field which contains the date in each
|
|
142
|
+
# time series document.
|
|
143
|
+
# - *:metaField* -- The name of the field which contains metadata in each
|
|
144
|
+
# time series document.
|
|
145
|
+
# - *:granularity* -- Set the granularity to the value that is the closest
|
|
146
|
+
# match to the time span between consecutive incoming measurements.
|
|
147
|
+
# Possible values are "seconds" (default), "minutes", and "hours".
|
|
148
|
+
# @option opts [ Hash ] :validator Hash describing document validation
|
|
149
|
+
# options for the collection.
|
|
150
|
+
# @option opts [ String ] :view_on The name of the source collection or
|
|
151
|
+
# view from which to create a view.
|
|
152
|
+
# @option opts [ Hash ] :write Deprecated. Equivalent to :write_concern
|
|
84
153
|
# option.
|
|
85
|
-
# @option
|
|
154
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
|
86
155
|
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
|
87
156
|
#
|
|
88
157
|
# @since 2.0.0
|
|
@@ -104,7 +173,11 @@ module Mongo
|
|
|
104
173
|
@options.freeze
|
|
105
174
|
end
|
|
106
175
|
|
|
107
|
-
# Get the read concern for this collection instance.
|
|
176
|
+
# Get the effective read concern for this collection instance.
|
|
177
|
+
#
|
|
178
|
+
# If a read concern was provided in collection options, that read concern
|
|
179
|
+
# will be returned, otherwise the database's effective read concern will
|
|
180
|
+
# be returned.
|
|
108
181
|
#
|
|
109
182
|
# @example Get the read concern.
|
|
110
183
|
# collection.read_concern
|
|
@@ -116,7 +189,7 @@ module Mongo
|
|
|
116
189
|
options[:read_concern] || database.read_concern
|
|
117
190
|
end
|
|
118
191
|
|
|
119
|
-
# Get the server selector
|
|
192
|
+
# Get the server selector for this collection.
|
|
120
193
|
#
|
|
121
194
|
# @example Get the server selector.
|
|
122
195
|
# collection.server_selector
|
|
@@ -128,7 +201,11 @@ module Mongo
|
|
|
128
201
|
@server_selector ||= ServerSelector.get(read_preference || database.server_selector)
|
|
129
202
|
end
|
|
130
203
|
|
|
131
|
-
# Get the read preference
|
|
204
|
+
# Get the effective read preference for this collection.
|
|
205
|
+
#
|
|
206
|
+
# If a read preference was provided in collection options, that read
|
|
207
|
+
# preference will be returned, otherwise the database's effective read
|
|
208
|
+
# preference will be returned.
|
|
132
209
|
#
|
|
133
210
|
# @example Get the read preference.
|
|
134
211
|
# collection.read_preference
|
|
@@ -140,7 +217,11 @@ module Mongo
|
|
|
140
217
|
@read_preference ||= options[:read] || database.read_preference
|
|
141
218
|
end
|
|
142
219
|
|
|
143
|
-
# Get the write concern on this collection.
|
|
220
|
+
# Get the effective write concern on this collection.
|
|
221
|
+
#
|
|
222
|
+
# If a write concern was provided in collection options, that write
|
|
223
|
+
# concern will be returned, otherwise the database's effective write
|
|
224
|
+
# concern will be returned.
|
|
144
225
|
#
|
|
145
226
|
# @example Get the write concern.
|
|
146
227
|
# collection.write_concern
|
|
@@ -153,7 +234,8 @@ module Mongo
|
|
|
153
234
|
options[:write_concern] || options[:write] || database.write_concern)
|
|
154
235
|
end
|
|
155
236
|
|
|
156
|
-
# Get the write concern for
|
|
237
|
+
# Get the write concern to use for an operation on this collection,
|
|
238
|
+
# given a session.
|
|
157
239
|
#
|
|
158
240
|
# If the session is in a transaction and the collection
|
|
159
241
|
# has an unacknowledged write concern, remove the write
|
|
@@ -175,17 +257,37 @@ module Mongo
|
|
|
175
257
|
wc
|
|
176
258
|
end
|
|
177
259
|
|
|
178
|
-
# Provides a new collection with either a new read preference
|
|
179
|
-
# merged over the existing read preference /
|
|
260
|
+
# Provides a new collection with either a new read preference, new read
|
|
261
|
+
# concern or new write concern merged over the existing read preference /
|
|
262
|
+
# read concern / write concern.
|
|
180
263
|
#
|
|
181
264
|
# @example Get a collection with a changed read preference.
|
|
182
265
|
# collection.with(read: { mode: :primary_preferred })
|
|
266
|
+
|
|
267
|
+
# @example Get a collection with a changed read concern.
|
|
268
|
+
# collection.with(read_concern: { level: :majority })
|
|
183
269
|
#
|
|
184
270
|
# @example Get a collection with a changed write concern.
|
|
185
271
|
# collection.with(write_concern: { w: 3 })
|
|
186
|
-
|
|
272
|
+
#
|
|
187
273
|
# @param [ Hash ] new_options The new options to use.
|
|
188
274
|
#
|
|
275
|
+
# @option new_options [ Hash ] :read The read preference options.
|
|
276
|
+
# The hash may have the following items:
|
|
277
|
+
# - *:mode* -- read preference specified as a symbol; valid values are
|
|
278
|
+
# *:primary*, *:primary_preferred*, *:secondary*, *:secondary_preferred*
|
|
279
|
+
# and *:nearest*.
|
|
280
|
+
# - *:tag_sets* -- an array of hashes.
|
|
281
|
+
# - *:local_threshold*.
|
|
282
|
+
# @option new_options [ Hash ] :read_concern The read concern options hash,
|
|
283
|
+
# with the following optional keys:
|
|
284
|
+
# - *:level* -- the read preference level as a symbol; valid values
|
|
285
|
+
# are *:local*, *:majority*, and *:snapshot*
|
|
286
|
+
# @option new_options [ Hash ] :write Deprecated. Equivalent to :write_concern
|
|
287
|
+
# option.
|
|
288
|
+
# @option new_options [ Hash ] :write_concern The write concern options.
|
|
289
|
+
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
|
290
|
+
#
|
|
189
291
|
# @return [ Mongo::Collection ] A new collection instance.
|
|
190
292
|
#
|
|
191
293
|
# @since 2.1.0
|
|
@@ -208,11 +310,13 @@ module Mongo
|
|
|
208
310
|
# @example Is the collection capped?
|
|
209
311
|
# collection.capped?
|
|
210
312
|
#
|
|
211
|
-
# @return [ true
|
|
313
|
+
# @return [ true | false ] If the collection is capped.
|
|
212
314
|
#
|
|
213
315
|
# @since 2.0.0
|
|
214
316
|
def capped?
|
|
215
|
-
database.
|
|
317
|
+
database.list_collections(filter: { name: name })
|
|
318
|
+
.first
|
|
319
|
+
&.dig('options', CAPPED) || false
|
|
216
320
|
end
|
|
217
321
|
|
|
218
322
|
# Force the collection to be created in the database.
|
|
@@ -222,39 +326,98 @@ module Mongo
|
|
|
222
326
|
#
|
|
223
327
|
# @param [ Hash ] opts The options for the create operation.
|
|
224
328
|
#
|
|
225
|
-
# @option
|
|
329
|
+
# @option opts [ true | false ] :capped Create a fixed-sized collection.
|
|
330
|
+
# @option opts [ Hash ] :change_stream_pre_and_post_images Used to enable
|
|
331
|
+
# pre- and post-images on the created collection.
|
|
332
|
+
# The hash may have the following items:
|
|
333
|
+
# - *:enabled* -- true or false.
|
|
334
|
+
# @option opts [ Hash ] :clustered_index Create a clustered index.
|
|
335
|
+
# This option specifies how this collection should be clustered on _id.
|
|
336
|
+
# The hash may have the following items:
|
|
337
|
+
# - *:key* -- The clustered index key field. Must be set to { _id: 1 }.
|
|
338
|
+
# - *:unique* -- Must be set to true. The collection will not accept
|
|
339
|
+
# inserted or updated documents where the clustered index key value
|
|
340
|
+
# matches an existing value in the index.
|
|
341
|
+
# - *:name* -- Optional. A name that uniquely identifies the clustered index.
|
|
342
|
+
# @option opts [ Hash ] :collation The collation to use.
|
|
343
|
+
# @option opts [ Hash ] :encrypted_fields Hash describing encrypted fields
|
|
344
|
+
# for queryable encryption.
|
|
345
|
+
# @option opts [ Integer ] :expire_after Number indicating
|
|
346
|
+
# after how many seconds old time-series data should be deleted.
|
|
347
|
+
# @option opts [ Integer ] :max The maximum number of documents in a
|
|
348
|
+
# capped collection. The size limit takes precedents over max.
|
|
349
|
+
# @option opts [ Array<Hash> ] :pipeline An array of pipeline stages.
|
|
350
|
+
# A view will be created by applying this pipeline to the view_on
|
|
351
|
+
# collection or view.
|
|
352
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
|
353
|
+
# @option opts [ Integer ] :size The size of the capped collection.
|
|
354
|
+
# @option opts [ Hash ] :time_series Create a time-series collection.
|
|
355
|
+
# The hash may have the following items:
|
|
356
|
+
# - *:timeField* -- The name of the field which contains the date in each
|
|
357
|
+
# time series document.
|
|
358
|
+
# - *:metaField* -- The name of the field which contains metadata in each
|
|
359
|
+
# time series document.
|
|
360
|
+
# - *:granularity* -- Set the granularity to the value that is the closest
|
|
361
|
+
# match to the time span between consecutive incoming measurements.
|
|
362
|
+
# Possible values are "seconds" (default), "minutes", and "hours".
|
|
363
|
+
# @option opts [ Hash ] :validator Hash describing document validation
|
|
364
|
+
# options for the collection.
|
|
365
|
+
# @option opts [ String ] :view_on The name of the source collection or
|
|
366
|
+
# view from which to create a view.
|
|
367
|
+
# @option opts [ Hash ] :write Deprecated. Equivalent to :write_concern
|
|
368
|
+
# option.
|
|
369
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
|
370
|
+
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
|
226
371
|
#
|
|
227
372
|
# @return [ Result ] The result of the command.
|
|
228
373
|
#
|
|
229
374
|
# @since 2.0.0
|
|
230
375
|
def create(opts = {})
|
|
231
376
|
# Passing read options to create command causes it to break.
|
|
232
|
-
# Filter the read options out.
|
|
377
|
+
# Filter the read options out. Session is also excluded here as it gets
|
|
378
|
+
# used by the call to with_session and should not be part of the
|
|
379
|
+
# operation. If it gets passed to the operation it would fail BSON
|
|
380
|
+
# serialization.
|
|
233
381
|
# TODO put the list of read options in a class-level constant when
|
|
234
382
|
# we figure out what the full set of them is.
|
|
235
|
-
options = Hash[self.options.reject do |key, value|
|
|
236
|
-
%w(read read_preference).include?(key.to_s)
|
|
383
|
+
options = Hash[self.options.merge(opts).reject do |key, value|
|
|
384
|
+
%w(read read_preference read_concern session).include?(key.to_s)
|
|
237
385
|
end]
|
|
386
|
+
# Converting Ruby options to server style.
|
|
387
|
+
CREATE_COLLECTION_OPTIONS.each do |ruby_key, server_key|
|
|
388
|
+
if options.key?(ruby_key)
|
|
389
|
+
options[server_key] = options.delete(ruby_key)
|
|
390
|
+
end
|
|
391
|
+
end
|
|
238
392
|
operation = { :create => name }.merge(options)
|
|
239
393
|
operation.delete(:write)
|
|
240
394
|
operation.delete(:write_concern)
|
|
241
395
|
client.send(:with_session, opts) do |session|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
396
|
+
write_concern = if opts[:write_concern]
|
|
397
|
+
WriteConcern.get(opts[:write_concern])
|
|
398
|
+
else
|
|
399
|
+
self.write_concern
|
|
245
400
|
end
|
|
246
401
|
|
|
247
|
-
Operation::
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
402
|
+
context = Operation::Context.new(client: client, session: session)
|
|
403
|
+
maybe_create_qe_collections(opts[:encrypted_fields], client, session) do |encrypted_fields|
|
|
404
|
+
Operation::Create.new(
|
|
405
|
+
selector: operation,
|
|
406
|
+
db_name: database.name,
|
|
407
|
+
write_concern: write_concern,
|
|
408
|
+
session: session,
|
|
409
|
+
# Note that these are collection options, collation isn't
|
|
410
|
+
# taken from options passed to the create method.
|
|
411
|
+
collation: options[:collation] || options['collation'],
|
|
412
|
+
encrypted_fields: encrypted_fields,
|
|
413
|
+
validator: options[:validator],
|
|
414
|
+
).execute(next_primary(nil, session), context: context)
|
|
415
|
+
end
|
|
253
416
|
end
|
|
254
417
|
end
|
|
255
418
|
|
|
256
419
|
# Drop the collection. Will also drop all indexes associated with the
|
|
257
|
-
# collection.
|
|
420
|
+
# collection, as well as associated queryable encryption collections.
|
|
258
421
|
#
|
|
259
422
|
# @note An error returned if the collection doesn't exist is suppressed.
|
|
260
423
|
#
|
|
@@ -263,26 +426,32 @@ module Mongo
|
|
|
263
426
|
#
|
|
264
427
|
# @param [ Hash ] opts The options for the drop operation.
|
|
265
428
|
#
|
|
266
|
-
# @option
|
|
429
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
|
430
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
|
431
|
+
# @option opts [ Hash | nil ] :encrypted_fields Encrypted fields hash that
|
|
432
|
+
# was provided to `create` collection helper.
|
|
267
433
|
#
|
|
268
434
|
# @return [ Result ] The result of the command.
|
|
269
435
|
#
|
|
270
436
|
# @since 2.0.0
|
|
271
437
|
def drop(opts = {})
|
|
272
438
|
client.send(:with_session, opts) do |session|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
439
|
+
maybe_drop_emm_collections(opts[:encrypted_fields], client, session) do
|
|
440
|
+
temp_write_concern = write_concern
|
|
441
|
+
write_concern = if opts[:write_concern]
|
|
442
|
+
WriteConcern.get(opts[:write_concern])
|
|
443
|
+
else
|
|
444
|
+
temp_write_concern
|
|
445
|
+
end
|
|
446
|
+
context = Operation::Context.new(client: client, session: session)
|
|
447
|
+
operation = Operation::Drop.new({
|
|
448
|
+
selector: { :drop => name },
|
|
449
|
+
db_name: database.name,
|
|
450
|
+
write_concern: write_concern,
|
|
451
|
+
session: session,
|
|
452
|
+
})
|
|
453
|
+
do_drop(operation, session, context)
|
|
454
|
+
end
|
|
286
455
|
end
|
|
287
456
|
end
|
|
288
457
|
|
|
@@ -297,33 +466,36 @@ module Mongo
|
|
|
297
466
|
# @param [ Hash ] filter The filter to use in the find.
|
|
298
467
|
# @param [ Hash ] options The options for the find.
|
|
299
468
|
#
|
|
300
|
-
# @option options [ true
|
|
469
|
+
# @option options [ true | false ] :allow_disk_use When set to true, the
|
|
301
470
|
# server can write temporary data to disk while executing the find
|
|
302
471
|
# operation. This option is only available on MongoDB server versions
|
|
303
472
|
# 4.4 and newer.
|
|
304
|
-
# @option options [ true
|
|
473
|
+
# @option options [ true | false ] :allow_partial_results Allows the query to get partial
|
|
305
474
|
# results if some shards are down.
|
|
306
475
|
# @option options [ Integer ] :batch_size The number of documents returned in each batch
|
|
307
476
|
# of results from MongoDB.
|
|
308
|
-
# @option options [
|
|
477
|
+
# @option options [ Hash ] :collation The collation to use.
|
|
478
|
+
# @option options [ Object ] :comment A user-provided comment to attach to
|
|
479
|
+
# this command.
|
|
309
480
|
# @option options [ :tailable, :tailable_await ] :cursor_type The type of cursor to use.
|
|
310
481
|
# @option options [ Integer ] :limit The max number of docs to return from the query.
|
|
311
|
-
# @option options [ Integer ] :max_time_ms
|
|
312
|
-
# to run in milliseconds.
|
|
482
|
+
# @option options [ Integer ] :max_time_ms
|
|
483
|
+
# The maximum amount of time to allow the query to run, in milliseconds.
|
|
313
484
|
# @option options [ Hash ] :modifiers A document containing meta-operators modifying the
|
|
314
485
|
# output or behavior of a query.
|
|
315
|
-
# @option options [ true
|
|
486
|
+
# @option options [ true | false ] :no_cursor_timeout The server normally times out idle
|
|
316
487
|
# cursors after an inactivity period (10 minutes) to prevent excess memory use.
|
|
317
488
|
# Set this option to prevent that.
|
|
318
|
-
# @option options [ true
|
|
319
|
-
# should not set.
|
|
489
|
+
# @option options [ true | false ] :oplog_replay For internal replication
|
|
490
|
+
# use only, applications should not set this option.
|
|
320
491
|
# @option options [ Hash ] :projection The fields to include or exclude from each doc
|
|
321
492
|
# in the result set.
|
|
493
|
+
# @option options [ Session ] :session The session to use.
|
|
322
494
|
# @option options [ Integer ] :skip The number of docs to skip before returning results.
|
|
323
495
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
|
324
496
|
# will be sorted.
|
|
325
|
-
# @option options [ Hash ] :
|
|
326
|
-
#
|
|
497
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
498
|
+
# See the server documentation for details.
|
|
327
499
|
#
|
|
328
500
|
# @return [ CollectionView ] The collection view.
|
|
329
501
|
#
|
|
@@ -340,24 +512,27 @@ module Mongo
|
|
|
340
512
|
# @param [ Array<Hash> ] pipeline The aggregation pipeline.
|
|
341
513
|
# @param [ Hash ] options The aggregation options.
|
|
342
514
|
#
|
|
343
|
-
# @option options [ true
|
|
515
|
+
# @option options [ true | false ] :allow_disk_use Set to true if disk
|
|
344
516
|
# usage is allowed during the aggregation.
|
|
345
517
|
# @option options [ Integer ] :batch_size The number of documents to return
|
|
346
518
|
# per batch.
|
|
347
|
-
# @option options [ true
|
|
519
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
348
520
|
# not to skip document level validation.
|
|
349
521
|
# @option options [ Hash ] :collation The collation to use.
|
|
350
|
-
# @option options [
|
|
522
|
+
# @option options [ Object ] :comment A user-provided
|
|
523
|
+
# comment to attach to this command.
|
|
351
524
|
# @option options [ String ] :hint The index to use for the aggregation.
|
|
525
|
+
# @option options [ Hash ] :let Mapping of variables to use in the pipeline.
|
|
526
|
+
# See the server documentation for details.
|
|
352
527
|
# @option options [ Integer ] :max_time_ms The maximum amount of time in
|
|
353
528
|
# milliseconds to allow the aggregation to run.
|
|
354
|
-
# @option options [ true
|
|
529
|
+
# @option options [ true | false ] :use_cursor Indicates whether the command
|
|
355
530
|
# will request that the server provide results using a cursor. Note that
|
|
356
531
|
# as of server version 3.6, aggregations always provide results using a
|
|
357
532
|
# cursor and this option is therefore not valid.
|
|
358
533
|
# @option options [ Session ] :session The session to use.
|
|
359
534
|
#
|
|
360
|
-
# @return [ Aggregation ] The aggregation object.
|
|
535
|
+
# @return [ View::Aggregation ] The aggregation object.
|
|
361
536
|
#
|
|
362
537
|
# @since 2.1.0
|
|
363
538
|
def aggregate(pipeline, options = {})
|
|
@@ -375,11 +550,35 @@ module Mongo
|
|
|
375
550
|
# @param [ Array<Hash> ] pipeline Optional additional filter operators.
|
|
376
551
|
# @param [ Hash ] options The change stream options.
|
|
377
552
|
#
|
|
378
|
-
# @option options [ String ] :full_document Allowed values:
|
|
379
|
-
#
|
|
380
|
-
#
|
|
381
|
-
#
|
|
382
|
-
#
|
|
553
|
+
# @option options [ String ] :full_document Allowed values: nil, 'default',
|
|
554
|
+
# 'updateLookup', 'whenAvailable', 'required'.
|
|
555
|
+
#
|
|
556
|
+
# The default is to not send a value (i.e. nil), which is equivalent to
|
|
557
|
+
# 'default'. By default, the change notification for partial updates will
|
|
558
|
+
# include a delta describing the changes to the document.
|
|
559
|
+
#
|
|
560
|
+
# When set to 'updateLookup', the change notification for partial updates
|
|
561
|
+
# will include both a delta describing the changes to the document as well
|
|
562
|
+
# as a copy of the entire document that was changed from some time after
|
|
563
|
+
# the change occurred.
|
|
564
|
+
#
|
|
565
|
+
# When set to 'whenAvailable', configures the change stream to return the
|
|
566
|
+
# post-image of the modified document for replace and update change events
|
|
567
|
+
# if the post-image for this event is available.
|
|
568
|
+
#
|
|
569
|
+
# When set to 'required', the same behavior as 'whenAvailable' except that
|
|
570
|
+
# an error is raised if the post-image is not available.
|
|
571
|
+
# @option options [ String ] :full_document_before_change Allowed values: nil,
|
|
572
|
+
# 'whenAvailable', 'required', 'off'.
|
|
573
|
+
#
|
|
574
|
+
# The default is to not send a value (i.e. nil), which is equivalent to 'off'.
|
|
575
|
+
#
|
|
576
|
+
# When set to 'whenAvailable', configures the change stream to return the
|
|
577
|
+
# pre-image of the modified document for replace, update, and delete change
|
|
578
|
+
# events if it is available.
|
|
579
|
+
#
|
|
580
|
+
# When set to 'required', the same behavior as 'whenAvailable' except that
|
|
581
|
+
# an error is raised if the pre-image is not available.
|
|
383
582
|
# @option options [ BSON::Document, Hash ] :resume_after Specifies the
|
|
384
583
|
# logical starting point for the new change stream.
|
|
385
584
|
# @option options [ Integer ] :max_await_time_ms The maximum amount of time
|
|
@@ -392,6 +591,13 @@ module Mongo
|
|
|
392
591
|
# changes that occurred at or after the specified timestamp. Any command run
|
|
393
592
|
# against the server will return a cluster time that can be used here.
|
|
394
593
|
# Only recognized by server versions 4.0+.
|
|
594
|
+
# @option options [ Object ] :comment A user-provided
|
|
595
|
+
# comment to attach to this command.
|
|
596
|
+
# @option options [ Boolean ] :show_expanded_events Enables the server to
|
|
597
|
+
# send the 'expanded' list of change stream events. The list of additional
|
|
598
|
+
# events included with this flag set are: createIndexes, dropIndexes,
|
|
599
|
+
# modify, create, shardCollection, reshardCollection,
|
|
600
|
+
# refineCollectionShardKey.
|
|
395
601
|
#
|
|
396
602
|
# @note A change stream only allows 'majority' read concern.
|
|
397
603
|
# @note This helper method is preferable to running a raw aggregation with
|
|
@@ -401,7 +607,9 @@ module Mongo
|
|
|
401
607
|
#
|
|
402
608
|
# @since 2.5.0
|
|
403
609
|
def watch(pipeline = [], options = {})
|
|
404
|
-
|
|
610
|
+
view_options = options.dup
|
|
611
|
+
view_options[:await_data] = true if options[:max_await_time_ms]
|
|
612
|
+
View::ChangeStream.new(View.new(self, {}, view_options), pipeline, nil, options)
|
|
405
613
|
end
|
|
406
614
|
|
|
407
615
|
# Gets an estimated number of matching documents in the collection.
|
|
@@ -419,6 +627,8 @@ module Mongo
|
|
|
419
627
|
# @option options [ Hash ] :read The read preference options.
|
|
420
628
|
# @option options [ Hash ] :collation The collation to use.
|
|
421
629
|
# @option options [ Session ] :session The session to use.
|
|
630
|
+
# @option options [ Object ] :comment A user-provided
|
|
631
|
+
# comment to attach to this command.
|
|
422
632
|
#
|
|
423
633
|
# @return [ Integer ] The document count.
|
|
424
634
|
#
|
|
@@ -444,14 +654,17 @@ module Mongo
|
|
|
444
654
|
# @param [ Hash ] filter A filter for matching documents.
|
|
445
655
|
# @param [ Hash ] options Options for the operation.
|
|
446
656
|
#
|
|
447
|
-
# @option
|
|
448
|
-
# @option
|
|
657
|
+
# @option options :skip [ Integer ] The number of documents to skip.
|
|
658
|
+
# @option options :hint [ Hash ] Override default index selection and force
|
|
449
659
|
# MongoDB to use a specific index for the query. Requires server version 3.6+.
|
|
450
|
-
# @option
|
|
451
|
-
# @option
|
|
660
|
+
# @option options :limit [ Integer ] Max number of docs to count.
|
|
661
|
+
# @option options :max_time_ms [ Integer ] The maximum amount of time to allow the
|
|
452
662
|
# command to run.
|
|
453
|
-
# @option
|
|
454
|
-
# @option
|
|
663
|
+
# @option options :read [ Hash ] The read preference options.
|
|
664
|
+
# @option options :collation [ Hash ] The collation to use.
|
|
665
|
+
# @option options [ Session ] :session The session to use.
|
|
666
|
+
# @option options [ Object ] :comment A user-provided
|
|
667
|
+
# comment to attach to this command.
|
|
455
668
|
#
|
|
456
669
|
# @return [ Integer ] The document count.
|
|
457
670
|
#
|
|
@@ -468,9 +681,11 @@ module Mongo
|
|
|
468
681
|
#
|
|
469
682
|
# @param [ Hash ] options Options for the operation.
|
|
470
683
|
#
|
|
471
|
-
# @option
|
|
684
|
+
# @option options :max_time_ms [ Integer ] The maximum amount of time to allow
|
|
472
685
|
# the command to run for on the server.
|
|
473
|
-
# @option
|
|
686
|
+
# @option options [ Hash ] :read The read preference options.
|
|
687
|
+
# @option options [ Object ] :comment A user-provided
|
|
688
|
+
# comment to attach to this command.
|
|
474
689
|
#
|
|
475
690
|
# @return [ Integer ] The document count.
|
|
476
691
|
#
|
|
@@ -537,19 +752,33 @@ module Mongo
|
|
|
537
752
|
# @param [ Hash ] document The document to insert.
|
|
538
753
|
# @param [ Hash ] opts The insert options.
|
|
539
754
|
#
|
|
755
|
+
# @option opts [ true | false ] :bypass_document_validation Whether or
|
|
756
|
+
# not to skip document level validation.
|
|
757
|
+
# @option opts [ Object ] :comment A user-provided comment to attach to
|
|
758
|
+
# this command.
|
|
540
759
|
# @option opts [ Session ] :session The session to use for the operation.
|
|
760
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
|
761
|
+
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
|
541
762
|
#
|
|
542
763
|
# @return [ Result ] The database response wrapper.
|
|
543
764
|
#
|
|
544
765
|
# @since 2.0.0
|
|
545
766
|
def insert_one(document, opts = {})
|
|
767
|
+
QueryCache.clear_namespace(namespace)
|
|
768
|
+
|
|
546
769
|
client.send(:with_session, opts) do |session|
|
|
547
770
|
write_concern = if opts[:write_concern]
|
|
548
771
|
WriteConcern.get(opts[:write_concern])
|
|
549
772
|
else
|
|
550
773
|
write_concern_with_session(session)
|
|
551
774
|
end
|
|
552
|
-
|
|
775
|
+
|
|
776
|
+
if document.nil?
|
|
777
|
+
raise ArgumentError, "Document to be inserted cannot be nil"
|
|
778
|
+
end
|
|
779
|
+
|
|
780
|
+
context = Operation::Context.new(client: client, session: session)
|
|
781
|
+
write_with_retry(write_concern, context: context) do |connection, txn_num, context|
|
|
553
782
|
Operation::Insert.new(
|
|
554
783
|
:documents => [ document ],
|
|
555
784
|
:db_name => database.name,
|
|
@@ -559,8 +788,9 @@ module Mongo
|
|
|
559
788
|
:options => opts,
|
|
560
789
|
:id_generator => client.options[:id_generator],
|
|
561
790
|
:session => session,
|
|
562
|
-
:txn_num => txn_num
|
|
563
|
-
|
|
791
|
+
:txn_num => txn_num,
|
|
792
|
+
:comment => opts[:comment]
|
|
793
|
+
).execute_with_connection(connection, context: context)
|
|
564
794
|
end
|
|
565
795
|
end
|
|
566
796
|
end
|
|
@@ -570,15 +800,25 @@ module Mongo
|
|
|
570
800
|
# @example Insert documents into the collection.
|
|
571
801
|
# collection.insert_many([{ name: 'test' }])
|
|
572
802
|
#
|
|
573
|
-
# @param [
|
|
803
|
+
# @param [ Enumerable<Hash> ] documents The documents to insert.
|
|
574
804
|
# @param [ Hash ] options The insert options.
|
|
575
805
|
#
|
|
806
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
807
|
+
# not to skip document level validation.
|
|
808
|
+
# @option options [ Object ] :comment A user-provided comment to attach to
|
|
809
|
+
# this command.
|
|
810
|
+
# @option options [ true | false ] :ordered Whether the operations
|
|
811
|
+
# should be executed in order.
|
|
576
812
|
# @option options [ Session ] :session The session to use for the operation.
|
|
813
|
+
# @option options [ Hash ] :write_concern The write concern options.
|
|
814
|
+
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
|
577
815
|
#
|
|
578
816
|
# @return [ Result ] The database response wrapper.
|
|
579
817
|
#
|
|
580
818
|
# @since 2.0.0
|
|
581
819
|
def insert_many(documents, options = {})
|
|
820
|
+
QueryCache.clear_namespace(namespace)
|
|
821
|
+
|
|
582
822
|
inserts = documents.map{ |doc| { :insert_one => doc }}
|
|
583
823
|
bulk_write(inserts, options)
|
|
584
824
|
end
|
|
@@ -588,16 +828,18 @@ module Mongo
|
|
|
588
828
|
# @example Execute a bulk write.
|
|
589
829
|
# collection.bulk_write(operations, options)
|
|
590
830
|
#
|
|
591
|
-
# @param [
|
|
831
|
+
# @param [ Enumerable<Hash> ] requests The bulk write requests.
|
|
592
832
|
# @param [ Hash ] options The options.
|
|
593
833
|
#
|
|
594
|
-
# @option options [ true
|
|
834
|
+
# @option options [ true | false ] :ordered Whether the operations
|
|
595
835
|
# should be executed in order.
|
|
596
836
|
# @option options [ Hash ] :write_concern The write concern options.
|
|
597
837
|
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
|
598
|
-
# @option options [ true
|
|
838
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
599
839
|
# not to skip document level validation.
|
|
600
840
|
# @option options [ Session ] :session The session to use for the set of operations.
|
|
841
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
842
|
+
# See the server documentation for details.
|
|
601
843
|
#
|
|
602
844
|
# @return [ BulkWrite::Result ] The result of the operation.
|
|
603
845
|
#
|
|
@@ -618,6 +860,8 @@ module Mongo
|
|
|
618
860
|
# @option options [ Session ] :session The session to use.
|
|
619
861
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
620
862
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
863
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
864
|
+
# See the server documentation for details.
|
|
621
865
|
#
|
|
622
866
|
# @return [ Result ] The response from the database.
|
|
623
867
|
#
|
|
@@ -638,6 +882,8 @@ module Mongo
|
|
|
638
882
|
# @option options [ Session ] :session The session to use.
|
|
639
883
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
640
884
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
885
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
886
|
+
# See the server documentation for details.
|
|
641
887
|
#
|
|
642
888
|
# @return [ Result ] The response from the database.
|
|
643
889
|
#
|
|
@@ -678,14 +924,16 @@ module Mongo
|
|
|
678
924
|
# @param [ Hash ] replacement The replacement document..
|
|
679
925
|
# @param [ Hash ] options The options.
|
|
680
926
|
#
|
|
681
|
-
# @option options [ true
|
|
927
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
|
682
928
|
# document doesn't exist.
|
|
683
|
-
# @option options [ true
|
|
929
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
684
930
|
# not to skip document level validation.
|
|
685
931
|
# @option options [ Hash ] :collation The collation to use.
|
|
686
932
|
# @option options [ Session ] :session The session to use.
|
|
687
933
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
688
934
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
935
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
936
|
+
# See the server documentation for details.
|
|
689
937
|
#
|
|
690
938
|
# @return [ Result ] The response from the database.
|
|
691
939
|
#
|
|
@@ -703,9 +951,9 @@ module Mongo
|
|
|
703
951
|
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
|
704
952
|
# @param [ Hash ] options The options.
|
|
705
953
|
#
|
|
706
|
-
# @option options [ true
|
|
954
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
|
707
955
|
# document doesn't exist.
|
|
708
|
-
# @option options [ true
|
|
956
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
709
957
|
# not to skip document level validation.
|
|
710
958
|
# @option options [ Hash ] :collation The collation to use.
|
|
711
959
|
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
|
@@ -713,6 +961,8 @@ module Mongo
|
|
|
713
961
|
# @option options [ Session ] :session The session to use.
|
|
714
962
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
715
963
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
964
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
965
|
+
# See the server documentation for details.
|
|
716
966
|
#
|
|
717
967
|
# @return [ Result ] The response from the database.
|
|
718
968
|
#
|
|
@@ -730,9 +980,9 @@ module Mongo
|
|
|
730
980
|
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
|
731
981
|
# @param [ Hash ] options The options.
|
|
732
982
|
#
|
|
733
|
-
# @option options [ true
|
|
983
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
|
734
984
|
# document doesn't exist.
|
|
735
|
-
# @option options [ true
|
|
985
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
736
986
|
# not to skip document level validation.
|
|
737
987
|
# @option options [ Hash ] :collation The collation to use.
|
|
738
988
|
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
|
@@ -740,6 +990,8 @@ module Mongo
|
|
|
740
990
|
# @option options [ Session ] :session The session to use.
|
|
741
991
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
742
992
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
993
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
994
|
+
# See the server documentation for details.
|
|
743
995
|
#
|
|
744
996
|
# @return [ Result ] The response from the database.
|
|
745
997
|
#
|
|
@@ -768,6 +1020,8 @@ module Mongo
|
|
|
768
1020
|
# @option options [ Session ] :session The session to use.
|
|
769
1021
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
770
1022
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
1023
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
1024
|
+
# See the server documentation for details.
|
|
771
1025
|
#
|
|
772
1026
|
# @return [ BSON::Document, nil ] The document, if found.
|
|
773
1027
|
#
|
|
@@ -795,8 +1049,8 @@ module Mongo
|
|
|
795
1049
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
|
796
1050
|
# will be sorted.
|
|
797
1051
|
# @option options [ Symbol ] :return_document Either :before or :after.
|
|
798
|
-
# @option options [ true
|
|
799
|
-
# @option options [ true
|
|
1052
|
+
# @option options [ true | false ] :upsert Whether to upsert if the document doesn't exist.
|
|
1053
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
800
1054
|
# not to skip document level validation.
|
|
801
1055
|
# @option options [ Hash ] :write_concern The write concern options.
|
|
802
1056
|
# Defaults to the collection's write concern.
|
|
@@ -806,6 +1060,8 @@ module Mongo
|
|
|
806
1060
|
# @option options [ Session ] :session The session to use.
|
|
807
1061
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
808
1062
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
1063
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
1064
|
+
# See the server documentation for details.
|
|
809
1065
|
#
|
|
810
1066
|
# @return [ BSON::Document ] The document.
|
|
811
1067
|
#
|
|
@@ -833,8 +1089,8 @@ module Mongo
|
|
|
833
1089
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
|
834
1090
|
# will be sorted.
|
|
835
1091
|
# @option options [ Symbol ] :return_document Either :before or :after.
|
|
836
|
-
# @option options [ true
|
|
837
|
-
# @option options [ true
|
|
1092
|
+
# @option options [ true | false ] :upsert Whether to upsert if the document doesn't exist.
|
|
1093
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
838
1094
|
# not to skip document level validation.
|
|
839
1095
|
# @option options [ Hash ] :write_concern The write concern options.
|
|
840
1096
|
# Defaults to the collection's write concern.
|
|
@@ -842,6 +1098,8 @@ module Mongo
|
|
|
842
1098
|
# @option options [ Session ] :session The session to use.
|
|
843
1099
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
|
844
1100
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
|
1101
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
1102
|
+
# See the server documentation for details.
|
|
845
1103
|
#
|
|
846
1104
|
# @return [ BSON::Document ] The document.
|
|
847
1105
|
#
|
|
@@ -861,5 +1119,14 @@ module Mongo
|
|
|
861
1119
|
def namespace
|
|
862
1120
|
"#{database.name}.#{name}"
|
|
863
1121
|
end
|
|
1122
|
+
|
|
1123
|
+
# Whether the collection is a system collection.
|
|
1124
|
+
#
|
|
1125
|
+
# @return [ Boolean ] Whether the system is a system collection.
|
|
1126
|
+
#
|
|
1127
|
+
# @api private
|
|
1128
|
+
def system_collection?
|
|
1129
|
+
name.start_with?('system.')
|
|
1130
|
+
end
|
|
864
1131
|
end
|
|
865
1132
|
end
|