mongo 2.23.0 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/mongo_console +0 -1
- data/lib/mongo/active_support.rb +1 -2
- data/lib/mongo/address/ipv4.rb +3 -6
- data/lib/mongo/address/ipv6.rb +6 -10
- data/lib/mongo/address/unix.rb +1 -4
- data/lib/mongo/address/validator.rb +16 -28
- data/lib/mongo/address.rb +30 -40
- data/lib/mongo/auth/aws/conversation.rb +6 -10
- data/lib/mongo/auth/aws/credentials.rb +0 -1
- data/lib/mongo/auth/aws/credentials_cache.rb +0 -1
- data/lib/mongo/auth/aws/credentials_retriever.rb +45 -59
- data/lib/mongo/auth/aws/request.rb +20 -35
- data/lib/mongo/auth/aws.rb +1 -2
- data/lib/mongo/auth/base.rb +20 -29
- data/lib/mongo/auth/conversation_base.rb +14 -18
- data/lib/mongo/auth/cr/conversation.rb +0 -3
- data/lib/mongo/auth/cr.rb +1 -4
- data/lib/mongo/auth/credential_cache.rb +0 -2
- data/lib/mongo/auth/gssapi/conversation.rb +3 -8
- data/lib/mongo/auth/gssapi.rb +1 -4
- data/lib/mongo/auth/ldap/conversation.rb +0 -3
- data/lib/mongo/auth/ldap.rb +1 -4
- data/lib/mongo/auth/roles.rb +16 -19
- data/lib/mongo/auth/sasl_conversation_base.rb +7 -11
- data/lib/mongo/auth/scram/conversation.rb +2 -5
- data/lib/mongo/auth/scram.rb +5 -10
- data/lib/mongo/auth/scram256/conversation.rb +2 -5
- data/lib/mongo/auth/scram256.rb +1 -3
- data/lib/mongo/auth/scram_conversation_base.rb +18 -24
- data/lib/mongo/auth/stringprep/profiles/sasl.rb +17 -18
- data/lib/mongo/auth/stringprep/tables.rb +2209 -2210
- data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +36 -38
- data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +1142 -1150
- data/lib/mongo/auth/stringprep.rb +9 -12
- data/lib/mongo/auth/user/view.rb +3 -5
- data/lib/mongo/auth/user.rb +14 -24
- data/lib/mongo/auth/x509/conversation.rb +0 -3
- data/lib/mongo/auth/x509.rb +7 -9
- data/lib/mongo/auth.rb +18 -30
- data/lib/mongo/background_thread.rb +9 -17
- data/lib/mongo/bson.rb +0 -2
- data/lib/mongo/bulk_write/combineable.rb +0 -3
- data/lib/mongo/bulk_write/ordered_combiner.rb +1 -3
- data/lib/mongo/bulk_write/result.rb +11 -16
- data/lib/mongo/bulk_write/result_combiner.rb +9 -12
- data/lib/mongo/bulk_write/transformable.rb +16 -19
- data/lib/mongo/bulk_write/unordered_combiner.rb +1 -3
- data/lib/mongo/bulk_write/validatable.rb +11 -18
- data/lib/mongo/bulk_write.rb +76 -91
- data/lib/mongo/caching_cursor.rb +2 -7
- data/lib/mongo/client.rb +230 -275
- data/lib/mongo/client_encryption.rb +4 -5
- data/lib/mongo/cluster/periodic_executor.rb +2 -5
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +21 -29
- data/lib/mongo/cluster/reapers/socket_reaper.rb +1 -6
- data/lib/mongo/cluster/sdam_flow.rb +136 -159
- data/lib/mongo/cluster/topology/base.rb +15 -18
- data/lib/mongo/cluster/topology/load_balanced.rb +24 -14
- data/lib/mongo/cluster/topology/no_replica_set_options.rb +3 -6
- data/lib/mongo/cluster/topology/replica_set_no_primary.rb +20 -23
- data/lib/mongo/cluster/topology/replica_set_with_primary.rb +0 -2
- data/lib/mongo/cluster/topology/sharded.rb +19 -9
- data/lib/mongo/cluster/topology/single.rb +24 -14
- data/lib/mongo/cluster/topology/unknown.rb +20 -10
- data/lib/mongo/cluster/topology.rb +29 -25
- data/lib/mongo/cluster.rb +148 -183
- data/lib/mongo/cluster_time.rb +14 -31
- data/lib/mongo/collection/helpers.rb +5 -8
- data/lib/mongo/collection/view/aggregation.rb +5 -10
- data/lib/mongo/collection/view/builder/aggregation.rb +6 -9
- data/lib/mongo/collection/view/builder/map_reduce.rb +18 -17
- data/lib/mongo/collection/view/builder.rb +0 -1
- data/lib/mongo/collection/view/change_stream/retryable.rb +3 -8
- data/lib/mongo/collection/view/change_stream.rb +59 -58
- data/lib/mongo/collection/view/explainable.rb +11 -20
- data/lib/mongo/collection/view/immutable.rb +1 -3
- data/lib/mongo/collection/view/iterable.rb +35 -28
- data/lib/mongo/collection/view/map_reduce.rb +20 -25
- data/lib/mongo/collection/view/readable.rb +50 -57
- data/lib/mongo/collection/view/writable.rb +56 -72
- data/lib/mongo/collection/view.rb +9 -8
- data/lib/mongo/collection.rb +63 -76
- data/lib/mongo/condition_variable.rb +4 -4
- data/lib/mongo/config/options.rb +0 -3
- data/lib/mongo/config/validators/option.rb +3 -5
- data/lib/mongo/config.rb +2 -4
- data/lib/mongo/crypt/auto_decryption_context.rb +0 -3
- data/lib/mongo/crypt/auto_encrypter.rb +34 -43
- data/lib/mongo/crypt/auto_encryption_context.rb +0 -3
- data/lib/mongo/crypt/binary.rb +5 -9
- data/lib/mongo/crypt/binding.rb +149 -155
- data/lib/mongo/crypt/context.rb +10 -17
- data/lib/mongo/crypt/data_key_context.rb +2 -7
- data/lib/mongo/crypt/encryption_io.rb +29 -39
- data/lib/mongo/crypt/explicit_decryption_context.rb +0 -3
- data/lib/mongo/crypt/explicit_encrypter.rb +1 -1
- data/lib/mongo/crypt/explicit_encryption_context.rb +19 -30
- data/lib/mongo/crypt/explicit_encryption_expression_context.rb +0 -2
- data/lib/mongo/crypt/handle.rb +42 -48
- data/lib/mongo/crypt/hooks.rb +12 -15
- data/lib/mongo/crypt/kms/aws/credentials.rb +12 -16
- data/lib/mongo/crypt/kms/aws/master_document.rb +6 -9
- data/lib/mongo/crypt/kms/aws.rb +0 -2
- data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +2 -7
- data/lib/mongo/crypt/kms/azure/master_document.rb +15 -19
- data/lib/mongo/crypt/kms/azure.rb +0 -1
- data/lib/mongo/crypt/kms/credentials.rb +13 -27
- data/lib/mongo/crypt/kms/gcp/credentials.rb +12 -14
- data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +7 -9
- data/lib/mongo/crypt/kms/gcp/master_document.rb +12 -16
- data/lib/mongo/crypt/kms/gcp.rb +0 -2
- data/lib/mongo/crypt/kms/kmip/credentials.rb +7 -8
- data/lib/mongo/crypt/kms/kmip/master_document.rb +3 -5
- data/lib/mongo/crypt/kms/kmip.rb +0 -1
- data/lib/mongo/crypt/kms/local/credentials.rb +7 -8
- data/lib/mongo/crypt/kms/local/master_document.rb +2 -6
- data/lib/mongo/crypt/kms/local.rb +0 -1
- data/lib/mongo/crypt/kms/master_key_document.rb +11 -15
- data/lib/mongo/crypt/kms.rb +14 -16
- data/lib/mongo/crypt/kms_context.rb +0 -2
- data/lib/mongo/crypt/rewrap_many_data_key_context.rb +2 -7
- data/lib/mongo/crypt/rewrap_many_data_key_result.rb +2 -4
- data/lib/mongo/crypt/status.rb +12 -14
- data/lib/mongo/crypt.rb +0 -1
- data/lib/mongo/csot_timeout_holder.rb +3 -2
- data/lib/mongo/cursor/kill_spec.rb +7 -10
- data/lib/mongo/cursor.rb +74 -64
- data/lib/mongo/cursor_host.rb +8 -10
- data/lib/mongo/database/view.rb +16 -37
- data/lib/mongo/database.rb +52 -56
- data/lib/mongo/dbref.rb +0 -1
- data/lib/mongo/distinguishing_semaphore.rb +0 -1
- data/lib/mongo/error/auth_error.rb +0 -2
- data/lib/mongo/error/bad_load_balancer_target.rb +0 -2
- data/lib/mongo/error/bulk_write_error.rb +7 -10
- data/lib/mongo/error/change_stream_resumable.rb +0 -2
- data/lib/mongo/error/client_closed.rb +0 -2
- data/lib/mongo/error/closed_stream.rb +1 -4
- data/lib/mongo/error/connection_check_out_timeout.rb +3 -6
- data/lib/mongo/error/connection_perished.rb +0 -2
- data/lib/mongo/error/connection_unavailable.rb +0 -2
- data/lib/mongo/error/credential_check_error.rb +0 -2
- data/lib/mongo/error/crypt_error.rb +0 -2
- data/lib/mongo/error/extra_file_chunk.rb +1 -4
- data/lib/mongo/error/failed_string_prep_validation.rb +5 -6
- data/lib/mongo/error/file_not_found.rb +0 -3
- data/lib/mongo/error/handshake_error.rb +0 -2
- data/lib/mongo/error/insufficient_iteration_count.rb +1 -4
- data/lib/mongo/error/internal_driver_error.rb +0 -2
- data/lib/mongo/error/invalid_address.rb +0 -2
- data/lib/mongo/error/invalid_application_name.rb +0 -3
- data/lib/mongo/error/invalid_bulk_operation.rb +1 -4
- data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -4
- data/lib/mongo/error/invalid_collection_name.rb +1 -4
- data/lib/mongo/error/invalid_config_option.rb +0 -3
- data/lib/mongo/error/invalid_cursor_operation.rb +0 -2
- data/lib/mongo/error/invalid_database_name.rb +1 -4
- data/lib/mongo/error/invalid_document.rb +1 -4
- data/lib/mongo/error/invalid_file.rb +0 -3
- data/lib/mongo/error/invalid_file_revision.rb +0 -3
- data/lib/mongo/error/invalid_min_pool_size.rb +0 -3
- data/lib/mongo/error/invalid_nonce.rb +0 -3
- data/lib/mongo/error/invalid_read_concern.rb +2 -4
- data/lib/mongo/error/invalid_read_option.rb +0 -3
- data/lib/mongo/error/invalid_replacement_document.rb +2 -5
- data/lib/mongo/error/invalid_server_auth_host.rb +0 -2
- data/lib/mongo/error/invalid_server_auth_response.rb +0 -2
- data/lib/mongo/error/invalid_server_preference.rb +7 -16
- data/lib/mongo/error/invalid_session.rb +1 -4
- data/lib/mongo/error/invalid_signature.rb +0 -3
- data/lib/mongo/error/invalid_transaction_operation.rb +5 -8
- data/lib/mongo/error/invalid_txt_record.rb +0 -2
- data/lib/mongo/error/invalid_update_document.rb +2 -5
- data/lib/mongo/error/invalid_uri.rb +1 -4
- data/lib/mongo/error/invalid_write_concern.rb +2 -5
- data/lib/mongo/error/kms_error.rb +0 -2
- data/lib/mongo/error/labelable.rb +0 -3
- data/lib/mongo/error/lint_error.rb +0 -2
- data/lib/mongo/error/max_bson_size.rb +8 -11
- data/lib/mongo/error/max_message_size.rb +2 -5
- data/lib/mongo/error/mismatched_domain.rb +0 -2
- data/lib/mongo/error/missing_connection.rb +0 -2
- data/lib/mongo/error/missing_file_chunk.rb +0 -3
- data/lib/mongo/error/missing_password.rb +0 -2
- data/lib/mongo/error/missing_resume_token.rb +1 -4
- data/lib/mongo/error/missing_scram_server_signature.rb +2 -4
- data/lib/mongo/error/missing_service_id.rb +0 -2
- data/lib/mongo/error/mongocryptd_spawn_error.rb +0 -2
- data/lib/mongo/error/multi_index_drop.rb +0 -3
- data/lib/mongo/error/need_primary_server.rb +0 -2
- data/lib/mongo/error/no_server_available.rb +3 -8
- data/lib/mongo/error/no_service_connection_available.rb +1 -3
- data/lib/mongo/error/no_srv_records.rb +0 -2
- data/lib/mongo/error/notable.rb +8 -16
- data/lib/mongo/error/operation_failure.rb +22 -35
- data/lib/mongo/error/parser.rb +33 -75
- data/lib/mongo/error/pool_cleared_error.rb +1 -3
- data/lib/mongo/error/pool_closed_error.rb +0 -3
- data/lib/mongo/error/pool_error.rb +0 -3
- data/lib/mongo/error/pool_paused_error.rb +0 -2
- data/lib/mongo/error/raise_original_error.rb +1 -3
- data/lib/mongo/error/read_write_retryable.rb +14 -17
- data/lib/mongo/error/sdam_error_detection.rb +3 -5
- data/lib/mongo/error/server_api_conflict.rb +0 -2
- data/lib/mongo/error/server_certificate_revoked.rb +0 -2
- data/lib/mongo/error/server_not_usable.rb +0 -2
- data/lib/mongo/error/session_ended.rb +1 -3
- data/lib/mongo/error/session_not_materialized.rb +1 -3
- data/lib/mongo/error/sessions_not_supported.rb +1 -4
- data/lib/mongo/error/snapshot_session_invalid_server_version.rb +1 -4
- data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +1 -4
- data/lib/mongo/error/socket_error.rb +0 -2
- data/lib/mongo/error/socket_timeout_error.rb +0 -2
- data/lib/mongo/error/transactions_not_supported.rb +3 -6
- data/lib/mongo/error/unchangeable_collection_option.rb +1 -4
- data/lib/mongo/error/unexpected_chunk_length.rb +0 -3
- data/lib/mongo/error/unexpected_response.rb +1 -4
- data/lib/mongo/error/unknown_payload_type.rb +0 -3
- data/lib/mongo/error/unmet_dependency.rb +0 -2
- data/lib/mongo/error/unsupported_array_filters.rb +3 -24
- data/lib/mongo/error/unsupported_collation.rb +3 -24
- data/lib/mongo/error/unsupported_features.rb +0 -2
- data/lib/mongo/error/unsupported_message_type.rb +0 -2
- data/lib/mongo/error/unsupported_option.rb +19 -21
- data/lib/mongo/error/write_retryable.rb +0 -2
- data/lib/mongo/error.rb +10 -24
- data/lib/mongo/event/base.rb +0 -2
- data/lib/mongo/event/listeners.rb +0 -3
- data/lib/mongo/event/publisher.rb +0 -3
- data/lib/mongo/event/subscriber.rb +0 -4
- data/lib/mongo/event.rb +4 -6
- data/lib/mongo/grid/file/chunk.rb +7 -10
- data/lib/mongo/grid/file/info.rb +20 -24
- data/lib/mongo/grid/file.rb +7 -8
- data/lib/mongo/grid/fs_bucket.rb +40 -48
- data/lib/mongo/grid/stream/read.rb +25 -35
- data/lib/mongo/grid/stream/write.rb +17 -22
- data/lib/mongo/grid/stream.rb +2 -4
- data/lib/mongo/grid.rb +0 -1
- data/lib/mongo/id.rb +0 -1
- data/lib/mongo/index/view.rb +49 -48
- data/lib/mongo/index.rb +7 -10
- data/lib/mongo/lint.rb +31 -37
- data/lib/mongo/loggable.rb +5 -8
- data/lib/mongo/logger.rb +1 -7
- data/lib/mongo/monitoring/cmap_log_subscriber.rb +0 -2
- data/lib/mongo/monitoring/command_log_subscriber.rb +25 -33
- data/lib/mongo/monitoring/event/cmap/base.rb +0 -2
- data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +0 -3
- data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +2 -5
- data/lib/mongo/monitoring/event/cmap/connection_closed.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/connection_created.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/connection_ready.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +0 -3
- data/lib/mongo/monitoring/event/cmap/pool_closed.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/pool_created.rb +1 -4
- data/lib/mongo/monitoring/event/cmap/pool_ready.rb +1 -4
- data/lib/mongo/monitoring/event/cmap.rb +0 -1
- data/lib/mongo/monitoring/event/command_failed.rb +5 -9
- data/lib/mongo/monitoring/event/command_started.rb +8 -12
- data/lib/mongo/monitoring/event/command_succeeded.rb +7 -15
- data/lib/mongo/monitoring/event/secure.rb +15 -20
- data/lib/mongo/monitoring/event/server_closed.rb +1 -4
- data/lib/mongo/monitoring/event/server_description_changed.rb +4 -8
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +5 -10
- data/lib/mongo/monitoring/event/server_heartbeat_started.rb +1 -4
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +3 -8
- data/lib/mongo/monitoring/event/server_opening.rb +1 -4
- data/lib/mongo/monitoring/event/topology_changed.rb +2 -5
- data/lib/mongo/monitoring/event/topology_closed.rb +1 -4
- data/lib/mongo/monitoring/event/topology_opening.rb +1 -4
- data/lib/mongo/monitoring/event.rb +0 -1
- data/lib/mongo/monitoring/publishable.rb +20 -30
- data/lib/mongo/monitoring/sdam_log_subscriber.rb +0 -2
- data/lib/mongo/monitoring/server_closed_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/server_opening_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +5 -8
- data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +0 -3
- data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +1 -3
- data/lib/mongo/monitoring.rb +38 -39
- data/lib/mongo/operation/aggregate/op_msg.rb +0 -2
- data/lib/mongo/operation/aggregate/result.rb +3 -6
- data/lib/mongo/operation/aggregate.rb +0 -2
- data/lib/mongo/operation/collections_info/result.rb +0 -3
- data/lib/mongo/operation/collections_info.rb +0 -2
- data/lib/mongo/operation/command/op_msg.rb +1 -4
- data/lib/mongo/operation/command.rb +0 -2
- data/lib/mongo/operation/context.rb +13 -16
- data/lib/mongo/operation/count/op_msg.rb +2 -4
- data/lib/mongo/operation/count.rb +0 -2
- data/lib/mongo/operation/create/op_msg.rb +2 -5
- data/lib/mongo/operation/create.rb +0 -2
- data/lib/mongo/operation/create_index/op_msg.rb +3 -7
- data/lib/mongo/operation/create_index.rb +0 -2
- data/lib/mongo/operation/create_user/op_msg.rb +2 -4
- data/lib/mongo/operation/create_user.rb +0 -2
- data/lib/mongo/operation/delete/bulk_result.rb +2 -3
- data/lib/mongo/operation/delete/op_msg.rb +3 -10
- data/lib/mongo/operation/delete/result.rb +0 -3
- data/lib/mongo/operation/delete.rb +1 -5
- data/lib/mongo/operation/distinct/op_msg.rb +2 -5
- data/lib/mongo/operation/distinct.rb +0 -2
- data/lib/mongo/operation/drop/op_msg.rb +0 -2
- data/lib/mongo/operation/drop.rb +0 -2
- data/lib/mongo/operation/drop_database/op_msg.rb +0 -2
- data/lib/mongo/operation/drop_database.rb +0 -2
- data/lib/mongo/operation/drop_index/op_msg.rb +4 -6
- data/lib/mongo/operation/drop_index.rb +0 -2
- data/lib/mongo/operation/explain/op_msg.rb +0 -2
- data/lib/mongo/operation/explain/result.rb +0 -3
- data/lib/mongo/operation/explain.rb +0 -2
- data/lib/mongo/operation/find/builder/command.rb +4 -12
- data/lib/mongo/operation/find/builder/flags.rb +9 -15
- data/lib/mongo/operation/find/builder/modifiers.rb +1 -4
- data/lib/mongo/operation/find/builder.rb +0 -1
- data/lib/mongo/operation/find/op_msg.rb +4 -12
- data/lib/mongo/operation/find/result.rb +0 -3
- data/lib/mongo/operation/find.rb +0 -2
- data/lib/mongo/operation/get_more/command_builder.rb +1 -6
- data/lib/mongo/operation/get_more/op_msg.rb +10 -4
- data/lib/mongo/operation/get_more/result.rb +0 -3
- data/lib/mongo/operation/get_more.rb +0 -2
- data/lib/mongo/operation/indexes/op_msg.rb +0 -2
- data/lib/mongo/operation/indexes/result.rb +1 -5
- data/lib/mongo/operation/indexes.rb +0 -2
- data/lib/mongo/operation/insert/bulk_result.rb +2 -6
- data/lib/mongo/operation/insert/op_msg.rb +2 -4
- data/lib/mongo/operation/insert/result.rb +0 -3
- data/lib/mongo/operation/insert.rb +2 -5
- data/lib/mongo/operation/kill_cursors/command_builder.rb +0 -3
- data/lib/mongo/operation/kill_cursors/op_msg.rb +1 -3
- data/lib/mongo/operation/kill_cursors.rb +0 -2
- data/lib/mongo/operation/list_collections/op_msg.rb +4 -6
- data/lib/mongo/operation/list_collections/result.rb +1 -4
- data/lib/mongo/operation/list_collections.rb +0 -2
- data/lib/mongo/operation/map_reduce/op_msg.rb +0 -2
- data/lib/mongo/operation/map_reduce/result.rb +3 -6
- data/lib/mongo/operation/map_reduce.rb +0 -2
- data/lib/mongo/operation/op_msg_base.rb +0 -1
- data/lib/mongo/operation/parallel_scan/op_msg.rb +4 -5
- data/lib/mongo/operation/parallel_scan/result.rb +2 -5
- data/lib/mongo/operation/parallel_scan.rb +0 -2
- data/lib/mongo/operation/remove_user/op_msg.rb +2 -4
- data/lib/mongo/operation/remove_user.rb +0 -2
- data/lib/mongo/operation/result.rb +38 -48
- data/lib/mongo/operation/shared/bypass_document_validation.rb +3 -7
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +0 -3
- data/lib/mongo/operation/shared/executable.rb +19 -28
- data/lib/mongo/operation/shared/executable_no_validate.rb +0 -3
- data/lib/mongo/operation/shared/executable_transaction_label.rb +0 -2
- data/lib/mongo/operation/shared/idable.rb +3 -6
- data/lib/mongo/operation/shared/limited.rb +0 -3
- data/lib/mongo/operation/shared/object_id_generator.rb +0 -3
- data/lib/mongo/operation/shared/op_msg_executable.rb +0 -2
- data/lib/mongo/operation/shared/polymorphic_lookup.rb +0 -2
- data/lib/mongo/operation/shared/polymorphic_result.rb +2 -4
- data/lib/mongo/operation/shared/read_preference_supported.rb +10 -15
- data/lib/mongo/operation/shared/response_handling.rb +13 -26
- data/lib/mongo/operation/shared/result/aggregatable.rb +12 -13
- data/lib/mongo/operation/shared/sessions_supported.rb +87 -99
- data/lib/mongo/operation/shared/specifiable.rb +32 -58
- data/lib/mongo/operation/shared/write.rb +12 -17
- data/lib/mongo/operation/shared/write_concern_supported.rb +4 -7
- data/lib/mongo/operation/update/bulk_result.rb +13 -17
- data/lib/mongo/operation/update/op_msg.rb +2 -5
- data/lib/mongo/operation/update/result.rb +5 -5
- data/lib/mongo/operation/update.rb +1 -5
- data/lib/mongo/operation/update_user/op_msg.rb +2 -4
- data/lib/mongo/operation/update_user.rb +0 -2
- data/lib/mongo/operation/users_info/op_msg.rb +2 -4
- data/lib/mongo/operation/users_info/result.rb +1 -4
- data/lib/mongo/operation/users_info.rb +0 -2
- data/lib/mongo/operation/write_command/op_msg.rb +2 -10
- data/lib/mongo/operation/write_command.rb +0 -2
- data/lib/mongo/operation.rb +9 -14
- data/lib/mongo/options/mapper.rb +8 -15
- data/lib/mongo/options/redacted.rb +7 -9
- data/lib/mongo/options.rb +0 -1
- data/lib/mongo/protocol/bit_vector.rb +3 -5
- data/lib/mongo/protocol/caching_hash.rb +2 -7
- data/lib/mongo/protocol/compressed.rb +5 -10
- data/lib/mongo/protocol/get_more.rb +2 -8
- data/lib/mongo/protocol/kill_cursors.rb +2 -8
- data/lib/mongo/protocol/message.rb +103 -105
- data/lib/mongo/protocol/msg.rb +48 -63
- data/lib/mongo/protocol/query.rb +32 -41
- data/lib/mongo/protocol/registry.rb +2 -5
- data/lib/mongo/protocol/reply.rb +10 -16
- data/lib/mongo/protocol/serializers.rb +41 -59
- data/lib/mongo/protocol.rb +0 -1
- data/lib/mongo/query_cache.rb +7 -15
- data/lib/mongo/retryable/backpressure.rb +31 -0
- data/lib/mongo/retryable/base_worker.rb +39 -13
- data/lib/mongo/retryable/read_worker.rb +77 -21
- data/lib/mongo/retryable/retry_policy.rb +59 -0
- data/lib/mongo/retryable/write_worker.rb +155 -56
- data/lib/mongo/retryable.rb +70 -9
- data/lib/mongo/search_index/view.rb +1 -1
- data/lib/mongo/semaphore.rb +0 -1
- data/lib/mongo/server/app_metadata/environment.rb +3 -3
- data/lib/mongo/server/app_metadata.rb +4 -5
- data/lib/mongo/server/connection.rb +61 -61
- data/lib/mongo/server/connection_base.rb +43 -53
- data/lib/mongo/server/connection_common.rb +41 -64
- data/lib/mongo/server/connection_pool/generation_manager.rb +6 -11
- data/lib/mongo/server/connection_pool/populator.rb +1 -4
- data/lib/mongo/server/connection_pool.rb +195 -167
- data/lib/mongo/server/description/features.rb +23 -60
- data/lib/mongo/server/description/load_balancer.rb +0 -2
- data/lib/mongo/server/description.rb +117 -138
- data/lib/mongo/server/monitor/app_metadata.rb +3 -4
- data/lib/mongo/server/monitor/connection.rb +28 -35
- data/lib/mongo/server/monitor.rb +65 -60
- data/lib/mongo/server/pending_connection.rb +70 -71
- data/lib/mongo/server/push_monitor/connection.rb +0 -3
- data/lib/mongo/server/push_monitor.rb +21 -29
- data/lib/mongo/server/round_trip_time_calculator.rb +11 -17
- data/lib/mongo/server.rb +60 -93
- data/lib/mongo/server_selector/base.rb +133 -157
- data/lib/mongo/server_selector/nearest.rb +2 -5
- data/lib/mongo/server_selector/primary.rb +1 -5
- data/lib/mongo/server_selector/primary_preferred.rb +2 -6
- data/lib/mongo/server_selector/secondary.rb +2 -6
- data/lib/mongo/server_selector/secondary_preferred.rb +1 -5
- data/lib/mongo/server_selector.rb +3 -4
- data/lib/mongo/session/server_session.rb +6 -7
- data/lib/mongo/session/session_pool.rb +20 -34
- data/lib/mongo/session.rb +287 -188
- data/lib/mongo/socket/ocsp_cache.rb +8 -13
- data/lib/mongo/socket/ocsp_verifier.rb +69 -70
- data/lib/mongo/socket/ssl.rb +44 -43
- data/lib/mongo/socket/tcp.rb +5 -8
- data/lib/mongo/socket/unix.rb +0 -4
- data/lib/mongo/socket.rb +80 -102
- data/lib/mongo/srv/monitor.rb +6 -11
- data/lib/mongo/srv/resolver.rb +15 -24
- data/lib/mongo/srv/result.rb +18 -24
- data/lib/mongo/srv.rb +0 -1
- data/lib/mongo/timeout.rb +4 -11
- data/lib/mongo/topology_version.rb +8 -13
- data/lib/mongo/tracing/open_telemetry/command_tracer.rb +1 -1
- data/lib/mongo/tracing/open_telemetry/operation_tracer.rb +1 -1
- data/lib/mongo/tracing/open_telemetry/tracer.rb +1 -1
- data/lib/mongo/uri/options_mapper.rb +135 -126
- data/lib/mongo/uri/srv_protocol.rb +25 -38
- data/lib/mongo/uri.rb +95 -139
- data/lib/mongo/utils.rb +5 -12
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern/acknowledged.rb +0 -2
- data/lib/mongo/write_concern/base.rb +6 -6
- data/lib/mongo/write_concern/unacknowledged.rb +0 -2
- data/lib/mongo/write_concern.rb +14 -15
- data/lib/mongo.rb +1 -3
- data/mongo.gemspec +17 -17
- metadata +5 -5
- data/lib/mongo/error/server_api_not_supported.rb +0 -27
- data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +0 -32
- data/lib/mongo/operation/shared/validatable.rb +0 -87
data/lib/mongo/utils.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -16,10 +15,8 @@
|
|
|
16
15
|
# limitations under the License.
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
|
-
|
|
20
18
|
# @api private
|
|
21
19
|
module Utils
|
|
22
|
-
|
|
23
20
|
class LocalLogger
|
|
24
21
|
include Loggable
|
|
25
22
|
|
|
@@ -60,17 +57,17 @@ module Mongo
|
|
|
60
57
|
|
|
61
58
|
# Symbolizes the keys in the provided hash.
|
|
62
59
|
module_function def shallow_symbolize_keys(hash)
|
|
63
|
-
Hash[hash.map { |k, v| [k.to_sym, v] }]
|
|
60
|
+
Hash[hash.map { |k, v| [ k.to_sym, v ] }]
|
|
64
61
|
end
|
|
65
62
|
|
|
66
63
|
# Stringifies the keys in the provided hash and converts underscore
|
|
67
64
|
# style keys to camel case style keys.
|
|
68
65
|
module_function def shallow_camelize_keys(hash)
|
|
69
|
-
Hash[hash.map { |k, v| [camelize(k), v] }]
|
|
66
|
+
Hash[hash.map { |k, v| [ camelize(k), v ] }]
|
|
70
67
|
end
|
|
71
68
|
|
|
72
69
|
module_function def camelize(sym)
|
|
73
|
-
sym.to_s.gsub(/_(\w)/) {
|
|
70
|
+
sym.to_s.gsub(/_(\w)/) { ::Regexp.last_match(1).upcase }
|
|
74
71
|
end
|
|
75
72
|
|
|
76
73
|
# @note server_api must have symbol keys or be a BSON::Document.
|
|
@@ -79,12 +76,8 @@ module Mongo
|
|
|
79
76
|
if version = server_api[:version]
|
|
80
77
|
doc['apiVersion'] = version
|
|
81
78
|
end
|
|
82
|
-
unless server_api[:strict].nil?
|
|
83
|
-
|
|
84
|
-
end
|
|
85
|
-
unless server_api[:deprecation_errors].nil?
|
|
86
|
-
doc['apiDeprecationErrors'] = server_api[:deprecation_errors]
|
|
87
|
-
end
|
|
79
|
+
doc['apiStrict'] = server_api[:strict] unless server_api[:strict].nil?
|
|
80
|
+
doc['apiDeprecationErrors'] = server_api[:deprecation_errors] unless server_api[:deprecation_errors].nil?
|
|
88
81
|
end
|
|
89
82
|
end
|
|
90
83
|
|
data/lib/mongo/version.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module WriteConcern
|
|
20
|
-
|
|
21
19
|
# An acknowledged write concern provides a get last error command with the
|
|
22
20
|
# appropriate options on each write operation.
|
|
23
21
|
#
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,12 +16,10 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module WriteConcern
|
|
20
|
-
|
|
21
19
|
# Defines common behavior for write concerns.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.7.0
|
|
24
22
|
class Base
|
|
25
|
-
|
|
26
23
|
# @return [ Hash ] The write concern options.
|
|
27
24
|
attr_reader :options
|
|
28
25
|
|
|
@@ -51,11 +48,14 @@ module Mongo
|
|
|
51
48
|
|
|
52
49
|
if options[:w]
|
|
53
50
|
if options[:w] == 0 && options[:j]
|
|
54
|
-
raise Error::InvalidWriteConcern,
|
|
51
|
+
raise Error::InvalidWriteConcern,
|
|
52
|
+
"Invalid write concern options: :j cannot be true when :w is 0: #{options.inspect}"
|
|
55
53
|
elsif options[:w] == 0 && options[:fsync]
|
|
56
|
-
raise Error::InvalidWriteConcern,
|
|
54
|
+
raise Error::InvalidWriteConcern,
|
|
55
|
+
"Invalid write concern options: :fsync cannot be true when :w is 0: #{options.inspect}"
|
|
57
56
|
elsif options[:w].is_a?(Integer) && options[:w] < 0
|
|
58
|
-
raise Error::InvalidWriteConcern,
|
|
57
|
+
raise Error::InvalidWriteConcern,
|
|
58
|
+
"Invalid write concern options: :w cannot be negative (#{options[:w]}): #{options.inspect}"
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module WriteConcern
|
|
20
|
-
|
|
21
19
|
# An unacknowledged write concern will provide no error on write outside of
|
|
22
20
|
# network and connection exceptions.
|
|
23
21
|
#
|
data/lib/mongo/write_concern.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2015-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -20,7 +19,6 @@ require 'mongo/write_concern/acknowledged'
|
|
|
20
19
|
require 'mongo/write_concern/unacknowledged'
|
|
21
20
|
|
|
22
21
|
module Mongo
|
|
23
|
-
|
|
24
22
|
# Base module for all write concern specific behavior.
|
|
25
23
|
#
|
|
26
24
|
# @since 2.0.0
|
|
@@ -31,36 +29,36 @@ module Mongo
|
|
|
31
29
|
#
|
|
32
30
|
# @since 2.0.0
|
|
33
31
|
# @deprecated
|
|
34
|
-
W = :w
|
|
32
|
+
W = :w
|
|
35
33
|
|
|
36
34
|
# The journal write concern.
|
|
37
35
|
#
|
|
38
36
|
# @since 2.0.0
|
|
39
37
|
# @deprecated
|
|
40
|
-
J = :j
|
|
38
|
+
J = :j
|
|
41
39
|
|
|
42
40
|
# The file sync write concern.
|
|
43
41
|
#
|
|
44
42
|
# @since 2.0.0
|
|
45
43
|
# @deprecated
|
|
46
|
-
FSYNC = :fsync
|
|
44
|
+
FSYNC = :fsync
|
|
47
45
|
|
|
48
46
|
# The wtimeout write concern.
|
|
49
47
|
#
|
|
50
48
|
# @since 2.0.0
|
|
51
49
|
# @deprecated
|
|
52
|
-
WTIMEOUT = :wtimeout
|
|
50
|
+
WTIMEOUT = :wtimeout
|
|
53
51
|
|
|
54
52
|
# The GLE command name.
|
|
55
53
|
#
|
|
56
54
|
# @since 2.0.0
|
|
57
55
|
# @deprecated
|
|
58
|
-
GET_LAST_ERROR = :getlasterror
|
|
56
|
+
GET_LAST_ERROR = :getlasterror
|
|
59
57
|
|
|
60
58
|
# The default write concern is to acknowledge on a single server.
|
|
61
59
|
#
|
|
62
60
|
# @since 2.0.0
|
|
63
|
-
DEFAULT = {
|
|
61
|
+
DEFAULT = {}.freeze
|
|
64
62
|
|
|
65
63
|
# Create a write concern object for the provided options.
|
|
66
64
|
#
|
|
@@ -76,7 +74,7 @@ module Mongo
|
|
|
76
74
|
# @option options :j [ true, false ] Whether to acknowledge a write to
|
|
77
75
|
# the journal.
|
|
78
76
|
# @option options :fsync [ true, false ] Should the write be synced to
|
|
79
|
-
#
|
|
77
|
+
# disk.
|
|
80
78
|
# @option options :wtimeout [ Integer ] The number of milliseconds to
|
|
81
79
|
# wait for acknowledgement before raising an error.
|
|
82
80
|
#
|
|
@@ -87,12 +85,13 @@ module Mongo
|
|
|
87
85
|
# @since 2.0.0
|
|
88
86
|
def get(options)
|
|
89
87
|
return options if options.is_a?(Base)
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
88
|
+
|
|
89
|
+
return unless options
|
|
90
|
+
|
|
91
|
+
if (options[:w] || options['w']) == 0
|
|
92
|
+
Unacknowledged.new(options)
|
|
93
|
+
else
|
|
94
|
+
Acknowledged.new(options)
|
|
96
95
|
end
|
|
97
96
|
end
|
|
98
97
|
end
|
data/lib/mongo.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -83,7 +82,6 @@ require 'mongo/utils'
|
|
|
83
82
|
require 'mongo/config'
|
|
84
83
|
|
|
85
84
|
module Mongo
|
|
86
|
-
|
|
87
85
|
class << self
|
|
88
86
|
extend Forwardable
|
|
89
87
|
|
|
@@ -127,7 +125,7 @@ module Mongo
|
|
|
127
125
|
# an OpenSSL::SSL::SSLContext object as an argument.
|
|
128
126
|
module_function def tls_context_hooks=(hooks)
|
|
129
127
|
unless hooks.is_a?(Array) && hooks.all? { |hook| hook.is_a?(Proc) }
|
|
130
|
-
raise ArgumentError,
|
|
128
|
+
raise ArgumentError, 'TLS context hooks must be an array of Procs'
|
|
131
129
|
end
|
|
132
130
|
|
|
133
131
|
@tls_context_hooks = hooks
|
data/mongo.gemspec
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
|
-
lib = File.expand_path('
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
5
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
6
5
|
require 'mongo/version'
|
|
7
6
|
|
|
8
7
|
Gem::Specification.new do |s|
|
|
9
|
-
s.name
|
|
10
|
-
s.version
|
|
11
|
-
s.platform
|
|
12
|
-
s.authors
|
|
13
|
-
s.email
|
|
14
|
-
s.homepage
|
|
15
|
-
s.summary
|
|
16
|
-
s.license
|
|
17
|
-
s.description
|
|
8
|
+
s.name = 'mongo'
|
|
9
|
+
s.version = Mongo::VERSION
|
|
10
|
+
s.platform = Gem::Platform::RUBY
|
|
11
|
+
s.authors = [ 'The MongoDB Ruby Team' ]
|
|
12
|
+
s.email = 'dbx-ruby@mongodb.com'
|
|
13
|
+
s.homepage = 'https://mongodb.com/docs/ruby-driver/'
|
|
14
|
+
s.summary = 'Ruby driver for MongoDB'
|
|
15
|
+
s.license = 'Apache-2.0'
|
|
16
|
+
s.description = <<~DESC
|
|
18
17
|
A pure-Ruby driver for connecting to, querying, and manipulating MongoDB
|
|
19
18
|
databases. Officially developed and supported by MongoDB, with love for
|
|
20
19
|
the Ruby community.
|
|
21
20
|
DESC
|
|
22
21
|
|
|
23
22
|
s.metadata = {
|
|
23
|
+
'rubygems_mfa_required' => 'true',
|
|
24
24
|
'bug_tracker_uri' => 'https://jira.mongodb.org/projects/RUBY',
|
|
25
25
|
'changelog_uri' => 'https://github.com/mongodb/mongo-ruby-driver/releases',
|
|
26
26
|
'homepage_uri' => 'https://mongodb.com/docs/ruby-driver/',
|
|
@@ -28,14 +28,14 @@ Gem::Specification.new do |s|
|
|
|
28
28
|
'source_code_uri' => 'https://github.com/mongodb/mongo-ruby-driver',
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
s.files
|
|
32
|
-
s.files
|
|
31
|
+
s.files = Dir.glob('{bin,lib}/**/*')
|
|
32
|
+
s.files += %w[mongo.gemspec LICENSE README.md CONTRIBUTING.md]
|
|
33
33
|
|
|
34
|
-
s.executables
|
|
35
|
-
s.require_paths
|
|
36
|
-
s.bindir
|
|
34
|
+
s.executables = [ 'mongo_console' ]
|
|
35
|
+
s.require_paths = [ 'lib' ]
|
|
36
|
+
s.bindir = 'bin'
|
|
37
37
|
|
|
38
|
-
s.required_ruby_version =
|
|
38
|
+
s.required_ruby_version = '>= 2.7'
|
|
39
39
|
|
|
40
40
|
s.add_dependency 'base64'
|
|
41
41
|
s.add_dependency 'bson', '>=4.14.1', '<6.0.0'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mongo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.24.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- The MongoDB Ruby Team
|
|
@@ -269,7 +269,6 @@ files:
|
|
|
269
269
|
- lib/mongo/error/read_write_retryable.rb
|
|
270
270
|
- lib/mongo/error/sdam_error_detection.rb
|
|
271
271
|
- lib/mongo/error/server_api_conflict.rb
|
|
272
|
-
- lib/mongo/error/server_api_not_supported.rb
|
|
273
272
|
- lib/mongo/error/server_certificate_revoked.rb
|
|
274
273
|
- lib/mongo/error/server_not_usable.rb
|
|
275
274
|
- lib/mongo/error/server_timeout_error.rb
|
|
@@ -435,11 +434,9 @@ files:
|
|
|
435
434
|
- lib/mongo/operation/shared/read_preference_supported.rb
|
|
436
435
|
- lib/mongo/operation/shared/response_handling.rb
|
|
437
436
|
- lib/mongo/operation/shared/result/aggregatable.rb
|
|
438
|
-
- lib/mongo/operation/shared/result/use_legacy_error_parser.rb
|
|
439
437
|
- lib/mongo/operation/shared/sessions_supported.rb
|
|
440
438
|
- lib/mongo/operation/shared/specifiable.rb
|
|
441
439
|
- lib/mongo/operation/shared/timed.rb
|
|
442
|
-
- lib/mongo/operation/shared/validatable.rb
|
|
443
440
|
- lib/mongo/operation/shared/write.rb
|
|
444
441
|
- lib/mongo/operation/shared/write_concern_supported.rb
|
|
445
442
|
- lib/mongo/operation/update.rb
|
|
@@ -472,8 +469,10 @@ files:
|
|
|
472
469
|
- lib/mongo/protocol/serializers.rb
|
|
473
470
|
- lib/mongo/query_cache.rb
|
|
474
471
|
- lib/mongo/retryable.rb
|
|
472
|
+
- lib/mongo/retryable/backpressure.rb
|
|
475
473
|
- lib/mongo/retryable/base_worker.rb
|
|
476
474
|
- lib/mongo/retryable/read_worker.rb
|
|
475
|
+
- lib/mongo/retryable/retry_policy.rb
|
|
477
476
|
- lib/mongo/retryable/write_worker.rb
|
|
478
477
|
- lib/mongo/search_index/view.rb
|
|
479
478
|
- lib/mongo/semaphore.rb
|
|
@@ -540,6 +539,7 @@ homepage: https://mongodb.com/docs/ruby-driver/
|
|
|
540
539
|
licenses:
|
|
541
540
|
- Apache-2.0
|
|
542
541
|
metadata:
|
|
542
|
+
rubygems_mfa_required: 'true'
|
|
543
543
|
bug_tracker_uri: https://jira.mongodb.org/projects/RUBY
|
|
544
544
|
changelog_uri: https://github.com/mongodb/mongo-ruby-driver/releases
|
|
545
545
|
homepage_uri: https://mongodb.com/docs/ruby-driver/
|
|
@@ -559,7 +559,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
559
559
|
- !ruby/object:Gem::Version
|
|
560
560
|
version: '0'
|
|
561
561
|
requirements: []
|
|
562
|
-
rubygems_version: 4.0.
|
|
562
|
+
rubygems_version: 4.0.10
|
|
563
563
|
specification_version: 4
|
|
564
564
|
summary: Ruby driver for MongoDB
|
|
565
565
|
test_files: []
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
|
-
|
|
4
|
-
# Copyright (C) 2021 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
|
-
class Error
|
|
20
|
-
|
|
21
|
-
# Exception raised when a Client has :server_api configured and an
|
|
22
|
-
# operation is executed against a pre-3.6 MongoDB server using a legacy
|
|
23
|
-
# wire protocol message that does not permit sending API parameters.
|
|
24
|
-
class ServerApiNotSupported < Error
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
|
-
|
|
4
|
-
# Copyright (C) 2019-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
|
-
module Operation
|
|
20
|
-
class Result
|
|
21
|
-
|
|
22
|
-
# This module creates the Parser instance in legacy mode.
|
|
23
|
-
#
|
|
24
|
-
# @api private
|
|
25
|
-
module UseLegacyErrorParser
|
|
26
|
-
def parser
|
|
27
|
-
@parser ||= Error::Parser.new(first_document, replies, legacy: true)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
|
-
|
|
4
|
-
# Copyright (C) 2021 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
|
-
module Operation
|
|
20
|
-
|
|
21
|
-
# @api private
|
|
22
|
-
module Validatable
|
|
23
|
-
|
|
24
|
-
def validate_find_options(connection, selector)
|
|
25
|
-
if selector.key?(:hint) &&
|
|
26
|
-
!connection.features.find_and_modify_option_validation_enabled?
|
|
27
|
-
then
|
|
28
|
-
raise Error::UnsupportedOption.hint_error
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
if selector.key?(:arrayFilters) &&
|
|
32
|
-
!connection.features.array_filters_enabled?
|
|
33
|
-
then
|
|
34
|
-
raise Error::UnsupportedArrayFilters
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
if selector.key?(:collation) &&
|
|
38
|
-
!connection.features.collation_enabled?
|
|
39
|
-
then
|
|
40
|
-
raise Error::UnsupportedCollation
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# selector_or_item here is either:
|
|
45
|
-
# - The selector as used in a findAndModify command, or
|
|
46
|
-
# - One of the array elements in the updates array in an update command.
|
|
47
|
-
def validate_hint_on_update(connection, selector_or_item)
|
|
48
|
-
if selector_or_item.key?(:hint) &&
|
|
49
|
-
!connection.features.update_delete_option_validation_enabled?
|
|
50
|
-
then
|
|
51
|
-
raise Error::UnsupportedOption.hint_error
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# selector_or_item here is either:
|
|
56
|
-
# - The selector as used in a findAndModify command, or
|
|
57
|
-
# - One of the array elements in the updates array in an update command.
|
|
58
|
-
def validate_array_filters(connection, selector_or_item)
|
|
59
|
-
if selector_or_item.key?(:arrayFilters) &&
|
|
60
|
-
!connection.features.array_filters_enabled?
|
|
61
|
-
then
|
|
62
|
-
raise Error::UnsupportedArrayFilters
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# selector_or_item here is either:
|
|
67
|
-
# - The selector as used in a findAndModify command, or
|
|
68
|
-
# - One of the array elements in the updates array in an update command.
|
|
69
|
-
def validate_collation(connection, selector_or_item)
|
|
70
|
-
if selector_or_item.key?(:collation) &&
|
|
71
|
-
!connection.features.collation_enabled?
|
|
72
|
-
then
|
|
73
|
-
raise Error::UnsupportedCollation
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def validate_updates(connection, updates)
|
|
78
|
-
updates.each do |update|
|
|
79
|
-
validate_array_filters(connection, update)
|
|
80
|
-
validate_collation(connection, update)
|
|
81
|
-
validate_hint_on_update(connection, update)
|
|
82
|
-
end
|
|
83
|
-
updates
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|