mongo 2.18.1 → 2.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +12 -2
- data/Rakefile +4 -3
- 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 +1 -1
- data/lib/mongo/auth/aws/conversation.rb +1 -5
- data/lib/mongo/{operation/get_more/command.rb → auth/aws/credentials.rb} +15 -20
- data/lib/mongo/auth/aws/credentials_cache.rb +75 -0
- data/lib/mongo/auth/aws/credentials_retriever.rb +172 -37
- data/lib/mongo/auth/aws/request.rb +1 -2
- data/lib/mongo/auth/aws.rb +6 -6
- data/lib/mongo/auth/base.rb +1 -1
- 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 +1 -1
- 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 +1 -1
- data/lib/mongo/bulk_write/result_combiner.rb +1 -1
- 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 +7 -5
- data/lib/mongo/caching_cursor.rb +1 -1
- data/lib/mongo/client.rb +53 -5
- data/lib/mongo/client_encryption.rb +102 -1
- data/lib/mongo/cluster/periodic_executor.rb +1 -1
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +2 -6
- data/lib/mongo/cluster/reapers/socket_reaper.rb +2 -2
- data/lib/mongo/cluster/sdam_flow.rb +42 -15
- data/lib/mongo/cluster/topology/base.rb +1 -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 +29 -12
- data/lib/mongo/cluster_time.rb +1 -1
- data/lib/mongo/collection/helpers.rb +1 -1
- data/lib/mongo/collection/queryable_encryption.rb +83 -43
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/builder/aggregation.rb +1 -1
- data/lib/mongo/collection/view/builder/map_reduce.rb +1 -1
- data/lib/mongo/collection/view/builder.rb +1 -1
- data/lib/mongo/collection/view/change_stream/retryable.rb +1 -1
- data/lib/mongo/collection/view/change_stream.rb +3 -3
- data/lib/mongo/collection/view/explainable.rb +1 -1
- data/lib/mongo/collection/view/immutable.rb +1 -1
- data/lib/mongo/collection/view/iterable.rb +1 -1
- data/lib/mongo/collection/view/map_reduce.rb +1 -1
- data/lib/mongo/collection/view/readable.rb +11 -12
- data/lib/mongo/collection/view/writable.rb +1 -3
- data/lib/mongo/collection/view.rb +1 -1
- data/lib/mongo/collection.rb +179 -57
- data/lib/mongo/condition_variable.rb +58 -0
- data/lib/mongo/config/options.rb +1 -0
- data/lib/mongo/config/validators/option.rb +1 -0
- data/lib/mongo/config.rb +1 -0
- data/lib/mongo/crypt/auto_decryption_context.rb +1 -1
- data/lib/mongo/crypt/auto_encrypter.rb +5 -3
- data/lib/mongo/crypt/auto_encryption_context.rb +1 -1
- data/lib/mongo/crypt/binary.rb +1 -1
- data/lib/mongo/crypt/binding.rb +224 -30
- data/lib/mongo/crypt/context.rb +67 -4
- data/lib/mongo/crypt/data_key_context.rb +1 -1
- data/lib/mongo/crypt/encryption_io.rb +2 -2
- data/lib/mongo/crypt/explicit_decryption_context.rb +1 -1
- data/lib/mongo/crypt/explicit_encrypter.rb +120 -34
- data/lib/mongo/crypt/explicit_encryption_context.rb +58 -27
- data/lib/mongo/{operation/command/command.rb → crypt/explicit_encryption_expression_context.rb} +9 -20
- data/lib/mongo/crypt/handle.rb +10 -2
- data/lib/mongo/crypt/hooks.rb +1 -1
- 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 +3 -119
- data/lib/mongo/crypt/kms/azure/access_token.rb +54 -0
- data/lib/mongo/crypt/kms/azure/credentials.rb +103 -0
- data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +122 -0
- data/lib/mongo/crypt/kms/azure/master_document.rb +79 -0
- data/lib/mongo/crypt/kms/azure.rb +5 -128
- data/lib/mongo/crypt/kms/credentials.rb +17 -2
- data/lib/mongo/crypt/kms/gcp/credentials.rb +127 -0
- data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +58 -0
- data/lib/mongo/crypt/kms/gcp/master_document.rb +99 -0
- data/lib/mongo/crypt/kms/gcp.rb +4 -172
- 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 +3 -100
- 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 +3 -66
- data/lib/mongo/crypt/kms/master_key_document.rb +1 -1
- data/lib/mongo/crypt/kms.rb +7 -2
- data/lib/mongo/crypt/kms_context.rb +1 -1
- data/lib/mongo/crypt/rewrap_many_data_key_context.rb +1 -1
- data/lib/mongo/crypt/rewrap_many_data_key_result.rb +1 -1
- data/lib/mongo/crypt/status.rb +1 -1
- data/lib/mongo/crypt.rb +13 -1
- data/lib/mongo/cursor/kill_spec.rb +1 -1
- data/lib/mongo/cursor.rb +40 -6
- data/lib/mongo/database/view.rb +41 -4
- data/lib/mongo/database.rb +2 -2
- data/lib/mongo/dbref.rb +1 -1
- 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 +1 -1
- data/lib/mongo/error/change_stream_resumable.rb +1 -1
- data/lib/mongo/{operation/drop_database/command.rb → error/client_closed.rb} +4 -21
- 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 +1 -0
- data/lib/mongo/error/invalid_cursor_operation.rb +1 -1
- data/lib/mongo/error/invalid_database_name.rb +1 -1
- data/lib/mongo/error/invalid_document.rb +1 -1
- data/lib/mongo/error/invalid_file.rb +1 -1
- data/lib/mongo/error/invalid_file_revision.rb +1 -1
- data/lib/mongo/{operation/drop/command.rb → error/invalid_max_connecting.rb} +8 -21
- data/lib/mongo/error/invalid_min_pool_size.rb +1 -1
- data/lib/mongo/error/invalid_nonce.rb +1 -1
- data/lib/mongo/error/invalid_read_concern.rb +1 -1
- data/lib/mongo/error/invalid_read_option.rb +2 -2
- data/lib/mongo/error/invalid_replacement_document.rb +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +4 -2
- data/lib/mongo/error/missing_file_chunk.rb +1 -1
- 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 +8 -1
- data/lib/mongo/error/operation_failure.rb +1 -1
- 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/remove_user/command.rb → error/pool_error.rb} +21 -22
- 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 +1 -1
- 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/session_ended.rb +1 -1
- data/lib/mongo/error/session_not_materialized.rb +1 -1
- data/lib/mongo/error/sessions_not_supported.rb +1 -1
- data/lib/mongo/error/snapshot_session_invalid_server_version.rb +1 -1
- data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +1 -1
- data/lib/mongo/error/socket_error.rb +1 -1
- data/lib/mongo/error/socket_timeout_error.rb +1 -1
- 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 +8 -1
- 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 +1 -1
- data/lib/mongo/grid/stream/read.rb +1 -1
- data/lib/mongo/grid/stream/write.rb +1 -1
- 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 +1 -1
- 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 +1 -1
- data/lib/mongo/monitoring/event/command_started.rb +1 -1
- data/lib/mongo/monitoring/event/command_succeeded.rb +1 -1
- data/lib/mongo/monitoring/event/secure.rb +1 -1
- 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 +1 -1
- 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 +1 -1
- data/lib/mongo/operation/collections_info.rb +4 -16
- data/lib/mongo/operation/command/op_msg.rb +1 -1
- data/lib/mongo/operation/command.rb +2 -3
- data/lib/mongo/operation/context.rb +1 -1
- data/lib/mongo/operation/count/op_msg.rb +1 -1
- data/lib/mongo/operation/count.rb +2 -3
- data/lib/mongo/operation/create/op_msg.rb +1 -1
- data/lib/mongo/operation/create.rb +2 -3
- data/lib/mongo/operation/create_index/op_msg.rb +1 -1
- data/lib/mongo/operation/create_index.rb +2 -3
- 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 +1 -1
- data/lib/mongo/operation/delete/result.rb +1 -1
- data/lib/mongo/operation/delete.rb +1 -2
- data/lib/mongo/operation/distinct/op_msg.rb +1 -1
- 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 +1 -1
- data/lib/mongo/operation/drop_index.rb +2 -3
- data/lib/mongo/operation/explain/op_msg.rb +1 -1
- data/lib/mongo/operation/explain/result.rb +1 -1
- data/lib/mongo/operation/explain.rb +2 -4
- data/lib/mongo/operation/find/builder/command.rb +1 -1
- data/lib/mongo/operation/find/builder/flags.rb +1 -1
- data/lib/mongo/operation/find/builder/modifiers.rb +1 -1
- data/lib/mongo/operation/find/builder.rb +1 -2
- data/lib/mongo/operation/find/op_msg.rb +1 -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 +1 -1
- data/lib/mongo/operation/get_more/op_msg.rb +1 -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 +1 -1
- data/lib/mongo/operation/insert/op_msg.rb +1 -1
- data/lib/mongo/operation/insert/result.rb +1 -1
- data/lib/mongo/operation/insert.rb +1 -2
- 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 -3
- data/lib/mongo/operation/list_collections/op_msg.rb +1 -1
- data/lib/mongo/operation/list_collections/result.rb +1 -1
- 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 +1 -1
- data/lib/mongo/operation/map_reduce.rb +2 -3
- data/lib/mongo/operation/op_msg_base.rb +1 -1
- 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 +1 -1
- 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 +1 -1
- 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} +12 -7
- 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 +1 -1
- 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 +1 -2
- data/lib/mongo/operation/shared/specifiable.rb +1 -1
- data/lib/mongo/operation/shared/validatable.rb +1 -1
- data/lib/mongo/operation/shared/write.rb +1 -1
- 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 +1 -1
- data/lib/mongo/operation/update/result.rb +1 -1
- data/lib/mongo/operation/update.rb +1 -2
- 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 +2 -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 +4 -21
- 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 +5 -9
- data/lib/mongo/protocol/msg.rb +2 -1
- 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 +1 -4
- data/lib/mongo/query_cache.rb +21 -21
- data/lib/mongo/retryable/base_worker.rb +91 -0
- data/lib/mongo/retryable/read_worker.rb +296 -0
- data/lib/mongo/retryable/write_worker.rb +364 -0
- data/lib/mongo/retryable.rb +31 -502
- data/lib/mongo/semaphore.rb +2 -2
- data/lib/mongo/server/app_metadata/environment.rb +259 -0
- data/lib/mongo/server/app_metadata/platform.rb +114 -0
- data/lib/mongo/server/app_metadata/truncator.rb +142 -0
- data/lib/mongo/server/app_metadata.rb +75 -108
- data/lib/mongo/server/connection.rb +61 -20
- data/lib/mongo/server/connection_base.rb +1 -1
- data/lib/mongo/server/connection_common.rb +1 -1
- 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 +726 -265
- data/lib/mongo/server/description/features.rb +2 -2
- data/lib/mongo/server/description/load_balancer.rb +1 -1
- data/lib/mongo/server/description.rb +7 -6
- data/lib/mongo/server/monitor/app_metadata.rb +1 -1
- data/lib/mongo/server/monitor/connection.rb +1 -1
- data/lib/mongo/server/monitor.rb +11 -7
- data/lib/mongo/server/pending_connection.rb +1 -1
- data/lib/mongo/server/push_monitor/connection.rb +1 -1
- data/lib/mongo/server/push_monitor.rb +1 -1
- data/lib/mongo/server/round_trip_time_averager.rb +1 -1
- data/lib/mongo/server.rb +96 -30
- data/lib/mongo/server_selector/base.rb +24 -3
- 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.rb +1 -1
- data/lib/mongo/session/session_pool.rb +1 -1
- data/lib/mongo/session.rb +2 -2
- data/lib/mongo/socket/ocsp_cache.rb +1 -1
- data/lib/mongo/socket/ocsp_verifier.rb +1 -1
- data/lib/mongo/socket/ssl.rb +1 -1
- data/lib/mongo/socket/tcp.rb +1 -1
- data/lib/mongo/socket/unix.rb +1 -1
- data/lib/mongo/socket.rb +29 -2
- data/lib/mongo/srv/monitor.rb +1 -3
- data/lib/mongo/srv/resolver.rb +1 -1
- 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 +322 -81
- data/lib/mongo/uri/srv_protocol.rb +1 -1
- data/lib/mongo/uri.rb +41 -13
- data/lib/mongo/utils.rb +1 -1
- data/lib/mongo/version.rb +2 -2
- 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 +2 -1
- data/mongo.gemspec +5 -2
- data/spec/atlas/atlas_connectivity_spec.rb +1 -1
- data/spec/atlas/operations_spec.rb +3 -8
- 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 +1 -1
- 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 +1 -0
- data/spec/integration/bulk_write_spec.rb +1 -1
- data/spec/integration/change_stream_examples_spec.rb +1 -1
- data/spec/integration/change_stream_spec.rb +6 -1
- 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 +23 -1
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +1 -1
- data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +1 -1
- data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +1 -1
- 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 +10 -5
- data/spec/integration/client_side_encryption/auto_encryption_spec.rb +38 -2
- data/spec/integration/client_side_encryption/automatic_data_encryption_keys_prose_spec.rb +153 -0
- data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +1 -1
- data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +1 -1
- data/spec/integration/client_side_encryption/client_close_spec.rb +1 -1
- data/spec/integration/client_side_encryption/corpus_spec.rb +1 -1
- data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +3 -3
- data/spec/integration/client_side_encryption/data_key_spec.rb +1 -1
- data/spec/integration/client_side_encryption/decryption_events_prose_spec.rb +59 -58
- data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +1 -1
- data/spec/integration/client_side_encryption/explicit_queryable_encryption_spec.rb +36 -33
- data/spec/integration/client_side_encryption/external_key_vault_spec.rb +1 -1
- data/spec/integration/client_side_encryption/kms_tls_options_spec.rb +3 -3
- data/spec/integration/client_side_encryption/kms_tls_spec.rb +1 -1
- 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 +14 -11
- data/spec/integration/client_side_encryption/range_explicit_encryption_prose_spec.rb +536 -0
- data/spec/integration/client_side_encryption/rewrap_prose_spec.rb +114 -0
- data/spec/integration/client_side_encryption/unique_index_on_key_alt_names_prose_spec.rb +20 -16
- data/spec/integration/client_side_encryption/views_spec.rb +1 -1
- 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 +27 -7
- data/spec/integration/connection_spec.rb +1 -1
- data/spec/integration/crud_spec.rb +1 -1
- data/spec/integration/cursor_pinning_spec.rb +6 -2
- data/spec/integration/cursor_reaping_spec.rb +1 -1
- data/spec/integration/docs_examples_spec.rb +2 -2
- data/spec/integration/error_detection_spec.rb +1 -1
- data/spec/integration/fork_reconnect_spec.rb +2 -2
- data/spec/integration/get_more_spec.rb +1 -1
- data/spec/integration/grid_fs_bucket_spec.rb +1 -1
- 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 +2 -2
- data/spec/integration/operation_failure_code_spec.rb +1 -1
- data/spec/integration/operation_failure_message_spec.rb +1 -0
- data/spec/integration/query_cache_spec.rb +90 -3
- data/spec/integration/query_cache_transactions_spec.rb +1 -1
- data/spec/integration/read_concern_spec.rb +1 -1
- data/spec/integration/read_preference_spec.rb +1 -1
- data/spec/integration/reconnect_spec.rb +4 -1
- data/spec/integration/retryable_errors_spec.rb +1 -1
- data/spec/integration/retryable_reads_errors_spec.rb +110 -0
- data/spec/integration/retryable_writes/retryable_writes_36_and_older_spec.rb +1 -1
- 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 +160 -2
- data/spec/integration/sdam_error_handling_spec.rb +65 -4
- data/spec/integration/sdam_events_spec.rb +1 -1
- data/spec/integration/sdam_prose_spec.rb +3 -3
- 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 +1 -1
- data/spec/integration/server_selection_spec.rb +1 -1
- data/spec/integration/server_selector_spec.rb +5 -3
- data/spec/integration/server_spec.rb +23 -26
- data/spec/integration/shell_examples_spec.rb +1 -1
- data/spec/integration/size_limit_spec.rb +1 -1
- data/spec/integration/snappy_compression_spec.rb +1 -1
- data/spec/integration/snapshot_query_examples_spec.rb +9 -7
- data/spec/integration/srv_monitoring_spec.rb +2 -1
- data/spec/integration/srv_spec.rb +3 -3
- data/spec/integration/ssl_uri_options_spec.rb +1 -1
- data/spec/integration/step_down_spec.rb +5 -3
- data/spec/integration/time_zone_querying_spec.rb +1 -1
- data/spec/integration/transaction_pinning_spec.rb +18 -4
- data/spec/integration/transactions_api_examples_spec.rb +1 -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 +2 -2
- 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 +1 -1
- data/spec/lite_spec_helper.rb +15 -2
- data/spec/mongo/address/ipv4_spec.rb +1 -1
- data/spec/mongo/address/ipv6_spec.rb +1 -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 +8 -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 +1 -1
- data/spec/mongo/auth/scram256/conversation_spec.rb +1 -1
- data/spec/mongo/auth/scram_negotiation_spec.rb +1 -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 +1 -1
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +1 -1
- data/spec/mongo/bulk_write_spec.rb +1 -1
- data/spec/mongo/caching_cursor_spec.rb +1 -1
- data/spec/mongo/client_construction_spec.rb +619 -693
- data/spec/mongo/client_encryption_spec.rb +1 -1
- data/spec/mongo/client_spec.rb +172 -231
- data/spec/mongo/cluster/cursor_reaper_spec.rb +1 -1
- 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 +156 -154
- data/spec/mongo/cluster_time_spec.rb +1 -1
- data/spec/mongo/collection/view/aggregation_spec.rb +1 -1
- 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 +1 -1
- data/spec/mongo/collection/view/explainable_spec.rb +1 -1
- data/spec/mongo/collection/view/immutable_spec.rb +1 -1
- data/spec/mongo/collection/view/iterable_spec.rb +1 -1
- data/spec/mongo/collection/view/map_reduce_spec.rb +11 -1
- data/spec/mongo/collection/view/readable_spec.rb +139 -1
- data/spec/mongo/collection/view/writable_spec.rb +1 -1
- data/spec/mongo/collection/view_spec.rb +1 -1
- data/spec/mongo/collection_crud_spec.rb +57 -1
- data/spec/mongo/collection_ddl_spec.rb +116 -66
- data/spec/mongo/collection_spec.rb +18 -4
- data/spec/mongo/condition_variable_spec.rb +104 -0
- data/spec/mongo/config/options_spec.rb +1 -0
- data/spec/mongo/config_spec.rb +2 -1
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/auto_encrypter_spec.rb +8 -1
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +1 -1
- 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 +1 -1
- data/spec/mongo/crypt/binding/helpers_spec.rb +1 -1
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +1 -1
- data/spec/mongo/crypt/binding/status_spec.rb +1 -1
- data/spec/mongo/crypt/binding/version_spec.rb +19 -5
- data/spec/mongo/crypt/binding_unloaded_spec.rb +1 -1
- data/spec/mongo/crypt/data_key_context_spec.rb +1 -1
- data/spec/mongo/crypt/encryption_io_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +3 -3
- data/spec/mongo/crypt/handle_spec.rb +19 -4
- data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +1 -1
- data/spec/mongo/crypt/hooks_spec.rb +2 -2
- data/spec/mongo/crypt/kms/azure/credentials_retriever_spec.rb +86 -0
- data/spec/mongo/crypt/kms/credentials_spec.rb +17 -1
- data/spec/mongo/crypt/kms_spec.rb +13 -10
- 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 +58 -11
- data/spec/mongo/database_spec.rb +1 -1
- 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 +1 -1
- 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 +4 -4
- 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/create/op_msg_spec.rb +1 -1
- 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 +1 -1
- data/spec/mongo/operation/delete_spec.rb +1 -1
- 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/indexes_spec.rb +1 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +1 -1
- data/spec/mongo/operation/insert/op_msg_spec.rb +1 -1
- data/spec/mongo/operation/insert_spec.rb +1 -1
- data/spec/mongo/operation/limited_spec.rb +1 -1
- data/spec/mongo/operation/map_reduce_spec.rb +1 -1
- data/spec/mongo/operation/read_preference_legacy_spec.rb +1 -1
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +1 -1
- data/spec/mongo/operation/remove_user_spec.rb +1 -1
- data/spec/mongo/operation/result_spec.rb +1 -1
- 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 +1 -1
- data/spec/mongo/operation/update_spec.rb +1 -1
- 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 +1 -46
- 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 +4 -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 +1 -1
- data/spec/mongo/retryable_spec.rb +5 -3
- data/spec/mongo/semaphore_spec.rb +7 -7
- data/spec/mongo/server/app_metadata/environment_spec.rb +209 -0
- data/spec/mongo/server/app_metadata/truncator_spec.rb +158 -0
- data/spec/mongo/server/app_metadata_spec.rb +44 -66
- data/spec/mongo/server/connection_auth_spec.rb +1 -1
- data/spec/mongo/server/connection_common_spec.rb +1 -1
- data/spec/mongo/server/connection_pool/populator_spec.rb +17 -3
- data/spec/mongo/server/connection_pool_spec.rb +447 -10
- data/spec/mongo/server/connection_spec.rb +17 -4
- data/spec/mongo/server/description/features_spec.rb +1 -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 +1 -1
- data/spec/mongo/server/round_trip_time_averager_spec.rb +1 -1
- data/spec/mongo/server_selector/nearest_spec.rb +1 -1
- data/spec/mongo/server_selector/primary_preferred_spec.rb +1 -1
- data/spec/mongo/server_selector/primary_spec.rb +1 -1
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +1 -1
- data/spec/mongo/server_selector/secondary_spec.rb +1 -1
- data/spec/mongo/server_selector_spec.rb +1 -1
- data/spec/mongo/server_spec.rb +32 -5
- data/spec/mongo/session/server_session_spec.rb +1 -1
- data/spec/mongo/session/session_pool_spec.rb +1 -1
- data/spec/mongo/session_spec.rb +1 -1
- data/spec/mongo/session_transaction_spec.rb +2 -2
- data/spec/mongo/socket/ssl_spec.rb +3 -9
- 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 +162 -2
- data/spec/mongo/uri_option_parsing_spec.rb +1 -1
- data/spec/mongo/uri_spec.rb +143 -2
- data/spec/mongo/utils_spec.rb +1 -1
- data/spec/mongo/write_concern/acknowledged_spec.rb +1 -1
- data/spec/mongo/write_concern/unacknowledged_spec.rb +1 -1
- data/spec/mongo/write_concern_spec.rb +1 -1
- data/spec/runners/auth.rb +1 -1
- data/spec/runners/change_streams/outcome.rb +1 -1
- data/spec/runners/change_streams/spec.rb +1 -1
- data/spec/runners/change_streams/test.rb +1 -1
- 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 +1 -1
- data/spec/runners/crud/context.rb +1 -1
- data/spec/runners/crud/operation.rb +2 -2
- data/spec/runners/crud/outcome.rb +1 -1
- data/spec/runners/crud/requirement.rb +3 -3
- data/spec/runners/crud/spec.rb +2 -2
- data/spec/runners/crud/test.rb +1 -1
- data/spec/runners/crud/test_base.rb +2 -2
- data/spec/runners/crud/verifier.rb +3 -3
- data/spec/runners/crud.rb +1 -1
- 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 +15 -9
- data/spec/runners/transactions/spec.rb +1 -1
- data/spec/runners/transactions/test.rb +44 -3
- data/spec/runners/transactions.rb +1 -1
- data/spec/runners/unified/assertions.rb +94 -77
- data/spec/runners/unified/change_stream_operations.rb +14 -3
- data/spec/runners/unified/client_side_encryption_operations.rb +1 -1
- data/spec/runners/unified/crud_operations.rb +11 -2
- data/spec/runners/unified/ddl_operations.rb +80 -4
- data/spec/runners/unified/entity_map.rb +1 -1
- data/spec/runners/unified/error.rb +1 -1
- 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 +1 -1
- data/spec/runners/unified/support_operations.rb +66 -2
- data/spec/runners/unified/test.rb +98 -24
- data/spec/runners/unified/test_group.rb +1 -1
- data/spec/runners/unified/thread_operations.rb +73 -0
- data/spec/runners/unified.rb +9 -6
- data/spec/shared/lib/mrss/docker_runner.rb +4 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +10 -2
- data/spec/shared/lib/mrss/server_version_registry.rb +16 -23
- data/spec/shared/lib/mrss/utils.rb +28 -6
- data/spec/shared/share/Dockerfile.erb +24 -19
- data/spec/shared/shlib/server.sh +32 -8
- data/spec/shared/shlib/set_env.sh +4 -4
- data/spec/solo/clean_exit_spec.rb +4 -11
- data/spec/spec_helper.rb +1 -1
- 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 +12 -2
- 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 -1
- data/spec/spec_tests/crud_unified_spec.rb +1 -1
- data/spec/spec_tests/data/change_streams_unified/change-streams-clusterTime.yml +41 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-disambiguatedPaths.yml +103 -0
- data/spec/spec_tests/data/change_streams_unified/change-streams-errors.yml +2 -6
- data/spec/spec_tests/data/change_streams_unified/change-streams-pre_and_post_images.yml +1 -1
- data/spec/spec_tests/data/change_streams_unified/change-streams-resume-allowlist.yml +1 -3
- data/spec/spec_tests/data/change_streams_unified/change-streams-resume-errorLabels.yml +1 -3
- data/spec/spec_tests/data/change_streams_unified/change-streams-showExpandedEvents.yml +15 -6
- data/spec/spec_tests/data/client_side_encryption/awsTemporary.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +5 -4
- data/spec/spec_tests/data/client_side_encryption/{fle2-BypassQueryAnalysis.yml → fle2v2-BypassQueryAnalysis.yml} +18 -30
- data/spec/spec_tests/data/client_side_encryption/{fle2-Compact.yml → fle2v2-Compact.yml} +5 -3
- data/spec/spec_tests/data/client_side_encryption/fle2v2-CreateCollection-OldServer.yml +61 -0
- data/spec/spec_tests/data/client_side_encryption/{fle2-CreateCollection.yml → fle2v2-CreateCollection.yml} +212 -538
- data/spec/spec_tests/data/client_side_encryption/{fle2-DecryptExistingData.yml → fle2v2-DecryptExistingData.yml} +4 -2
- data/spec/spec_tests/data/client_side_encryption/{fle2-Delete.yml → fle2v2-Delete.yml} +17 -24
- data/spec/spec_tests/data/client_side_encryption/{fle2-EncryptedFields-vs-EncryptedFieldsMap.yml → fle2v2-EncryptedFields-vs-EncryptedFieldsMap.yml} +5 -6
- data/spec/spec_tests/data/client_side_encryption/{fle2-EncryptedFields-vs-jsonSchema.yml → fle2v2-EncryptedFields-vs-jsonSchema.yml} +18 -6
- data/spec/spec_tests/data/client_side_encryption/{fle2-EncryptedFieldsMap-defaults.yml → fle2v2-EncryptedFieldsMap-defaults.yml} +6 -5
- data/spec/spec_tests/data/client_side_encryption/{fle2-FindOneAndUpdate.yml → fle2v2-FindOneAndUpdate.yml} +31 -44
- data/spec/spec_tests/data/client_side_encryption/{fle2-InsertFind-Indexed.yml → fle2v2-InsertFind-Indexed.yml} +16 -6
- data/spec/spec_tests/data/client_side_encryption/{fle2-InsertFind-Unindexed.yml → fle2v2-InsertFind-Unindexed.yml} +10 -4
- data/spec/spec_tests/data/client_side_encryption/{fle2-MissingKey.yml → fle2v2-MissingKey.yml} +5 -3
- data/spec/spec_tests/data/client_side_encryption/{fle2-NoEncryption.yml → fle2v2-NoEncryption.yml} +4 -2
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Aggregate.yml +241 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Correctness.yml +422 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Delete.yml +182 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-FindOneAndUpdate.yml +239 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-InsertFind.yml +235 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Date-Update.yml +252 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Aggregate.yml +1687 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Correctness.yml +293 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Delete.yml +905 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-FindOneAndUpdate.yml +1684 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-InsertFind.yml +1680 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Decimal-Update.yml +1697 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Aggregate.yml +329 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Correctness.yml +424 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Delete.yml +226 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-FindOneAndUpdate.yml +327 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-InsertFind.yml +319 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DecimalPrecision-Update.yml +336 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Aggregate.yml +913 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Correctness.yml +292 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Delete.yml +518 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-FindOneAndUpdate.yml +911 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-InsertFind.yml +907 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Double-Update.yml +924 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Aggregate.yml +325 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Correctness.yml +424 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Delete.yml +224 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-FindOneAndUpdate.yml +323 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-InsertFind.yml +319 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-DoublePrecision-Update.yml +338 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Aggregate.yml +241 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Correctness.yml +423 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Delete.yml +182 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-FindOneAndUpdate.yml +239 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-InsertFind.yml +235 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Int-Update.yml +254 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Aggregate.yml +241 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Correctness.yml +422 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Delete.yml +182 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-FindOneAndUpdate.yml +239 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-InsertFind.yml +235 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-Long-Update.yml +254 -0
- data/spec/spec_tests/data/client_side_encryption/fle2v2-Range-WrongType.yml +43 -0
- data/spec/spec_tests/data/client_side_encryption/{fle2-Update.yml → fle2v2-Update.yml} +33 -44
- data/spec/spec_tests/data/client_side_encryption/{fle2-validatorAndPartialFieldExpression.yml → fle2v2-validatorAndPartialFieldExpression.yml} +10 -9
- data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +1 -1
- data/spec/spec_tests/data/client_side_encryption/unified/createDataKey-kms_providers-invalid.yml +1 -1
- 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-interrupt-immediately.yml +49 -0
- data/spec/spec_tests/data/cmap/pool-clear-interrupting-pending-connections.yml +43 -0
- data/spec/spec_tests/data/cmap/pool-clear-min-size.yml +41 -0
- data/spec/spec_tests/data/cmap/pool-clear-paused.yml +18 -0
- data/spec/spec_tests/data/cmap/pool-clear-ready.yml +39 -0
- data/spec/spec_tests/data/cmap/pool-clear-schedule-run-interruptInUseConnections-false.yml +48 -0
- data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-create-max-size.yml +2 -0
- data/spec/spec_tests/data/cmap/pool-create-min-size-error.yml +43 -0
- data/spec/spec_tests/data/cmap/pool-create-min-size.yml +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/modifyCollection-errorResponse.yml +59 -0
- data/spec/spec_tests/data/collection_management/timeseries-collection.yml +35 -0
- data/spec/spec_tests/data/command_monitoring_unified/redacted-commands.yml +8 -0
- data/spec/spec_tests/data/command_monitoring_unified/writeConcernError.yml +80 -0
- data/spec/spec_tests/data/crud_unified/aggregate-merge-errorResponse.yml +42 -0
- data/spec/spec_tests/data/crud_unified/bulkWrite-errorResponse.yml +50 -0
- data/spec/spec_tests/data/crud_unified/deleteOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +44 -0
- data/spec/spec_tests/data/crud_unified/findOneAndUpdate-errorResponse.yml +69 -0
- data/spec/spec_tests/data/crud_unified/insertOne-errorResponse.yml +46 -0
- data/spec/spec_tests/data/crud_unified/updateOne-errorResponse.yml +47 -0
- data/spec/spec_tests/data/retryable_reads/unified/handshakeError.yml +1266 -53
- data/spec/spec_tests/data/retryable_writes/unified/bulkWrite-serverErrors.yml +1 -1
- data/spec/spec_tests/data/retryable_writes/unified/handshakeError.yml +706 -58
- data/spec/spec_tests/data/retryable_writes/unified/insertOne-noWritesPerformedError.yml +54 -0
- data/spec/spec_tests/data/retryable_writes/unified/insertOne-serverErrors.yml +1 -1
- 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-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 +1 -1
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero-txt.yml +4 -3
- data/spec/spec_tests/data/seed_list_discovery/load-balanced/srvMaxHosts-zero.yml +4 -3
- data/spec/spec_tests/data/sessions_unified/implicit-sessions-default-causal-consistency.yml +119 -0
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +1 -1
- data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +1 -1
- data/spec/spec_tests/data/transactions_unified/mongos-unpin.yml +1 -1
- 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-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/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 +18 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +18 -12
- 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 +2 -2
- data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +1 -1
- data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +1 -1
- 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 +1 -1
- 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 +3 -1
- data/spec/spec_tests/retryable_reads_unified_spec.rb +1 -1
- data/spec/spec_tests/retryable_writes_spec.rb +1 -1
- data/spec/spec_tests/retryable_writes_unified_spec.rb +1 -1
- 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 +13 -0
- data/spec/spec_tests/seed_list_discovery_spec.rb +1 -1
- data/spec/spec_tests/server_selection_rtt_spec.rb +1 -1
- data/spec/spec_tests/server_selection_spec.rb +1 -1
- data/spec/spec_tests/sessions_unified_spec.rb +1 -1
- data/spec/spec_tests/transactions_api_spec.rb +1 -1
- data/spec/spec_tests/transactions_spec.rb +1 -1
- data/spec/spec_tests/transactions_unified_spec.rb +1 -1
- data/spec/spec_tests/unified_spec.rb +1 -6
- 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 +9 -34
- data/spec/stress/fork_reconnect_stress_spec.rb +7 -8
- data/spec/stress/push_monitor_close_spec.rb +1 -1
- data/spec/support/authorization.rb +1 -1
- 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 +1 -1
- data/spec/support/certificates/atlas-ocsp-ca.crt +67 -67
- data/spec/support/certificates/atlas-ocsp.crt +103 -103
- data/spec/support/certificates/retrieve-atlas-cert +2 -0
- data/spec/support/client_registry.rb +6 -2
- data/spec/support/client_registry_macros.rb +1 -1
- data/spec/support/cluster_tools.rb +13 -8
- data/spec/support/common_shortcuts.rb +30 -5
- data/spec/support/constraints.rb +15 -1
- data/spec/support/crypt/{encryptedFields.json → encrypted_fields/encryptedFields.json} +0 -1
- 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.rb +13 -3
- 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 +1 -0
- data/spec/support/matchers.rb +5 -5
- data/spec/support/mongos_macros.rb +7 -0
- data/spec/support/monitoring_ext.rb +1 -1
- data/spec/support/primary_socket.rb +1 -1
- 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 +1 -1
- data/spec/support/shared/server_selector.rb +1 -1
- data/spec/support/shared/session.rb +1 -1
- data/spec/support/spec_config.rb +40 -3
- data/spec/support/spec_setup.rb +1 -1
- data/spec/support/using_hash.rb +11 -2
- data/spec/support/utils.rb +277 -249
- data.tar.gz.sig +0 -0
- metadata +1522 -1289
- metadata.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/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/indexes/command.rb +0 -42
- data/lib/mongo/operation/indexes/legacy.rb +0 -48
- data/lib/mongo/operation/insert/command.rb +0 -55
- 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/shared/op_msg_or_command.rb +0 -41
- 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_user/command.rb +0 -45
- 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/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/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/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 -152
- data/spec/spec_tests/data/sdam_integration/hello-network-error.yml +0 -148
- data/spec/spec_tests/data/sdam_integration/hello-timeout.yml +0 -219
- 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/data/unified/invalid/expectedEventsForClient-ignoreExtraEvents-type.yml +0 -15
- data/spec/spec_tests/sdam_integration_spec.rb +0 -16
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
|
#
|
|
@@ -83,7 +83,7 @@ module Mongo
|
|
|
83
83
|
#
|
|
84
84
|
# @param [ Object ] other The object to check.
|
|
85
85
|
#
|
|
86
|
-
# @return [ true
|
|
86
|
+
# @return [ true | false ] If the objects are equal.
|
|
87
87
|
#
|
|
88
88
|
# @since 2.0.0
|
|
89
89
|
def ==(other)
|
|
@@ -100,19 +100,59 @@ module Mongo
|
|
|
100
100
|
# @param [ String, Symbol ] name The collection name.
|
|
101
101
|
# @param [ Hash ] options The collection options.
|
|
102
102
|
#
|
|
103
|
-
# @option
|
|
103
|
+
# @option opts [ true | false ] :capped Create a fixed-sized collection.
|
|
104
|
+
# @option opts [ Hash ] :change_stream_pre_and_post_images Used to enable
|
|
105
|
+
# pre- and post-images on the created collection.
|
|
106
|
+
# The hash may have the following items:
|
|
107
|
+
# - *:enabled* -- true or false.
|
|
108
|
+
# @option opts [ Hash ] :clustered_index Create a clustered index.
|
|
109
|
+
# This option specifies how this collection should be clustered on _id.
|
|
110
|
+
# The hash may have the following items:
|
|
111
|
+
# - *:key* -- The clustered index key field. Must be set to { _id: 1 }.
|
|
112
|
+
# - *:unique* -- Must be set to true. The collection will not accept
|
|
113
|
+
# inserted or updated documents where the clustered index key value
|
|
114
|
+
# matches an existing value in the index.
|
|
115
|
+
# - *:name* -- Optional. A name that uniquely identifies the clustered index.
|
|
116
|
+
# @option opts [ Hash ] :collation The collation to use.
|
|
117
|
+
# @option opts [ Hash ] :encrypted_fields Hash describing encrypted fields
|
|
118
|
+
# for queryable encryption.
|
|
119
|
+
# @option opts [ Integer ] :expire_after Number indicating
|
|
120
|
+
# after how many seconds old time-series data should be deleted.
|
|
121
|
+
# @option opts [ Integer ] :max The maximum number of documents in a
|
|
122
|
+
# capped collection. The size limit takes precedents over max.
|
|
123
|
+
# @option opts [ Array<Hash> ] :pipeline An array of pipeline stages.
|
|
124
|
+
# A view will be created by applying this pipeline to the view_on
|
|
125
|
+
# collection or view.
|
|
126
|
+
# @option options [ Hash ] :read_concern The read concern options hash,
|
|
127
|
+
# with the following optional keys:
|
|
128
|
+
# - *:level* -- the read preference level as a symbol; valid values
|
|
129
|
+
# are *:local*, *:majority*, and *:snapshot*
|
|
130
|
+
# @option options [ Hash ] :read The read preference options.
|
|
131
|
+
# The hash may have the following items:
|
|
132
|
+
# - *:mode* -- read preference specified as a symbol; valid values are
|
|
133
|
+
# *:primary*, *:primary_preferred*, *:secondary*, *:secondary_preferred*
|
|
134
|
+
# and *:nearest*.
|
|
135
|
+
# - *:tag_sets* -- an array of hashes.
|
|
136
|
+
# - *:local_threshold*.
|
|
137
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
|
138
|
+
# @option opts [ Integer ] :size The size of the capped collection.
|
|
139
|
+
# @option opts [ Hash ] :time_series Create a time-series collection.
|
|
140
|
+
# The hash may have the following items:
|
|
141
|
+
# - *:timeField* -- The name of the field which contains the date in each
|
|
142
|
+
# time series document.
|
|
143
|
+
# - *:metaField* -- The name of the field which contains metadata in each
|
|
144
|
+
# time series document.
|
|
145
|
+
# - *:granularity* -- Set the granularity to the value that is the closest
|
|
146
|
+
# match to the time span between consecutive incoming measurements.
|
|
147
|
+
# Possible values are "seconds" (default), "minutes", and "hours".
|
|
148
|
+
# @option opts [ Hash ] :validator Hash describing document validation
|
|
149
|
+
# options for the collection.
|
|
150
|
+
# @option opts [ String ] :view_on The name of the source collection or
|
|
151
|
+
# view from which to create a view.
|
|
152
|
+
# @option opts [ Hash ] :write Deprecated. Equivalent to :write_concern
|
|
104
153
|
# option.
|
|
105
|
-
# @option
|
|
154
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
|
106
155
|
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
|
107
|
-
# @option options [ Hash ] :time_series Create a time-series collection.
|
|
108
|
-
# See https://mongodb.com/docs/manual/core/timeseries-collections/ for more
|
|
109
|
-
# information about time-series collection.
|
|
110
|
-
# @option options [ Integer ] :expire_after Number indicating
|
|
111
|
-
# after how many seconds old time-series data should be deleted.
|
|
112
|
-
# @options clustered_index [ Hash ] :clustered_index Create a clustered index.
|
|
113
|
-
# This option specifies how this collection should be clustered on _id.
|
|
114
|
-
# See https://www.mongodb.com/docs/v5.3/reference/method/db.createCollection/#std-label-db.createCollection.clusteredIndex
|
|
115
|
-
# for more information about this option.
|
|
116
156
|
#
|
|
117
157
|
# @since 2.0.0
|
|
118
158
|
def initialize(database, name, options = {})
|
|
@@ -133,7 +173,11 @@ module Mongo
|
|
|
133
173
|
@options.freeze
|
|
134
174
|
end
|
|
135
175
|
|
|
136
|
-
# Get the read concern for this collection instance.
|
|
176
|
+
# Get the effective read concern for this collection instance.
|
|
177
|
+
#
|
|
178
|
+
# If a read concern was provided in collection options, that read concern
|
|
179
|
+
# will be returned, otherwise the database's effective read concern will
|
|
180
|
+
# be returned.
|
|
137
181
|
#
|
|
138
182
|
# @example Get the read concern.
|
|
139
183
|
# collection.read_concern
|
|
@@ -145,7 +189,7 @@ module Mongo
|
|
|
145
189
|
options[:read_concern] || database.read_concern
|
|
146
190
|
end
|
|
147
191
|
|
|
148
|
-
# Get the server selector
|
|
192
|
+
# Get the server selector for this collection.
|
|
149
193
|
#
|
|
150
194
|
# @example Get the server selector.
|
|
151
195
|
# collection.server_selector
|
|
@@ -157,7 +201,11 @@ module Mongo
|
|
|
157
201
|
@server_selector ||= ServerSelector.get(read_preference || database.server_selector)
|
|
158
202
|
end
|
|
159
203
|
|
|
160
|
-
# Get the read preference
|
|
204
|
+
# Get the effective read preference for this collection.
|
|
205
|
+
#
|
|
206
|
+
# If a read preference was provided in collection options, that read
|
|
207
|
+
# preference will be returned, otherwise the database's effective read
|
|
208
|
+
# preference will be returned.
|
|
161
209
|
#
|
|
162
210
|
# @example Get the read preference.
|
|
163
211
|
# collection.read_preference
|
|
@@ -169,7 +217,11 @@ module Mongo
|
|
|
169
217
|
@read_preference ||= options[:read] || database.read_preference
|
|
170
218
|
end
|
|
171
219
|
|
|
172
|
-
# Get the write concern on this collection.
|
|
220
|
+
# Get the effective write concern on this collection.
|
|
221
|
+
#
|
|
222
|
+
# If a write concern was provided in collection options, that write
|
|
223
|
+
# concern will be returned, otherwise the database's effective write
|
|
224
|
+
# concern will be returned.
|
|
173
225
|
#
|
|
174
226
|
# @example Get the write concern.
|
|
175
227
|
# collection.write_concern
|
|
@@ -182,7 +234,8 @@ module Mongo
|
|
|
182
234
|
options[:write_concern] || options[:write] || database.write_concern)
|
|
183
235
|
end
|
|
184
236
|
|
|
185
|
-
# Get the write concern for
|
|
237
|
+
# Get the write concern to use for an operation on this collection,
|
|
238
|
+
# given a session.
|
|
186
239
|
#
|
|
187
240
|
# If the session is in a transaction and the collection
|
|
188
241
|
# has an unacknowledged write concern, remove the write
|
|
@@ -204,17 +257,37 @@ module Mongo
|
|
|
204
257
|
wc
|
|
205
258
|
end
|
|
206
259
|
|
|
207
|
-
# Provides a new collection with either a new read preference
|
|
208
|
-
# merged over the existing read preference /
|
|
260
|
+
# Provides a new collection with either a new read preference, new read
|
|
261
|
+
# concern or new write concern merged over the existing read preference /
|
|
262
|
+
# read concern / write concern.
|
|
209
263
|
#
|
|
210
264
|
# @example Get a collection with a changed read preference.
|
|
211
265
|
# collection.with(read: { mode: :primary_preferred })
|
|
266
|
+
|
|
267
|
+
# @example Get a collection with a changed read concern.
|
|
268
|
+
# collection.with(read_concern: { level: :majority })
|
|
212
269
|
#
|
|
213
270
|
# @example Get a collection with a changed write concern.
|
|
214
271
|
# collection.with(write_concern: { w: 3 })
|
|
215
|
-
|
|
272
|
+
#
|
|
216
273
|
# @param [ Hash ] new_options The new options to use.
|
|
217
274
|
#
|
|
275
|
+
# @option new_options [ Hash ] :read The read preference options.
|
|
276
|
+
# The hash may have the following items:
|
|
277
|
+
# - *:mode* -- read preference specified as a symbol; valid values are
|
|
278
|
+
# *:primary*, *:primary_preferred*, *:secondary*, *:secondary_preferred*
|
|
279
|
+
# and *:nearest*.
|
|
280
|
+
# - *:tag_sets* -- an array of hashes.
|
|
281
|
+
# - *:local_threshold*.
|
|
282
|
+
# @option new_options [ Hash ] :read_concern The read concern options hash,
|
|
283
|
+
# with the following optional keys:
|
|
284
|
+
# - *:level* -- the read preference level as a symbol; valid values
|
|
285
|
+
# are *:local*, *:majority*, and *:snapshot*
|
|
286
|
+
# @option new_options [ Hash ] :write Deprecated. Equivalent to :write_concern
|
|
287
|
+
# option.
|
|
288
|
+
# @option new_options [ Hash ] :write_concern The write concern options.
|
|
289
|
+
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
|
290
|
+
#
|
|
218
291
|
# @return [ Mongo::Collection ] A new collection instance.
|
|
219
292
|
#
|
|
220
293
|
# @since 2.1.0
|
|
@@ -237,11 +310,13 @@ module Mongo
|
|
|
237
310
|
# @example Is the collection capped?
|
|
238
311
|
# collection.capped?
|
|
239
312
|
#
|
|
240
|
-
# @return [ true
|
|
313
|
+
# @return [ true | false ] If the collection is capped.
|
|
241
314
|
#
|
|
242
315
|
# @since 2.0.0
|
|
243
316
|
def capped?
|
|
244
|
-
database.
|
|
317
|
+
database.list_collections(filter: { name: name })
|
|
318
|
+
.first
|
|
319
|
+
&.dig('options', CAPPED) || false
|
|
245
320
|
end
|
|
246
321
|
|
|
247
322
|
# Force the collection to be created in the database.
|
|
@@ -251,30 +326,63 @@ module Mongo
|
|
|
251
326
|
#
|
|
252
327
|
# @param [ Hash ] opts The options for the create operation.
|
|
253
328
|
#
|
|
254
|
-
# @option opts [
|
|
255
|
-
# @option opts [ Hash ] :write_concern The write concern options.
|
|
256
|
-
# @option opts [ Hash ] :time_series Create a time-series collection.
|
|
257
|
-
# @option opts [ Integer ] :expire_after Number indicating
|
|
258
|
-
# after how many seconds old time-series data should be deleted.
|
|
329
|
+
# @option opts [ true | false ] :capped Create a fixed-sized collection.
|
|
259
330
|
# @option opts [ Hash ] :change_stream_pre_and_post_images Used to enable
|
|
260
331
|
# pre- and post-images on the created collection.
|
|
332
|
+
# The hash may have the following items:
|
|
333
|
+
# - *:enabled* -- true or false.
|
|
334
|
+
# @option opts [ Hash ] :clustered_index Create a clustered index.
|
|
335
|
+
# This option specifies how this collection should be clustered on _id.
|
|
336
|
+
# The hash may have the following items:
|
|
337
|
+
# - *:key* -- The clustered index key field. Must be set to { _id: 1 }.
|
|
338
|
+
# - *:unique* -- Must be set to true. The collection will not accept
|
|
339
|
+
# inserted or updated documents where the clustered index key value
|
|
340
|
+
# matches an existing value in the index.
|
|
341
|
+
# - *:name* -- Optional. A name that uniquely identifies the clustered index.
|
|
342
|
+
# @option opts [ Hash ] :collation The collation to use.
|
|
261
343
|
# @option opts [ Hash ] :encrypted_fields Hash describing encrypted fields
|
|
262
344
|
# for queryable encryption.
|
|
345
|
+
# @option opts [ Integer ] :expire_after Number indicating
|
|
346
|
+
# after how many seconds old time-series data should be deleted.
|
|
347
|
+
# @option opts [ Integer ] :max The maximum number of documents in a
|
|
348
|
+
# capped collection. The size limit takes precedents over max.
|
|
349
|
+
# @option opts [ Array<Hash> ] :pipeline An array of pipeline stages.
|
|
350
|
+
# A view will be created by applying this pipeline to the view_on
|
|
351
|
+
# collection or view.
|
|
352
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
|
353
|
+
# @option opts [ Integer ] :size The size of the capped collection.
|
|
354
|
+
# @option opts [ Hash ] :time_series Create a time-series collection.
|
|
355
|
+
# The hash may have the following items:
|
|
356
|
+
# - *:timeField* -- The name of the field which contains the date in each
|
|
357
|
+
# time series document.
|
|
358
|
+
# - *:metaField* -- The name of the field which contains metadata in each
|
|
359
|
+
# time series document.
|
|
360
|
+
# - *:granularity* -- Set the granularity to the value that is the closest
|
|
361
|
+
# match to the time span between consecutive incoming measurements.
|
|
362
|
+
# Possible values are "seconds" (default), "minutes", and "hours".
|
|
263
363
|
# @option opts [ Hash ] :validator Hash describing document validation
|
|
264
364
|
# options for the collection.
|
|
365
|
+
# @option opts [ String ] :view_on The name of the source collection or
|
|
366
|
+
# view from which to create a view.
|
|
367
|
+
# @option opts [ Hash ] :write Deprecated. Equivalent to :write_concern
|
|
368
|
+
# option.
|
|
369
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
|
370
|
+
# Can be :w => Integer|String, :fsync => Boolean, :j => Boolean.
|
|
265
371
|
#
|
|
266
372
|
# @return [ Result ] The result of the command.
|
|
267
373
|
#
|
|
268
374
|
# @since 2.0.0
|
|
269
375
|
def create(opts = {})
|
|
270
376
|
# Passing read options to create command causes it to break.
|
|
271
|
-
# Filter the read options out.
|
|
377
|
+
# Filter the read options out. Session is also excluded here as it gets
|
|
378
|
+
# used by the call to with_session and should not be part of the
|
|
379
|
+
# operation. If it gets passed to the operation it would fail BSON
|
|
380
|
+
# serialization.
|
|
272
381
|
# TODO put the list of read options in a class-level constant when
|
|
273
382
|
# we figure out what the full set of them is.
|
|
274
|
-
options = Hash[self.options.reject do |key, value|
|
|
275
|
-
%w(read read_preference read_concern).include?(key.to_s)
|
|
383
|
+
options = Hash[self.options.merge(opts).reject do |key, value|
|
|
384
|
+
%w(read read_preference read_concern session).include?(key.to_s)
|
|
276
385
|
end]
|
|
277
|
-
options.update(opts.slice(*CREATE_COLLECTION_OPTIONS.keys))
|
|
278
386
|
# Converting Ruby options to server style.
|
|
279
387
|
CREATE_COLLECTION_OPTIONS.each do |ruby_key, server_key|
|
|
280
388
|
if options.key?(ruby_key)
|
|
@@ -318,8 +426,10 @@ module Mongo
|
|
|
318
426
|
#
|
|
319
427
|
# @param [ Hash ] opts The options for the drop operation.
|
|
320
428
|
#
|
|
321
|
-
# @option
|
|
429
|
+
# @option opts [ Session ] :session The session to use for the operation.
|
|
322
430
|
# @option opts [ Hash ] :write_concern The write concern options.
|
|
431
|
+
# @option opts [ Hash | nil ] :encrypted_fields Encrypted fields hash that
|
|
432
|
+
# was provided to `create` collection helper.
|
|
323
433
|
#
|
|
324
434
|
# @return [ Result ] The result of the command.
|
|
325
435
|
#
|
|
@@ -356,27 +466,27 @@ module Mongo
|
|
|
356
466
|
# @param [ Hash ] filter The filter to use in the find.
|
|
357
467
|
# @param [ Hash ] options The options for the find.
|
|
358
468
|
#
|
|
359
|
-
# @option options [ true
|
|
469
|
+
# @option options [ true | false ] :allow_disk_use When set to true, the
|
|
360
470
|
# server can write temporary data to disk while executing the find
|
|
361
471
|
# operation. This option is only available on MongoDB server versions
|
|
362
472
|
# 4.4 and newer.
|
|
363
|
-
# @option options [ true
|
|
473
|
+
# @option options [ true | false ] :allow_partial_results Allows the query to get partial
|
|
364
474
|
# results if some shards are down.
|
|
365
475
|
# @option options [ Integer ] :batch_size The number of documents returned in each batch
|
|
366
476
|
# of results from MongoDB.
|
|
367
477
|
# @option options [ Hash ] :collation The collation to use.
|
|
368
|
-
# @option options [ Object ] :comment A user-provided
|
|
369
|
-
#
|
|
478
|
+
# @option options [ Object ] :comment A user-provided comment to attach to
|
|
479
|
+
# this command.
|
|
370
480
|
# @option options [ :tailable, :tailable_await ] :cursor_type The type of cursor to use.
|
|
371
481
|
# @option options [ Integer ] :limit The max number of docs to return from the query.
|
|
372
482
|
# @option options [ Integer ] :max_time_ms
|
|
373
483
|
# The maximum amount of time to allow the query to run, in milliseconds.
|
|
374
484
|
# @option options [ Hash ] :modifiers A document containing meta-operators modifying the
|
|
375
485
|
# output or behavior of a query.
|
|
376
|
-
# @option options [ true
|
|
486
|
+
# @option options [ true | false ] :no_cursor_timeout The server normally times out idle
|
|
377
487
|
# cursors after an inactivity period (10 minutes) to prevent excess memory use.
|
|
378
488
|
# Set this option to prevent that.
|
|
379
|
-
# @option options [ true
|
|
489
|
+
# @option options [ true | false ] :oplog_replay For internal replication
|
|
380
490
|
# use only, applications should not set this option.
|
|
381
491
|
# @option options [ Hash ] :projection The fields to include or exclude from each doc
|
|
382
492
|
# in the result set.
|
|
@@ -402,11 +512,11 @@ module Mongo
|
|
|
402
512
|
# @param [ Array<Hash> ] pipeline The aggregation pipeline.
|
|
403
513
|
# @param [ Hash ] options The aggregation options.
|
|
404
514
|
#
|
|
405
|
-
# @option options [ true
|
|
515
|
+
# @option options [ true | false ] :allow_disk_use Set to true if disk
|
|
406
516
|
# usage is allowed during the aggregation.
|
|
407
517
|
# @option options [ Integer ] :batch_size The number of documents to return
|
|
408
518
|
# per batch.
|
|
409
|
-
# @option options [ true
|
|
519
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
410
520
|
# not to skip document level validation.
|
|
411
521
|
# @option options [ Hash ] :collation The collation to use.
|
|
412
522
|
# @option options [ Object ] :comment A user-provided
|
|
@@ -416,13 +526,13 @@ module Mongo
|
|
|
416
526
|
# See the server documentation for details.
|
|
417
527
|
# @option options [ Integer ] :max_time_ms The maximum amount of time in
|
|
418
528
|
# milliseconds to allow the aggregation to run.
|
|
419
|
-
# @option options [ true
|
|
529
|
+
# @option options [ true | false ] :use_cursor Indicates whether the command
|
|
420
530
|
# will request that the server provide results using a cursor. Note that
|
|
421
531
|
# as of server version 3.6, aggregations always provide results using a
|
|
422
532
|
# cursor and this option is therefore not valid.
|
|
423
533
|
# @option options [ Session ] :session The session to use.
|
|
424
534
|
#
|
|
425
|
-
# @return [ Aggregation ] The aggregation object.
|
|
535
|
+
# @return [ View::Aggregation ] The aggregation object.
|
|
426
536
|
#
|
|
427
537
|
# @since 2.1.0
|
|
428
538
|
def aggregate(pipeline, options = {})
|
|
@@ -642,7 +752,13 @@ module Mongo
|
|
|
642
752
|
# @param [ Hash ] document The document to insert.
|
|
643
753
|
# @param [ Hash ] opts The insert options.
|
|
644
754
|
#
|
|
755
|
+
# @option opts [ true | false ] :bypass_document_validation Whether or
|
|
756
|
+
# not to skip document level validation.
|
|
757
|
+
# @option opts [ Object ] :comment A user-provided comment to attach to
|
|
758
|
+
# this command.
|
|
645
759
|
# @option opts [ Session ] :session The session to use for the operation.
|
|
760
|
+
# @option opts [ Hash ] :write_concern The write concern options.
|
|
761
|
+
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
|
646
762
|
#
|
|
647
763
|
# @return [ Result ] The database response wrapper.
|
|
648
764
|
#
|
|
@@ -684,12 +800,18 @@ module Mongo
|
|
|
684
800
|
# @example Insert documents into the collection.
|
|
685
801
|
# collection.insert_many([{ name: 'test' }])
|
|
686
802
|
#
|
|
687
|
-
# @param [
|
|
803
|
+
# @param [ Enumerable<Hash> ] documents The documents to insert.
|
|
688
804
|
# @param [ Hash ] options The insert options.
|
|
689
805
|
#
|
|
806
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
807
|
+
# not to skip document level validation.
|
|
808
|
+
# @option options [ Object ] :comment A user-provided comment to attach to
|
|
809
|
+
# this command.
|
|
690
810
|
# @option options [ true | false ] :ordered Whether the operations
|
|
691
811
|
# should be executed in order.
|
|
692
812
|
# @option options [ Session ] :session The session to use for the operation.
|
|
813
|
+
# @option options [ Hash ] :write_concern The write concern options.
|
|
814
|
+
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
|
693
815
|
#
|
|
694
816
|
# @return [ Result ] The database response wrapper.
|
|
695
817
|
#
|
|
@@ -706,14 +828,14 @@ module Mongo
|
|
|
706
828
|
# @example Execute a bulk write.
|
|
707
829
|
# collection.bulk_write(operations, options)
|
|
708
830
|
#
|
|
709
|
-
# @param [
|
|
831
|
+
# @param [ Enumerable<Hash> ] requests The bulk write requests.
|
|
710
832
|
# @param [ Hash ] options The options.
|
|
711
833
|
#
|
|
712
|
-
# @option options [ true
|
|
834
|
+
# @option options [ true | false ] :ordered Whether the operations
|
|
713
835
|
# should be executed in order.
|
|
714
836
|
# @option options [ Hash ] :write_concern The write concern options.
|
|
715
837
|
# Can be :w => Integer, :fsync => Boolean, :j => Boolean.
|
|
716
|
-
# @option options [ true
|
|
838
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
717
839
|
# not to skip document level validation.
|
|
718
840
|
# @option options [ Session ] :session The session to use for the set of operations.
|
|
719
841
|
# @option options [ Hash ] :let Mapping of variables to use in the command.
|
|
@@ -802,9 +924,9 @@ module Mongo
|
|
|
802
924
|
# @param [ Hash ] replacement The replacement document..
|
|
803
925
|
# @param [ Hash ] options The options.
|
|
804
926
|
#
|
|
805
|
-
# @option options [ true
|
|
927
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
|
806
928
|
# document doesn't exist.
|
|
807
|
-
# @option options [ true
|
|
929
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
808
930
|
# not to skip document level validation.
|
|
809
931
|
# @option options [ Hash ] :collation The collation to use.
|
|
810
932
|
# @option options [ Session ] :session The session to use.
|
|
@@ -829,9 +951,9 @@ module Mongo
|
|
|
829
951
|
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
|
830
952
|
# @param [ Hash ] options The options.
|
|
831
953
|
#
|
|
832
|
-
# @option options [ true
|
|
954
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
|
833
955
|
# document doesn't exist.
|
|
834
|
-
# @option options [ true
|
|
956
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
835
957
|
# not to skip document level validation.
|
|
836
958
|
# @option options [ Hash ] :collation The collation to use.
|
|
837
959
|
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
|
@@ -858,9 +980,9 @@ module Mongo
|
|
|
858
980
|
# @param [ Hash | Array<Hash> ] update The update document or pipeline.
|
|
859
981
|
# @param [ Hash ] options The options.
|
|
860
982
|
#
|
|
861
|
-
# @option options [ true
|
|
983
|
+
# @option options [ true | false ] :upsert Whether to upsert if the
|
|
862
984
|
# document doesn't exist.
|
|
863
|
-
# @option options [ true
|
|
985
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
864
986
|
# not to skip document level validation.
|
|
865
987
|
# @option options [ Hash ] :collation The collation to use.
|
|
866
988
|
# @option options [ Array ] :array_filters A set of filters specifying to which array elements
|
|
@@ -927,8 +1049,8 @@ module Mongo
|
|
|
927
1049
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
|
928
1050
|
# will be sorted.
|
|
929
1051
|
# @option options [ Symbol ] :return_document Either :before or :after.
|
|
930
|
-
# @option options [ true
|
|
931
|
-
# @option options [ true
|
|
1052
|
+
# @option options [ true | false ] :upsert Whether to upsert if the document doesn't exist.
|
|
1053
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
932
1054
|
# not to skip document level validation.
|
|
933
1055
|
# @option options [ Hash ] :write_concern The write concern options.
|
|
934
1056
|
# Defaults to the collection's write concern.
|
|
@@ -967,8 +1089,8 @@ module Mongo
|
|
|
967
1089
|
# @option options [ Hash ] :sort The key and direction pairs by which the result set
|
|
968
1090
|
# will be sorted.
|
|
969
1091
|
# @option options [ Symbol ] :return_document Either :before or :after.
|
|
970
|
-
# @option options [ true
|
|
971
|
-
# @option options [ true
|
|
1092
|
+
# @option options [ true | false ] :upsert Whether to upsert if the document doesn't exist.
|
|
1093
|
+
# @option options [ true | false ] :bypass_document_validation Whether or
|
|
972
1094
|
# not to skip document level validation.
|
|
973
1095
|
# @option options [ Hash ] :write_concern The write concern options.
|
|
974
1096
|
# Defaults to the collection's write concern.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# rubocop:todo all
|
|
3
|
+
|
|
4
|
+
# Copyright (C) 2020 MongoDB Inc.
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
|
|
18
|
+
module Mongo
|
|
19
|
+
# This is an implementation of a condition variable.
|
|
20
|
+
#
|
|
21
|
+
# @api private
|
|
22
|
+
class ConditionVariable
|
|
23
|
+
extend Forwardable
|
|
24
|
+
|
|
25
|
+
def initialize(lock = Mutex.new)
|
|
26
|
+
@lock = lock
|
|
27
|
+
@cv = ::ConditionVariable.new
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Waits for the condition variable to be signaled up to timeout seconds.
|
|
31
|
+
# If condition variable is not signaled, returns after timeout seconds.
|
|
32
|
+
def wait(timeout = nil)
|
|
33
|
+
raise_unless_locked!
|
|
34
|
+
return false if timeout && timeout < 0
|
|
35
|
+
@cv.wait(@lock, timeout)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def broadcast
|
|
39
|
+
raise_unless_locked!
|
|
40
|
+
@cv.broadcast
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def signal
|
|
44
|
+
raise_unless_locked!
|
|
45
|
+
@cv.signal
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def_delegators :@lock, :synchronize
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
def raise_unless_locked!
|
|
53
|
+
unless @lock.owned?
|
|
54
|
+
raise ArgumentError, "the lock must be owned when calling this method"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
data/lib/mongo/config/options.rb
CHANGED
data/lib/mongo/config.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
#
|
|
2
|
+
# rubocop:todo all
|
|
3
3
|
|
|
4
4
|
# Copyright (C) 2019-2020 MongoDB Inc.
|
|
5
5
|
#
|
|
@@ -91,6 +91,7 @@ module Mongo
|
|
|
91
91
|
# @raise [ ArgumentError ] If required options are missing or incorrectly
|
|
92
92
|
# formatted.
|
|
93
93
|
def initialize(options)
|
|
94
|
+
Crypt.validate_ffi!
|
|
94
95
|
# Note that this call may eventually, via other method invocations,
|
|
95
96
|
# create additional clients which have to be cleaned up.
|
|
96
97
|
@options = set_default_options(options).freeze
|
|
@@ -117,12 +118,13 @@ module Mongo
|
|
|
117
118
|
@crypt_handle.crypt_shared_lib_available? ||
|
|
118
119
|
@options[:extra_options][:crypt_shared_lib_required]
|
|
119
120
|
|
|
120
|
-
|
|
121
|
+
unless @options[:extra_options][:crypt_shared_lib_required] || @crypt_handle.crypt_shared_lib_available? || @options[:bypass_query_analysis]
|
|
121
122
|
# Set server selection timeout to 1 to prevent the client waiting for a
|
|
122
123
|
# long timeout before spawning mongocryptd
|
|
123
124
|
@mongocryptd_client = Client.new(
|
|
124
125
|
@options[:extra_options][:mongocryptd_uri],
|
|
125
126
|
monitoring_io: @options[:client].options[:monitoring_io],
|
|
127
|
+
populator_io: @options[:client].options[:populator_io],
|
|
126
128
|
server_selection_timeout: 10,
|
|
127
129
|
database: @options[:client].options[:database]
|
|
128
130
|
)
|
|
@@ -135,7 +137,7 @@ module Mongo
|
|
|
135
137
|
key_vault_namespace: @options[:key_vault_namespace],
|
|
136
138
|
key_vault_client: @key_vault_client,
|
|
137
139
|
metadata_client: @metadata_client,
|
|
138
|
-
mongocryptd_options: @
|
|
140
|
+
mongocryptd_options: @mongocryptd_options
|
|
139
141
|
)
|
|
140
142
|
rescue
|
|
141
143
|
begin
|
data/lib/mongo/crypt/binary.rb
CHANGED