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
|
@@ -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,16 +17,14 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Collection
|
|
20
19
|
class View
|
|
21
|
-
|
|
22
20
|
# Defines write related behavior for collection view.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.0.0
|
|
25
23
|
module Writable
|
|
26
|
-
|
|
27
24
|
# The array filters field constant.
|
|
28
25
|
#
|
|
29
26
|
# @since 2.5.0
|
|
30
|
-
ARRAY_FILTERS = 'array_filters'
|
|
27
|
+
ARRAY_FILTERS = 'array_filters'
|
|
31
28
|
|
|
32
29
|
# Finds a single document in the database via findAndModify and deletes
|
|
33
30
|
# it, returning the original document.
|
|
@@ -64,10 +61,10 @@ module Mongo
|
|
|
64
61
|
def find_one_and_delete(opts = {})
|
|
65
62
|
with_session(opts) do |session|
|
|
66
63
|
write_concern = if opts[:write_concern]
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
WriteConcern.get(opts[:write_concern])
|
|
65
|
+
else
|
|
66
|
+
write_concern_with_session(session)
|
|
67
|
+
end
|
|
71
68
|
|
|
72
69
|
QueryCache.clear_namespace(collection.namespace)
|
|
73
70
|
|
|
@@ -101,7 +98,7 @@ module Mongo
|
|
|
101
98
|
db_name: database.name,
|
|
102
99
|
write_concern: write_concern,
|
|
103
100
|
session: session,
|
|
104
|
-
txn_num: txn_num
|
|
101
|
+
txn_num: txn_num
|
|
105
102
|
).execute_with_connection(connection, context: context)
|
|
106
103
|
end
|
|
107
104
|
end.first&.fetch('value', nil)
|
|
@@ -182,10 +179,10 @@ module Mongo
|
|
|
182
179
|
def find_one_and_update(document, opts = {})
|
|
183
180
|
value = with_session(opts) do |session|
|
|
184
181
|
write_concern = if opts[:write_concern]
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
182
|
+
WriteConcern.get(opts[:write_concern])
|
|
183
|
+
else
|
|
184
|
+
write_concern_with_session(session)
|
|
185
|
+
end
|
|
189
186
|
|
|
190
187
|
QueryCache.clear_namespace(collection.namespace)
|
|
191
188
|
|
|
@@ -211,22 +208,25 @@ module Mongo
|
|
|
211
208
|
session: session,
|
|
212
209
|
operation_timeouts: operation_timeouts(opts)
|
|
213
210
|
)
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
211
|
+
operation = Operation::WriteCommand.new(
|
|
212
|
+
selector: cmd,
|
|
213
|
+
db_name: database.name,
|
|
214
|
+
write_concern: write_concern,
|
|
215
|
+
session: session
|
|
216
|
+
)
|
|
217
|
+
value = tracer.trace_operation(operation, context, op_name: 'findOneAndUpdate') do
|
|
218
|
+
write_with_retry(write_concern, context: context) do |connection, txn_num, context|
|
|
219
|
+
gte_4_4 = connection.server.description.server_version_gte?('4.4')
|
|
220
|
+
if !gte_4_4 && opts[:hint] && write_concern && !write_concern.acknowledged?
|
|
221
|
+
raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
|
|
222
|
+
end
|
|
219
223
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
).execute_with_connection(connection, context: context)
|
|
227
|
-
end
|
|
228
|
-
end.first&.fetch('value', nil)
|
|
229
|
-
value unless value.nil? || value.empty?
|
|
224
|
+
operation.txn_num = txn_num
|
|
225
|
+
operation.execute_with_connection(connection, context: context)
|
|
226
|
+
end
|
|
227
|
+
end.first&.fetch('value', nil)
|
|
228
|
+
value unless value.nil? || value.empty?
|
|
229
|
+
end
|
|
230
230
|
end
|
|
231
231
|
|
|
232
232
|
# Remove documents from the collection.
|
|
@@ -257,10 +257,10 @@ module Mongo
|
|
|
257
257
|
def delete_many(opts = {})
|
|
258
258
|
with_session(opts) do |session|
|
|
259
259
|
write_concern = if opts[:write_concern]
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
260
|
+
WriteConcern.get(opts[:write_concern])
|
|
261
|
+
else
|
|
262
|
+
write_concern_with_session(session)
|
|
263
|
+
end
|
|
264
264
|
|
|
265
265
|
QueryCache.clear_namespace(collection.namespace)
|
|
266
266
|
|
|
@@ -275,22 +275,25 @@ module Mongo
|
|
|
275
275
|
session: session,
|
|
276
276
|
operation_timeouts: operation_timeouts(opts)
|
|
277
277
|
)
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
278
|
+
operation = Operation::Delete.new(
|
|
279
|
+
deletes: [ delete_doc ],
|
|
280
|
+
db_name: collection.database.name,
|
|
281
|
+
coll_name: collection.name,
|
|
282
|
+
write_concern: write_concern,
|
|
283
|
+
bypass_document_validation: !!opts[:bypass_document_validation],
|
|
284
|
+
session: session,
|
|
285
|
+
let: opts[:let],
|
|
286
|
+
comment: opts[:comment]
|
|
287
|
+
)
|
|
288
|
+
tracer.trace_operation(operation, context, op_name: 'deleteMany') do
|
|
289
|
+
nro_write_with_retry(write_concern, context: context) do |connection, _txn_num, context|
|
|
290
|
+
gte_4_4 = connection.server.description.server_version_gte?('4.4')
|
|
291
|
+
if !gte_4_4 && opts[:hint] && write_concern && !write_concern.acknowledged?
|
|
292
|
+
raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
|
|
293
|
+
end
|
|
283
294
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
db_name: collection.database.name,
|
|
287
|
-
coll_name: collection.name,
|
|
288
|
-
write_concern: write_concern,
|
|
289
|
-
bypass_document_validation: !!opts[:bypass_document_validation],
|
|
290
|
-
session: session,
|
|
291
|
-
let: opts[:let],
|
|
292
|
-
comment: opts[:comment],
|
|
293
|
-
).execute_with_connection(connection, context: context)
|
|
295
|
+
operation.execute_with_connection(connection, context: context)
|
|
296
|
+
end
|
|
294
297
|
end
|
|
295
298
|
end
|
|
296
299
|
end
|
|
@@ -323,10 +326,10 @@ module Mongo
|
|
|
323
326
|
def delete_one(opts = {})
|
|
324
327
|
with_session(opts) do |session|
|
|
325
328
|
write_concern = if opts[:write_concern]
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
329
|
+
WriteConcern.get(opts[:write_concern])
|
|
330
|
+
else
|
|
331
|
+
write_concern_with_session(session)
|
|
332
|
+
end
|
|
330
333
|
|
|
331
334
|
QueryCache.clear_namespace(collection.namespace)
|
|
332
335
|
|
|
@@ -357,7 +360,7 @@ module Mongo
|
|
|
357
360
|
session: session,
|
|
358
361
|
txn_num: txn_num,
|
|
359
362
|
let: opts[:let],
|
|
360
|
-
comment: opts[:comment]
|
|
363
|
+
comment: opts[:comment]
|
|
361
364
|
).execute_with_connection(connection, context: context)
|
|
362
365
|
end
|
|
363
366
|
end
|
|
@@ -401,10 +404,10 @@ module Mongo
|
|
|
401
404
|
def replace_one(replacement, opts = {})
|
|
402
405
|
with_session(opts) do |session|
|
|
403
406
|
write_concern = if opts[:write_concern]
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
407
|
+
WriteConcern.get(opts[:write_concern])
|
|
408
|
+
else
|
|
409
|
+
write_concern_with_session(session)
|
|
410
|
+
end
|
|
408
411
|
validate_replacement_documents!(replacement)
|
|
409
412
|
|
|
410
413
|
QueryCache.clear_namespace(collection.namespace)
|
|
@@ -417,9 +420,7 @@ module Mongo
|
|
|
417
420
|
collation: opts[:collation] || opts['collation'] || collation,
|
|
418
421
|
sort: opts[:sort] || opts['sort'],
|
|
419
422
|
}.compact
|
|
420
|
-
if opts[:upsert]
|
|
421
|
-
update_doc['upsert'] = true
|
|
422
|
-
end
|
|
423
|
+
update_doc['upsert'] = true if opts[:upsert]
|
|
423
424
|
|
|
424
425
|
context = Operation::Context.new(
|
|
425
426
|
client: client,
|
|
@@ -441,7 +442,7 @@ module Mongo
|
|
|
441
442
|
session: session,
|
|
442
443
|
txn_num: txn_num,
|
|
443
444
|
let: opts[:let],
|
|
444
|
-
comment: opts[:comment]
|
|
445
|
+
comment: opts[:comment]
|
|
445
446
|
).execute_with_connection(connection, context: context)
|
|
446
447
|
end
|
|
447
448
|
end
|
|
@@ -482,10 +483,10 @@ module Mongo
|
|
|
482
483
|
def update_many(spec, opts = {})
|
|
483
484
|
with_session(opts) do |session|
|
|
484
485
|
write_concern = if opts[:write_concern]
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
486
|
+
WriteConcern.get(opts[:write_concern])
|
|
487
|
+
else
|
|
488
|
+
write_concern_with_session(session)
|
|
489
|
+
end
|
|
489
490
|
validate_update_documents!(spec)
|
|
490
491
|
|
|
491
492
|
QueryCache.clear_namespace(collection.namespace)
|
|
@@ -498,16 +499,14 @@ module Mongo
|
|
|
498
499
|
hint: opts[:hint],
|
|
499
500
|
collation: opts[:collation] || opts['collation'] || collation,
|
|
500
501
|
}.compact
|
|
501
|
-
if opts[:upsert]
|
|
502
|
-
update_doc['upsert'] = true
|
|
503
|
-
end
|
|
502
|
+
update_doc['upsert'] = true if opts[:upsert]
|
|
504
503
|
|
|
505
504
|
context = Operation::Context.new(
|
|
506
505
|
client: client,
|
|
507
506
|
session: session,
|
|
508
507
|
operation_timeouts: operation_timeouts(opts)
|
|
509
508
|
)
|
|
510
|
-
nro_write_with_retry(write_concern, context: context) do |connection,
|
|
509
|
+
nro_write_with_retry(write_concern, context: context) do |connection, _txn_num, context|
|
|
511
510
|
gte_4_2 = connection.server.description.server_version_gte?('4.2')
|
|
512
511
|
if !gte_4_2 && opts[:hint] && write_concern && !write_concern.acknowledged?
|
|
513
512
|
raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
|
|
@@ -521,7 +520,7 @@ module Mongo
|
|
|
521
520
|
bypass_document_validation: !!opts[:bypass_document_validation],
|
|
522
521
|
session: session,
|
|
523
522
|
let: opts[:let],
|
|
524
|
-
comment: opts[:comment]
|
|
523
|
+
comment: opts[:comment]
|
|
525
524
|
).execute_with_connection(connection, context: context)
|
|
526
525
|
end
|
|
527
526
|
end
|
|
@@ -567,10 +566,10 @@ module Mongo
|
|
|
567
566
|
def update_one(spec, opts = {})
|
|
568
567
|
with_session(opts) do |session|
|
|
569
568
|
write_concern = if opts[:write_concern]
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
569
|
+
WriteConcern.get(opts[:write_concern])
|
|
570
|
+
else
|
|
571
|
+
write_concern_with_session(session)
|
|
572
|
+
end
|
|
574
573
|
validate_update_documents!(spec)
|
|
575
574
|
|
|
576
575
|
QueryCache.clear_namespace(collection.namespace)
|
|
@@ -583,32 +582,33 @@ module Mongo
|
|
|
583
582
|
collation: opts[:collation] || opts['collation'] || collation,
|
|
584
583
|
sort: opts[:sort] || opts['sort'],
|
|
585
584
|
}.compact
|
|
586
|
-
if opts[:upsert]
|
|
587
|
-
update_doc['upsert'] = true
|
|
588
|
-
end
|
|
585
|
+
update_doc['upsert'] = true if opts[:upsert]
|
|
589
586
|
|
|
590
587
|
context = Operation::Context.new(
|
|
591
588
|
client: client,
|
|
592
589
|
session: session,
|
|
593
590
|
operation_timeouts: operation_timeouts(opts)
|
|
594
591
|
)
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
592
|
+
operation = Operation::Update.new(
|
|
593
|
+
updates: [ update_doc ],
|
|
594
|
+
db_name: collection.database.name,
|
|
595
|
+
coll_name: collection.name,
|
|
596
|
+
write_concern: write_concern,
|
|
597
|
+
bypass_document_validation: !!opts[:bypass_document_validation],
|
|
598
|
+
session: session,
|
|
599
|
+
let: opts[:let],
|
|
600
|
+
comment: opts[:comment]
|
|
601
|
+
)
|
|
602
|
+
tracer.trace_operation(operation, context) do
|
|
603
|
+
write_with_retry(write_concern, context: context) do |connection, txn_num, context|
|
|
604
|
+
gte_4_2 = connection.server.description.server_version_gte?('4.2')
|
|
605
|
+
if !gte_4_2 && opts[:hint] && write_concern && !write_concern.acknowledged?
|
|
606
|
+
raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
|
|
607
|
+
end
|
|
600
608
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
coll_name: collection.name,
|
|
605
|
-
write_concern: write_concern,
|
|
606
|
-
bypass_document_validation: !!opts[:bypass_document_validation],
|
|
607
|
-
session: session,
|
|
608
|
-
txn_num: txn_num,
|
|
609
|
-
let: opts[:let],
|
|
610
|
-
comment: opts[:comment],
|
|
611
|
-
).execute_with_connection(connection, context: context)
|
|
609
|
+
operation.txn_num = txn_num
|
|
610
|
+
operation.execute_with_connection(connection, context: context)
|
|
611
|
+
end
|
|
612
612
|
end
|
|
613
613
|
end
|
|
614
614
|
end
|
|
@@ -624,17 +624,12 @@ module Mongo
|
|
|
624
624
|
# @raise [ Error::InvalidUpdateDocument ] if the first key in the
|
|
625
625
|
# document does not start with a $.
|
|
626
626
|
def validate_update_documents!(spec)
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
Error::InvalidUpdateDocument.warn(Logger.logger, key)
|
|
634
|
-
end
|
|
635
|
-
end
|
|
636
|
-
end
|
|
637
|
-
end
|
|
627
|
+
return unless update = spec.is_a?(Array) ? spec&.first : spec
|
|
628
|
+
return unless key = update.keys&.first
|
|
629
|
+
return if key.to_s.start_with?('$')
|
|
630
|
+
raise Error::InvalidUpdateDocument.new(key: key) if Mongo.validate_update_replace
|
|
631
|
+
|
|
632
|
+
Error::InvalidUpdateDocument.warn(Logger.logger, key)
|
|
638
633
|
end
|
|
639
634
|
|
|
640
635
|
# Check the replacement documents to make sure they don't have atomic
|
|
@@ -646,17 +641,12 @@ module Mongo
|
|
|
646
641
|
# @raise [ Error::InvalidUpdateDocument ] if the first key in the
|
|
647
642
|
# document does not start with a $.
|
|
648
643
|
def validate_replacement_documents!(spec)
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
Error::InvalidReplacementDocument.warn(Logger.logger, key)
|
|
656
|
-
end
|
|
657
|
-
end
|
|
658
|
-
end
|
|
659
|
-
end
|
|
644
|
+
return unless replace = spec.is_a?(Array) ? spec&.first : spec
|
|
645
|
+
return unless key = replace.keys&.first
|
|
646
|
+
return unless key.to_s.start_with?('$')
|
|
647
|
+
raise Error::InvalidReplacementDocument.new(key: key) if Mongo.validate_update_replace
|
|
648
|
+
|
|
649
|
+
Error::InvalidReplacementDocument.warn(Logger.logger, key)
|
|
660
650
|
end
|
|
661
651
|
end
|
|
662
652
|
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
|
#
|
|
@@ -27,7 +26,6 @@ require 'mongo/collection/view/writable'
|
|
|
27
26
|
|
|
28
27
|
module Mongo
|
|
29
28
|
class Collection
|
|
30
|
-
|
|
31
29
|
# Representation of a query and options producing a result set of documents.
|
|
32
30
|
#
|
|
33
31
|
# A +View+ can be modified using helpers. Helpers can be chained,
|
|
@@ -72,7 +70,9 @@ module Mongo
|
|
|
72
70
|
# Delegate to the cluster for the next primary.
|
|
73
71
|
def_delegators :cluster, :next_primary
|
|
74
72
|
|
|
75
|
-
|
|
73
|
+
def_delegators :client, :tracer
|
|
74
|
+
|
|
75
|
+
alias selector filter
|
|
76
76
|
|
|
77
77
|
# @return [ Integer | nil | The timeout_ms value that was passed as an
|
|
78
78
|
# option to the view.
|
|
@@ -91,11 +91,12 @@ module Mongo
|
|
|
91
91
|
# @since 2.0.0
|
|
92
92
|
def ==(other)
|
|
93
93
|
return false unless other.is_a?(View)
|
|
94
|
+
|
|
94
95
|
collection == other.collection &&
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
filter == other.filter &&
|
|
97
|
+
options == other.options
|
|
97
98
|
end
|
|
98
|
-
|
|
99
|
+
alias eql? ==
|
|
99
100
|
|
|
100
101
|
# A hash value for the +View+ composed of the collection namespace,
|
|
101
102
|
# hash of the options and hash of the filter.
|
|
@@ -206,7 +207,7 @@ module Mongo
|
|
|
206
207
|
# @since 2.0.0
|
|
207
208
|
def inspect
|
|
208
209
|
"#<Mongo::Collection::View:0x#{object_id} namespace='#{collection.namespace}'" +
|
|
209
|
-
|
|
210
|
+
" @filter=#{filter} @options=#{options}>"
|
|
210
211
|
end
|
|
211
212
|
|
|
212
213
|
# Get the write concern on this +View+.
|
|
@@ -248,7 +249,9 @@ module Mongo
|
|
|
248
249
|
View.new(collection, filter, options)
|
|
249
250
|
end
|
|
250
251
|
|
|
251
|
-
def view
|
|
252
|
+
def view
|
|
253
|
+
self
|
|
254
|
+
end
|
|
252
255
|
|
|
253
256
|
def with_session(opts = {}, &block)
|
|
254
257
|
client.with_session(@options.merge(opts), &block)
|