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/error/parser.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
|
#
|
|
@@ -15,33 +14,8 @@
|
|
|
15
14
|
# See the License for the specific language governing permissions and
|
|
16
15
|
# limitations under the License.
|
|
17
16
|
|
|
18
|
-
# Sample error - mongo 3.4:
|
|
19
|
-
# {
|
|
20
|
-
# "ok" : 0,
|
|
21
|
-
# "errmsg" : "not master",
|
|
22
|
-
# "code" : 10107,
|
|
23
|
-
# "codeName" : "NotMaster"
|
|
24
|
-
# }
|
|
25
|
-
#
|
|
26
|
-
# Sample response with a write concern error - mongo 3.4:
|
|
27
|
-
# {
|
|
28
|
-
# "n" : 1,
|
|
29
|
-
# "opTime" : {
|
|
30
|
-
# "ts" : Timestamp(1527728618, 1),
|
|
31
|
-
# "t" : NumberLong(4)
|
|
32
|
-
# },
|
|
33
|
-
# "electionId" : ObjectId("7fffffff0000000000000004"),
|
|
34
|
-
# "writeConcernError" : {
|
|
35
|
-
# "code" : 100,
|
|
36
|
-
# "codeName" : "CannotSatisfyWriteConcern",
|
|
37
|
-
# "errmsg" : "Not enough data-bearing nodes"
|
|
38
|
-
# },
|
|
39
|
-
# "ok" : 1
|
|
40
|
-
# }
|
|
41
|
-
|
|
42
17
|
module Mongo
|
|
43
18
|
class Error
|
|
44
|
-
|
|
45
19
|
# Class for parsing the various forms that errors can come in from MongoDB
|
|
46
20
|
# command responses.
|
|
47
21
|
#
|
|
@@ -100,14 +74,6 @@ module Mongo
|
|
|
100
74
|
|
|
101
75
|
# Create the new parser with the returned document.
|
|
102
76
|
#
|
|
103
|
-
# In legacy mode, the code and codeName fields of the document are not
|
|
104
|
-
# examined because the status (ok: 1) is not part of the document and
|
|
105
|
-
# there is no way to distinguish successful from failed responses using
|
|
106
|
-
# the document itself, and a successful response may legitimately have
|
|
107
|
-
# { code: 123, codeName: 'foo' } as the contents of a user-inserted
|
|
108
|
-
# document. The legacy server versions do not fill out code nor codeName
|
|
109
|
-
# thus not reading them does not lose information.
|
|
110
|
-
#
|
|
111
77
|
# @example Create the new parser.
|
|
112
78
|
# Parser.new({ 'errmsg' => 'failed' })
|
|
113
79
|
#
|
|
@@ -115,18 +81,15 @@ module Mongo
|
|
|
115
81
|
# @param [ Array<Protocol::Message> ] replies The message replies.
|
|
116
82
|
# @param [ Hash ] options The options.
|
|
117
83
|
#
|
|
118
|
-
# @option options [ true | false ] :legacy Whether document and replies
|
|
119
|
-
# are from a legacy (pre-3.2) response
|
|
120
|
-
#
|
|
121
84
|
# @since 2.0.0
|
|
122
85
|
def initialize(document, replies = nil, options = nil)
|
|
123
86
|
@document = document || {}
|
|
124
87
|
@replies = replies
|
|
125
88
|
@options = if options
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
89
|
+
options.dup
|
|
90
|
+
else
|
|
91
|
+
{}
|
|
92
|
+
end.freeze
|
|
130
93
|
parse!
|
|
131
94
|
end
|
|
132
95
|
|
|
@@ -194,17 +157,15 @@ module Mongo
|
|
|
194
157
|
|
|
195
158
|
def parse!
|
|
196
159
|
if document['ok'] != 1 && document['writeErrors']
|
|
197
|
-
raise ArgumentError,
|
|
160
|
+
raise ArgumentError, 'writeErrors should only be given in successful responses'
|
|
198
161
|
end
|
|
199
162
|
|
|
200
|
-
@message = +
|
|
163
|
+
@message = +''
|
|
201
164
|
parse_single(@message, '$err')
|
|
202
165
|
parse_single(@message, 'err')
|
|
203
166
|
parse_single(@message, 'errmsg')
|
|
204
167
|
parse_multiple(@message, 'writeErrors')
|
|
205
|
-
if write_concern_error_document
|
|
206
|
-
parse_single(@message, 'errmsg', write_concern_error_document)
|
|
207
|
-
end
|
|
168
|
+
parse_single(@message, 'errmsg', write_concern_error_document) if write_concern_error_document
|
|
208
169
|
parse_flag(@message)
|
|
209
170
|
parse_code
|
|
210
171
|
parse_labels
|
|
@@ -214,27 +175,27 @@ module Mongo
|
|
|
214
175
|
@message = self.class.build_message(
|
|
215
176
|
code: code,
|
|
216
177
|
code_name: code_name,
|
|
217
|
-
message: @message
|
|
178
|
+
message: @message
|
|
218
179
|
)
|
|
219
180
|
end
|
|
220
181
|
|
|
221
182
|
def parse_single(message, key, doc = document)
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
183
|
+
return unless error = doc[key]
|
|
184
|
+
|
|
185
|
+
append(message, error)
|
|
225
186
|
end
|
|
226
187
|
|
|
227
188
|
def parse_multiple(message, key)
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
189
|
+
return unless errors = document[key]
|
|
190
|
+
|
|
191
|
+
errors.each do |error|
|
|
192
|
+
parse_single(message, 'errmsg', error)
|
|
232
193
|
end
|
|
233
194
|
end
|
|
234
195
|
|
|
235
196
|
def parse_flag(message)
|
|
236
197
|
if replies && replies.first &&
|
|
237
|
-
|
|
198
|
+
replies.first.respond_to?(:cursor_not_found?) && replies.first.cursor_not_found?
|
|
238
199
|
append(message, CURSOR_NOT_FOUND)
|
|
239
200
|
end
|
|
240
201
|
end
|
|
@@ -248,7 +209,7 @@ module Mongo
|
|
|
248
209
|
end
|
|
249
210
|
|
|
250
211
|
def parse_code
|
|
251
|
-
if document['ok'] == 1
|
|
212
|
+
if document['ok'] == 1
|
|
252
213
|
@code = @code_name = nil
|
|
253
214
|
else
|
|
254
215
|
@code = document['code']
|
|
@@ -259,25 +220,22 @@ module Mongo
|
|
|
259
220
|
# codes of the top level response with write concern error codes.
|
|
260
221
|
# In practice this should never be an issue as a write concern
|
|
261
222
|
# can only fail after the operation succeeds on the primary.
|
|
262
|
-
if @code.nil? && @code_name.nil?
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
@code_name = subdoc['codeName']
|
|
266
|
-
end
|
|
223
|
+
if @code.nil? && @code_name.nil? && (subdoc = write_concern_error_document)
|
|
224
|
+
@code = subdoc['code']
|
|
225
|
+
@code_name = subdoc['codeName']
|
|
267
226
|
end
|
|
268
227
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
end
|
|
228
|
+
return unless @code.nil? && @code_name.nil?
|
|
229
|
+
# If we have writeErrors, and all of their codes are the same,
|
|
230
|
+
# use that code. Otherwise don't set the code
|
|
231
|
+
return unless write_errors = document['writeErrors']
|
|
232
|
+
|
|
233
|
+
codes = write_errors.map { |e| e['code'] }.compact
|
|
234
|
+
return unless codes.uniq.length == 1
|
|
235
|
+
|
|
236
|
+
@code = codes.first
|
|
237
|
+
# code name may not be returned by the server
|
|
238
|
+
@code_name = write_errors.map { |e| e['codeName'] }.compact.first
|
|
281
239
|
end
|
|
282
240
|
|
|
283
241
|
def parse_labels
|
|
@@ -286,8 +244,8 @@ module Mongo
|
|
|
286
244
|
|
|
287
245
|
def parse_wtimeout
|
|
288
246
|
@wtimeout = write_concern_error_document &&
|
|
289
|
-
|
|
290
|
-
|
|
247
|
+
write_concern_error_document['errInfo'] &&
|
|
248
|
+
write_concern_error_document['errInfo']['wtimeout']
|
|
291
249
|
end
|
|
292
250
|
end
|
|
293
251
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2019-present MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,8 +16,7 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
|
-
# Exception raised if an operation is attempted connection that was
|
|
19
|
+
# Exception raised if an operation is attempted on a connection that was
|
|
22
20
|
# interrupted due to server monitor timeout.
|
|
23
21
|
class PoolClearedError < PoolError
|
|
24
22
|
include WriteRetryable
|
|
@@ -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,12 +16,10 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Exception raised if an operation is attempted on a closed connection pool.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.9.0
|
|
24
22
|
class PoolClosedError < PoolError
|
|
25
|
-
|
|
26
23
|
# Instantiate the new exception.
|
|
27
24
|
#
|
|
28
25
|
# @example Instantiate the exception.
|
|
@@ -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,10 +16,8 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Abstract base class for connection pool-related exceptions.
|
|
22
20
|
class PoolError < Error
|
|
23
|
-
|
|
24
21
|
# @return [ Mongo::Address ] address The address of the server the
|
|
25
22
|
# pool's connections connect to.
|
|
26
23
|
#
|
|
@@ -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 if an operation is attempted on a paused connection pool.
|
|
22
20
|
class PoolPausedError < PoolError
|
|
23
21
|
include WriteRetryable
|
|
@@ -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
|
# This is a special marker exception class used internally in the
|
|
22
20
|
# retryable reads/writes implementation. Its purpose is to bypass
|
|
23
21
|
# note addition when raising the exception from the first read/write
|
|
@@ -26,7 +24,7 @@ module Mongo
|
|
|
26
24
|
# @note This class must not derive from Error.
|
|
27
25
|
#
|
|
28
26
|
# @api private
|
|
29
|
-
class RaiseOriginalError < Exception
|
|
27
|
+
class RaiseOriginalError < Exception # rubocop:disable Lint/InheritException
|
|
30
28
|
end
|
|
31
29
|
end
|
|
32
30
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2019-2022 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# A module encapsulating functionality to indicate whether errors are
|
|
22
20
|
# retryable.
|
|
23
21
|
#
|
|
@@ -27,24 +25,23 @@ module Mongo
|
|
|
27
25
|
#
|
|
28
26
|
# @api semipublic
|
|
29
27
|
module ReadWriteRetryable
|
|
30
|
-
|
|
31
28
|
# Error codes and code names that should result in a failing write
|
|
32
29
|
# being retried.
|
|
33
30
|
#
|
|
34
31
|
# @api private
|
|
35
32
|
WRITE_RETRY_ERRORS = [
|
|
36
|
-
{:
|
|
37
|
-
{:
|
|
38
|
-
{:
|
|
39
|
-
{:
|
|
40
|
-
{:
|
|
41
|
-
{:
|
|
42
|
-
{:
|
|
43
|
-
{:
|
|
44
|
-
{:
|
|
45
|
-
{:
|
|
46
|
-
{:
|
|
47
|
-
{:
|
|
33
|
+
{ code_name: 'HostUnreachable', code: 6 },
|
|
34
|
+
{ code_name: 'HostNotFound', code: 7 },
|
|
35
|
+
{ code_name: 'NetworkTimeout', code: 89 },
|
|
36
|
+
{ code_name: 'ShutdownInProgress', code: 91 },
|
|
37
|
+
{ code_name: 'PrimarySteppedDown', code: 189 },
|
|
38
|
+
{ code_name: 'ExceededTimeLimit', code: 262 },
|
|
39
|
+
{ code_name: 'SocketException', code: 9001 },
|
|
40
|
+
{ code_name: 'NotMaster', code: 10_107 },
|
|
41
|
+
{ code_name: 'InterruptedAtShutdown', code: 11_600 },
|
|
42
|
+
{ code_name: 'InterruptedDueToReplStateChange', code: 11_602 },
|
|
43
|
+
{ code_name: 'NotPrimaryNoSecondaryOk', code: 13_435 },
|
|
44
|
+
{ code_name: 'NotMasterOrSecondary', code: 13_436 },
|
|
48
45
|
].freeze
|
|
49
46
|
|
|
50
47
|
# These are magic error messages that could indicate a master change.
|
|
@@ -80,7 +77,7 @@ module Mongo
|
|
|
80
77
|
# @deprecated
|
|
81
78
|
def retryable?
|
|
82
79
|
write_retryable? ||
|
|
83
|
-
|
|
80
|
+
(code.nil? && RETRY_MESSAGES.any? { |m| message.include?(m) })
|
|
84
81
|
end
|
|
85
82
|
|
|
86
83
|
# Whether the error is a retryable error according to the modern retryable
|
|
@@ -92,7 +89,7 @@ module Mongo
|
|
|
92
89
|
# @return [ true, false ]
|
|
93
90
|
def write_retryable?
|
|
94
91
|
write_retryable_code? ||
|
|
95
|
-
|
|
92
|
+
(code.nil? && WRITE_RETRY_MESSAGES.any? { |m| message.include?(m) })
|
|
96
93
|
end
|
|
97
94
|
|
|
98
95
|
private def write_retryable_code?
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
module Mongo
|
|
5
4
|
class Error
|
|
@@ -10,15 +9,14 @@ module Mongo
|
|
|
10
9
|
#
|
|
11
10
|
# @api semipublic
|
|
12
11
|
module SdamErrorDetection
|
|
13
|
-
|
|
14
12
|
# @api private
|
|
15
|
-
NOT_MASTER_CODES = [
|
|
13
|
+
NOT_MASTER_CODES = [ 10_107, 13_435 ].freeze
|
|
16
14
|
|
|
17
15
|
# @api private
|
|
18
|
-
NODE_RECOVERING_CODES = [
|
|
16
|
+
NODE_RECOVERING_CODES = [ 11_600, 11_602, 13_436, 189, 91, 10_058 ].freeze
|
|
19
17
|
|
|
20
18
|
# @api private
|
|
21
|
-
NODE_SHUTTING_DOWN_CODES = [
|
|
19
|
+
NODE_SHUTTING_DOWN_CODES = [ 11_600, 91 ].freeze
|
|
22
20
|
|
|
23
21
|
# Whether the error is a "not master" error, or one of its variants.
|
|
24
22
|
#
|
|
@@ -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
|
# Exception raised when a Client has :server_api configured and an
|
|
22
20
|
# operation attempts to specify any of server API version parameters.
|
|
23
21
|
class ServerApiConflict < Error
|
|
@@ -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
|
# Server certificate has been revoked (determined via OCSP).
|
|
22
20
|
class ServerCertificateRevoked < Error
|
|
23
21
|
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
|
#
|
|
@@ -23,7 +22,6 @@ module Mongo
|
|
|
23
22
|
# Exception raised if an unknown server is attempted to be used for
|
|
24
23
|
# an operation.
|
|
25
24
|
class ServerNotUsable < Error
|
|
26
|
-
|
|
27
25
|
# Instantiate the new exception.
|
|
28
26
|
#
|
|
29
27
|
# @api private
|
|
@@ -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,13 +16,12 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Session was previously ended.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.7.0
|
|
24
22
|
class SessionEnded < Error
|
|
25
23
|
def initialize
|
|
26
|
-
super(
|
|
24
|
+
super('The session was ended and cannot be used')
|
|
27
25
|
end
|
|
28
26
|
end
|
|
29
27
|
end
|
|
@@ -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,12 +16,11 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# This exception is raised when a session is attempted to be used but
|
|
22
20
|
# it was never materialized.
|
|
23
21
|
class SessionNotMaterialized < InvalidSession
|
|
24
22
|
def initialize
|
|
25
|
-
super(
|
|
23
|
+
super('The session was not materialized and cannot be used. Use start_session or with_session in order to start a session that will be materialized.')
|
|
26
24
|
end
|
|
27
25
|
end
|
|
28
26
|
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,21 +16,19 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# This exception is raised when a session is attempted to be used and the
|
|
22
20
|
# deployment does not support sessions.
|
|
23
21
|
#
|
|
24
22
|
# @note The subclassing of InvalidSession only exists for backwards
|
|
25
23
|
# compatibility and will be removed in driver version 3.0.
|
|
26
24
|
class SessionsNotSupported < InvalidSession
|
|
27
|
-
|
|
28
25
|
# Create the new exception.
|
|
29
26
|
#
|
|
30
27
|
# @param [ String ] message The error message.
|
|
31
28
|
#
|
|
32
29
|
# @api private
|
|
33
30
|
def initialize(message)
|
|
34
|
-
super
|
|
31
|
+
super
|
|
35
32
|
end
|
|
36
33
|
end
|
|
37
34
|
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,14 +16,12 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Exception raised if an operation using a snapshot session is
|
|
22
20
|
# directed to a pre-5.0 server.
|
|
23
21
|
class SnapshotSessionInvalidServerVersion < Error
|
|
24
|
-
|
|
25
22
|
# Instantiate the new exception.
|
|
26
23
|
def initialize
|
|
27
|
-
super(
|
|
24
|
+
super('Snapshot reads require MongoDB 5.0 or later')
|
|
28
25
|
end
|
|
29
26
|
end
|
|
30
27
|
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,13 +16,11 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Exception raised if a transaction is attempted on a snapshot session.
|
|
22
20
|
class SnapshotSessionTransactionProhibited < Error
|
|
23
|
-
|
|
24
21
|
# Instantiate the new exception.
|
|
25
22
|
def initialize
|
|
26
|
-
super(
|
|
23
|
+
super('Transactions are not supported in snapshot sessions')
|
|
27
24
|
end
|
|
28
25
|
end
|
|
29
26
|
end
|
|
@@ -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
|
#
|
|
@@ -19,7 +18,6 @@ require 'mongo/error/timeout_error'
|
|
|
19
18
|
|
|
20
19
|
module Mongo
|
|
21
20
|
class Error
|
|
22
|
-
|
|
23
21
|
# Raised when a socket connection times out.
|
|
24
22
|
#
|
|
25
23
|
# @since 2.0.0
|
|
@@ -16,13 +16,10 @@
|
|
|
16
16
|
|
|
17
17
|
module Mongo
|
|
18
18
|
class Error
|
|
19
|
-
# Transactions are not supported by the cluster.
|
|
20
|
-
#
|
|
21
|
-
# - topology is standalone
|
|
22
|
-
# - topology is replica set and server version is < 4.0
|
|
23
|
-
# - topology is sharded and server version is < 4.2
|
|
19
|
+
# Transactions are not supported by the cluster, e.g. if the topology is
|
|
20
|
+
# standalone.
|
|
24
21
|
#
|
|
25
|
-
# @param [ String ] reason The reason why transactions are
|
|
22
|
+
# @param [ String ] reason The reason why transactions are not supported.
|
|
26
23
|
#
|
|
27
24
|
# @since 2.7.0
|
|
28
25
|
class TransactionsNotSupported < 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,13 +16,11 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Raised if a new collection is created from an existing one and options other than the
|
|
22
20
|
# changeable ones are provided.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.1.0
|
|
25
23
|
class UnchangeableCollectionOption < Error
|
|
26
|
-
|
|
27
24
|
# Create the new exception.
|
|
28
25
|
#
|
|
29
26
|
# @example Create the new exception.
|
|
@@ -34,7 +31,7 @@ module Mongo
|
|
|
34
31
|
# @since 2.1.0
|
|
35
32
|
def initialize(option)
|
|
36
33
|
super("The option #{option} cannot be set on a new collection instance." +
|
|
37
|
-
|
|
34
|
+
" The options that can be updated are #{Collection::CHANGEABLE_OPTIONS}")
|
|
38
35
|
end
|
|
39
36
|
end
|
|
40
37
|
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,13 +16,11 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Raised if the next chunk when reading from a GridFSBucket does not have the
|
|
22
20
|
# expected length.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.1.0
|
|
25
23
|
class UnexpectedChunkLength < Error
|
|
26
|
-
|
|
27
24
|
# Create the new exception.
|
|
28
25
|
#
|
|
29
26
|
# @example Create the new exception.
|
|
@@ -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 response read from the socket does not match the latest query.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.2.6
|
|
24
22
|
class UnexpectedResponse < Error
|
|
25
|
-
|
|
26
23
|
# Create the new exception.
|
|
27
24
|
#
|
|
28
25
|
# @example Create the new exception.
|
|
@@ -34,7 +31,7 @@ module Mongo
|
|
|
34
31
|
# @since 2.2.6
|
|
35
32
|
def initialize(expected_response_to, response_to)
|
|
36
33
|
super("Unexpected response. Got response for request ID #{response_to} " +
|
|
37
|
-
|
|
34
|
+
"but expected response for request ID #{expected_response_to}")
|
|
38
35
|
end
|
|
39
36
|
end
|
|
40
37
|
end
|