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/database/view.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
|
#
|
|
@@ -19,7 +18,6 @@ require 'mongo/cursor/nontailable'
|
|
|
19
18
|
|
|
20
19
|
module Mongo
|
|
21
20
|
class Database
|
|
22
|
-
|
|
23
21
|
# A class representing a view of a database.
|
|
24
22
|
#
|
|
25
23
|
# @since 2.0.0
|
|
@@ -82,19 +80,13 @@ module Mongo
|
|
|
82
80
|
session: session,
|
|
83
81
|
operation_timeouts: operation_timeouts(options)
|
|
84
82
|
)
|
|
83
|
+
|
|
85
84
|
cursor = read_with_retry_cursor(session, ServerSelector.primary, self, context: context) do |server|
|
|
86
85
|
send_initial_query(server, session, context, options.merge(name_only: true))
|
|
87
86
|
end
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
else
|
|
92
|
-
(info['name'] &&
|
|
93
|
-
info['name'].sub("#{@database.name}.", ''))
|
|
94
|
-
end
|
|
95
|
-
end.reject do |name|
|
|
96
|
-
name.start_with?('system.') || name.include?('$')
|
|
97
|
-
end
|
|
87
|
+
|
|
88
|
+
cursor.map { |info| info['name'] }
|
|
89
|
+
.reject { |name| name.start_with?('system.') || name.include?('$') }
|
|
98
90
|
end
|
|
99
91
|
|
|
100
92
|
# Get info on all the collections in the database.
|
|
@@ -154,7 +146,7 @@ module Mongo
|
|
|
154
146
|
|
|
155
147
|
validate_timeout_mode!(options)
|
|
156
148
|
|
|
157
|
-
@batch_size =
|
|
149
|
+
@batch_size = nil
|
|
158
150
|
@limit = nil
|
|
159
151
|
@collection = @database[Database::COMMAND]
|
|
160
152
|
end
|
|
@@ -209,7 +201,8 @@ module Mongo
|
|
|
209
201
|
|
|
210
202
|
private
|
|
211
203
|
|
|
212
|
-
def collections_info(session, server_selector, options = {}
|
|
204
|
+
def collections_info(session, server_selector, options = {})
|
|
205
|
+
@batch_size = options[:batch_size] if options[:batch_size]
|
|
213
206
|
description = nil
|
|
214
207
|
context = Operation::Context.new(
|
|
215
208
|
client: client,
|
|
@@ -219,27 +212,15 @@ module Mongo
|
|
|
219
212
|
op = initial_query_op(session, options)
|
|
220
213
|
tracer.trace_operation(op, context, op_name: 'listCollections') do
|
|
221
214
|
cursor = read_with_retry_cursor(session, server_selector, self, context: context) do |server|
|
|
222
|
-
# TODO take description from the connection used to send the query
|
|
215
|
+
# TODO: take description from the connection used to send the query
|
|
223
216
|
# once https://jira.mongodb.org/browse/RUBY-1601 is fixed.
|
|
224
217
|
description = server.description
|
|
225
218
|
send_initial_query(server, session, context, options)
|
|
226
219
|
end
|
|
227
|
-
|
|
228
|
-
#
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
# command and thus what the proper filtering logic should be
|
|
232
|
-
# (it is valid for collection names to have dots, thus filtering out
|
|
233
|
-
# collections named system.* here for 2.6 servers would actually
|
|
234
|
-
# filter out collections in the system database).
|
|
235
|
-
if description.server_version_gte?('3.0')
|
|
236
|
-
cursor.reject do |doc|
|
|
237
|
-
doc['name'].start_with?('system.') || doc['name'].include?('$')
|
|
238
|
-
end
|
|
239
|
-
else
|
|
240
|
-
cursor.reject do |doc|
|
|
241
|
-
doc['name'].start_with?("#{database.name}.system") || doc['name'].include?('$')
|
|
242
|
-
end
|
|
220
|
+
|
|
221
|
+
# Filter out the system collections
|
|
222
|
+
cursor.reject do |doc|
|
|
223
|
+
doc['name'].start_with?('system.') || doc['name'].include?('$')
|
|
243
224
|
end
|
|
244
225
|
end
|
|
245
226
|
end
|
|
@@ -247,10 +228,10 @@ module Mongo
|
|
|
247
228
|
def collections_info_spec(session, options = {})
|
|
248
229
|
{ selector: {
|
|
249
230
|
listCollections: 1,
|
|
250
|
-
cursor: batch_size ? { batchSize: batch_size } : {}
|
|
231
|
+
cursor: batch_size ? { batchSize: batch_size } : {}
|
|
232
|
+
},
|
|
251
233
|
db_name: @database.name,
|
|
252
|
-
session: session
|
|
253
|
-
}.tap do |spec|
|
|
234
|
+
session: session }.tap do |spec|
|
|
254
235
|
spec[:selector][:nameOnly] = true if options[:name_only]
|
|
255
236
|
spec[:selector][:filter] = options[:filter] if options[:filter]
|
|
256
237
|
spec[:selector][:authorizedCollections] = true if options[:authorized_collections]
|
|
@@ -290,9 +271,7 @@ module Mongo
|
|
|
290
271
|
def send_initial_query(server, session, context, options = {})
|
|
291
272
|
opts = options.dup
|
|
292
273
|
execution_opts = {}
|
|
293
|
-
if opts.key?(:deserialize_as_bson)
|
|
294
|
-
execution_opts[:deserialize_as_bson] = opts.delete(:deserialize_as_bson)
|
|
295
|
-
end
|
|
274
|
+
execution_opts[:deserialize_as_bson] = opts.delete(:deserialize_as_bson) if opts.key?(:deserialize_as_bson)
|
|
296
275
|
if server.load_balancer?
|
|
297
276
|
connection = server.pool.check_out(context: context)
|
|
298
277
|
initial_query_op(session, opts).execute_with_connection(
|
data/lib/mongo/database.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
|
#
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
require 'mongo/database/view'
|
|
19
18
|
|
|
20
19
|
module Mongo
|
|
21
|
-
|
|
22
20
|
# Represents a database on the db server and operations that can execute on
|
|
23
21
|
# it at this level.
|
|
24
22
|
#
|
|
@@ -30,33 +28,33 @@ module Mongo
|
|
|
30
28
|
# The admin database name.
|
|
31
29
|
#
|
|
32
30
|
# @since 2.0.0
|
|
33
|
-
ADMIN = 'admin'
|
|
31
|
+
ADMIN = 'admin'
|
|
34
32
|
|
|
35
33
|
# The "collection" that database commands operate against.
|
|
36
34
|
#
|
|
37
35
|
# @since 2.0.0
|
|
38
|
-
COMMAND = '$cmd'
|
|
36
|
+
COMMAND = '$cmd'
|
|
39
37
|
|
|
40
38
|
# The default database options.
|
|
41
39
|
#
|
|
42
40
|
# @since 2.0.0
|
|
43
|
-
DEFAULT_OPTIONS = Options::Redacted.new(:
|
|
41
|
+
DEFAULT_OPTIONS = Options::Redacted.new(database: ADMIN).freeze
|
|
44
42
|
|
|
45
43
|
# Database name field constant.
|
|
46
44
|
#
|
|
47
45
|
# @since 2.1.0
|
|
48
46
|
# @deprecated
|
|
49
|
-
NAME = 'name'
|
|
47
|
+
NAME = 'name'
|
|
50
48
|
|
|
51
49
|
# Databases constant.
|
|
52
50
|
#
|
|
53
51
|
# @since 2.1.0
|
|
54
|
-
DATABASES = 'databases'
|
|
52
|
+
DATABASES = 'databases'
|
|
55
53
|
|
|
56
54
|
# The name of the collection that holds all the collection names.
|
|
57
55
|
#
|
|
58
56
|
# @since 2.0.0
|
|
59
|
-
NAMESPACES = 'system.namespaces'
|
|
57
|
+
NAMESPACES = 'system.namespaces'
|
|
60
58
|
|
|
61
59
|
# @return [ Client ] client The database client.
|
|
62
60
|
attr_reader :client
|
|
@@ -94,6 +92,7 @@ module Mongo
|
|
|
94
92
|
# @since 2.0.0
|
|
95
93
|
def ==(other)
|
|
96
94
|
return false unless other.is_a?(Database)
|
|
95
|
+
|
|
97
96
|
name == other.name
|
|
98
97
|
end
|
|
99
98
|
|
|
@@ -110,11 +109,13 @@ module Mongo
|
|
|
110
109
|
# @since 2.0.0
|
|
111
110
|
def [](collection_name, options = {})
|
|
112
111
|
if options[:server_api]
|
|
113
|
-
raise ArgumentError,
|
|
112
|
+
raise ArgumentError,
|
|
113
|
+
'The :server_api option cannot be specified for collection objects. It can only be specified on Client level'
|
|
114
114
|
end
|
|
115
|
+
|
|
115
116
|
Collection.new(self, collection_name, options)
|
|
116
117
|
end
|
|
117
|
-
|
|
118
|
+
alias collection []
|
|
118
119
|
|
|
119
120
|
# Get all the names of the non-system collections in the database.
|
|
120
121
|
#
|
|
@@ -223,7 +224,7 @@ module Mongo
|
|
|
223
224
|
# executes this command. This is an internal option and is subject to
|
|
224
225
|
# change.
|
|
225
226
|
# - :deserialize_as_bson [ Boolean ] Whether to deserialize the response
|
|
226
|
-
# to this command using BSON types
|
|
227
|
+
# to this command using BSON types instead of native Ruby types wherever
|
|
227
228
|
# possible.
|
|
228
229
|
#
|
|
229
230
|
# @return [ Mongo::Operation::Result ] The result of the command execution.
|
|
@@ -231,31 +232,30 @@ module Mongo
|
|
|
231
232
|
opts = opts.dup
|
|
232
233
|
execution_opts = opts.delete(:execution_options) || {}
|
|
233
234
|
|
|
234
|
-
txn_read_pref = if opts[:session] && opts[:session].in_transaction?
|
|
235
|
-
opts[:session].txn_read_preference
|
|
236
|
-
else
|
|
237
|
-
nil
|
|
238
|
-
end
|
|
235
|
+
txn_read_pref = (opts[:session].txn_read_preference if opts[:session] && opts[:session].in_transaction?)
|
|
239
236
|
txn_read_pref ||= opts[:read] || ServerSelector::PRIMARY
|
|
240
237
|
Lint.validate_underscore_read_preference(txn_read_pref)
|
|
241
238
|
selector = ServerSelector.get(txn_read_pref)
|
|
242
239
|
|
|
243
240
|
client.with_session(opts) do |session|
|
|
244
|
-
|
|
241
|
+
context = Operation::Context.new(
|
|
242
|
+
client: client,
|
|
243
|
+
session: session,
|
|
244
|
+
operation_timeouts: operation_timeouts(opts)
|
|
245
|
+
)
|
|
245
246
|
op = Operation::Command.new(
|
|
246
|
-
:
|
|
247
|
-
:
|
|
248
|
-
:
|
|
249
|
-
:
|
|
247
|
+
selector: operation,
|
|
248
|
+
db_name: name,
|
|
249
|
+
read: selector,
|
|
250
|
+
session: session
|
|
250
251
|
)
|
|
251
252
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
options: execution_opts)
|
|
253
|
+
retry_enabled = client.options[:retry_reads] != false &&
|
|
254
|
+
client.options[:retry_writes] != false
|
|
255
|
+
with_overload_retry(context: context, retry_enabled: retry_enabled) do
|
|
256
|
+
server = selector.select_server(cluster, nil, session)
|
|
257
|
+
op.execute(server, context: context, options: execution_opts)
|
|
258
|
+
end
|
|
259
259
|
end
|
|
260
260
|
end
|
|
261
261
|
|
|
@@ -278,11 +278,7 @@ module Mongo
|
|
|
278
278
|
# @return [ Hash ] The result of the command execution.
|
|
279
279
|
# @api private
|
|
280
280
|
def read_command(operation, opts = {})
|
|
281
|
-
txn_read_pref = if opts[:session] && opts[:session].in_transaction?
|
|
282
|
-
opts[:session].txn_read_preference
|
|
283
|
-
else
|
|
284
|
-
nil
|
|
285
|
-
end
|
|
281
|
+
txn_read_pref = (opts[:session].txn_read_preference if opts[:session] && opts[:session].in_transaction?)
|
|
286
282
|
txn_read_pref ||= opts[:read] || ServerSelector::PRIMARY
|
|
287
283
|
Lint.validate_underscore_read_preference(txn_read_pref)
|
|
288
284
|
preference = ServerSelector.get(txn_read_pref)
|
|
@@ -298,7 +294,7 @@ module Mongo
|
|
|
298
294
|
db_name: name,
|
|
299
295
|
read: preference,
|
|
300
296
|
session: session,
|
|
301
|
-
comment: opts[:comment]
|
|
297
|
+
comment: opts[:comment]
|
|
302
298
|
)
|
|
303
299
|
op_name = opts[:op_name] || 'command'
|
|
304
300
|
tracer.trace_operation(operation, context, op_name: op_name) do
|
|
@@ -327,26 +323,26 @@ module Mongo
|
|
|
327
323
|
#
|
|
328
324
|
# @since 2.0.0
|
|
329
325
|
def drop(options = {})
|
|
330
|
-
operation = { :
|
|
326
|
+
operation = { dropDatabase: 1 }
|
|
331
327
|
client.with_session(options) do |session|
|
|
332
328
|
write_concern = if options[:write_concern]
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
329
|
+
WriteConcern.get(options[:write_concern])
|
|
330
|
+
else
|
|
331
|
+
self.write_concern
|
|
332
|
+
end
|
|
337
333
|
Operation::DropDatabase.new({
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
334
|
+
selector: operation,
|
|
335
|
+
db_name: name,
|
|
336
|
+
write_concern: write_concern,
|
|
337
|
+
session: session
|
|
338
|
+
}).execute(
|
|
339
|
+
next_primary(nil, session),
|
|
340
|
+
context: Operation::Context.new(
|
|
341
|
+
client: client,
|
|
342
|
+
session: session,
|
|
343
|
+
operation_timeouts: operation_timeouts(options)
|
|
344
|
+
)
|
|
345
|
+
)
|
|
350
346
|
end
|
|
351
347
|
end
|
|
352
348
|
|
|
@@ -371,6 +367,7 @@ module Mongo
|
|
|
371
367
|
if Lint.enabled? && !(name.is_a?(String) || name.is_a?(Symbol))
|
|
372
368
|
raise "Database name must be a string or a symbol: #{name}"
|
|
373
369
|
end
|
|
370
|
+
|
|
374
371
|
@client = client
|
|
375
372
|
@name = name.to_s.freeze
|
|
376
373
|
@options = options.freeze
|
|
@@ -458,9 +455,8 @@ module Mongo
|
|
|
458
455
|
View.new(self, options).aggregate(pipeline, options)
|
|
459
456
|
end
|
|
460
457
|
|
|
461
|
-
#
|
|
462
|
-
# in the
|
|
463
|
-
# notifications are sent for all changes that occur in the client's database.
|
|
458
|
+
# Allows users to request that notifications are sent for all changes that
|
|
459
|
+
# occur in the client's database.
|
|
464
460
|
#
|
|
465
461
|
# @example Get change notifications for a given database..
|
|
466
462
|
# database.watch([{ '$match' => { operationType: { '$in' => ['insert', 'replace'] } } }])
|
|
@@ -507,7 +503,6 @@ module Mongo
|
|
|
507
503
|
# @option options [ BSON::Timestamp ] :start_at_operation_time Only return
|
|
508
504
|
# changes that occurred after the specified timestamp. Any command run
|
|
509
505
|
# against the server will return a cluster time that can be used here.
|
|
510
|
-
# Only recognized by server versions 4.0+.
|
|
511
506
|
# @option options [ Object ] :comment A user-provided
|
|
512
507
|
# comment to attach to this command.
|
|
513
508
|
# @option options [ Boolean ] :show_expanded_events Enables the server to
|
|
@@ -531,7 +526,8 @@ module Mongo
|
|
|
531
526
|
Mongo::Collection::View.new(collection("#{COMMAND}.aggregate"), {}, view_options),
|
|
532
527
|
pipeline,
|
|
533
528
|
Mongo::Collection::View::ChangeStream::DATABASE,
|
|
534
|
-
options
|
|
529
|
+
options
|
|
530
|
+
)
|
|
535
531
|
end
|
|
536
532
|
|
|
537
533
|
# Create a database for the provided client, for use when we don't want the
|
data/lib/mongo/dbref.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2021 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Raised when the driver is in load-balancing mode but a connection
|
|
22
20
|
# is established to something other than a mongos.
|
|
23
21
|
class BadLoadBalancerTarget < Error
|
|
@@ -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
|
class Error
|
|
20
|
-
|
|
21
19
|
# Exception raised if there are write errors upon executing a bulk
|
|
22
20
|
# operation.
|
|
23
21
|
#
|
|
@@ -33,7 +31,6 @@ module Mongo
|
|
|
33
31
|
#
|
|
34
32
|
# @since 2.0.0
|
|
35
33
|
class BulkWriteError < Error
|
|
36
|
-
|
|
37
34
|
# @return [ BSON::Document ] result The error result.
|
|
38
35
|
attr_reader :result
|
|
39
36
|
|
|
@@ -48,9 +45,11 @@ module Mongo
|
|
|
48
45
|
# @since 2.0.0
|
|
49
46
|
def initialize(result)
|
|
50
47
|
@result = result
|
|
48
|
+
|
|
51
49
|
# Exception constructor behaves differently for a nil argument and
|
|
52
50
|
# for no argument. Avoid passing nil explicitly.
|
|
53
|
-
|
|
51
|
+
message = build_message
|
|
52
|
+
message ? super(message) : super()
|
|
54
53
|
end
|
|
55
54
|
|
|
56
55
|
private
|
|
@@ -77,24 +76,22 @@ module Mongo
|
|
|
77
76
|
errors = @result['writeErrors']
|
|
78
77
|
return nil unless errors
|
|
79
78
|
|
|
80
|
-
fragment =
|
|
79
|
+
fragment = ''
|
|
81
80
|
cut_short = false
|
|
82
81
|
errors.first(10).each_with_index do |error, i|
|
|
83
|
-
fragment +=
|
|
82
|
+
fragment += '; ' if fragment.length > 0
|
|
84
83
|
fragment += "[#{error['code']}]: #{error['errmsg']}"
|
|
85
84
|
fragment += " -- #{error['errInfo'].to_json}" if error['errInfo']
|
|
86
85
|
|
|
87
86
|
if fragment.length > 3000
|
|
88
|
-
cut_short = i < [9, errors.length].min
|
|
87
|
+
cut_short = i < [ 9, errors.length ].min
|
|
89
88
|
break
|
|
90
89
|
end
|
|
91
90
|
end
|
|
92
91
|
|
|
93
92
|
fragment += '...' if errors.length > 10 || cut_short
|
|
94
93
|
|
|
95
|
-
if errors.length > 1
|
|
96
|
-
fragment = "Multiple errors: #{fragment}"
|
|
97
|
-
end
|
|
94
|
+
fragment = "Multiple errors: #{fragment}" if errors.length > 1
|
|
98
95
|
|
|
99
96
|
fragment
|
|
100
97
|
end
|
|
@@ -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
|
class Error
|
|
20
|
-
|
|
21
19
|
# Raised if the Grid::FSBucket::Stream object is closed and an operation is attempted.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.1.0
|
|
24
22
|
class ClosedStream < Error
|
|
25
|
-
|
|
26
23
|
# Create the new exception.
|
|
27
24
|
#
|
|
28
25
|
# @example Create the new exception.
|
|
@@ -30,7 +27,7 @@ module Mongo
|
|
|
30
27
|
#
|
|
31
28
|
# @since 2.1.0
|
|
32
29
|
def initialize
|
|
33
|
-
super(
|
|
30
|
+
super('The stream is closed and cannot be written to or read from.')
|
|
34
31
|
end
|
|
35
32
|
end
|
|
36
33
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2019-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Exception raised when trying to check out a connection from a connection
|
|
22
20
|
# pool, the pool is at its max size and no connections become available
|
|
23
21
|
# within the configured wait timeout.
|
|
@@ -27,7 +25,6 @@ module Mongo
|
|
|
27
25
|
#
|
|
28
26
|
# @since 2.9.0
|
|
29
27
|
class ConnectionCheckOutTimeout < ::Timeout::Error
|
|
30
|
-
|
|
31
28
|
# @return [ Mongo::Address ] address The address of the server the
|
|
32
29
|
# pool's connections connect to.
|
|
33
30
|
#
|
|
@@ -42,9 +39,9 @@ module Mongo
|
|
|
42
39
|
def initialize(msg, options)
|
|
43
40
|
super(msg)
|
|
44
41
|
@address = options[:address]
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
return if @address
|
|
43
|
+
|
|
44
|
+
raise ArgumentError, 'Address argument is required'
|
|
48
45
|
end
|
|
49
46
|
end
|
|
50
47
|
end
|
|
@@ -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
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Exception raised when trying to perform operations on a connection that
|
|
22
20
|
# experienced a network error.
|
|
23
21
|
class ConnectionPerished < Error
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2022 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Exception raised when trying to check out a connection with a specific
|
|
22
20
|
# global id, and the connection for that global id no longer exists in the
|
|
23
21
|
# pool.
|
|
@@ -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
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Credential check for MONGODB-AWS authentication mechanism failed.
|
|
22
20
|
#
|
|
23
21
|
# This exception is raised when the driver attempts to verify the
|
|
@@ -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
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# An error related to client-side encryption.
|
|
22
20
|
class CryptError < Mongo::Error
|
|
23
21
|
# Create a new CryptError
|
|
@@ -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
|
class Error
|
|
20
|
-
|
|
21
19
|
# Raised if an extra chunk is found.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.1.0
|
|
24
22
|
class ExtraFileChunk < Error
|
|
25
|
-
|
|
26
23
|
# Create the new exception.
|
|
27
24
|
#
|
|
28
25
|
# @example Create the new exception.
|
|
@@ -30,7 +27,7 @@ module Mongo
|
|
|
30
27
|
#
|
|
31
28
|
# @since 2.1.0
|
|
32
29
|
def initialize
|
|
33
|
-
super(
|
|
30
|
+
super('Extra file chunk found.')
|
|
34
31
|
end
|
|
35
32
|
end
|
|
36
33
|
end
|
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
module Mongo
|
|
5
4
|
class Error
|
|
6
5
|
# This exception is raised when stringprep validation fails, such as due to
|
|
7
|
-
# character being present or
|
|
6
|
+
# character being present or bidirectional data being invalid.
|
|
8
7
|
#
|
|
9
8
|
# @since 2.6.0
|
|
10
9
|
class FailedStringPrepValidation < Error
|
|
11
10
|
# The error message describing failed bidi validation.
|
|
12
11
|
#
|
|
13
12
|
# @since 2.6.0
|
|
14
|
-
INVALID_BIDIRECTIONAL = 'Data failed bidirectional validation'
|
|
13
|
+
INVALID_BIDIRECTIONAL = 'Data failed bidirectional validation'
|
|
15
14
|
|
|
16
15
|
# The error message describing the discovery of a prohibited character.
|
|
17
16
|
#
|
|
18
17
|
# @since 2.6.0
|
|
19
|
-
PROHIBITED_CHARACTER = 'Data contains a prohibited character.'
|
|
18
|
+
PROHIBITED_CHARACTER = 'Data contains a prohibited character.'
|
|
20
19
|
|
|
21
20
|
# The error message describing that stringprep normalization can't be done on Ruby versions
|
|
22
21
|
# below 2.2.0.
|
|
23
22
|
#
|
|
24
23
|
# @since 2.6.0
|
|
25
|
-
UNABLE_TO_NORMALIZE = 'Unable to perform normalization with Ruby versions below 2.2.0'
|
|
24
|
+
UNABLE_TO_NORMALIZE = 'Unable to perform normalization with Ruby versions below 2.2.0'
|
|
26
25
|
|
|
27
26
|
# Create the new exception.
|
|
28
27
|
#
|
|
@@ -34,7 +33,7 @@ module Mongo
|
|
|
34
33
|
#
|
|
35
34
|
# @since 2.6.0
|
|
36
35
|
def initialize(msg)
|
|
37
|
-
super
|
|
36
|
+
super
|
|
38
37
|
end
|
|
39
38
|
end
|
|
40
39
|
end
|