mongo 2.16.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 -3
- 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 +153 -32
- data/lib/mongo/caching_cursor.rb +1 -1
- data/lib/mongo/client.rb +227 -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 +40 -17
- 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 +85 -100
- data/lib/mongo/collection/view/builder/aggregation.rb +13 -21
- data/lib/mongo/collection/view/builder/map_reduce.rb +2 -2
- 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 +144 -45
- 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 +81 -65
- data/lib/mongo/collection/view/map_reduce.rb +43 -15
- data/lib/mongo/collection/view/readable.rb +127 -52
- data/lib/mongo/collection/view/writable.rb +231 -56
- data/lib/mongo/collection/view.rb +44 -4
- data/lib/mongo/collection.rb +483 -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/drop/command.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 +45 -4
- data/lib/mongo/cursor/nontailable.rb +27 -0
- data/lib/mongo/cursor.rb +149 -38
- data/lib/mongo/cursor_host.rb +82 -0
- data/lib/mongo/database/view.rb +126 -17
- data/lib/mongo/database.rb +154 -40
- 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/error/invalid_max_connecting.rb +28 -0
- 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/error/session_not_materialized.rb +29 -0
- data/lib/mongo/error/sessions_not_supported.rb +1 -1
- data/lib/mongo/{operation/kill_cursors/legacy.rb → error/snapshot_session_invalid_server_version.rb} +9 -19
- data/lib/mongo/{operation/command/command.rb → error/snapshot_session_transaction_prohibited.rb} +8 -19
- 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 +18 -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 +6 -3
- 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 +2 -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 +53 -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 -14
- 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 +27 -8
- 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 +6 -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 +7 -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 +98 -13
- 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 +240 -44
- data/lib/mongo/socket/ocsp_cache.rb +3 -4
- 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 +184 -32
- 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 -7
- 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 +15 -15
- 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 +17 -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 +17 -13
- 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 +42 -17
- 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 +198 -123
- 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 +25 -2
- 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 +172 -21
- 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 +25 -2
- 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 +137 -16
- 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 +45 -82
- 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 -15
- 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 +13 -6
- 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 +166 -51
- 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 +197 -36
- data/spec/runners/unified/ddl_operations.rb +185 -5
- data/spec/runners/unified/entity_map.rb +4 -4
- 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 +121 -12
- data/spec/runners/unified/test.rb +219 -39
- 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-let.yml +138 -0
- data/spec/spec_tests/data/crud_unified/aggregate-merge-errorResponse.yml +42 -0
- data/spec/spec_tests/data/crud_unified/aggregate-merge.yml +185 -0
- data/spec/spec_tests/data/crud_unified/aggregate-out-readConcern.yml +171 -0
- data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +161 -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 +157 -0
- data/spec/spec_tests/data/crud_unified/db-aggregate.yml +73 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-comment.yml +97 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint-clientError.yml +87 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint-serverError.yml +107 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint-unacknowledged.yml +90 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-hint.yml +99 -0
- data/spec/spec_tests/data/crud_unified/deleteMany-let.yml +93 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-comment.yml +98 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint-clientError.yml +80 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint-serverError.yml +100 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint-unacknowledged.yml +89 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-hint.yml +95 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-let.yml +91 -0
- data/spec/spec_tests/data/crud_unified/distinct-comment.yml +98 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount-comment.yml +95 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +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-let.yml +71 -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 +86 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-comment.yml +101 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-dots_and_dollars.yml +140 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-clientError.yml +83 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-serverError.yml +99 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint-unacknowledged.yml +96 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-hint.yml +98 -0
- data/spec/spec_tests/data/crud_unified/findOneAndReplace-let.yml +94 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-comment.yml +95 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-dots_and_dollars.yml +127 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-errorResponse.yml +69 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-clientError.yml +84 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-serverError.yml +100 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint-unacknowledged.yml +92 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-hint.yml +99 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-let.yml +96 -0
- data/spec/spec_tests/data/crud_unified/insertMany-comment.yml +93 -0
- data/spec/spec_tests/data/crud_unified/insertMany-dots_and_dollars.yml +128 -0
- data/spec/spec_tests/data/crud_unified/insertOne-comment.yml +91 -0
- data/spec/spec_tests/data/crud_unified/insertOne-dots_and_dollars.yml +238 -0
- data/spec/spec_tests/data/crud_unified/insertOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-comment.yml +105 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-dots_and_dollars.yml +180 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-hint-unacknowledged.yml +95 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-hint.yml +108 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-let.yml +98 -0
- data/spec/spec_tests/data/crud_unified/replaceOne-validation.yml +37 -0
- data/spec/spec_tests/data/crud_unified/updateMany-comment.yml +104 -0
- data/spec/spec_tests/data/crud_unified/updateMany-dots_and_dollars.yml +138 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint-clientError.yml +91 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint-serverError.yml +115 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint-unacknowledged.yml +96 -0
- data/spec/spec_tests/data/crud_unified/updateMany-hint.yml +115 -0
- data/spec/spec_tests/data/crud_unified/updateMany-let.yml +107 -0
- data/spec/spec_tests/data/crud_unified/updateMany-validation.yml +39 -0
- data/spec/spec_tests/data/crud_unified/updateOne-comment.yml +104 -0
- data/spec/spec_tests/data/crud_unified/updateOne-dots_and_dollars.yml +138 -0
- data/spec/spec_tests/data/crud_unified/updateOne-errorResponse.yml +47 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint-clientError.yml +85 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint-serverError.yml +109 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint-unacknowledged.yml +95 -0
- data/spec/spec_tests/data/crud_unified/updateOne-hint.yml +109 -0
- data/spec/spec_tests/data/crud_unified/updateOne-let.yml +102 -0
- data/spec/spec_tests/data/crud_unified/updateOne-validation.yml +37 -0
- data/spec/spec_tests/data/crud_unified/updateWithPipelines.yml +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/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Secondary.yml +4 -4
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +4 -4
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +2 -2
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +5 -5
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +5 -5
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +3 -3
- data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/Sharded/SmallMaxStaleness.yml +2 -2
- data/spec/spec_tests/data/max_staleness/Single/SmallMaxStaleness.yml +1 -1
- data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +1 -1
- data/spec/spec_tests/data/retryable_reads/{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 +75 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-server-error.yml +102 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +258 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +482 -0
- data/spec/spec_tests/data/transactions/error-labels.yml +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 +13 -0
- 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 +1809 -1274
- 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,15 @@ 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.
|
526
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
527
|
+
# See the server documentation for details.
|
364
528
|
#
|
365
529
|
# @return [ CollectionView ] The collection view.
|
366
530
|
#
|
@@ -377,24 +541,28 @@ module Mongo
|
|
377
541
|
# @param [ Array<Hash> ] pipeline The aggregation pipeline.
|
378
542
|
# @param [ Hash ] options The aggregation options.
|
379
543
|
#
|
380
|
-
# @option options [ true
|
544
|
+
# @option options [ true | false ] :allow_disk_use Set to true if disk
|
381
545
|
# usage is allowed during the aggregation.
|
382
546
|
# @option options [ Integer ] :batch_size The number of documents to return
|
383
547
|
# per batch.
|
384
|
-
# @option options [ true
|
548
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
385
549
|
# not to skip document level validation.
|
386
550
|
# @option options [ Hash ] :collation The collation to use.
|
387
|
-
# @option options [
|
551
|
+
# @option options [ Object ] :comment A user-provided
|
552
|
+
# comment to attach to this command.
|
388
553
|
# @option options [ String ] :hint The index to use for the aggregation.
|
389
|
-
# @option options [
|
390
|
-
#
|
391
|
-
# @option options [
|
392
|
-
#
|
393
|
-
#
|
394
|
-
# cursor and this option is therefore not valid.
|
554
|
+
# @option options [ Hash ] :let Mapping of variables to use in the pipeline.
|
555
|
+
# See the server documentation for details.
|
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.
|
395
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.
|
396
564
|
#
|
397
|
-
# @return [ Aggregation ] The aggregation object.
|
565
|
+
# @return [ View::Aggregation ] The aggregation object.
|
398
566
|
#
|
399
567
|
# @since 2.1.0
|
400
568
|
def aggregate(pipeline, options = {})
|
@@ -412,11 +580,35 @@ module Mongo
|
|
412
580
|
# @param [ Array<Hash> ] pipeline Optional additional filter operators.
|
413
581
|
# @param [ Hash ] options The change stream options.
|
414
582
|
#
|
415
|
-
# @option options [ String ] :full_document Allowed values:
|
416
|
-
#
|
417
|
-
#
|
418
|
-
#
|
419
|
-
#
|
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.
|
420
612
|
# @option options [ BSON::Document, Hash ] :resume_after Specifies the
|
421
613
|
# logical starting point for the new change stream.
|
422
614
|
# @option options [ Integer ] :max_await_time_ms The maximum amount of time
|
@@ -429,6 +621,20 @@ module Mongo
|
|
429
621
|
# changes that occurred at or after the specified timestamp. Any command run
|
430
622
|
# against the server will return a cluster time that can be used here.
|
431
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.
|
432
638
|
#
|
433
639
|
# @note A change stream only allows 'majority' read concern.
|
434
640
|
# @note This helper method is preferable to running a raw aggregation with
|
@@ -438,7 +644,9 @@ module Mongo
|
|
438
644
|
#
|
439
645
|
# @since 2.5.0
|
440
646
|
def watch(pipeline = [], options = {})
|
441
|
-
|
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)
|
442
650
|
end
|
443
651
|
|
444
652
|
# Gets an estimated number of matching documents in the collection.
|
@@ -451,11 +659,19 @@ module Mongo
|
|
451
659
|
#
|
452
660
|
# @option options [ Hash ] :hint The index to use.
|
453
661
|
# @option options [ Integer ] :limit The maximum number of documents to count.
|
454
|
-
# @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.
|
455
665
|
# @option options [ Integer ] :skip The number of documents to skip before counting.
|
456
666
|
# @option options [ Hash ] :read The read preference options.
|
457
667
|
# @option options [ Hash ] :collation The collation to use.
|
458
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.
|
459
675
|
#
|
460
676
|
# @return [ Integer ] The document count.
|
461
677
|
#
|
@@ -489,6 +705,13 @@ module Mongo
|
|
489
705
|
# command to run.
|
490
706
|
# @option options :read [ Hash ] The read preference options.
|
491
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.
|
492
715
|
#
|
493
716
|
# @return [ Integer ] The document count.
|
494
717
|
#
|
@@ -505,9 +728,15 @@ module Mongo
|
|
505
728
|
#
|
506
729
|
# @param [ Hash ] options Options for the operation.
|
507
730
|
#
|
508
|
-
# @option
|
731
|
+
# @option options :max_time_ms [ Integer ] The maximum amount of time to allow
|
509
732
|
# the command to run for on the server.
|
510
|
-
# @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.
|
511
740
|
#
|
512
741
|
# @return [ Integer ] The document count.
|
513
742
|
#
|
@@ -525,10 +754,16 @@ module Mongo
|
|
525
754
|
# @param [ Hash ] filter The documents from which to retrieve the distinct values.
|
526
755
|
# @param [ Hash ] options The distinct command options.
|
527
756
|
#
|
528
|
-
# @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.
|
529
760
|
# @option options [ Hash ] :read The read preference options.
|
530
761
|
# @option options [ Hash ] :collation The collation to use.
|
531
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.
|
532
767
|
#
|
533
768
|
# @return [ Array<Object> ] The list of distinct values.
|
534
769
|
#
|
@@ -547,13 +782,35 @@ module Mongo
|
|
547
782
|
#
|
548
783
|
# @option options [ Session ] :session The session to use.
|
549
784
|
#
|
550
|
-
# @return [ View
|
785
|
+
# @return [ Index::View ] The index view.
|
551
786
|
#
|
552
787
|
# @since 2.0.0
|
553
788
|
def indexes(options = {})
|
554
789
|
Index::View.new(self, options)
|
555
790
|
end
|
556
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
|
+
|
557
814
|
# Get a pretty printed string inspection for the collection.
|
558
815
|
#
|
559
816
|
# @example Inspect the collection.
|
@@ -574,7 +831,17 @@ module Mongo
|
|
574
831
|
# @param [ Hash ] document The document to insert.
|
575
832
|
# @param [ Hash ] opts The insert options.
|
576
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.
|
577
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.
|
578
845
|
#
|
579
846
|
# @return [ Result ] The database response wrapper.
|
580
847
|
#
|
@@ -582,7 +849,7 @@ module Mongo
|
|
582
849
|
def insert_one(document, opts = {})
|
583
850
|
QueryCache.clear_namespace(namespace)
|
584
851
|
|
585
|
-
client.
|
852
|
+
client.with_session(opts) do |session|
|
586
853
|
write_concern = if opts[:write_concern]
|
587
854
|
WriteConcern.get(opts[:write_concern])
|
588
855
|
else
|
@@ -593,7 +860,12 @@ module Mongo
|
|
593
860
|
raise ArgumentError, "Document to be inserted cannot be nil"
|
594
861
|
end
|
595
862
|
|
596
|
-
|
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|
|
597
869
|
Operation::Insert.new(
|
598
870
|
:documents => [ document ],
|
599
871
|
:db_name => database.name,
|
@@ -604,7 +876,8 @@ module Mongo
|
|
604
876
|
:id_generator => client.options[:id_generator],
|
605
877
|
:session => session,
|
606
878
|
:txn_num => txn_num,
|
607
|
-
|
879
|
+
:comment => opts[:comment]
|
880
|
+
).execute_with_connection(connection, context: context)
|
608
881
|
end
|
609
882
|
end
|
610
883
|
end
|
@@ -614,12 +887,22 @@ module Mongo
|
|
614
887
|
# @example Insert documents into the collection.
|
615
888
|
# collection.insert_many([{ name: 'test' }])
|
616
889
|
#
|
617
|
-
# @param [
|
890
|
+
# @param [ Enumerable<Hash> ] documents The documents to insert.
|
618
891
|
# @param [ Hash ] options The insert options.
|
619
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.
|
620
897
|
# @option options [ true | false ] :ordered Whether the operations
|
621
898
|
# should be executed in order.
|
622
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.
|
623
906
|
#
|
624
907
|
# @return [ Result ] The database response wrapper.
|
625
908
|
#
|
@@ -636,16 +919,22 @@ module Mongo
|
|
636
919
|
# @example Execute a bulk write.
|
637
920
|
# collection.bulk_write(operations, options)
|
638
921
|
#
|
639
|
-
# @param [
|
922
|
+
# @param [ Enumerable<Hash> ] requests The bulk write requests.
|
640
923
|
# @param [ Hash ] options The options.
|
641
924
|
#
|
642
|
-
# @option options [ true
|
925
|
+
# @option options [ true | false ] :ordered Whether the operations
|
643
926
|
# should be executed in order.
|
644
927
|
# @option options [ Hash ] :write_concern The write concern options.
|
645
928
|
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
646
|
-
# @option options [ true
|
929
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
647
930
|
# not to skip document level validation.
|
648
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.
|
649
938
|
#
|
650
939
|
# @return [ BulkWrite::Result ] The result of the operation.
|
651
940
|
#
|
@@ -666,6 +955,12 @@ module Mongo
|
|
666
955
|
# @option options [ Session ] :session The session to use.
|
667
956
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
668
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.
|
962
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
963
|
+
# See the server documentation for details.
|
669
964
|
#
|
670
965
|
# @return [ Result ] The response from the database.
|
671
966
|
#
|
@@ -686,6 +981,12 @@ module Mongo
|
|
686
981
|
# @option options [ Session ] :session The session to use.
|
687
982
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
688
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.
|
988
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
989
|
+
# See the server documentation for details.
|
689
990
|
#
|
690
991
|
# @return [ Result ] The response from the database.
|
691
992
|
#
|
@@ -706,15 +1007,23 @@ module Mongo
|
|
706
1007
|
# @param [ Integer ] cursor_count The max number of cursors to return.
|
707
1008
|
# @param [ Hash ] options The parallel scan command options.
|
708
1009
|
#
|
709
|
-
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
710
|
-
# 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.
|
711
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.
|
712
1021
|
#
|
713
1022
|
# @return [ Array<Cursor> ] An array of cursors.
|
714
1023
|
#
|
715
1024
|
# @since 2.1
|
716
1025
|
def parallel_scan(cursor_count, options = {})
|
717
|
-
find({}, options).
|
1026
|
+
find({}, options).parallel_scan(cursor_count, options)
|
718
1027
|
end
|
719
1028
|
|
720
1029
|
# Replaces a single document in the collection with the new document.
|
@@ -726,14 +1035,20 @@ module Mongo
|
|
726
1035
|
# @param [ Hash ] replacement The replacement document..
|
727
1036
|
# @param [ Hash ] options The options.
|
728
1037
|
#
|
729
|
-
# @option options [ true
|
1038
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
730
1039
|
# document doesn't exist.
|
731
|
-
# @option options [ true
|
1040
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
732
1041
|
# not to skip document level validation.
|
733
1042
|
# @option options [ Hash ] :collation The collation to use.
|
734
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.
|
735
1048
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
736
1049
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
1050
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
1051
|
+
# See the server documentation for details.
|
737
1052
|
#
|
738
1053
|
# @return [ Result ] The response from the database.
|
739
1054
|
#
|
@@ -751,16 +1066,22 @@ module Mongo
|
|
751
1066
|
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
752
1067
|
# @param [ Hash ] options The options.
|
753
1068
|
#
|
754
|
-
# @option options [ true
|
1069
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
755
1070
|
# document doesn't exist.
|
756
|
-
# @option options [ true
|
1071
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
757
1072
|
# not to skip document level validation.
|
758
1073
|
# @option options [ Hash ] :collation The collation to use.
|
759
1074
|
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
760
1075
|
# an update should apply.
|
761
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.
|
762
1081
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
763
1082
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
1083
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
1084
|
+
# See the server documentation for details.
|
764
1085
|
#
|
765
1086
|
# @return [ Result ] The response from the database.
|
766
1087
|
#
|
@@ -778,16 +1099,22 @@ module Mongo
|
|
778
1099
|
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
779
1100
|
# @param [ Hash ] options The options.
|
780
1101
|
#
|
781
|
-
# @option options [ true
|
1102
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
782
1103
|
# document doesn't exist.
|
783
|
-
# @option options [ true
|
1104
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
784
1105
|
# not to skip document level validation.
|
785
1106
|
# @option options [ Hash ] :collation The collation to use.
|
786
1107
|
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
787
1108
|
# an update should apply.
|
788
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.
|
789
1114
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
790
1115
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
1116
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
1117
|
+
# See the server documentation for details.
|
791
1118
|
#
|
792
1119
|
# @return [ Result ] The response from the database.
|
793
1120
|
#
|
@@ -805,8 +1132,9 @@ module Mongo
|
|
805
1132
|
# @param [ Hash ] filter The filter to use.
|
806
1133
|
# @param [ Hash ] options The options.
|
807
1134
|
#
|
808
|
-
# @option options [ Integer ] :max_time_ms The maximum amount of time to
|
809
|
-
# 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.
|
810
1138
|
# @option options [ Hash ] :projection The fields to include or exclude in the returned doc.
|
811
1139
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
812
1140
|
# will be sorted.
|
@@ -814,8 +1142,14 @@ module Mongo
|
|
814
1142
|
# Defaults to the collection's write concern.
|
815
1143
|
# @option options [ Hash ] :collation The collation to use.
|
816
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.
|
817
1149
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
818
1150
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
1151
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
1152
|
+
# See the server documentation for details.
|
819
1153
|
#
|
820
1154
|
# @return [ BSON::Document, nil ] The document, if found.
|
821
1155
|
#
|
@@ -843,8 +1177,8 @@ module Mongo
|
|
843
1177
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
844
1178
|
# will be sorted.
|
845
1179
|
# @option options [ Symbol ] :return_document Either :before or :after.
|
846
|
-
# @option options [ true
|
847
|
-
# @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
|
848
1182
|
# not to skip document level validation.
|
849
1183
|
# @option options [ Hash ] :write_concern The write concern options.
|
850
1184
|
# Defaults to the collection's write concern.
|
@@ -854,6 +1188,12 @@ module Mongo
|
|
854
1188
|
# @option options [ Session ] :session The session to use.
|
855
1189
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
856
1190
|
# May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. "_id_").
|
1191
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
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.
|
857
1197
|
#
|
858
1198
|
# @return [ BSON::Document ] The document.
|
859
1199
|
#
|
@@ -881,8 +1221,8 @@ module Mongo
|
|
881
1221
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
882
1222
|
# will be sorted.
|
883
1223
|
# @option options [ Symbol ] :return_document Either :before or :after.
|
884
|
-
# @option options [ true
|
885
|
-
# @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
|
886
1226
|
# not to skip document level validation.
|
887
1227
|
# @option options [ Hash ] :write_concern The write concern options.
|
888
1228
|
# Defaults to the collection's write concern.
|
@@ -890,6 +1230,12 @@ module Mongo
|
|
890
1230
|
# @option options [ Session ] :session The session to use.
|
891
1231
|
# @option options [ Hash | String ] :hint The index to use for this operation.
|
892
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.
|
1237
|
+
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
1238
|
+
# See the server documentation for details.
|
893
1239
|
#
|
894
1240
|
# @return [ BSON::Document ] The document.
|
895
1241
|
#
|
@@ -918,5 +1264,28 @@ module Mongo
|
|
918
1264
|
def system_collection?
|
919
1265
|
name.start_with?('system.')
|
920
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
|
921
1290
|
end
|
922
1291
|
end
|