mongo 2.22.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 +267 -276
- 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 +152 -184
- data/lib/mongo/cluster_time.rb +14 -31
- data/lib/mongo/collection/helpers.rb +5 -8
- data/lib/mongo/collection/view/aggregation/behavior.rb +1 -1
- data/lib/mongo/collection/view/aggregation.rb +10 -12
- 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 +44 -35
- data/lib/mongo/collection/view/map_reduce.rb +20 -25
- data/lib/mongo/collection/view/readable.rb +96 -94
- data/lib/mongo/collection/view/writable.rb +104 -114
- data/lib/mongo/collection/view.rb +11 -8
- data/lib/mongo/collection.rb +103 -106
- 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 +6 -4
- data/lib/mongo/crypt/auto_decryption_context.rb +9 -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 +150 -156
- data/lib/mongo/crypt/context.rb +20 -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 +9 -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 +23 -39
- data/lib/mongo/database.rb +68 -65
- data/lib/mongo/dbref.rb +0 -1
- data/lib/mongo/deprecations.rb +98 -0
- 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 +68 -58
- 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 +4 -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 +7 -6
- 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 +29 -31
- 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 +37 -59
- 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 +30 -10
- data/lib/mongo/semaphore.rb +0 -1
- data/lib/mongo/server/app_metadata/environment.rb +3 -3
- data/lib/mongo/server/app_metadata/platform.rb +17 -4
- data/lib/mongo/server/app_metadata.rb +4 -5
- data/lib/mongo/server/connection.rb +79 -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 +51 -59
- 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 +62 -94
- 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 +334 -199
- 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 +10 -11
- data/lib/mongo/srv/resolver.rb +15 -24
- data/lib/mongo/srv/result.rb +25 -21
- 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 +320 -0
- data/lib/mongo/tracing/open_telemetry/operation_tracer.rb +227 -0
- data/lib/mongo/tracing/open_telemetry/tracer.rb +236 -0
- data/lib/mongo/{error/server_api_not_supported.rb → tracing/open_telemetry.rb} +10 -10
- data/lib/mongo/tracing.rb +42 -0
- data/lib/mongo/uri/options_mapper.rb +135 -126
- data/lib/mongo/uri/srv_protocol.rb +34 -42
- 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 +4 -3
- data/mongo.gemspec +17 -17
- metadata +11 -5
- 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.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
|
|
@@ -74,7 +72,8 @@ module Mongo
|
|
|
74
72
|
:server_selector,
|
|
75
73
|
:read_concern,
|
|
76
74
|
:write_concern,
|
|
77
|
-
:encrypted_fields_map
|
|
75
|
+
:encrypted_fields_map,
|
|
76
|
+
:tracer
|
|
78
77
|
|
|
79
78
|
# @return [ Mongo::Server ] Get the primary server from the cluster.
|
|
80
79
|
def_delegators :cluster,
|
|
@@ -93,6 +92,7 @@ module Mongo
|
|
|
93
92
|
# @since 2.0.0
|
|
94
93
|
def ==(other)
|
|
95
94
|
return false unless other.is_a?(Database)
|
|
95
|
+
|
|
96
96
|
name == other.name
|
|
97
97
|
end
|
|
98
98
|
|
|
@@ -109,11 +109,13 @@ module Mongo
|
|
|
109
109
|
# @since 2.0.0
|
|
110
110
|
def [](collection_name, options = {})
|
|
111
111
|
if options[:server_api]
|
|
112
|
-
raise ArgumentError,
|
|
112
|
+
raise ArgumentError,
|
|
113
|
+
'The :server_api option cannot be specified for collection objects. It can only be specified on Client level'
|
|
113
114
|
end
|
|
115
|
+
|
|
114
116
|
Collection.new(self, collection_name, options)
|
|
115
117
|
end
|
|
116
|
-
|
|
118
|
+
alias collection []
|
|
117
119
|
|
|
118
120
|
# Get all the names of the non-system collections in the database.
|
|
119
121
|
#
|
|
@@ -222,7 +224,7 @@ module Mongo
|
|
|
222
224
|
# executes this command. This is an internal option and is subject to
|
|
223
225
|
# change.
|
|
224
226
|
# - :deserialize_as_bson [ Boolean ] Whether to deserialize the response
|
|
225
|
-
# to this command using BSON types
|
|
227
|
+
# to this command using BSON types instead of native Ruby types wherever
|
|
226
228
|
# possible.
|
|
227
229
|
#
|
|
228
230
|
# @return [ Mongo::Operation::Result ] The result of the command execution.
|
|
@@ -230,31 +232,30 @@ module Mongo
|
|
|
230
232
|
opts = opts.dup
|
|
231
233
|
execution_opts = opts.delete(:execution_options) || {}
|
|
232
234
|
|
|
233
|
-
txn_read_pref = if opts[:session] && opts[:session].in_transaction?
|
|
234
|
-
opts[:session].txn_read_preference
|
|
235
|
-
else
|
|
236
|
-
nil
|
|
237
|
-
end
|
|
235
|
+
txn_read_pref = (opts[:session].txn_read_preference if opts[:session] && opts[:session].in_transaction?)
|
|
238
236
|
txn_read_pref ||= opts[:read] || ServerSelector::PRIMARY
|
|
239
237
|
Lint.validate_underscore_read_preference(txn_read_pref)
|
|
240
238
|
selector = ServerSelector.get(txn_read_pref)
|
|
241
239
|
|
|
242
240
|
client.with_session(opts) do |session|
|
|
243
|
-
|
|
241
|
+
context = Operation::Context.new(
|
|
242
|
+
client: client,
|
|
243
|
+
session: session,
|
|
244
|
+
operation_timeouts: operation_timeouts(opts)
|
|
245
|
+
)
|
|
244
246
|
op = Operation::Command.new(
|
|
245
|
-
:
|
|
246
|
-
:
|
|
247
|
-
:
|
|
248
|
-
:
|
|
247
|
+
selector: operation,
|
|
248
|
+
db_name: name,
|
|
249
|
+
read: selector,
|
|
250
|
+
session: session
|
|
249
251
|
)
|
|
250
252
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
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
|
|
258
259
|
end
|
|
259
260
|
end
|
|
260
261
|
|
|
@@ -267,19 +268,17 @@ module Mongo
|
|
|
267
268
|
# @option opts :session [ Session ] The session to use for this command.
|
|
268
269
|
# @option opts [ Object ] :comment A user-provided
|
|
269
270
|
# comment to attach to this command.
|
|
270
|
-
# @option
|
|
271
|
+
# @option opts [ Integer ] :timeout_ms The operation timeout in milliseconds.
|
|
271
272
|
# Must be a non-negative integer. An explicit value of 0 means infinite.
|
|
272
273
|
# The default value is unset which means the value is inherited from
|
|
273
274
|
# the database or the client.
|
|
275
|
+
# @option opts :op_name [ String | nil ] The name of the operation for
|
|
276
|
+
# tracing purposes.
|
|
274
277
|
#
|
|
275
278
|
# @return [ Hash ] The result of the command execution.
|
|
276
279
|
# @api private
|
|
277
280
|
def read_command(operation, opts = {})
|
|
278
|
-
txn_read_pref = if opts[:session] && opts[:session].in_transaction?
|
|
279
|
-
opts[:session].txn_read_preference
|
|
280
|
-
else
|
|
281
|
-
nil
|
|
282
|
-
end
|
|
281
|
+
txn_read_pref = (opts[:session].txn_read_preference if opts[:session] && opts[:session].in_transaction?)
|
|
283
282
|
txn_read_pref ||= opts[:read] || ServerSelector::PRIMARY
|
|
284
283
|
Lint.validate_underscore_read_preference(txn_read_pref)
|
|
285
284
|
preference = ServerSelector.get(txn_read_pref)
|
|
@@ -290,14 +289,18 @@ module Mongo
|
|
|
290
289
|
session: session,
|
|
291
290
|
operation_timeouts: operation_timeouts(opts)
|
|
292
291
|
)
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
292
|
+
operation = Operation::Command.new(
|
|
293
|
+
selector: operation.dup,
|
|
294
|
+
db_name: name,
|
|
295
|
+
read: preference,
|
|
296
|
+
session: session,
|
|
297
|
+
comment: opts[:comment]
|
|
298
|
+
)
|
|
299
|
+
op_name = opts[:op_name] || 'command'
|
|
300
|
+
tracer.trace_operation(operation, context, op_name: op_name) do
|
|
301
|
+
read_with_retry(session, preference, context) do |server|
|
|
302
|
+
operation.execute(server, context: context)
|
|
303
|
+
end
|
|
301
304
|
end
|
|
302
305
|
end
|
|
303
306
|
end
|
|
@@ -320,26 +323,26 @@ module Mongo
|
|
|
320
323
|
#
|
|
321
324
|
# @since 2.0.0
|
|
322
325
|
def drop(options = {})
|
|
323
|
-
operation = { :
|
|
326
|
+
operation = { dropDatabase: 1 }
|
|
324
327
|
client.with_session(options) do |session|
|
|
325
328
|
write_concern = if options[:write_concern]
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
329
|
+
WriteConcern.get(options[:write_concern])
|
|
330
|
+
else
|
|
331
|
+
self.write_concern
|
|
332
|
+
end
|
|
330
333
|
Operation::DropDatabase.new({
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
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
|
+
)
|
|
343
346
|
end
|
|
344
347
|
end
|
|
345
348
|
|
|
@@ -364,6 +367,7 @@ module Mongo
|
|
|
364
367
|
if Lint.enabled? && !(name.is_a?(String) || name.is_a?(Symbol))
|
|
365
368
|
raise "Database name must be a string or a symbol: #{name}"
|
|
366
369
|
end
|
|
370
|
+
|
|
367
371
|
@client = client
|
|
368
372
|
@name = name.to_s.freeze
|
|
369
373
|
@options = options.freeze
|
|
@@ -451,9 +455,8 @@ module Mongo
|
|
|
451
455
|
View.new(self, options).aggregate(pipeline, options)
|
|
452
456
|
end
|
|
453
457
|
|
|
454
|
-
#
|
|
455
|
-
# in the
|
|
456
|
-
# 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.
|
|
457
460
|
#
|
|
458
461
|
# @example Get change notifications for a given database..
|
|
459
462
|
# database.watch([{ '$match' => { operationType: { '$in' => ['insert', 'replace'] } } }])
|
|
@@ -500,7 +503,6 @@ module Mongo
|
|
|
500
503
|
# @option options [ BSON::Timestamp ] :start_at_operation_time Only return
|
|
501
504
|
# changes that occurred after the specified timestamp. Any command run
|
|
502
505
|
# against the server will return a cluster time that can be used here.
|
|
503
|
-
# Only recognized by server versions 4.0+.
|
|
504
506
|
# @option options [ Object ] :comment A user-provided
|
|
505
507
|
# comment to attach to this command.
|
|
506
508
|
# @option options [ Boolean ] :show_expanded_events Enables the server to
|
|
@@ -524,7 +526,8 @@ module Mongo
|
|
|
524
526
|
Mongo::Collection::View.new(collection("#{COMMAND}.aggregate"), {}, view_options),
|
|
525
527
|
pipeline,
|
|
526
528
|
Mongo::Collection::View::ChangeStream::DATABASE,
|
|
527
|
-
options
|
|
529
|
+
options
|
|
530
|
+
)
|
|
528
531
|
end
|
|
529
532
|
|
|
530
533
|
# Create a database for the provided client, for use when we don't want the
|
data/lib/mongo/dbref.rb
CHANGED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'mongo/loggable'
|
|
4
|
+
|
|
5
|
+
module Mongo
|
|
6
|
+
# Used for reporting deprecated behavior in the driver. When it is possible
|
|
7
|
+
# to detect that a deprecated feature is being used, a warning should be issued
|
|
8
|
+
# through this module.
|
|
9
|
+
#
|
|
10
|
+
# The warning will be issued no more than once for that feature, regardless
|
|
11
|
+
# of how many times Mongo::Deprecations.warn is called.
|
|
12
|
+
#
|
|
13
|
+
# @example Issue a deprecation warning.
|
|
14
|
+
# Mongo::Deprecations.warn(:old_feature, "The old_feature is deprecated, use new_feature instead.")
|
|
15
|
+
#
|
|
16
|
+
# @api private
|
|
17
|
+
module Deprecations
|
|
18
|
+
extend self
|
|
19
|
+
extend Mongo::Loggable
|
|
20
|
+
|
|
21
|
+
# Mutex for synchronizing access to warned features.
|
|
22
|
+
# @api private
|
|
23
|
+
MUTEX = Thread::Mutex.new
|
|
24
|
+
|
|
25
|
+
# Issue a warning about a deprecated feature. The warning is written to the
|
|
26
|
+
# logger, and will not be written more than once per feature.
|
|
27
|
+
#
|
|
28
|
+
# @param [ String | Symbol ] feature The deprecated feature.
|
|
29
|
+
# @param [ String ] message The deprecation message.
|
|
30
|
+
def warn(feature, message)
|
|
31
|
+
MUTEX.synchronize do
|
|
32
|
+
return if _warned?(feature)
|
|
33
|
+
|
|
34
|
+
_warned!(feature)
|
|
35
|
+
log_warn("[DEPRECATION:#{feature}] #{message}")
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Check if a warning for a given deprecated feature has already been issued.
|
|
40
|
+
#
|
|
41
|
+
# @param [ String | Symbol ] feature The deprecated feature.
|
|
42
|
+
# @param [ true | false ] prefix Whether to check for prefix matches.
|
|
43
|
+
#
|
|
44
|
+
# @return [ true | false ] If a warning has already been issued.
|
|
45
|
+
def warned?(feature, prefix: false)
|
|
46
|
+
MUTEX.synchronize { _warned?(feature, prefix: prefix) }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Mark that a warning for a given deprecated feature has been issued.
|
|
50
|
+
#
|
|
51
|
+
# @param [ String | Symbol ] feature The deprecated feature.
|
|
52
|
+
def warned!(feature)
|
|
53
|
+
MUTEX.synchronize { _warned!(feature) }
|
|
54
|
+
nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Clears all memory of previously warned features.
|
|
58
|
+
def clear!
|
|
59
|
+
MUTEX.synchronize { warned_features reset: true }
|
|
60
|
+
nil
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
# Set of features that have already been warned about.
|
|
66
|
+
#
|
|
67
|
+
# @param [ true | false ] reset Whether to reset the warned features.
|
|
68
|
+
#
|
|
69
|
+
# @return [ Set<String> ] The set of warned features.
|
|
70
|
+
def warned_features(reset: false)
|
|
71
|
+
@warned_features = nil if reset
|
|
72
|
+
@warned_features ||= Set.new
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Check if a warning for a given deprecated feature has already been issued.
|
|
76
|
+
# This version is not thread-safe.
|
|
77
|
+
#
|
|
78
|
+
# @param [ String | Symbol ] feature The deprecated feature.
|
|
79
|
+
# @param [ true | false ] prefix Whether to check for prefix matches.
|
|
80
|
+
#
|
|
81
|
+
# @return [ true | false ] If a warning has already been issued.
|
|
82
|
+
def _warned?(feature, prefix: false)
|
|
83
|
+
if prefix
|
|
84
|
+
warned_features.any? { |f| f.to_s.start_with?(feature) }
|
|
85
|
+
else
|
|
86
|
+
warned_features.include?(feature.to_s)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Mark that a warning for a given deprecated feature has been issued.
|
|
91
|
+
# This version is not thread-safe.
|
|
92
|
+
#
|
|
93
|
+
# @param [ String | Symbol ] feature The deprecated feature.
|
|
94
|
+
def _warned!(feature)
|
|
95
|
+
warned_features.add(feature.to_s)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -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
|