mongo 2.17.4 → 2.21.0
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
- data/README.md +70 -37
- data/Rakefile +87 -177
- data/bin/mongo_console +2 -0
- data/lib/mongo/active_support.rb +1 -1
- data/lib/mongo/address/ipv4.rb +1 -1
- data/lib/mongo/address/ipv6.rb +1 -1
- data/lib/mongo/address/unix.rb +1 -1
- data/lib/mongo/address/validator.rb +1 -1
- data/lib/mongo/address.rb +23 -4
- data/lib/mongo/auth/aws/conversation.rb +1 -5
- data/lib/mongo/{operation/drop_database/command.rb → auth/aws/credentials.rb} +15 -18
- data/lib/mongo/auth/aws/credentials_cache.rb +75 -0
- data/lib/mongo/auth/aws/credentials_retriever.rb +232 -44
- data/lib/mongo/auth/aws/request.rb +1 -2
- data/lib/mongo/auth/aws.rb +6 -6
- data/lib/mongo/auth/base.rb +9 -2
- data/lib/mongo/auth/conversation_base.rb +1 -1
- data/lib/mongo/auth/cr/conversation.rb +1 -1
- data/lib/mongo/auth/cr.rb +1 -1
- data/lib/mongo/auth/credential_cache.rb +1 -1
- data/lib/mongo/auth/gssapi/conversation.rb +1 -1
- data/lib/mongo/auth/gssapi.rb +1 -1
- data/lib/mongo/auth/ldap/conversation.rb +1 -1
- data/lib/mongo/auth/ldap.rb +1 -1
- data/lib/mongo/auth/roles.rb +17 -17
- data/lib/mongo/auth/sasl_conversation_base.rb +1 -1
- data/lib/mongo/auth/scram/conversation.rb +1 -1
- data/lib/mongo/auth/scram.rb +1 -1
- data/lib/mongo/auth/scram256/conversation.rb +1 -1
- data/lib/mongo/auth/scram256.rb +1 -1
- data/lib/mongo/auth/scram_conversation_base.rb +1 -1
- data/lib/mongo/auth/stringprep/profiles/sasl.rb +1 -1
- data/lib/mongo/auth/stringprep/tables.rb +1 -1
- data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +1 -1
- data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +2 -1
- data/lib/mongo/auth/stringprep.rb +1 -1
- data/lib/mongo/auth/user/view.rb +1 -1
- data/lib/mongo/auth/user.rb +1 -1
- data/lib/mongo/auth/x509/conversation.rb +1 -1
- data/lib/mongo/auth/x509.rb +1 -1
- data/lib/mongo/auth.rb +13 -2
- data/lib/mongo/background_thread.rb +1 -1
- data/lib/mongo/bson.rb +1 -1
- data/lib/mongo/bulk_write/combineable.rb +1 -1
- data/lib/mongo/bulk_write/ordered_combiner.rb +1 -1
- data/lib/mongo/bulk_write/result.rb +11 -2
- data/lib/mongo/bulk_write/result_combiner.rb +3 -5
- data/lib/mongo/bulk_write/transformable.rb +1 -1
- data/lib/mongo/bulk_write/unordered_combiner.rb +1 -1
- data/lib/mongo/bulk_write/validatable.rb +1 -1
- data/lib/mongo/bulk_write.rb +152 -31
- data/lib/mongo/caching_cursor.rb +1 -1
- data/lib/mongo/client.rb +223 -27
- data/lib/mongo/client_encryption.rb +218 -11
- data/lib/mongo/cluster/periodic_executor.rb +1 -1
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +14 -3
- data/lib/mongo/cluster/reapers/socket_reaper.rb +2 -2
- data/lib/mongo/cluster/sdam_flow.rb +62 -22
- data/lib/mongo/cluster/topology/base.rb +17 -1
- data/lib/mongo/cluster/topology/load_balanced.rb +1 -1
- data/lib/mongo/cluster/topology/no_replica_set_options.rb +1 -1
- data/lib/mongo/cluster/topology/replica_set_no_primary.rb +1 -1
- data/lib/mongo/cluster/topology/replica_set_with_primary.rb +1 -1
- data/lib/mongo/cluster/topology/sharded.rb +1 -1
- data/lib/mongo/cluster/topology/single.rb +1 -1
- data/lib/mongo/cluster/topology/unknown.rb +1 -1
- data/lib/mongo/cluster/topology.rb +1 -1
- data/lib/mongo/cluster.rb +95 -44
- data/lib/mongo/cluster_time.rb +1 -1
- data/lib/mongo/collection/helpers.rb +43 -0
- data/lib/mongo/collection/queryable_encryption.rb +162 -0
- data/lib/mongo/collection/view/aggregation/behavior.rb +131 -0
- data/lib/mongo/collection/view/aggregation.rb +51 -111
- data/lib/mongo/collection/view/builder/aggregation.rb +2 -8
- data/lib/mongo/collection/view/builder/map_reduce.rb +1 -1
- data/lib/mongo/collection/view/builder.rb +1 -1
- data/lib/mongo/collection/view/change_stream/retryable.rb +1 -1
- data/lib/mongo/collection/view/change_stream.rb +143 -48
- data/lib/mongo/collection/view/explainable.rb +2 -2
- data/lib/mongo/collection/view/immutable.rb +1 -1
- data/lib/mongo/collection/view/iterable.rb +79 -62
- data/lib/mongo/collection/view/map_reduce.rb +41 -15
- data/lib/mongo/collection/view/readable.rb +114 -62
- data/lib/mongo/collection/view/writable.rb +222 -70
- data/lib/mongo/collection/view.rb +44 -4
- data/lib/mongo/collection.rb +463 -114
- 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 +1 -1
- data/lib/mongo/crypt/auto_encrypter.rb +142 -20
- data/lib/mongo/crypt/auto_encryption_context.rb +1 -1
- data/lib/mongo/crypt/binary.rb +1 -1
- data/lib/mongo/crypt/binding.rb +715 -152
- data/lib/mongo/crypt/context.rb +83 -11
- data/lib/mongo/crypt/data_key_context.rb +13 -105
- data/lib/mongo/crypt/encryption_io.rb +133 -69
- data/lib/mongo/crypt/explicit_decryption_context.rb +1 -1
- data/lib/mongo/crypt/explicit_encrypter.rb +266 -34
- data/lib/mongo/crypt/explicit_encryption_context.rb +82 -22
- data/lib/mongo/{operation/kill_cursors/legacy.rb → crypt/explicit_encryption_expression_context.rb} +9 -20
- data/lib/mongo/crypt/handle.rb +169 -87
- data/lib/mongo/crypt/hooks.rb +26 -3
- 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 +138 -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 +83 -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 +1 -1
- 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 +9 -3
- data/lib/mongo/crypt.rb +16 -1
- data/lib/mongo/csot_timeout_holder.rb +119 -0
- data/lib/mongo/cursor/kill_spec.rb +31 -7
- data/lib/mongo/cursor/nontailable.rb +27 -0
- data/lib/mongo/cursor.rb +141 -35
- data/lib/mongo/cursor_host.rb +82 -0
- data/lib/mongo/database/view.rb +123 -16
- data/lib/mongo/database.rb +149 -35
- data/lib/mongo/dbref.rb +2 -106
- data/lib/mongo/distinguishing_semaphore.rb +2 -2
- data/lib/mongo/error/auth_error.rb +1 -1
- data/lib/mongo/error/bad_load_balancer_target.rb +1 -1
- data/lib/mongo/error/bulk_write_error.rb +32 -5
- data/lib/mongo/error/change_stream_resumable.rb +1 -1
- data/lib/mongo/error/client_closed.rb +24 -0
- data/lib/mongo/error/closed_stream.rb +1 -1
- data/lib/mongo/error/connection_check_out_timeout.rb +1 -1
- data/lib/mongo/error/connection_perished.rb +3 -1
- data/lib/mongo/error/connection_unavailable.rb +27 -0
- data/lib/mongo/error/credential_check_error.rb +1 -1
- data/lib/mongo/error/crypt_error.rb +1 -1
- data/lib/mongo/error/extra_file_chunk.rb +1 -1
- data/lib/mongo/error/failed_string_prep_validation.rb +1 -1
- data/lib/mongo/error/file_not_found.rb +1 -1
- data/lib/mongo/error/handshake_error.rb +1 -1
- data/lib/mongo/error/insufficient_iteration_count.rb +1 -1
- data/lib/mongo/error/internal_driver_error.rb +1 -1
- data/lib/mongo/error/invalid_address.rb +1 -1
- data/lib/mongo/error/invalid_application_name.rb +1 -1
- data/lib/mongo/error/invalid_bulk_operation.rb +1 -1
- data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -1
- data/lib/mongo/error/invalid_collection_name.rb +1 -1
- data/lib/mongo/error/invalid_config_option.rb +21 -0
- data/lib/mongo/error/invalid_cursor_operation.rb +1 -1
- data/lib/mongo/error/invalid_database_name.rb +1 -1
- data/lib/mongo/error/invalid_document.rb +1 -1
- data/lib/mongo/error/invalid_file.rb +1 -1
- data/lib/mongo/error/invalid_file_revision.rb +1 -1
- data/lib/mongo/{operation/drop/command.rb → error/invalid_max_connecting.rb} +8 -21
- data/lib/mongo/error/invalid_min_pool_size.rb +1 -1
- data/lib/mongo/error/invalid_nonce.rb +1 -1
- data/lib/mongo/error/invalid_read_concern.rb +1 -1
- data/lib/mongo/error/invalid_read_option.rb +2 -2
- data/lib/mongo/error/invalid_replacement_document.rb +28 -10
- data/lib/mongo/error/invalid_server_auth_host.rb +1 -1
- data/lib/mongo/error/invalid_server_auth_response.rb +1 -1
- data/lib/mongo/error/invalid_server_preference.rb +1 -1
- data/lib/mongo/error/invalid_session.rb +1 -1
- data/lib/mongo/error/invalid_signature.rb +1 -1
- data/lib/mongo/error/invalid_transaction_operation.rb +1 -1
- data/lib/mongo/error/invalid_txt_record.rb +1 -1
- data/lib/mongo/error/invalid_update_document.rb +28 -8
- data/lib/mongo/error/invalid_uri.rb +1 -1
- data/lib/mongo/error/invalid_write_concern.rb +1 -1
- data/lib/mongo/error/kms_error.rb +1 -1
- data/lib/mongo/error/labelable.rb +72 -0
- data/lib/mongo/error/lint_error.rb +1 -1
- data/lib/mongo/error/max_bson_size.rb +1 -1
- data/lib/mongo/error/max_message_size.rb +1 -1
- data/lib/mongo/error/mismatched_domain.rb +1 -1
- data/lib/mongo/error/missing_connection.rb +27 -0
- data/lib/mongo/error/missing_file_chunk.rb +9 -3
- data/lib/mongo/error/missing_password.rb +1 -1
- data/lib/mongo/error/missing_resume_token.rb +1 -1
- data/lib/mongo/error/missing_scram_server_signature.rb +1 -1
- data/lib/mongo/error/missing_service_id.rb +1 -1
- data/lib/mongo/error/mongocryptd_spawn_error.rb +1 -1
- data/lib/mongo/error/multi_index_drop.rb +1 -1
- data/lib/mongo/error/need_primary_server.rb +1 -1
- data/lib/mongo/error/no_server_available.rb +1 -1
- data/lib/mongo/error/no_service_connection_available.rb +1 -1
- data/lib/mongo/error/no_srv_records.rb +1 -1
- data/lib/mongo/error/notable.rb +15 -1
- data/lib/mongo/error/operation_failure.rb +213 -260
- data/lib/mongo/error/parser.rb +1 -1
- data/lib/mongo/{operation/create_user/command.rb → error/pool_cleared_error.rb} +17 -23
- data/lib/mongo/error/pool_closed_error.rb +4 -17
- data/lib/mongo/{operation/update_user/command.rb → error/pool_error.rb} +21 -21
- data/lib/mongo/{operation/drop_index/command.rb → error/pool_paused_error.rb} +17 -22
- data/lib/mongo/error/raise_original_error.rb +1 -1
- data/lib/mongo/error/read_write_retryable.rb +108 -0
- data/lib/mongo/error/sdam_error_detection.rb +1 -1
- data/lib/mongo/error/server_api_conflict.rb +1 -1
- data/lib/mongo/error/server_api_not_supported.rb +1 -1
- data/lib/mongo/error/server_certificate_revoked.rb +1 -1
- data/lib/mongo/{operation/get_more/legacy.rb → error/server_not_usable.rb} +13 -16
- data/lib/mongo/error/server_timeout_error.rb +12 -0
- data/lib/mongo/error/session_ended.rb +1 -1
- data/lib/mongo/{operation/command/command.rb → error/session_not_materialized.rb} +8 -20
- data/lib/mongo/error/sessions_not_supported.rb +1 -1
- data/lib/mongo/error/snapshot_session_invalid_server_version.rb +1 -1
- data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +1 -1
- data/lib/mongo/error/socket_error.rb +1 -1
- data/lib/mongo/error/socket_timeout_error.rb +4 -2
- data/lib/mongo/error/timeout_error.rb +23 -0
- data/lib/mongo/{operation/shared/op_msg_or_command.rb → error/transactions_not_supported.rb} +13 -20
- data/lib/mongo/error/unchangeable_collection_option.rb +1 -1
- data/lib/mongo/error/unexpected_chunk_length.rb +1 -1
- data/lib/mongo/error/unexpected_response.rb +1 -1
- data/lib/mongo/error/unknown_payload_type.rb +1 -1
- data/lib/mongo/error/unmet_dependency.rb +1 -1
- data/lib/mongo/error/unsupported_array_filters.rb +1 -1
- data/lib/mongo/error/unsupported_collation.rb +1 -1
- data/lib/mongo/error/unsupported_features.rb +1 -1
- data/lib/mongo/error/unsupported_message_type.rb +1 -1
- data/lib/mongo/error/unsupported_option.rb +1 -1
- data/lib/mongo/error/write_retryable.rb +1 -1
- data/lib/mongo/error.rb +16 -38
- data/lib/mongo/event/base.rb +1 -1
- data/lib/mongo/event/listeners.rb +1 -1
- data/lib/mongo/event/publisher.rb +1 -1
- data/lib/mongo/event/subscriber.rb +1 -1
- data/lib/mongo/event.rb +1 -1
- data/lib/mongo/grid/file/chunk.rb +3 -2
- data/lib/mongo/grid/file/info.rb +3 -2
- data/lib/mongo/grid/file.rb +1 -1
- data/lib/mongo/grid/fs_bucket.rb +49 -10
- data/lib/mongo/grid/stream/read.rb +22 -2
- data/lib/mongo/grid/stream/write.rb +22 -5
- data/lib/mongo/grid/stream.rb +1 -1
- data/lib/mongo/grid.rb +1 -1
- data/lib/mongo/id.rb +1 -1
- data/lib/mongo/index/view.rb +96 -19
- data/lib/mongo/index.rb +1 -1
- data/lib/mongo/lint.rb +1 -1
- data/lib/mongo/loggable.rb +3 -3
- data/lib/mongo/logger.rb +1 -1
- data/lib/mongo/monitoring/cmap_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/command_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/base.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_closed.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_created.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/connection_ready.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +9 -2
- data/lib/mongo/monitoring/event/cmap/pool_closed.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/pool_created.rb +1 -1
- data/lib/mongo/monitoring/event/cmap/pool_ready.rb +67 -0
- data/lib/mongo/monitoring/event/cmap.rb +2 -1
- data/lib/mongo/monitoring/event/command_failed.rb +9 -3
- data/lib/mongo/monitoring/event/command_started.rb +2 -2
- data/lib/mongo/monitoring/event/command_succeeded.rb +10 -3
- data/lib/mongo/monitoring/event/secure.rb +2 -2
- data/lib/mongo/monitoring/event/server_closed.rb +1 -1
- data/lib/mongo/monitoring/event/server_description_changed.rb +1 -1
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +1 -1
- data/lib/mongo/monitoring/event/server_heartbeat_started.rb +1 -1
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +1 -1
- data/lib/mongo/monitoring/event/server_opening.rb +1 -1
- data/lib/mongo/monitoring/event/topology_changed.rb +1 -1
- data/lib/mongo/monitoring/event/topology_closed.rb +1 -1
- data/lib/mongo/monitoring/event/topology_opening.rb +1 -1
- data/lib/mongo/monitoring/event.rb +1 -1
- data/lib/mongo/monitoring/publishable.rb +10 -6
- data/lib/mongo/monitoring/sdam_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/server_closed_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/server_opening_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +1 -1
- data/lib/mongo/monitoring.rb +1 -1
- data/lib/mongo/operation/aggregate/op_msg.rb +1 -1
- data/lib/mongo/operation/aggregate/result.rb +1 -1
- data/lib/mongo/operation/aggregate.rb +2 -3
- data/lib/mongo/operation/collections_info/result.rb +6 -3
- data/lib/mongo/operation/collections_info.rb +4 -16
- data/lib/mongo/operation/command/op_msg.rb +7 -1
- data/lib/mongo/operation/command.rb +2 -3
- data/lib/mongo/operation/context.rb +64 -8
- data/lib/mongo/operation/count/op_msg.rb +5 -2
- data/lib/mongo/operation/count.rb +2 -3
- data/lib/mongo/operation/create/op_msg.rb +5 -2
- data/lib/mongo/operation/create.rb +2 -3
- data/lib/mongo/operation/create_index/op_msg.rb +3 -2
- data/lib/mongo/operation/create_index.rb +2 -3
- data/lib/mongo/operation/create_search_indexes/op_msg.rb +31 -0
- data/lib/mongo/operation/create_search_indexes.rb +15 -0
- data/lib/mongo/operation/create_user/op_msg.rb +1 -1
- data/lib/mongo/operation/create_user.rb +2 -3
- data/lib/mongo/operation/delete/bulk_result.rb +1 -1
- data/lib/mongo/operation/delete/op_msg.rb +4 -2
- data/lib/mongo/operation/delete/result.rb +1 -1
- data/lib/mongo/operation/delete.rb +1 -3
- data/lib/mongo/operation/distinct/op_msg.rb +5 -2
- data/lib/mongo/operation/distinct.rb +2 -3
- data/lib/mongo/operation/drop/op_msg.rb +1 -1
- data/lib/mongo/operation/drop.rb +2 -3
- data/lib/mongo/operation/drop_database/op_msg.rb +1 -1
- data/lib/mongo/operation/drop_database.rb +2 -3
- data/lib/mongo/operation/drop_index/op_msg.rb +6 -2
- data/lib/mongo/operation/drop_index.rb +2 -3
- data/lib/mongo/operation/drop_search_index/op_msg.rb +33 -0
- data/lib/mongo/operation/drop_search_index.rb +15 -0
- data/lib/mongo/operation/explain/op_msg.rb +1 -1
- data/lib/mongo/operation/explain/result.rb +1 -1
- data/lib/mongo/operation/explain.rb +2 -4
- data/lib/mongo/operation/find/builder/command.rb +1 -1
- data/lib/mongo/operation/find/builder/flags.rb +1 -1
- data/lib/mongo/operation/find/builder/modifiers.rb +1 -1
- data/lib/mongo/operation/find/builder.rb +1 -2
- data/lib/mongo/operation/find/op_msg.rb +46 -1
- data/lib/mongo/operation/find/result.rb +1 -1
- data/lib/mongo/operation/find.rb +2 -4
- data/lib/mongo/operation/get_more/command_builder.rb +6 -2
- data/lib/mongo/operation/get_more/op_msg.rb +34 -1
- data/lib/mongo/operation/get_more/result.rb +1 -1
- data/lib/mongo/operation/get_more.rb +2 -4
- data/lib/mongo/operation/indexes/op_msg.rb +1 -1
- data/lib/mongo/operation/indexes/result.rb +1 -1
- data/lib/mongo/operation/indexes.rb +2 -18
- data/lib/mongo/operation/insert/bulk_result.rb +6 -2
- data/lib/mongo/operation/insert/op_msg.rb +9 -5
- data/lib/mongo/operation/insert/result.rb +9 -4
- data/lib/mongo/operation/insert.rb +1 -3
- data/lib/mongo/operation/kill_cursors/command_builder.rb +1 -1
- data/lib/mongo/operation/kill_cursors/op_msg.rb +1 -1
- data/lib/mongo/operation/kill_cursors.rb +2 -4
- data/lib/mongo/operation/list_collections/op_msg.rb +5 -2
- data/lib/mongo/operation/list_collections/result.rb +2 -2
- data/lib/mongo/operation/list_collections.rb +2 -3
- data/lib/mongo/operation/map_reduce/op_msg.rb +1 -1
- data/lib/mongo/operation/map_reduce/result.rb +18 -2
- data/lib/mongo/operation/map_reduce.rb +2 -3
- data/lib/mongo/operation/op_msg_base.rb +4 -2
- data/lib/mongo/operation/parallel_scan/op_msg.rb +1 -1
- data/lib/mongo/operation/parallel_scan/result.rb +1 -1
- data/lib/mongo/operation/parallel_scan.rb +2 -3
- data/lib/mongo/operation/remove_user/op_msg.rb +1 -1
- data/lib/mongo/operation/remove_user.rb +2 -3
- data/lib/mongo/operation/result.rb +47 -10
- data/lib/mongo/operation/shared/bypass_document_validation.rb +1 -1
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +1 -1
- data/lib/mongo/operation/shared/executable.rb +60 -18
- data/lib/mongo/operation/shared/executable_no_validate.rb +1 -1
- data/lib/mongo/operation/shared/executable_transaction_label.rb +1 -1
- data/lib/mongo/operation/shared/idable.rb +1 -1
- data/lib/mongo/operation/shared/limited.rb +1 -1
- data/lib/mongo/operation/shared/object_id_generator.rb +1 -1
- data/lib/mongo/operation/shared/{polymorphic_operation.rb → op_msg_executable.rb} +28 -8
- data/lib/mongo/operation/shared/polymorphic_lookup.rb +1 -1
- data/lib/mongo/operation/shared/polymorphic_result.rb +1 -1
- data/lib/mongo/operation/shared/read_preference_supported.rb +1 -1
- data/lib/mongo/operation/shared/response_handling.rb +32 -33
- data/lib/mongo/operation/shared/result/aggregatable.rb +1 -1
- data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +1 -1
- data/lib/mongo/operation/shared/sessions_supported.rb +2 -3
- data/lib/mongo/operation/shared/specifiable.rb +8 -1
- data/lib/mongo/operation/shared/timed.rb +52 -0
- data/lib/mongo/operation/shared/validatable.rb +1 -1
- data/lib/mongo/operation/shared/write.rb +22 -13
- data/lib/mongo/operation/shared/write_concern_supported.rb +1 -1
- data/lib/mongo/operation/update/bulk_result.rb +1 -1
- data/lib/mongo/operation/update/op_msg.rb +5 -3
- data/lib/mongo/operation/update/result.rb +1 -1
- data/lib/mongo/operation/update.rb +1 -3
- data/lib/mongo/operation/update_search_index/op_msg.rb +34 -0
- data/lib/mongo/operation/update_search_index.rb +15 -0
- data/lib/mongo/operation/update_user/op_msg.rb +1 -1
- data/lib/mongo/operation/update_user.rb +2 -3
- data/lib/mongo/operation/users_info/op_msg.rb +1 -1
- data/lib/mongo/operation/users_info/result.rb +1 -1
- data/lib/mongo/operation/users_info.rb +2 -3
- data/lib/mongo/operation/write_command/op_msg.rb +1 -1
- data/lib/mongo/operation/write_command.rb +2 -3
- data/lib/mongo/operation.rb +6 -4
- data/lib/mongo/options/mapper.rb +1 -1
- data/lib/mongo/options/redacted.rb +1 -1
- data/lib/mongo/options.rb +1 -1
- data/lib/mongo/protocol/bit_vector.rb +4 -2
- data/lib/mongo/protocol/caching_hash.rb +52 -0
- data/lib/mongo/protocol/compressed.rb +1 -1
- data/lib/mongo/protocol/get_more.rb +1 -1
- data/lib/mongo/protocol/kill_cursors.rb +1 -1
- data/lib/mongo/protocol/message.rb +6 -13
- data/lib/mongo/protocol/msg.rb +25 -4
- data/lib/mongo/protocol/query.rb +1 -1
- data/lib/mongo/protocol/registry.rb +1 -1
- data/lib/mongo/protocol/reply.rb +1 -1
- data/lib/mongo/protocol/serializers.rb +25 -18
- data/lib/mongo/protocol.rb +2 -4
- data/lib/mongo/query_cache.rb +36 -21
- data/lib/mongo/retryable/base_worker.rb +116 -0
- data/lib/mongo/retryable/read_worker.rb +338 -0
- data/lib/mongo/retryable/write_worker.rb +398 -0
- data/lib/mongo/retryable.rb +37 -454
- data/lib/mongo/search_index/view.rb +232 -0
- data/lib/mongo/semaphore.rb +2 -2
- data/lib/mongo/server/app_metadata/environment.rb +314 -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 +76 -108
- data/lib/mongo/server/connection.rb +102 -22
- data/lib/mongo/server/connection_base.rb +25 -3
- data/lib/mongo/server/connection_common.rb +5 -2
- data/lib/mongo/server/connection_pool/generation_manager.rb +56 -12
- data/lib/mongo/server/connection_pool/populator.rb +33 -31
- data/lib/mongo/server/connection_pool.rb +758 -251
- data/lib/mongo/server/description/features.rb +5 -2
- data/lib/mongo/server/description/load_balancer.rb +1 -1
- data/lib/mongo/server/description.rb +32 -13
- data/lib/mongo/server/monitor/app_metadata.rb +1 -1
- data/lib/mongo/server/monitor/connection.rb +2 -1
- data/lib/mongo/server/monitor.rb +43 -24
- data/lib/mongo/server/pending_connection.rb +26 -9
- data/lib/mongo/server/push_monitor/connection.rb +1 -1
- data/lib/mongo/server/push_monitor.rb +14 -4
- data/lib/mongo/server/{round_trip_time_averager.rb → round_trip_time_calculator.rb} +26 -8
- data/lib/mongo/server.rb +114 -39
- data/lib/mongo/server_selector/base.rb +75 -12
- data/lib/mongo/server_selector/nearest.rb +1 -1
- data/lib/mongo/server_selector/primary.rb +1 -1
- data/lib/mongo/server_selector/primary_preferred.rb +1 -1
- data/lib/mongo/server_selector/secondary.rb +1 -1
- data/lib/mongo/server_selector/secondary_preferred.rb +1 -1
- data/lib/mongo/server_selector.rb +1 -1
- data/lib/mongo/session/server_session/dirtyable.rb +52 -0
- data/lib/mongo/session/server_session.rb +4 -1
- data/lib/mongo/session/session_pool.rb +21 -19
- data/lib/mongo/session.rb +221 -44
- data/lib/mongo/socket/ocsp_cache.rb +1 -1
- data/lib/mongo/socket/ocsp_verifier.rb +5 -6
- data/lib/mongo/socket/ssl.rb +132 -19
- data/lib/mongo/socket/tcp.rb +44 -7
- data/lib/mongo/socket/unix.rb +1 -1
- data/lib/mongo/socket.rb +183 -27
- data/lib/mongo/srv/monitor.rb +1 -3
- data/lib/mongo/srv/resolver.rb +25 -4
- data/lib/mongo/srv/result.rb +1 -1
- data/lib/mongo/srv.rb +1 -1
- data/lib/mongo/timeout.rb +2 -2
- data/lib/mongo/topology_version.rb +1 -1
- data/lib/mongo/uri/options_mapper.rb +325 -81
- data/lib/mongo/uri/srv_protocol.rb +2 -2
- data/lib/mongo/uri.rb +61 -17
- data/lib/mongo/utils.rb +1 -1
- data/lib/mongo/version.rb +1 -5
- data/lib/mongo/write_concern/acknowledged.rb +1 -1
- data/lib/mongo/write_concern/base.rb +1 -1
- data/lib/mongo/write_concern/unacknowledged.rb +1 -1
- data/lib/mongo/write_concern.rb +1 -1
- data/lib/mongo.rb +26 -1
- data/mongo.gemspec +14 -14
- data/spec/README.md +23 -5
- data/spec/atlas/atlas_connectivity_spec.rb +10 -10
- data/spec/atlas/operations_spec.rb +7 -12
- data/spec/faas/ruby-sam-app/Gemfile +9 -0
- data/spec/faas/ruby-sam-app/mongodb/Gemfile +4 -0
- data/spec/faas/ruby-sam-app/mongodb/app.rb +149 -0
- data/spec/faas/ruby-sam-app/template.yaml +48 -0
- data/spec/integration/auth_spec.rb +1 -1
- data/spec/integration/awaited_ismaster_spec.rb +1 -1
- data/spec/integration/aws_auth_credentials_cache_spec.rb +51 -0
- data/spec/integration/aws_auth_request_spec.rb +2 -2
- data/spec/integration/aws_credentials_retriever_spec.rb +32 -2
- data/spec/integration/aws_lambda_examples_spec.rb +68 -0
- data/spec/integration/bson_symbol_spec.rb +1 -1
- data/spec/integration/bulk_insert_spec.rb +1 -1
- data/spec/integration/bulk_write_error_message_spec.rb +33 -0
- data/spec/integration/bulk_write_spec.rb +1 -1
- data/spec/integration/change_stream_examples_spec.rb +1 -1
- data/spec/integration/change_stream_spec.rb +12 -6
- data/spec/integration/check_clean_slate_spec.rb +1 -1
- data/spec/integration/client_authentication_options_spec.rb +1 -1
- data/spec/integration/client_connectivity_spec.rb +1 -1
- data/spec/integration/client_construction_aws_auth_spec.rb +12 -3
- data/spec/integration/client_construction_spec.rb +97 -9
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +10 -10
- data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +169 -169
- data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +3 -3
- data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +1 -1
- data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +41 -5
- data/spec/integration/client_side_encryption/auto_encryption_spec.rb +537 -387
- 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 +3 -3
- data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +3 -3
- data/spec/integration/client_side_encryption/client_close_spec.rb +2 -2
- data/spec/integration/client_side_encryption/corpus_spec.rb +75 -38
- data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +40 -43
- data/spec/integration/client_side_encryption/data_key_spec.rb +98 -8
- data/spec/integration/client_side_encryption/decryption_events_prose_spec.rb +159 -0
- data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +60 -1
- data/spec/integration/client_side_encryption/explicit_queryable_encryption_spec.rb +150 -0
- data/spec/integration/client_side_encryption/external_key_vault_spec.rb +7 -7
- 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 +583 -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 +2 -2
- data/spec/integration/client_side_operations_timeout/encryption_prose_spec.rb +131 -0
- data/spec/integration/client_spec.rb +8 -3
- data/spec/integration/client_update_spec.rb +7 -3
- data/spec/integration/collection_indexes_prose_spec.rb +1 -1
- data/spec/integration/command_monitoring_spec.rb +1 -1
- data/spec/integration/command_spec.rb +2 -24
- data/spec/integration/connect_single_rs_name_spec.rb +1 -1
- data/spec/integration/connection/faas_env_spec.rb +62 -0
- data/spec/integration/connection_pool_populator_spec.rb +29 -7
- data/spec/integration/connection_spec.rb +1 -1
- data/spec/integration/crud_spec.rb +13 -1
- data/spec/integration/cursor_pinning_spec.rb +21 -62
- data/spec/integration/cursor_reaping_spec.rb +2 -2
- data/spec/integration/docs_examples_spec.rb +3 -3
- data/spec/integration/error_detection_spec.rb +1 -1
- data/spec/integration/fork_reconnect_spec.rb +17 -10
- data/spec/integration/get_more_spec.rb +1 -1
- data/spec/integration/grid_fs_bucket_spec.rb +4 -4
- data/spec/integration/heartbeat_events_spec.rb +1 -1
- data/spec/integration/map_reduce_spec.rb +5 -1
- data/spec/integration/mmapv1_spec.rb +1 -1
- data/spec/integration/mongos_pinning_spec.rb +1 -1
- data/spec/integration/ocsp_connectivity_spec.rb +1 -1
- data/spec/integration/ocsp_verifier_cache_spec.rb +1 -1
- data/spec/integration/ocsp_verifier_spec.rb +5 -2
- data/spec/integration/operation_failure_code_spec.rb +2 -2
- data/spec/integration/operation_failure_message_spec.rb +4 -3
- data/spec/integration/query_cache_spec.rb +124 -33
- data/spec/integration/query_cache_transactions_spec.rb +1 -1
- data/spec/integration/read_concern_spec.rb +1 -1
- data/spec/integration/read_preference_spec.rb +1 -1
- data/spec/integration/reconnect_spec.rb +6 -1
- data/spec/integration/retryable_errors_spec.rb +3 -3
- data/spec/integration/retryable_reads_errors_spec.rb +275 -0
- data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +2 -2
- data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +1 -1
- data/spec/integration/retryable_writes/shared/adds_diagnostics.rb +1 -1
- data/spec/integration/retryable_writes/shared/does_not_support_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/only_supports_legacy_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/performs_modern_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/performs_no_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/supports_legacy_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/supports_modern_retries.rb +1 -1
- data/spec/integration/retryable_writes/shared/supports_retries.rb +1 -1
- data/spec/integration/retryable_writes_errors_spec.rb +316 -2
- data/spec/integration/sdam_error_handling_spec.rb +69 -5
- data/spec/integration/sdam_events_spec.rb +1 -1
- data/spec/integration/sdam_prose_spec.rb +3 -3
- data/spec/integration/search_indexes_prose_spec.rb +172 -0
- data/spec/integration/secondary_reads_spec.rb +1 -0
- data/spec/integration/server_description_spec.rb +1 -1
- data/spec/integration/server_monitor_spec.rb +3 -2
- data/spec/integration/server_selection_spec.rb +1 -1
- data/spec/integration/server_selector_spec.rb +5 -3
- data/spec/integration/server_spec.rb +26 -28
- data/spec/integration/shell_examples_spec.rb +1 -1
- data/spec/integration/size_limit_spec.rb +5 -2
- data/spec/integration/snappy_compression_spec.rb +1 -1
- data/spec/integration/snapshot_query_examples_spec.rb +129 -0
- data/spec/integration/srv_monitoring_spec.rb +40 -1
- data/spec/integration/srv_spec.rb +4 -3
- data/spec/integration/ssl_uri_options_spec.rb +1 -1
- data/spec/integration/step_down_spec.rb +25 -7
- data/spec/integration/time_zone_querying_spec.rb +1 -1
- data/spec/integration/transaction_pinning_spec.rb +20 -6
- data/spec/integration/transactions_api_examples_spec.rb +3 -1
- data/spec/integration/transactions_examples_spec.rb +1 -1
- data/spec/integration/truncated_utf8_spec.rb +1 -1
- data/spec/integration/versioned_api_examples_spec.rb +38 -32
- data/spec/integration/x509_auth_spec.rb +1 -1
- data/spec/integration/zlib_compression_spec.rb +1 -1
- data/spec/integration/zstd_compression_spec.rb +1 -1
- data/spec/kerberos/kerberos_spec.rb +5 -1
- data/spec/lite_spec_helper.rb +63 -26
- data/spec/mongo/address/ipv4_spec.rb +1 -1
- data/spec/mongo/address/ipv6_spec.rb +8 -1
- data/spec/mongo/address/unix_spec.rb +1 -1
- data/spec/mongo/address/validator_spec.rb +1 -1
- data/spec/mongo/address_spec.rb +15 -2
- 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 +1 -1
- data/spec/mongo/auth/aws/request_spec.rb +1 -1
- data/spec/mongo/auth/cr_spec.rb +2 -22
- data/spec/mongo/auth/gssapi/conversation_spec.rb +1 -1
- data/spec/mongo/auth/invalid_mechanism_spec.rb +1 -1
- data/spec/mongo/auth/ldap/conversation_spec.rb +1 -1
- data/spec/mongo/auth/ldap_spec.rb +1 -1
- data/spec/mongo/auth/scram/conversation_spec.rb +24 -24
- data/spec/mongo/auth/scram256/conversation_spec.rb +21 -21
- data/spec/mongo/auth/scram_negotiation_spec.rb +2 -1
- data/spec/mongo/auth/scram_spec.rb +1 -1
- data/spec/mongo/auth/stringprep/profiles/sasl_spec.rb +1 -1
- data/spec/mongo/auth/stringprep_spec.rb +1 -1
- data/spec/mongo/auth/user/view_spec.rb +96 -1
- data/spec/mongo/auth/user_spec.rb +1 -1
- data/spec/mongo/auth/x509/conversation_spec.rb +1 -1
- data/spec/mongo/auth/x509_spec.rb +1 -1
- data/spec/mongo/auth_spec.rb +1 -1
- data/spec/mongo/bson_spec.rb +1 -1
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +1 -1
- data/spec/mongo/bulk_write/result_spec.rb +16 -2
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +1 -1
- data/spec/mongo/bulk_write_spec.rb +142 -21
- data/spec/mongo/caching_cursor_spec.rb +2 -2
- data/spec/mongo/client_construction_spec.rb +734 -631
- data/spec/mongo/client_encryption_spec.rb +12 -23
- data/spec/mongo/client_spec.rb +547 -156
- data/spec/mongo/cluster/cursor_reaper_spec.rb +22 -4
- data/spec/mongo/cluster/periodic_executor_spec.rb +1 -1
- data/spec/mongo/cluster/socket_reaper_spec.rb +1 -1
- data/spec/mongo/cluster/topology/replica_set_spec.rb +1 -1
- data/spec/mongo/cluster/topology/sharded_spec.rb +1 -1
- data/spec/mongo/cluster/topology/single_spec.rb +1 -1
- data/spec/mongo/cluster/topology/unknown_spec.rb +1 -1
- data/spec/mongo/cluster/topology_spec.rb +1 -1
- data/spec/mongo/cluster_spec.rb +193 -199
- data/spec/mongo/cluster_time_spec.rb +1 -1
- data/spec/mongo/collection/view/aggregation_spec.rb +142 -43
- data/spec/mongo/collection/view/builder/find_command_spec.rb +1 -1
- data/spec/mongo/collection/view/builder/op_query_spec.rb +1 -1
- data/spec/mongo/collection/view/change_stream_resume_spec.rb +1 -1
- data/spec/mongo/collection/view/change_stream_spec.rb +6 -6
- data/spec/mongo/collection/view/explainable_spec.rb +3 -1
- data/spec/mongo/collection/view/immutable_spec.rb +1 -1
- data/spec/mongo/collection/view/iterable_spec.rb +1 -1
- data/spec/mongo/collection/view/map_reduce_spec.rb +11 -1
- data/spec/mongo/collection/view/readable_spec.rb +744 -2
- data/spec/mongo/collection/view/writable_spec.rb +145 -33
- data/spec/mongo/collection/view_spec.rb +1 -1
- data/spec/mongo/collection_crud_spec.rb +122 -15
- data/spec/mongo/collection_ddl_spec.rb +116 -66
- data/spec/mongo/collection_spec.rb +47 -2
- 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 +18 -2
- data/spec/mongo/crypt/auto_encrypter_spec.rb +272 -12
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +18 -2
- data/spec/mongo/crypt/binary_spec.rb +1 -1
- data/spec/mongo/crypt/binding/binary_spec.rb +1 -1
- data/spec/mongo/crypt/binding/context_spec.rb +68 -18
- data/spec/mongo/crypt/binding/helpers_spec.rb +1 -1
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +18 -47
- data/spec/mongo/crypt/binding/status_spec.rb +1 -1
- data/spec/mongo/crypt/binding/version_spec.rb +48 -1
- data/spec/mongo/crypt/binding_unloaded_spec.rb +15 -1
- data/spec/mongo/crypt/data_key_context_spec.rb +46 -116
- data/spec/mongo/crypt/encryption_io_spec.rb +3 -1
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +33 -2
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +95 -2
- data/spec/mongo/crypt/handle_spec.rb +187 -156
- data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +1 -1
- 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 +1 -1
- data/spec/mongo/crypt_spec.rb +21 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +1 -1
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +1 -1
- data/spec/mongo/cursor_spec.rb +119 -19
- data/spec/mongo/database_spec.rb +67 -2
- data/spec/mongo/distinguishing_semaphore_spec.rb +7 -7
- data/spec/mongo/error/bulk_write_error_spec.rb +1 -1
- data/spec/mongo/error/crypt_error_spec.rb +1 -1
- data/spec/mongo/error/max_bson_size_spec.rb +1 -1
- data/spec/mongo/error/no_server_available_spec.rb +1 -1
- data/spec/mongo/error/notable_spec.rb +1 -1
- data/spec/mongo/error/operation_failure_heavy_spec.rb +51 -2
- data/spec/mongo/error/operation_failure_spec.rb +1 -1
- data/spec/mongo/error/parser_spec.rb +1 -1
- data/spec/mongo/error/unsupported_option_spec.rb +1 -1
- data/spec/mongo/event/publisher_spec.rb +1 -1
- data/spec/mongo/event/subscriber_spec.rb +1 -1
- data/spec/mongo/grid/file/chunk_spec.rb +1 -1
- data/spec/mongo/grid/file/info_spec.rb +1 -1
- data/spec/mongo/grid/file_spec.rb +1 -1
- data/spec/mongo/grid/fs_bucket_spec.rb +1 -1
- data/spec/mongo/grid/stream/read_spec.rb +1 -1
- data/spec/mongo/grid/stream/write_spec.rb +1 -1
- data/spec/mongo/grid/stream_spec.rb +1 -1
- data/spec/mongo/id_spec.rb +2 -2
- data/spec/mongo/index/view_spec.rb +126 -1
- data/spec/mongo/lint_spec.rb +2 -2
- data/spec/mongo/logger_spec.rb +1 -1
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +1 -1
- data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +2 -2
- data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +2 -2
- data/spec/mongo/monitoring/event/command_failed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/command_started_spec.rb +1 -1
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +1 -1
- data/spec/mongo/monitoring/event/secure_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_closed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_description_changed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_started_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_opening_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_changed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_closed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_opening_spec.rb +1 -1
- data/spec/mongo/monitoring_spec.rb +1 -1
- data/spec/mongo/operation/aggregate/result_spec.rb +1 -1
- data/spec/mongo/operation/aggregate_spec.rb +1 -1
- data/spec/mongo/operation/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/command_spec.rb +1 -1
- data/spec/mongo/operation/context_spec.rb +79 -0
- data/spec/mongo/operation/create/op_msg_spec.rb +240 -0
- data/spec/mongo/operation/create_index_spec.rb +1 -1
- data/spec/mongo/operation/create_user_spec.rb +1 -1
- data/spec/mongo/operation/delete/bulk_spec.rb +1 -1
- data/spec/mongo/operation/delete/op_msg_spec.rb +20 -10
- data/spec/mongo/operation/delete_spec.rb +1 -31
- data/spec/mongo/operation/drop_index_spec.rb +1 -1
- data/spec/mongo/operation/find/builder/flags_spec.rb +1 -1
- data/spec/mongo/operation/find/builder/modifiers_spec.rb +1 -1
- data/spec/mongo/operation/find/op_msg_spec.rb +66 -0
- data/spec/mongo/operation/get_more/op_msg_spec.rb +65 -0
- data/spec/mongo/operation/indexes_spec.rb +1 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +1 -1
- data/spec/mongo/operation/insert/op_msg_spec.rb +131 -126
- data/spec/mongo/operation/insert_spec.rb +2 -34
- data/spec/mongo/operation/limited_spec.rb +1 -1
- data/spec/mongo/operation/map_reduce_spec.rb +1 -1
- data/spec/mongo/operation/read_preference_legacy_spec.rb +1 -1
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +1 -1
- data/spec/mongo/operation/remove_user_spec.rb +1 -1
- data/spec/mongo/operation/result_spec.rb +21 -1
- data/spec/mongo/operation/shared/csot/examples.rb +113 -0
- data/spec/mongo/operation/specifiable_spec.rb +1 -1
- data/spec/mongo/operation/update/bulk_spec.rb +1 -1
- data/spec/mongo/operation/update/op_msg_spec.rb +14 -5
- data/spec/mongo/operation/update_spec.rb +1 -30
- data/spec/mongo/operation/update_user_spec.rb +1 -1
- data/spec/mongo/options/redacted_spec.rb +2 -2
- data/spec/mongo/protocol/caching_hash_spec.rb +37 -0
- data/spec/mongo/protocol/compressed_spec.rb +1 -1
- data/spec/mongo/protocol/get_more_spec.rb +1 -1
- data/spec/mongo/protocol/kill_cursors_spec.rb +1 -1
- data/spec/mongo/protocol/msg_spec.rb +45 -66
- data/spec/mongo/protocol/query_spec.rb +1 -1
- data/spec/mongo/protocol/registry_spec.rb +1 -1
- data/spec/mongo/protocol/reply_spec.rb +1 -1
- data/spec/mongo/query_cache_middleware_spec.rb +1 -1
- data/spec/mongo/query_cache_spec.rb +245 -226
- data/spec/mongo/retryable/write_worker_spec.rb +39 -0
- data/spec/mongo/retryable_spec.rb +38 -6
- data/spec/mongo/semaphore_spec.rb +7 -7
- data/spec/mongo/server/app_metadata/environment_spec.rb +344 -0
- data/spec/mongo/server/app_metadata/truncator_spec.rb +158 -0
- data/spec/mongo/server/app_metadata_spec.rb +53 -65
- data/spec/mongo/server/connection_auth_spec.rb +4 -2
- data/spec/mongo/server/connection_common_spec.rb +14 -2
- data/spec/mongo/server/connection_pool/populator_spec.rb +17 -3
- data/spec/mongo/server/connection_pool_spec.rb +567 -63
- data/spec/mongo/server/connection_spec.rb +93 -163
- data/spec/mongo/server/description/features_spec.rb +25 -1
- data/spec/mongo/server/description_query_methods_spec.rb +1 -1
- data/spec/mongo/server/description_spec.rb +1 -1
- data/spec/mongo/server/monitor/app_metadata_spec.rb +1 -1
- data/spec/mongo/server/monitor/connection_spec.rb +3 -3
- data/spec/mongo/server/monitor_spec.rb +6 -5
- data/spec/mongo/server/push_monitor_spec.rb +3 -9
- data/spec/mongo/server/round_trip_time_calculator_spec.rb +120 -0
- data/spec/mongo/server_selector/nearest_spec.rb +1 -1
- data/spec/mongo/server_selector/primary_preferred_spec.rb +1 -1
- data/spec/mongo/server_selector/primary_spec.rb +1 -1
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +1 -1
- data/spec/mongo/server_selector/secondary_spec.rb +1 -1
- data/spec/mongo/server_selector_spec.rb +1 -1
- data/spec/mongo/server_spec.rb +32 -5
- data/spec/mongo/session/server_session_spec.rb +1 -1
- data/spec/mongo/session/session_pool_spec.rb +2 -17
- data/spec/mongo/session_spec.rb +27 -7
- data/spec/mongo/session_transaction_spec.rb +19 -3
- data/spec/mongo/socket/ssl_spec.rb +21 -26
- data/spec/mongo/socket/tcp_spec.rb +1 -1
- data/spec/mongo/socket/unix_spec.rb +1 -1
- data/spec/mongo/socket_spec.rb +1 -1
- data/spec/mongo/srv/monitor_spec.rb +1 -1
- data/spec/mongo/srv/result_spec.rb +1 -1
- data/spec/mongo/timeout_spec.rb +1 -1
- data/spec/mongo/tls_context_hooks_spec.rb +1 -1
- data/spec/mongo/uri/options_mapper_spec.rb +1605 -0
- data/spec/mongo/uri/srv_protocol_spec.rb +263 -4
- data/spec/mongo/uri_option_parsing_spec.rb +1 -1
- data/spec/mongo/uri_spec.rb +168 -11
- data/spec/mongo/utils_spec.rb +1 -1
- data/spec/mongo/write_concern/acknowledged_spec.rb +1 -1
- data/spec/mongo/write_concern/unacknowledged_spec.rb +1 -1
- data/spec/mongo/write_concern_spec.rb +1 -1
- data/spec/runners/auth.rb +1 -1
- data/spec/runners/change_streams/outcome.rb +1 -1
- data/spec/runners/change_streams/spec.rb +1 -1
- data/spec/runners/change_streams/test.rb +3 -3
- data/spec/runners/cmap/verifier.rb +2 -2
- data/spec/runners/cmap.rb +188 -45
- data/spec/runners/command_monitoring.rb +1 -1
- data/spec/runners/connection_string.rb +9 -1
- data/spec/runners/crud/context.rb +1 -1
- data/spec/runners/crud/operation.rb +15 -6
- data/spec/runners/crud/outcome.rb +1 -1
- data/spec/runners/crud/requirement.rb +12 -7
- data/spec/runners/crud/spec.rb +6 -1
- data/spec/runners/crud/test.rb +2 -10
- data/spec/runners/crud/test_base.rb +2 -2
- data/spec/runners/crud/verifier.rb +12 -4
- data/spec/runners/crud.rb +2 -2
- data/spec/runners/gridfs.rb +1 -1
- data/spec/runners/read_write_concern_document.rb +1 -1
- data/spec/runners/sdam/verifier.rb +1 -1
- data/spec/runners/sdam.rb +1 -1
- data/spec/runners/server_selection.rb +1 -1
- data/spec/runners/server_selection_rtt.rb +1 -1
- data/spec/runners/transactions/operation.rb +19 -15
- data/spec/runners/transactions/spec.rb +3 -3
- data/spec/runners/transactions/test.rb +75 -22
- data/spec/runners/transactions.rb +12 -9
- data/spec/runners/unified/ambiguous_operations.rb +13 -0
- data/spec/runners/unified/assertions.rb +163 -50
- data/spec/runners/unified/change_stream_operations.rb +22 -9
- data/spec/runners/unified/client_side_encryption_operations.rb +83 -0
- data/spec/runners/unified/crud_operations.rb +129 -22
- data/spec/runners/unified/ddl_operations.rb +160 -8
- data/spec/runners/unified/entity_map.rb +1 -1
- data/spec/runners/unified/error.rb +3 -2
- data/spec/runners/unified/event_subscriber.rb +9 -3
- data/spec/runners/unified/exceptions.rb +1 -1
- data/spec/runners/unified/grid_fs_operations.rb +59 -3
- data/spec/runners/unified/search_index_operations.rb +63 -0
- data/spec/runners/unified/support_operations.rb +115 -11
- data/spec/runners/unified/test.rb +204 -36
- data/spec/runners/unified/test_group.rb +1 -1
- data/spec/runners/unified/thread_operations.rb +73 -0
- data/spec/runners/unified.rb +15 -5
- data/spec/solo/clean_exit_spec.rb +7 -7
- data/spec/spec_helper.rb +2 -3
- data/spec/spec_tests/auth_spec.rb +1 -1
- data/spec/spec_tests/change_streams_unified_spec.rb +2 -1
- data/spec/spec_tests/client_side_encryption_spec.rb +25 -2
- data/spec/spec_tests/client_side_encryption_unified_spec.rb +26 -0
- data/spec/spec_tests/client_side_operations_timeout_spec.rb +15 -0
- data/spec/spec_tests/cmap_spec.rb +29 -15
- data/spec/spec_tests/collection_management_spec.rb +1 -1
- data/spec/spec_tests/command_monitoring_unified_spec.rb +1 -1
- data/spec/spec_tests/connection_string_spec.rb +1 -1
- data/spec/spec_tests/crud_spec.rb +1 -11
- data/spec/spec_tests/crud_unified_spec.rb +1 -1
- data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +43 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +105 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +122 -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 +859 -4
- 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 +14 -3
- 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 +3 -10
- 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 +90 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Compact.yml +83 -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 +938 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-DecryptExistingData.yml +67 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Delete.yml +101 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml +80 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFields-vs-jsonSchema.yml +103 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-EncryptedFieldsMap-defaults.yml +59 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-FindOneAndUpdate.yml +201 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Indexed.yml +97 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-InsertFind-Unindexed.yml +90 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-MissingKey.yml +44 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-NoEncryption.yml +45 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Update.yml +211 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-validatorAndPartialFieldExpression.yml +170 -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/timeoutMS.yml +67 -0
- 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/client_side_operations_timeout/bulkWrite.yml +87 -0
- data/spec/spec_tests/data/client_side_operations_timeout/change-streams.yml +358 -0
- data/spec/spec_tests/data/client_side_operations_timeout/close-cursors.yml +129 -0
- data/spec/spec_tests/data/client_side_operations_timeout/command-execution.yml +250 -0
- data/spec/spec_tests/data/client_side_operations_timeout/convenient-transactions.yml +113 -0
- data/spec/spec_tests/data/client_side_operations_timeout/cursors.yml +70 -0
- data/spec/spec_tests/data/client_side_operations_timeout/deprecated-options.yml +3982 -0
- data/spec/spec_tests/data/client_side_operations_timeout/error-transformations.yml +96 -0
- data/spec/spec_tests/data/client_side_operations_timeout/global-timeoutMS.yml +3236 -0
- data/spec/spec_tests/data/client_side_operations_timeout/gridfs-advanced.yml +207 -0
- data/spec/spec_tests/data/client_side_operations_timeout/gridfs-delete.yml +152 -0
- data/spec/spec_tests/data/client_side_operations_timeout/gridfs-download.yml +182 -0
- data/spec/spec_tests/data/client_side_operations_timeout/gridfs-find.yml +100 -0
- data/spec/spec_tests/data/client_side_operations_timeout/gridfs-upload.yml +249 -0
- data/spec/spec_tests/data/client_side_operations_timeout/legacy-timeouts.yml +204 -0
- data/spec/spec_tests/data/client_side_operations_timeout/non-tailable-cursors.yml +307 -0
- data/spec/spec_tests/data/client_side_operations_timeout/override-collection-timeoutMS.yml +1877 -0
- data/spec/spec_tests/data/client_side_operations_timeout/override-operation-timeoutMS.yml +1918 -0
- data/spec/spec_tests/data/client_side_operations_timeout/retryability-legacy-timeouts.yml +1676 -0
- data/spec/spec_tests/data/client_side_operations_timeout/retryability-timeoutMS.yml +2824 -0
- data/spec/spec_tests/data/client_side_operations_timeout/sessions-inherit-timeoutMS.yml +168 -0
- data/spec/spec_tests/data/client_side_operations_timeout/sessions-override-operation-timeoutMS.yml +171 -0
- data/spec/spec_tests/data/client_side_operations_timeout/sessions-override-timeoutMS.yml +168 -0
- data/spec/spec_tests/data/client_side_operations_timeout/tailable-awaitData.yml +247 -0
- data/spec/spec_tests/data/client_side_operations_timeout/tailable-non-awaitData.yml +181 -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 +2 -0
- 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-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 +9 -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 +35 -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 +8 -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/invalid-uris.yml +0 -10
- data/spec/spec_tests/data/connection_string/valid-options.yml +13 -0
- data/spec/spec_tests/data/crud/read/aggregate-collation.yml +1 -1
- data/spec/spec_tests/data/crud/read/count-collation.yml +1 -1
- data/spec/spec_tests/data/crud/read/distinct-collation.yml +1 -1
- data/spec/spec_tests/data/crud/read/find-collation.yml +1 -1
- data/spec/spec_tests/data/crud/write/bulkWrite-collation.yml +1 -1
- data/spec/spec_tests/data/crud/write/deleteMany-collation.yml +1 -1
- data/spec/spec_tests/data/crud/write/deleteOne-collation.yml +1 -1
- data/spec/spec_tests/data/crud/write/findOneAndDelete-collation.yml +1 -1
- data/spec/spec_tests/data/crud/write/findOneAndReplace-collation.yml +1 -1
- data/spec/spec_tests/data/crud/write/findOneAndUpdate-collation.yml +1 -1
- data/spec/spec_tests/data/crud/write/replaceOne-collation.yml +1 -1
- data/spec/spec_tests/data/crud/write/updateMany-collation.yml +1 -1
- data/spec/spec_tests/data/crud/write/updateOne-collation.yml +1 -1
- data/spec/spec_tests/data/crud_unified/aggregate-allowdiskuse.yml +75 -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 +6 -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 +6 -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 +2 -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 +2 -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 +49 -135
- 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-test-all-options.yml +377 -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 +2 -4
- 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/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/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 +5 -1
- 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 +5 -1
- data/spec/spec_tests/data/crud_unified/updateOne-validation.yml +37 -0
- data/spec/spec_tests/data/crud_unified/updateWithPipelines.yml +8 -14
- 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/index_management/createSearchIndex.yml +64 -0
- data/spec/spec_tests/data/index_management/createSearchIndexes.yml +86 -0
- data/spec/spec_tests/data/index_management/dropSearchIndex.yml +43 -0
- data/spec/spec_tests/data/index_management/listSearchIndexes.yml +91 -0
- data/spec/spec_tests/data/index_management/updateSearchIndex.yml +46 -0
- data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount-serverErrors-pre4.9.yml → legacy/estimatedDocumentCount-serverErrors.yml} +0 -2
- data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount-pre4.9.yml → legacy/estimatedDocumentCount.yml} +0 -2
- data/spec/spec_tests/data/retryable_reads/unified/handshakeError.yml +1342 -0
- data/spec/spec_tests/data/retryable_writes/{bulkWrite-serverErrors.yml → legacy/bulkWrite-serverErrors.yml} +1 -1
- data/spec/spec_tests/data/retryable_writes/{deleteOne-serverErrors.yml → legacy/deleteOne-serverErrors.yml} +1 -1
- data/spec/spec_tests/data/retryable_writes/{findOneAndDelete-serverErrors.yml → legacy/findOneAndDelete-serverErrors.yml} +1 -1
- data/spec/spec_tests/data/retryable_writes/{findOneAndReplace-serverErrors.yml → legacy/findOneAndReplace-serverErrors.yml} +1 -1
- data/spec/spec_tests/data/retryable_writes/{findOneAndUpdate-serverErrors.yml → legacy/findOneAndUpdate-serverErrors.yml} +1 -1
- data/spec/spec_tests/data/retryable_writes/{insertMany-serverErrors.yml → legacy/insertMany-serverErrors.yml} +1 -1
- data/spec/spec_tests/data/retryable_writes/{insertOne-serverErrors.yml → legacy/insertOne-serverErrors.yml} +5 -5
- data/spec/spec_tests/data/retryable_writes/{replaceOne-serverErrors.yml → legacy/replaceOne-serverErrors.yml} +1 -1
- data/spec/spec_tests/data/retryable_writes/{updateOne-serverErrors.yml → legacy/updateOne-serverErrors.yml} +1 -1
- data/spec/spec_tests/data/retryable_writes/unified/bulkWrite-serverErrors.yml +93 -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 +75 -0
- data/spec/spec_tests/data/run_command_unified/runCommand.yml +319 -0
- data/spec/spec_tests/data/sdam/errors/prefer-error-code.yml +2 -2
- data/spec/spec_tests/data/sdam/rs/electionId_precedence_setVersion.yml +62 -0
- 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 +20 -18
- 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 +1 -1
- 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 +9 -10
- 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 +23 -21
- data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +1 -1
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml +38 -39
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_primary.yml +38 -39
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +1 -1
- data/spec/spec_tests/data/sdam_monitoring/required_replica_set.yml +1 -1
- data/spec/spec_tests/data/sdam_monitoring/standalone.yml +1 -1
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.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 +6 -5
- 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 +2 -2
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/loadBalanced-true-txt.yml +5 -4
- 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/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/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-dirty-session-errors.yml +351 -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 +9 -3
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +1 -1
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +1 -1
- data/spec/spec_tests/data/transactions/error-labels.yml +1 -1
- data/spec/spec_tests/data/transactions/errors-client.yml +8 -9
- data/spec/spec_tests/data/transactions/mongos-recovery-token.yml +1 -1
- data/spec/spec_tests/data/transactions/retryable-abort-errorLabels.yml +0 -2
- data/spec/spec_tests/data/transactions/retryable-abort.yml +7 -9
- data/spec/spec_tests/data/transactions/retryable-commit-errorLabels.yml +0 -2
- data/spec/spec_tests/data/transactions/retryable-commit.yml +7 -9
- data/spec/spec_tests/data/transactions/retryable-writes.yml +0 -2
- 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 +1 -1
- 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-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 +22 -1
- data/spec/spec_tests/data/unified/valid-pass/poc-command-monitoring.yml +3 -3
- data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +19 -13
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +3 -3
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +9 -9
- data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +3 -4
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +1 -1
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +1 -1
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +6 -5
- data/spec/spec_tests/data/uri_options/srv-options.yml +96 -0
- data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +6 -4
- data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +7 -5
- data/spec/spec_tests/data/versioned_api/transaction-handling.yml +4 -4
- data/spec/spec_tests/gridfs_spec.rb +1 -1
- data/spec/spec_tests/gridfs_unified_spec.rb +13 -0
- data/spec/spec_tests/index_management_unified_spec.rb +13 -0
- data/spec/spec_tests/load_balancers_spec.rb +1 -1
- data/spec/spec_tests/max_staleness_spec.rb +1 -1
- data/spec/spec_tests/read_write_concern_connection_string_spec.rb +1 -1
- data/spec/spec_tests/read_write_concern_document_spec.rb +1 -1
- data/spec/spec_tests/read_write_concern_operaton_spec.rb +1 -1
- data/spec/spec_tests/retryable_reads_spec.rb +7 -2
- data/spec/spec_tests/retryable_reads_unified_spec.rb +22 -0
- data/spec/spec_tests/retryable_writes_spec.rb +5 -2
- data/spec/spec_tests/retryable_writes_unified_spec.rb +21 -0
- data/spec/spec_tests/run_command_unified_spec.rb +13 -0
- data/spec/spec_tests/sdam_monitoring_spec.rb +1 -1
- data/spec/spec_tests/sdam_spec.rb +5 -1
- data/spec/spec_tests/sdam_unified_spec.rb +15 -0
- data/spec/spec_tests/seed_list_discovery_spec.rb +11 -2
- data/spec/spec_tests/server_selection_rtt_spec.rb +7 -7
- data/spec/spec_tests/server_selection_spec.rb +1 -1
- data/spec/spec_tests/sessions_unified_spec.rb +1 -1
- data/spec/spec_tests/transactions_api_spec.rb +1 -1
- data/spec/spec_tests/transactions_spec.rb +1 -1
- data/spec/spec_tests/transactions_unified_spec.rb +3 -2
- data/spec/spec_tests/unified_spec.rb +2 -2
- data/spec/spec_tests/uri_options_spec.rb +1 -1
- data/spec/spec_tests/versioned_api_spec.rb +1 -1
- data/spec/stress/cleanup_spec.rb +1 -1
- data/spec/stress/connection_pool_stress_spec.rb +1 -62
- data/spec/stress/connection_pool_timing_spec.rb +12 -36
- data/spec/stress/fork_reconnect_stress_spec.rb +10 -10
- data/spec/stress/push_monitor_close_spec.rb +1 -1
- data/spec/support/authorization.rb +2 -2
- data/spec/support/aws_utils/base.rb +1 -1
- data/spec/support/aws_utils/inspector.rb +1 -1
- data/spec/support/aws_utils/orchestrator.rb +20 -8
- data/spec/support/aws_utils/provisioner.rb +1 -1
- data/spec/support/aws_utils.rb +4 -3
- data/spec/support/background_thread_registry.rb +4 -14
- data/spec/support/certificates/atlas-ocsp-ca.crt +89 -79
- data/spec/support/certificates/atlas-ocsp.crt +117 -122
- data/spec/support/certificates/retrieve-atlas-cert +40 -0
- data/spec/support/client_registry.rb +6 -2
- data/spec/support/client_registry_macros.rb +1 -1
- data/spec/support/cluster_tools.rb +17 -12
- data/spec/support/common_shortcuts.rb +53 -6
- data/spec/support/constraints.rb +21 -1
- 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 +269 -14
- data/spec/support/dns.rb +1 -1
- data/spec/support/json_ext_formatter.rb +1 -1
- data/spec/support/keyword_struct.rb +1 -1
- data/spec/support/local_resource_registry.rb +1 -1
- data/spec/support/macros.rb +29 -0
- data/spec/support/matchers.rb +5 -5
- data/spec/support/mongos_macros.rb +24 -0
- data/spec/support/monitoring_ext.rb +1 -1
- data/spec/support/ocsp +1 -1
- data/spec/support/primary_socket.rb +1 -1
- data/spec/support/recording_logger.rb +27 -0
- data/spec/support/sdam_formatter_integration.rb +1 -1
- data/spec/support/shared/app_metadata.rb +15 -3
- data/spec/support/shared/auth_context.rb +1 -0
- data/spec/support/shared/protocol.rb +1 -1
- data/spec/support/shared/scram_conversation.rb +3 -2
- data/spec/support/shared/server_selector.rb +1 -1
- data/spec/support/shared/session.rb +16 -10
- data/spec/support/spec_config.rb +133 -2
- data/spec/support/spec_setup.rb +3 -3
- data/spec/support/using_hash.rb +11 -2
- data/spec/support/utils.rb +280 -229
- metadata +1790 -1289
- checksums.yaml.gz.sig +0 -0
- data/lib/mongo/operation/aggregate/command.rb +0 -55
- data/lib/mongo/operation/collections_info/command.rb +0 -48
- data/lib/mongo/operation/count/command.rb +0 -47
- data/lib/mongo/operation/create/command.rb +0 -47
- data/lib/mongo/operation/create_index/command.rb +0 -61
- data/lib/mongo/operation/delete/command.rb +0 -52
- data/lib/mongo/operation/delete/legacy.rb +0 -64
- data/lib/mongo/operation/distinct/command.rb +0 -47
- data/lib/mongo/operation/explain/command.rb +0 -58
- data/lib/mongo/operation/explain/legacy.rb +0 -52
- data/lib/mongo/operation/find/builder/legacy.rb +0 -123
- data/lib/mongo/operation/find/command.rb +0 -51
- data/lib/mongo/operation/find/legacy/result.rb +0 -46
- data/lib/mongo/operation/find/legacy.rb +0 -52
- data/lib/mongo/operation/get_more/command.rb +0 -43
- data/lib/mongo/operation/indexes/command.rb +0 -42
- data/lib/mongo/operation/indexes/legacy.rb +0 -48
- data/lib/mongo/operation/insert/command.rb +0 -59
- data/lib/mongo/operation/insert/legacy.rb +0 -68
- data/lib/mongo/operation/kill_cursors/command.rb +0 -48
- data/lib/mongo/operation/list_collections/command.rb +0 -46
- data/lib/mongo/operation/map_reduce/command.rb +0 -51
- data/lib/mongo/operation/parallel_scan/command.rb +0 -57
- data/lib/mongo/operation/remove_user/command.rb +0 -46
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +0 -44
- data/lib/mongo/operation/update/command.rb +0 -53
- data/lib/mongo/operation/update/legacy/result.rb +0 -112
- data/lib/mongo/operation/update/legacy.rb +0 -76
- data/lib/mongo/operation/users_info/command.rb +0 -46
- data/lib/mongo/operation/write_command/command.rb +0 -51
- data/lib/mongo/protocol/delete.rb +0 -172
- data/lib/mongo/protocol/insert.rb +0 -181
- data/lib/mongo/protocol/update.rb +0 -214
- data/spec/mongo/dbref_spec.rb +0 -152
- data/spec/mongo/operation/delete/command_spec.rb +0 -115
- data/spec/mongo/operation/find/legacy_spec.rb +0 -131
- data/spec/mongo/operation/get_more_spec.rb +0 -63
- data/spec/mongo/operation/insert/command_spec.rb +0 -118
- data/spec/mongo/operation/kill_cursors_spec.rb +0 -47
- data/spec/mongo/operation/update/command_spec.rb +0 -122
- data/spec/mongo/protocol/delete_spec.rb +0 -185
- data/spec/mongo/protocol/insert_spec.rb +0 -179
- data/spec/mongo/protocol/update_spec.rb +0 -204
- data/spec/mongo/server/round_trip_time_averager_spec.rb +0 -48
- data/spec/shared/LICENSE +0 -20
- data/spec/shared/bin/get-mongodb-download-url +0 -17
- data/spec/shared/bin/s3-copy +0 -45
- data/spec/shared/bin/s3-upload +0 -69
- data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
- data/spec/shared/lib/mrss/cluster_config.rb +0 -231
- data/spec/shared/lib/mrss/constraints.rb +0 -385
- data/spec/shared/lib/mrss/docker_runner.rb +0 -271
- data/spec/shared/lib/mrss/event_subscriber.rb +0 -200
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -191
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
- data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
- data/spec/shared/lib/mrss/utils.rb +0 -15
- data/spec/shared/share/Dockerfile.erb +0 -323
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/shared/shlib/distro.sh +0 -73
- data/spec/shared/shlib/server.sh +0 -367
- data/spec/shared/shlib/set_env.sh +0 -131
- data/spec/spec_tests/change_streams_spec.rb +0 -93
- data/spec/spec_tests/command_monitoring_spec.rb +0 -71
- data/spec/spec_tests/data/change_streams/change-streams-errors.yml +0 -101
- data/spec/spec_tests/data/change_streams/change-streams-resume-allowlist.yml +0 -1173
- data/spec/spec_tests/data/change_streams/change-streams-resume-errorLabels.yml +0 -1105
- data/spec/spec_tests/data/change_streams/change-streams.yml +0 -535
- 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 -111
- 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 -39
- 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/estimatedDocumentCount-4.9.yml +0 -60
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors-4.9.yml +0 -146
- 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 -85
- data/spec/spec_tests/data/sdam_integration/find-shutdown-error.yml +0 -118
- data/spec/spec_tests/data/sdam_integration/hello-command-error.yml +0 -160
- data/spec/spec_tests/data/sdam_integration/hello-network-error.yml +0 -158
- data/spec/spec_tests/data/sdam_integration/hello-timeout.yml +0 -225
- data/spec/spec_tests/data/sdam_integration/insert-network-error.yml +0 -88
- data/spec/spec_tests/data/sdam_integration/insert-shutdown-error.yml +0 -117
- data/spec/spec_tests/data/sdam_integration/rediscover-quickly-after-step-down.yml +0 -98
- data/spec/spec_tests/sdam_integration_spec.rb +0 -16
- data/spec/support/crypt/corpus/corpus_encrypted.json +0 -4152
- data/spec/support/session_registry.rb +0 -55
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
- /data/spec/spec_tests/data/retryable_reads/{aggregate-merge.yml → legacy/aggregate-merge.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{aggregate-serverErrors.yml → legacy/aggregate-serverErrors.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{aggregate.yml → legacy/aggregate.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{changeStreams-client.watch-serverErrors.yml → legacy/changeStreams-client.watch-serverErrors.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{changeStreams-client.watch.yml → legacy/changeStreams-client.watch.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{changeStreams-db.coll.watch-serverErrors.yml → legacy/changeStreams-db.coll.watch-serverErrors.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{changeStreams-db.coll.watch.yml → legacy/changeStreams-db.coll.watch.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{changeStreams-db.watch-serverErrors.yml → legacy/changeStreams-db.watch-serverErrors.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{changeStreams-db.watch.yml → legacy/changeStreams-db.watch.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{count-serverErrors.yml → legacy/count-serverErrors.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-serverErrors.yml → legacy/countDocuments-serverErrors.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-serverErrors.yml → legacy/distinct-serverErrors.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{distinct.yml → legacy/distinct.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{find-serverErrors.yml → legacy/find-serverErrors.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-serverErrors.yml → legacy/findOne-serverErrors.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-serverErrors.yml → legacy/gridfs-download-serverErrors.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-serverErrors.yml → legacy/gridfs-downloadByName-serverErrors.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-serverErrors.yml → legacy/listCollectionNames-serverErrors.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-serverErrors.yml → legacy/listCollectionObjects-serverErrors.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-serverErrors.yml → legacy/listCollections-serverErrors.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-serverErrors.yml → legacy/listDatabaseNames-serverErrors.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-serverErrors.yml → legacy/listDatabaseObjects-serverErrors.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-serverErrors.yml → legacy/listDatabases-serverErrors.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listDatabases.yml → legacy/listDatabases.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listIndexNames-serverErrors.yml → legacy/listIndexNames-serverErrors.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listIndexNames.yml → legacy/listIndexNames.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listIndexes-serverErrors.yml → legacy/listIndexes-serverErrors.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{listIndexes.yml → legacy/listIndexes.yml} +0 -0
- /data/spec/spec_tests/data/retryable_reads/{mapReduce.yml → legacy/mapReduce.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/{bulkWrite.yml → legacy/bulkWrite.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/lib/mongo/collection.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
#
|
2
|
+
# rubocop:todo all
|
3
3
|
|
4
4
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
5
5
|
#
|
@@ -17,6 +17,8 @@
|
|
17
17
|
|
18
18
|
require 'mongo/bulk_write'
|
19
19
|
require 'mongo/collection/view'
|
20
|
+
require 'mongo/collection/helpers'
|
21
|
+
require 'mongo/collection/queryable_encryption'
|
20
22
|
|
21
23
|
module Mongo
|
22
24
|
|
@@ -27,6 +29,8 @@ module Mongo
|
|
27
29
|
class Collection
|
28
30
|
extend Forwardable
|
29
31
|
include Retryable
|
32
|
+
include QueryableEncryption
|
33
|
+
include Helpers
|
30
34
|
|
31
35
|
# The capped option.
|
32
36
|
#
|
@@ -47,8 +51,8 @@ module Mongo
|
|
47
51
|
# @return [ Hash ] The collection options.
|
48
52
|
attr_reader :options
|
49
53
|
|
50
|
-
# Get client, cluster, read preference,
|
51
|
-
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
|
52
56
|
|
53
57
|
# Delegate to the cluster for the next primary.
|
54
58
|
def_delegators :cluster, :next_primary
|
@@ -58,10 +62,17 @@ module Mongo
|
|
58
62
|
# @since 2.1.0
|
59
63
|
CHANGEABLE_OPTIONS = [ :read, :read_concern, :write, :write_concern ].freeze
|
60
64
|
|
61
|
-
# Options
|
62
|
-
|
65
|
+
# Options map to transform create collection options.
|
66
|
+
#
|
67
|
+
# @api private
|
68
|
+
CREATE_COLLECTION_OPTIONS = {
|
63
69
|
:time_series => :timeseries,
|
64
|
-
:expire_after => :expireAfterSeconds
|
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
|
65
76
|
}
|
66
77
|
|
67
78
|
# Check if a collection is equal to another object. Will check the name and
|
@@ -72,7 +83,7 @@ module Mongo
|
|
72
83
|
#
|
73
84
|
# @param [ Object ] other The object to check.
|
74
85
|
#
|
75
|
-
# @return [ true
|
86
|
+
# @return [ true | false ] If the objects are equal.
|
76
87
|
#
|
77
88
|
# @since 2.0.0
|
78
89
|
def ==(other)
|
@@ -89,15 +100,63 @@ module Mongo
|
|
89
100
|
# @param [ String, Symbol ] name The collection name.
|
90
101
|
# @param [ Hash ] options The collection options.
|
91
102
|
#
|
92
|
-
# @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 options [ Session ] :session The session to use for the operation.
|
138
|
+
# @option options [ Integer ] :size The size of the capped collection.
|
139
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
140
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
141
|
+
# The default value is unset which means the value is inherited from
|
142
|
+
# the database or the client.
|
143
|
+
# @option opts [ Hash ] :time_series Create a time-series collection.
|
144
|
+
# The hash may have the following items:
|
145
|
+
# - *:timeField* -- The name of the field which contains the date in each
|
146
|
+
# time series document.
|
147
|
+
# - *:metaField* -- The name of the field which contains metadata in each
|
148
|
+
# time series document.
|
149
|
+
# - *:granularity* -- Set the granularity to the value that is the closest
|
150
|
+
# match to the time span between consecutive incoming measurements.
|
151
|
+
# Possible values are "seconds" (default), "minutes", and "hours".
|
152
|
+
# @option opts [ Hash ] :validator Hash describing document validation
|
153
|
+
# options for the collection.
|
154
|
+
# @option opts [ String ] :view_on The name of the source collection or
|
155
|
+
# view from which to create a view.
|
156
|
+
# @option opts [ Hash ] :write Deprecated. Equivalent to :write_concern
|
93
157
|
# option.
|
94
|
-
# @option
|
158
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
95
159
|
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
96
|
-
# @option options [ Hash ] :time_series Create a time-series collection.
|
97
|
-
# See https://docs.mongodb.com/manual/core/timeseries-collections/ for more
|
98
|
-
# information about time-series collection.
|
99
|
-
# @option options [ Integer ] :expire_after Number indicating
|
100
|
-
# after how many seconds old time-series data should be deleted.
|
101
160
|
#
|
102
161
|
# @since 2.0.0
|
103
162
|
def initialize(database, name, options = {})
|
@@ -108,6 +167,7 @@ module Mongo
|
|
108
167
|
@database = database
|
109
168
|
@name = name.to_s.freeze
|
110
169
|
@options = options.dup
|
170
|
+
@timeout_ms = options.delete(:timeout_ms)
|
111
171
|
=begin WriteConcern object support
|
112
172
|
if @options[:write_concern].is_a?(WriteConcern::Base)
|
113
173
|
# Cache the instance so that we do not needlessly reconstruct it.
|
@@ -118,7 +178,11 @@ module Mongo
|
|
118
178
|
@options.freeze
|
119
179
|
end
|
120
180
|
|
121
|
-
# Get the read concern for this collection instance.
|
181
|
+
# Get the effective read concern for this collection instance.
|
182
|
+
#
|
183
|
+
# If a read concern was provided in collection options, that read concern
|
184
|
+
# will be returned, otherwise the database's effective read concern will
|
185
|
+
# be returned.
|
122
186
|
#
|
123
187
|
# @example Get the read concern.
|
124
188
|
# collection.read_concern
|
@@ -130,7 +194,7 @@ module Mongo
|
|
130
194
|
options[:read_concern] || database.read_concern
|
131
195
|
end
|
132
196
|
|
133
|
-
# Get the server selector
|
197
|
+
# Get the server selector for this collection.
|
134
198
|
#
|
135
199
|
# @example Get the server selector.
|
136
200
|
# collection.server_selector
|
@@ -142,7 +206,11 @@ module Mongo
|
|
142
206
|
@server_selector ||= ServerSelector.get(read_preference || database.server_selector)
|
143
207
|
end
|
144
208
|
|
145
|
-
# Get the read preference
|
209
|
+
# Get the effective read preference for this collection.
|
210
|
+
#
|
211
|
+
# If a read preference was provided in collection options, that read
|
212
|
+
# preference will be returned, otherwise the database's effective read
|
213
|
+
# preference will be returned.
|
146
214
|
#
|
147
215
|
# @example Get the read preference.
|
148
216
|
# collection.read_preference
|
@@ -154,7 +222,11 @@ module Mongo
|
|
154
222
|
@read_preference ||= options[:read] || database.read_preference
|
155
223
|
end
|
156
224
|
|
157
|
-
# Get the write concern on this collection.
|
225
|
+
# Get the effective write concern on this collection.
|
226
|
+
#
|
227
|
+
# If a write concern was provided in collection options, that write
|
228
|
+
# concern will be returned, otherwise the database's effective write
|
229
|
+
# concern will be returned.
|
158
230
|
#
|
159
231
|
# @example Get the write concern.
|
160
232
|
# collection.write_concern
|
@@ -167,7 +239,8 @@ module Mongo
|
|
167
239
|
options[:write_concern] || options[:write] || database.write_concern)
|
168
240
|
end
|
169
241
|
|
170
|
-
# Get the write concern for
|
242
|
+
# Get the write concern to use for an operation on this collection,
|
243
|
+
# given a session.
|
171
244
|
#
|
172
245
|
# If the session is in a transaction and the collection
|
173
246
|
# has an unacknowledged write concern, remove the write
|
@@ -189,17 +262,37 @@ module Mongo
|
|
189
262
|
wc
|
190
263
|
end
|
191
264
|
|
192
|
-
# Provides a new collection with either a new read preference
|
193
|
-
# merged over the existing read preference /
|
265
|
+
# Provides a new collection with either a new read preference, new read
|
266
|
+
# concern or new write concern merged over the existing read preference /
|
267
|
+
# read concern / write concern.
|
194
268
|
#
|
195
269
|
# @example Get a collection with a changed read preference.
|
196
270
|
# collection.with(read: { mode: :primary_preferred })
|
271
|
+
|
272
|
+
# @example Get a collection with a changed read concern.
|
273
|
+
# collection.with(read_concern: { level: :majority })
|
197
274
|
#
|
198
275
|
# @example Get a collection with a changed write concern.
|
199
276
|
# collection.with(write_concern: { w: 3 })
|
200
|
-
|
277
|
+
#
|
201
278
|
# @param [ Hash ] new_options The new options to use.
|
202
279
|
#
|
280
|
+
# @option new_options [ Hash ] :read The read preference options.
|
281
|
+
# The hash may have the following items:
|
282
|
+
# - *:mode* -- read preference specified as a symbol; valid values are
|
283
|
+
# *:primary*, *:primary_preferred*, *:secondary*, *:secondary_preferred*
|
284
|
+
# and *:nearest*.
|
285
|
+
# - *:tag_sets* -- an array of hashes.
|
286
|
+
# - *:local_threshold*.
|
287
|
+
# @option new_options [ Hash ] :read_concern The read concern options hash,
|
288
|
+
# with the following optional keys:
|
289
|
+
# - *:level* -- the read preference level as a symbol; valid values
|
290
|
+
# are *:local*, *:majority*, and *:snapshot*
|
291
|
+
# @option new_options [ Hash ] :write Deprecated. Equivalent to :write_concern
|
292
|
+
# option.
|
293
|
+
# @option new_options [ Hash ] :write_concern The write concern options.
|
294
|
+
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
295
|
+
#
|
203
296
|
# @return [ Mongo::Collection ] A new collection instance.
|
204
297
|
#
|
205
298
|
# @since 2.1.0
|
@@ -222,11 +315,13 @@ module Mongo
|
|
222
315
|
# @example Is the collection capped?
|
223
316
|
# collection.capped?
|
224
317
|
#
|
225
|
-
# @return [ true
|
318
|
+
# @return [ true | false ] If the collection is capped.
|
226
319
|
#
|
227
320
|
# @since 2.0.0
|
228
321
|
def capped?
|
229
|
-
database.
|
322
|
+
database.list_collections(filter: { name: name })
|
323
|
+
.first
|
324
|
+
&.dig('options', CAPPED) || false
|
230
325
|
end
|
231
326
|
|
232
327
|
# Force the collection to be created in the database.
|
@@ -236,26 +331,67 @@ module Mongo
|
|
236
331
|
#
|
237
332
|
# @param [ Hash ] opts The options for the create operation.
|
238
333
|
#
|
239
|
-
# @option opts [
|
240
|
-
# @option opts [ Hash ] :
|
241
|
-
#
|
334
|
+
# @option opts [ true | false ] :capped Create a fixed-sized collection.
|
335
|
+
# @option opts [ Hash ] :change_stream_pre_and_post_images Used to enable
|
336
|
+
# pre- and post-images on the created collection.
|
337
|
+
# The hash may have the following items:
|
338
|
+
# - *:enabled* -- true or false.
|
339
|
+
# @option opts [ Hash ] :clustered_index Create a clustered index.
|
340
|
+
# This option specifies how this collection should be clustered on _id.
|
341
|
+
# The hash may have the following items:
|
342
|
+
# - *:key* -- The clustered index key field. Must be set to { _id: 1 }.
|
343
|
+
# - *:unique* -- Must be set to true. The collection will not accept
|
344
|
+
# inserted or updated documents where the clustered index key value
|
345
|
+
# matches an existing value in the index.
|
346
|
+
# - *:name* -- Optional. A name that uniquely identifies the clustered index.
|
347
|
+
# @option opts [ Hash ] :collation The collation to use when creating the
|
348
|
+
# collection. This option will not be sent to the server when calling
|
349
|
+
# collection methods.
|
350
|
+
# @option opts [ Hash ] :encrypted_fields Hash describing encrypted fields
|
351
|
+
# for queryable encryption.
|
242
352
|
# @option opts [ Integer ] :expire_after Number indicating
|
243
353
|
# after how many seconds old time-series data should be deleted.
|
354
|
+
# @option opts [ Integer ] :max The maximum number of documents in a
|
355
|
+
# capped collection. The size limit takes precedents over max.
|
356
|
+
# @option opts [ Array<Hash> ] :pipeline An array of pipeline stages.
|
357
|
+
# A view will be created by applying this pipeline to the view_on
|
358
|
+
# collection or view.
|
359
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
360
|
+
# @option opts [ Integer ] :size The size of the capped collection.
|
361
|
+
# @option opts [ Hash ] :time_series Create a time-series collection.
|
362
|
+
# The hash may have the following items:
|
363
|
+
# - *:timeField* -- The name of the field which contains the date in each
|
364
|
+
# time series document.
|
365
|
+
# - *:metaField* -- The name of the field which contains metadata in each
|
366
|
+
# time series document.
|
367
|
+
# - *:granularity* -- Set the granularity to the value that is the closest
|
368
|
+
# match to the time span between consecutive incoming measurements.
|
369
|
+
# Possible values are "seconds" (default), "minutes", and "hours".
|
370
|
+
# @option opts [ Hash ] :validator Hash describing document validation
|
371
|
+
# options for the collection.
|
372
|
+
# @option opts [ String ] :view_on The name of the source collection or
|
373
|
+
# view from which to create a view.
|
374
|
+
# @option opts [ Hash ] :write Deprecated. Equivalent to :write_concern
|
375
|
+
# option.
|
376
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
377
|
+
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
244
378
|
#
|
245
379
|
# @return [ Result ] The result of the command.
|
246
380
|
#
|
247
381
|
# @since 2.0.0
|
248
382
|
def create(opts = {})
|
249
383
|
# Passing read options to create command causes it to break.
|
250
|
-
# Filter the read options out.
|
384
|
+
# Filter the read options out. Session is also excluded here as it gets
|
385
|
+
# used by the call to with_session and should not be part of the
|
386
|
+
# operation. If it gets passed to the operation it would fail BSON
|
387
|
+
# serialization.
|
251
388
|
# TODO put the list of read options in a class-level constant when
|
252
389
|
# we figure out what the full set of them is.
|
253
|
-
options = Hash[self.options.reject do |key, value|
|
254
|
-
%w(read read_preference read_concern).include?(key.to_s)
|
390
|
+
options = Hash[self.options.merge(opts).reject do |key, value|
|
391
|
+
%w(read read_preference read_concern session).include?(key.to_s)
|
255
392
|
end]
|
256
|
-
options.
|
257
|
-
|
258
|
-
TIME_SERIES_OPTIONS.each do |ruby_key, server_key|
|
393
|
+
# Converting Ruby options to server style.
|
394
|
+
CREATE_COLLECTION_OPTIONS.each do |ruby_key, server_key|
|
259
395
|
if options.key?(ruby_key)
|
260
396
|
options[server_key] = options.delete(ruby_key)
|
261
397
|
end
|
@@ -270,21 +406,31 @@ module Mongo
|
|
270
406
|
self.write_concern
|
271
407
|
end
|
272
408
|
|
273
|
-
context = Operation::Context.new(
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
409
|
+
context = Operation::Context.new(
|
410
|
+
client: client,
|
411
|
+
session: session
|
412
|
+
)
|
413
|
+
maybe_create_qe_collections(opts[:encrypted_fields], client, session) do |encrypted_fields|
|
414
|
+
Operation::Create.new(
|
415
|
+
selector: operation,
|
416
|
+
db_name: database.name,
|
417
|
+
write_concern: write_concern,
|
418
|
+
session: session,
|
419
|
+
# Note that these are collection options, collation isn't
|
420
|
+
# taken from options passed to the create method.
|
421
|
+
collation: options[:collation] || options['collation'],
|
422
|
+
encrypted_fields: encrypted_fields,
|
423
|
+
validator: options[:validator],
|
424
|
+
).execute(
|
425
|
+
next_primary(nil, session),
|
426
|
+
context: context
|
427
|
+
)
|
428
|
+
end
|
283
429
|
end
|
284
430
|
end
|
285
431
|
|
286
432
|
# Drop the collection. Will also drop all indexes associated with the
|
287
|
-
# collection.
|
433
|
+
# collection, as well as associated queryable encryption collections.
|
288
434
|
#
|
289
435
|
# @note An error returned if the collection doesn't exist is suppressed.
|
290
436
|
#
|
@@ -293,33 +439,40 @@ module Mongo
|
|
293
439
|
#
|
294
440
|
# @param [ Hash ] opts The options for the drop operation.
|
295
441
|
#
|
296
|
-
# @option
|
442
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
297
443
|
# @option opts [ Hash ] :write_concern The write concern options.
|
444
|
+
# @option opts [ Hash | nil ] :encrypted_fields Encrypted fields hash that
|
445
|
+
# was provided to `create` collection helper.
|
446
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
447
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
448
|
+
# The default value is unset which means the value is inherited from
|
449
|
+
# the collection or the database or the client.
|
298
450
|
#
|
299
451
|
# @return [ Result ] The result of the command.
|
300
452
|
#
|
301
453
|
# @since 2.0.0
|
302
454
|
def drop(opts = {})
|
303
|
-
client.
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
455
|
+
client.with_session(opts) do |session|
|
456
|
+
maybe_drop_emm_collections(opts[:encrypted_fields], client, session) do
|
457
|
+
temp_write_concern = write_concern
|
458
|
+
write_concern = if opts[:write_concern]
|
459
|
+
WriteConcern.get(opts[:write_concern])
|
460
|
+
else
|
461
|
+
temp_write_concern
|
462
|
+
end
|
463
|
+
context = Operation::Context.new(
|
464
|
+
client: client,
|
465
|
+
session: session,
|
466
|
+
operation_timeouts: operation_timeouts(opts)
|
467
|
+
)
|
468
|
+
operation = Operation::Drop.new({
|
469
|
+
selector: { :drop => name },
|
470
|
+
db_name: database.name,
|
471
|
+
write_concern: write_concern,
|
472
|
+
session: session,
|
473
|
+
})
|
474
|
+
do_drop(operation, session, context)
|
309
475
|
end
|
310
|
-
Operation::Drop.new({
|
311
|
-
selector: { :drop => name },
|
312
|
-
db_name: database.name,
|
313
|
-
write_concern: write_concern,
|
314
|
-
session: session,
|
315
|
-
}).execute(next_primary(nil, session), context: Operation::Context.new(client: client, session: session))
|
316
|
-
end
|
317
|
-
rescue Error::OperationFailure => ex
|
318
|
-
# NamespaceNotFound
|
319
|
-
if ex.code == 26 || ex.code.nil? && ex.message =~ /ns not found/
|
320
|
-
false
|
321
|
-
else
|
322
|
-
raise
|
323
476
|
end
|
324
477
|
end
|
325
478
|
|
@@ -334,26 +487,28 @@ module Mongo
|
|
334
487
|
# @param [ Hash ] filter The filter to use in the find.
|
335
488
|
# @param [ Hash ] options The options for the find.
|
336
489
|
#
|
337
|
-
# @option options [ true
|
490
|
+
# @option options [ true | false ] :allow_disk_use When set to true, the
|
338
491
|
# server can write temporary data to disk while executing the find
|
339
492
|
# operation. This option is only available on MongoDB server versions
|
340
493
|
# 4.4 and newer.
|
341
|
-
# @option options [ true
|
494
|
+
# @option options [ true | false ] :allow_partial_results Allows the query to get partial
|
342
495
|
# results if some shards are down.
|
343
496
|
# @option options [ Integer ] :batch_size The number of documents returned in each batch
|
344
497
|
# of results from MongoDB.
|
345
498
|
# @option options [ Hash ] :collation The collation to use.
|
346
|
-
# @option options [
|
499
|
+
# @option options [ Object ] :comment A user-provided comment to attach to
|
500
|
+
# this command.
|
347
501
|
# @option options [ :tailable, :tailable_await ] :cursor_type The type of cursor to use.
|
348
502
|
# @option options [ Integer ] :limit The max number of docs to return from the query.
|
349
|
-
# @option options [ Integer ] :max_time_ms
|
350
|
-
#
|
503
|
+
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
504
|
+
# allow the query to run, in milliseconds. This option is deprecated, use
|
505
|
+
# :timeout_ms instead.
|
351
506
|
# @option options [ Hash ] :modifiers A document containing meta-operators modifying the
|
352
507
|
# output or behavior of a query.
|
353
|
-
# @option options [ true
|
508
|
+
# @option options [ true | false ] :no_cursor_timeout The server normally times out idle
|
354
509
|
# cursors after an inactivity period (10 minutes) to prevent excess memory use.
|
355
510
|
# Set this option to prevent that.
|
356
|
-
# @option options [ true
|
511
|
+
# @option options [ true | false ] :oplog_replay For internal replication
|
357
512
|
# use only, applications should not set this option.
|
358
513
|
# @option options [ Hash ] :projection The fields to include or exclude from each doc
|
359
514
|
# in the result set.
|
@@ -361,6 +516,13 @@ module Mongo
|
|
361
516
|
# @option options [ Integer ] :skip The number of docs to skip before returning results.
|
362
517
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
363
518
|
# will be sorted.
|
519
|
+
# @option options [ :cursor_lifetime | :iteration ] :timeout_mode How to interpret
|
520
|
+
# :timeout_ms (whether it applies to the lifetime of the cursor, or per
|
521
|
+
# iteration).
|
522
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
523
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
524
|
+
# The default value is unset which means the value is inherited from
|
525
|
+
# the collection or the database or the client.
|
364
526
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
365
527
|
# See the server documentation for details.
|
366
528
|
#
|
@@ -379,26 +541,28 @@ module Mongo
|
|
379
541
|
# @param [ Array<Hash> ] pipeline The aggregation pipeline.
|
380
542
|
# @param [ Hash ] options The aggregation options.
|
381
543
|
#
|
382
|
-
# @option options [ true
|
544
|
+
# @option options [ true | false ] :allow_disk_use Set to true if disk
|
383
545
|
# usage is allowed during the aggregation.
|
384
546
|
# @option options [ Integer ] :batch_size The number of documents to return
|
385
547
|
# per batch.
|
386
|
-
# @option options [ true
|
548
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
387
549
|
# not to skip document level validation.
|
388
550
|
# @option options [ Hash ] :collation The collation to use.
|
389
|
-
# @option options [
|
551
|
+
# @option options [ Object ] :comment A user-provided
|
552
|
+
# comment to attach to this command.
|
390
553
|
# @option options [ String ] :hint The index to use for the aggregation.
|
391
554
|
# @option options [ Hash ] :let Mapping of variables to use in the pipeline.
|
392
555
|
# See the server documentation for details.
|
393
|
-
# @option options [ Integer ] :max_time_ms The maximum amount of time
|
394
|
-
#
|
395
|
-
#
|
396
|
-
# will request that the server provide results using a cursor. Note that
|
397
|
-
# as of server version 3.6, aggregations always provide results using a
|
398
|
-
# cursor and this option is therefore not valid.
|
556
|
+
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
557
|
+
# allow the query to run, in milliseconds. This option is deprecated, use
|
558
|
+
# :timeout_ms instead.
|
399
559
|
# @option options [ Session ] :session The session to use.
|
560
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
561
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
562
|
+
# The default value is unset which means the value is inherited from
|
563
|
+
# the collection or the database or the client.
|
400
564
|
#
|
401
|
-
# @return [ Aggregation ] The aggregation object.
|
565
|
+
# @return [ View::Aggregation ] The aggregation object.
|
402
566
|
#
|
403
567
|
# @since 2.1.0
|
404
568
|
def aggregate(pipeline, options = {})
|
@@ -416,11 +580,35 @@ module Mongo
|
|
416
580
|
# @param [ Array<Hash> ] pipeline Optional additional filter operators.
|
417
581
|
# @param [ Hash ] options The change stream options.
|
418
582
|
#
|
419
|
-
# @option options [ String ] :full_document Allowed values:
|
420
|
-
#
|
421
|
-
#
|
422
|
-
#
|
423
|
-
#
|
583
|
+
# @option options [ String ] :full_document Allowed values: nil, 'default',
|
584
|
+
# 'updateLookup', 'whenAvailable', 'required'.
|
585
|
+
#
|
586
|
+
# The default is to not send a value (i.e. nil), which is equivalent to
|
587
|
+
# 'default'. By default, the change notification for partial updates will
|
588
|
+
# include a delta describing the changes to the document.
|
589
|
+
#
|
590
|
+
# When set to 'updateLookup', the change notification for partial updates
|
591
|
+
# will include both a delta describing the changes to the document as well
|
592
|
+
# as a copy of the entire document that was changed from some time after
|
593
|
+
# the change occurred.
|
594
|
+
#
|
595
|
+
# When set to 'whenAvailable', configures the change stream to return the
|
596
|
+
# post-image of the modified document for replace and update change events
|
597
|
+
# if the post-image for this event is available.
|
598
|
+
#
|
599
|
+
# When set to 'required', the same behavior as 'whenAvailable' except that
|
600
|
+
# an error is raised if the post-image is not available.
|
601
|
+
# @option options [ String ] :full_document_before_change Allowed values: nil,
|
602
|
+
# 'whenAvailable', 'required', 'off'.
|
603
|
+
#
|
604
|
+
# The default is to not send a value (i.e. nil), which is equivalent to 'off'.
|
605
|
+
#
|
606
|
+
# When set to 'whenAvailable', configures the change stream to return the
|
607
|
+
# pre-image of the modified document for replace, update, and delete change
|
608
|
+
# events if it is available.
|
609
|
+
#
|
610
|
+
# When set to 'required', the same behavior as 'whenAvailable' except that
|
611
|
+
# an error is raised if the pre-image is not available.
|
424
612
|
# @option options [ BSON::Document, Hash ] :resume_after Specifies the
|
425
613
|
# logical starting point for the new change stream.
|
426
614
|
# @option options [ Integer ] :max_await_time_ms The maximum amount of time
|
@@ -433,6 +621,20 @@ module Mongo
|
|
433
621
|
# changes that occurred at or after the specified timestamp. Any command run
|
434
622
|
# against the server will return a cluster time that can be used here.
|
435
623
|
# Only recognized by server versions 4.0+.
|
624
|
+
# @option options [ Object ] :comment A user-provided
|
625
|
+
# comment to attach to this command.
|
626
|
+
# @option options [ Boolean ] :show_expanded_events Enables the server to
|
627
|
+
# send the 'expanded' list of change stream events. The list of additional
|
628
|
+
# events included with this flag set are: createIndexes, dropIndexes,
|
629
|
+
# modify, create, shardCollection, reshardCollection,
|
630
|
+
# refineCollectionShardKey.
|
631
|
+
# @option options [ :cursor_lifetime | :iteration ] :timeout_mode How to interpret
|
632
|
+
# :timeout_ms (whether it applies to the lifetime of the cursor, or per
|
633
|
+
# iteration).
|
634
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
635
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
636
|
+
# The default value is unset which means the value is inherited from
|
637
|
+
# the collection or the database or the client.
|
436
638
|
#
|
437
639
|
# @note A change stream only allows 'majority' read concern.
|
438
640
|
# @note This helper method is preferable to running a raw aggregation with
|
@@ -442,7 +644,9 @@ module Mongo
|
|
442
644
|
#
|
443
645
|
# @since 2.5.0
|
444
646
|
def watch(pipeline = [], options = {})
|
445
|
-
|
647
|
+
view_options = options.dup
|
648
|
+
view_options[:cursor_type] = :tailable_await if options[:max_await_time_ms]
|
649
|
+
View::ChangeStream.new(View.new(self, {}, view_options), pipeline, nil, options)
|
446
650
|
end
|
447
651
|
|
448
652
|
# Gets an estimated number of matching documents in the collection.
|
@@ -455,11 +659,19 @@ module Mongo
|
|
455
659
|
#
|
456
660
|
# @option options [ Hash ] :hint The index to use.
|
457
661
|
# @option options [ Integer ] :limit The maximum number of documents to count.
|
458
|
-
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
662
|
+
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
663
|
+
# allow the query to run, in milliseconds. This option is deprecated, use
|
664
|
+
# :timeout_ms instead.
|
459
665
|
# @option options [ Integer ] :skip The number of documents to skip before counting.
|
460
666
|
# @option options [ Hash ] :read The read preference options.
|
461
667
|
# @option options [ Hash ] :collation The collation to use.
|
462
668
|
# @option options [ Session ] :session The session to use.
|
669
|
+
# @option options [ Object ] :comment A user-provided
|
670
|
+
# comment to attach to this command.
|
671
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
672
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
673
|
+
# The default value is unset which means the value is inherited from
|
674
|
+
# the collection or the database or the client.
|
463
675
|
#
|
464
676
|
# @return [ Integer ] The document count.
|
465
677
|
#
|
@@ -493,6 +705,13 @@ module Mongo
|
|
493
705
|
# command to run.
|
494
706
|
# @option options :read [ Hash ] The read preference options.
|
495
707
|
# @option options :collation [ Hash ] The collation to use.
|
708
|
+
# @option options [ Session ] :session The session to use.
|
709
|
+
# @option options [ Object ] :comment A user-provided
|
710
|
+
# comment to attach to this command.
|
711
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
712
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
713
|
+
# The default value is unset which means the value is inherited from
|
714
|
+
# the collection or the database or the client.
|
496
715
|
#
|
497
716
|
# @return [ Integer ] The document count.
|
498
717
|
#
|
@@ -509,9 +728,15 @@ module Mongo
|
|
509
728
|
#
|
510
729
|
# @param [ Hash ] options Options for the operation.
|
511
730
|
#
|
512
|
-
# @option
|
731
|
+
# @option options :max_time_ms [ Integer ] The maximum amount of time to allow
|
513
732
|
# the command to run for on the server.
|
514
|
-
# @option
|
733
|
+
# @option options [ Hash ] :read The read preference options.
|
734
|
+
# @option options [ Object ] :comment A user-provided
|
735
|
+
# comment to attach to this command.
|
736
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
737
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
738
|
+
# The default value is unset which means the value is inherited from
|
739
|
+
# the collection or the database or the client.
|
515
740
|
#
|
516
741
|
# @return [ Integer ] The document count.
|
517
742
|
#
|
@@ -529,10 +754,16 @@ module Mongo
|
|
529
754
|
# @param [ Hash ] filter The documents from which to retrieve the distinct values.
|
530
755
|
# @param [ Hash ] options The distinct command options.
|
531
756
|
#
|
532
|
-
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
757
|
+
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
758
|
+
# allow the query to run, in milliseconds. This option is deprecated, use
|
759
|
+
# :timeout_ms instead.
|
533
760
|
# @option options [ Hash ] :read The read preference options.
|
534
761
|
# @option options [ Hash ] :collation The collation to use.
|
535
762
|
# @option options [ Session ] :session The session to use.
|
763
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
764
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
765
|
+
# The default value is unset which means the value is inherited from
|
766
|
+
# the collection or the database or the client.
|
536
767
|
#
|
537
768
|
# @return [ Array<Object> ] The list of distinct values.
|
538
769
|
#
|
@@ -551,13 +782,35 @@ module Mongo
|
|
551
782
|
#
|
552
783
|
# @option options [ Session ] :session The session to use.
|
553
784
|
#
|
554
|
-
# @return [ View
|
785
|
+
# @return [ Index::View ] The index view.
|
555
786
|
#
|
556
787
|
# @since 2.0.0
|
557
788
|
def indexes(options = {})
|
558
789
|
Index::View.new(self, options)
|
559
790
|
end
|
560
791
|
|
792
|
+
# Get a view of all search indexes for this collection. Can be iterated or
|
793
|
+
# operated on directly. If id or name are given, the iterator will return
|
794
|
+
# only the indicated index. For all other operations, id and name are
|
795
|
+
# ignored.
|
796
|
+
#
|
797
|
+
# @note Only one of id or name may be given; it is an error to specify both,
|
798
|
+
# although both may be omitted safely.
|
799
|
+
#
|
800
|
+
# @param [ Hash ] options The options to use to configure the view.
|
801
|
+
#
|
802
|
+
# @option options [ String ] :id The id of the specific index to query (optional)
|
803
|
+
# @option options [ String ] :name The name of the specific index to query (optional)
|
804
|
+
# @option options [ Hash ] :aggregate The options hash to pass to the
|
805
|
+
# aggregate command (optional)
|
806
|
+
#
|
807
|
+
# @return [ SearchIndex::View ] The search index view.
|
808
|
+
#
|
809
|
+
# @since 2.0.0
|
810
|
+
def search_indexes(options = {})
|
811
|
+
SearchIndex::View.new(self, options)
|
812
|
+
end
|
813
|
+
|
561
814
|
# Get a pretty printed string inspection for the collection.
|
562
815
|
#
|
563
816
|
# @example Inspect the collection.
|
@@ -578,7 +831,17 @@ module Mongo
|
|
578
831
|
# @param [ Hash ] document The document to insert.
|
579
832
|
# @param [ Hash ] opts The insert options.
|
580
833
|
#
|
834
|
+
# @option opts [ true | false ] :bypass_document_validation Whether or
|
835
|
+
# not to skip document level validation.
|
836
|
+
# @option opts [ Object ] :comment A user-provided comment to attach to
|
837
|
+
# this command.
|
581
838
|
# @option opts [ Session ] :session The session to use for the operation.
|
839
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
840
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
841
|
+
# The default value is unset which means the value is inherited from
|
842
|
+
# the collection or the database or the client.
|
843
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
844
|
+
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
582
845
|
#
|
583
846
|
# @return [ Result ] The database response wrapper.
|
584
847
|
#
|
@@ -586,7 +849,7 @@ module Mongo
|
|
586
849
|
def insert_one(document, opts = {})
|
587
850
|
QueryCache.clear_namespace(namespace)
|
588
851
|
|
589
|
-
client.
|
852
|
+
client.with_session(opts) do |session|
|
590
853
|
write_concern = if opts[:write_concern]
|
591
854
|
WriteConcern.get(opts[:write_concern])
|
592
855
|
else
|
@@ -597,7 +860,12 @@ module Mongo
|
|
597
860
|
raise ArgumentError, "Document to be inserted cannot be nil"
|
598
861
|
end
|
599
862
|
|
600
|
-
|
863
|
+
context = Operation::Context.new(
|
864
|
+
client: client,
|
865
|
+
session: session,
|
866
|
+
operation_timeouts: operation_timeouts(opts)
|
867
|
+
)
|
868
|
+
write_with_retry(write_concern, context: context) do |connection, txn_num, context|
|
601
869
|
Operation::Insert.new(
|
602
870
|
:documents => [ document ],
|
603
871
|
:db_name => database.name,
|
@@ -608,7 +876,8 @@ module Mongo
|
|
608
876
|
:id_generator => client.options[:id_generator],
|
609
877
|
:session => session,
|
610
878
|
:txn_num => txn_num,
|
611
|
-
|
879
|
+
:comment => opts[:comment]
|
880
|
+
).execute_with_connection(connection, context: context)
|
612
881
|
end
|
613
882
|
end
|
614
883
|
end
|
@@ -618,12 +887,22 @@ module Mongo
|
|
618
887
|
# @example Insert documents into the collection.
|
619
888
|
# collection.insert_many([{ name: 'test' }])
|
620
889
|
#
|
621
|
-
# @param [
|
890
|
+
# @param [ Enumerable<Hash> ] documents The documents to insert.
|
622
891
|
# @param [ Hash ] options The insert options.
|
623
892
|
#
|
893
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
894
|
+
# not to skip document level validation.
|
895
|
+
# @option options [ Object ] :comment A user-provided comment to attach to
|
896
|
+
# this command.
|
624
897
|
# @option options [ true | false ] :ordered Whether the operations
|
625
898
|
# should be executed in order.
|
626
899
|
# @option options [ Session ] :session The session to use for the operation.
|
900
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
901
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
902
|
+
# The default value is unset which means the value is inherited from
|
903
|
+
# the collection or the database or the client.
|
904
|
+
# @option options [ Hash ] :write_concern The write concern options.
|
905
|
+
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
627
906
|
#
|
628
907
|
# @return [ Result ] The database response wrapper.
|
629
908
|
#
|
@@ -640,16 +919,22 @@ module Mongo
|
|
640
919
|
# @example Execute a bulk write.
|
641
920
|
# collection.bulk_write(operations, options)
|
642
921
|
#
|
643
|
-
# @param [
|
922
|
+
# @param [ Enumerable<Hash> ] requests The bulk write requests.
|
644
923
|
# @param [ Hash ] options The options.
|
645
924
|
#
|
646
|
-
# @option options [ true
|
925
|
+
# @option options [ true | false ] :ordered Whether the operations
|
647
926
|
# should be executed in order.
|
648
927
|
# @option options [ Hash ] :write_concern The write concern options.
|
649
928
|
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
650
|
-
# @option options [ true
|
929
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
651
930
|
# not to skip document level validation.
|
652
931
|
# @option options [ Session ] :session The session to use for the set of operations.
|
932
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
933
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
934
|
+
# The default value is unset which means the value is inherited from
|
935
|
+
# the collection or the database or the client.
|
936
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
937
|
+
# See the server documentation for details.
|
653
938
|
#
|
654
939
|
# @return [ BulkWrite::Result ] The result of the operation.
|
655
940
|
#
|
@@ -670,6 +955,10 @@ module Mongo
|
|
670
955
|
# @option options [ Session ] :session The session to use.
|
671
956
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
672
957
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
958
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
959
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
960
|
+
# The default value is unset which means the value is inherited from
|
961
|
+
# the collection or the database or the client.
|
673
962
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
674
963
|
# See the server documentation for details.
|
675
964
|
#
|
@@ -692,6 +981,10 @@ module Mongo
|
|
692
981
|
# @option options [ Session ] :session The session to use.
|
693
982
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
694
983
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
984
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
985
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
986
|
+
# The default value is unset which means the value is inherited from
|
987
|
+
# the collection or the database or the client.
|
695
988
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
696
989
|
# See the server documentation for details.
|
697
990
|
#
|
@@ -714,15 +1007,23 @@ module Mongo
|
|
714
1007
|
# @param [ Integer ] cursor_count The max number of cursors to return.
|
715
1008
|
# @param [ Hash ] options The parallel scan command options.
|
716
1009
|
#
|
717
|
-
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
718
|
-
# to run in milliseconds.
|
1010
|
+
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
1011
|
+
# allow the query to run, in milliseconds. This option is deprecated, use
|
1012
|
+
# :timeout_ms instead.
|
719
1013
|
# @option options [ Session ] :session The session to use.
|
1014
|
+
# @option options [ :cursor_lifetime | :iteration ] :timeout_mode How to interpret
|
1015
|
+
# :timeout_ms (whether it applies to the lifetime of the cursor, or per
|
1016
|
+
# iteration).
|
1017
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
1018
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
1019
|
+
# The default value is unset which means the value is inherited from
|
1020
|
+
# the collection or the database or the client.
|
720
1021
|
#
|
721
1022
|
# @return [ Array<Cursor> ] An array of cursors.
|
722
1023
|
#
|
723
1024
|
# @since 2.1
|
724
1025
|
def parallel_scan(cursor_count, options = {})
|
725
|
-
find({}, options).
|
1026
|
+
find({}, options).parallel_scan(cursor_count, options)
|
726
1027
|
end
|
727
1028
|
|
728
1029
|
# Replaces a single document in the collection with the new document.
|
@@ -734,12 +1035,16 @@ module Mongo
|
|
734
1035
|
# @param [ Hash ] replacement The replacement document..
|
735
1036
|
# @param [ Hash ] options The options.
|
736
1037
|
#
|
737
|
-
# @option options [ true
|
1038
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
738
1039
|
# document doesn't exist.
|
739
|
-
# @option options [ true
|
1040
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
740
1041
|
# not to skip document level validation.
|
741
1042
|
# @option options [ Hash ] :collation The collation to use.
|
742
1043
|
# @option options [ Session ] :session The session to use.
|
1044
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
1045
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
1046
|
+
# The default value is unset which means the value is inherited from
|
1047
|
+
# the collection or the database or the client.
|
743
1048
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
744
1049
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
745
1050
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
@@ -761,14 +1066,18 @@ module Mongo
|
|
761
1066
|
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
762
1067
|
# @param [ Hash ] options The options.
|
763
1068
|
#
|
764
|
-
# @option options [ true
|
1069
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
765
1070
|
# document doesn't exist.
|
766
|
-
# @option options [ true
|
1071
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
767
1072
|
# not to skip document level validation.
|
768
1073
|
# @option options [ Hash ] :collation The collation to use.
|
769
1074
|
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
770
1075
|
# an update should apply.
|
771
1076
|
# @option options [ Session ] :session The session to use.
|
1077
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
1078
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
1079
|
+
# The default value is unset which means the value is inherited from
|
1080
|
+
# the collection or the database or the client.
|
772
1081
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
773
1082
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
774
1083
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
@@ -790,14 +1099,18 @@ module Mongo
|
|
790
1099
|
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
791
1100
|
# @param [ Hash ] options The options.
|
792
1101
|
#
|
793
|
-
# @option options [ true
|
1102
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
794
1103
|
# document doesn't exist.
|
795
|
-
# @option options [ true
|
1104
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
796
1105
|
# not to skip document level validation.
|
797
1106
|
# @option options [ Hash ] :collation The collation to use.
|
798
1107
|
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
799
1108
|
# an update should apply.
|
800
1109
|
# @option options [ Session ] :session The session to use.
|
1110
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
1111
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
1112
|
+
# The default value is unset which means the value is inherited from
|
1113
|
+
# the collection or the database or the client.
|
801
1114
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
802
1115
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
803
1116
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
@@ -819,8 +1132,9 @@ module Mongo
|
|
819
1132
|
# @param [ Hash ] filter The filter to use.
|
820
1133
|
# @param [ Hash ] options The options.
|
821
1134
|
#
|
822
|
-
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
823
|
-
# to run in milliseconds.
|
1135
|
+
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
1136
|
+
# allow the query to run, in milliseconds. This option is deprecated, use
|
1137
|
+
# :timeout_ms instead.
|
824
1138
|
# @option options [ Hash ] :projection The fields to include or exclude in the returned doc.
|
825
1139
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
826
1140
|
# will be sorted.
|
@@ -828,6 +1142,10 @@ module Mongo
|
|
828
1142
|
# Defaults to the collection's write concern.
|
829
1143
|
# @option options [ Hash ] :collation The collation to use.
|
830
1144
|
# @option options [ Session ] :session The session to use.
|
1145
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
1146
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
1147
|
+
# The default value is unset which means the value is inherited from
|
1148
|
+
# the collection or the database or the client.
|
831
1149
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
832
1150
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
833
1151
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
@@ -859,8 +1177,8 @@ module Mongo
|
|
859
1177
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
860
1178
|
# will be sorted.
|
861
1179
|
# @option options [ Symbol ] :return_document Either :before or :after.
|
862
|
-
# @option options [ true
|
863
|
-
# @option options [ true
|
1180
|
+
# @option options [ true | false ] :upsert Whether to upsert if the document doesn't exist.
|
1181
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
864
1182
|
# not to skip document level validation.
|
865
1183
|
# @option options [ Hash ] :write_concern The write concern options.
|
866
1184
|
# Defaults to the collection's write concern.
|
@@ -872,6 +1190,10 @@ module Mongo
|
|
872
1190
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
873
1191
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
874
1192
|
# See the server documentation for details.
|
1193
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
1194
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
1195
|
+
# The default value is unset which means the value is inherited from
|
1196
|
+
# the collection or the database or the client.
|
875
1197
|
#
|
876
1198
|
# @return [ BSON::Document ] The document.
|
877
1199
|
#
|
@@ -899,8 +1221,8 @@ module Mongo
|
|
899
1221
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
900
1222
|
# will be sorted.
|
901
1223
|
# @option options [ Symbol ] :return_document Either :before or :after.
|
902
|
-
# @option options [ true
|
903
|
-
# @option options [ true
|
1224
|
+
# @option options [ true | false ] :upsert Whether to upsert if the document doesn't exist.
|
1225
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
904
1226
|
# not to skip document level validation.
|
905
1227
|
# @option options [ Hash ] :write_concern The write concern options.
|
906
1228
|
# Defaults to the collection's write concern.
|
@@ -908,6 +1230,10 @@ module Mongo
|
|
908
1230
|
# @option options [ Session ] :session The session to use.
|
909
1231
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
910
1232
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
1233
|
+
# @option options [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
1234
|
+
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
1235
|
+
# The default value is unset which means the value is inherited from
|
1236
|
+
# the collection or the database or the client.
|
911
1237
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
912
1238
|
# See the server documentation for details.
|
913
1239
|
#
|
@@ -938,5 +1264,28 @@ module Mongo
|
|
938
1264
|
def system_collection?
|
939
1265
|
name.start_with?('system.')
|
940
1266
|
end
|
1267
|
+
|
1268
|
+
# @return [ Integer | nil ] Operation timeout that is for this database or
|
1269
|
+
# for the corresponding client.
|
1270
|
+
#
|
1271
|
+
# @api private
|
1272
|
+
def timeout_ms
|
1273
|
+
@timeout_ms || database.timeout_ms
|
1274
|
+
end
|
1275
|
+
|
1276
|
+
# @return [ Hash ] timeout_ms value set on the operation level (if any),
|
1277
|
+
# and/or timeout_ms that is set on collection/database/client level (if any).
|
1278
|
+
#
|
1279
|
+
# @api private
|
1280
|
+
def operation_timeouts(opts = {})
|
1281
|
+
# TODO: We should re-evaluate if we need two timeouts separately.
|
1282
|
+
{}.tap do |result|
|
1283
|
+
if opts[:timeout_ms].nil?
|
1284
|
+
result[:inherited_timeout_ms] = timeout_ms
|
1285
|
+
else
|
1286
|
+
result[:operation_timeout_ms] = opts.delete(:timeout_ms)
|
1287
|
+
end
|
1288
|
+
end
|
1289
|
+
end
|
941
1290
|
end
|
942
1291
|
end
|