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) 2015-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -19,12 +18,10 @@ module Mongo
|
|
|
19
18
|
module Operation
|
|
20
19
|
class Find
|
|
21
20
|
module Builder
|
|
22
|
-
|
|
23
21
|
# Builds a find command specification from options.
|
|
24
22
|
#
|
|
25
23
|
# @api private
|
|
26
24
|
module Command
|
|
27
|
-
|
|
28
25
|
# The mappings from ruby options to the find command.
|
|
29
26
|
OPTION_MAPPINGS = BSON::Document.new(
|
|
30
27
|
allow_disk_use: 'allowDiskUse',
|
|
@@ -52,14 +49,10 @@ module Mongo
|
|
|
52
49
|
snapshot: 'snapshot',
|
|
53
50
|
sort: 'sort',
|
|
54
51
|
tailable: 'tailable',
|
|
55
|
-
tailable_cursor: 'tailable'
|
|
52
|
+
tailable_cursor: 'tailable'
|
|
56
53
|
).freeze
|
|
57
54
|
|
|
58
|
-
module_function def selector(spec,
|
|
59
|
-
if spec[:collation] && !connection.features.collation_enabled?
|
|
60
|
-
raise Error::UnsupportedCollation
|
|
61
|
-
end
|
|
62
|
-
|
|
55
|
+
module_function def selector(spec, _connection)
|
|
63
56
|
BSON::Document.new.tap do |selector|
|
|
64
57
|
OPTION_MAPPINGS.each do |k, server_k|
|
|
65
58
|
unless (value = spec[k]).nil?
|
|
@@ -86,13 +79,12 @@ module Mongo
|
|
|
86
79
|
# The +command+ parameter is mutated by this method.
|
|
87
80
|
module_function def convert_limit_and_batch_size!(command)
|
|
88
81
|
if command[:limit] && command[:limit] < 0 &&
|
|
89
|
-
|
|
90
|
-
then
|
|
82
|
+
command[:batchSize] && command[:batchSize] < 0
|
|
91
83
|
command[:limit] = command[:limit].abs
|
|
92
84
|
command[:batchSize] = command[:limit].abs
|
|
93
85
|
command[:singleBatch] = true
|
|
94
86
|
else
|
|
95
|
-
[
|
|
87
|
+
%i[limit batchSize].each do |opt|
|
|
96
88
|
if command[opt]
|
|
97
89
|
if command[opt] < 0
|
|
98
90
|
command[opt] = command[opt].abs
|
|
@@ -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,22 +18,20 @@ module Mongo
|
|
|
19
18
|
module Operation
|
|
20
19
|
class Find
|
|
21
20
|
module Builder
|
|
22
|
-
|
|
23
21
|
# Provides behavior for converting Ruby options to wire protocol flags
|
|
24
22
|
# when sending find and related commands (e.g. explain).
|
|
25
23
|
#
|
|
26
24
|
# @api private
|
|
27
25
|
module Flags
|
|
28
|
-
|
|
29
26
|
# Options to cursor flags mapping.
|
|
30
27
|
MAPPINGS = {
|
|
31
|
-
:
|
|
32
|
-
:
|
|
33
|
-
:
|
|
34
|
-
:
|
|
35
|
-
:
|
|
36
|
-
:
|
|
37
|
-
:
|
|
28
|
+
allow_partial_results: [ :partial ],
|
|
29
|
+
oplog_replay: [ :oplog_replay ],
|
|
30
|
+
no_cursor_timeout: [ :no_cursor_timeout ],
|
|
31
|
+
tailable: [ :tailable_cursor ],
|
|
32
|
+
tailable_await: %i[await_data tailable_cursor],
|
|
33
|
+
await_data: [ :await_data ],
|
|
34
|
+
exhaust: [ :exhaust ],
|
|
38
35
|
}.freeze
|
|
39
36
|
|
|
40
37
|
# Converts Ruby find options to an array of flags.
|
|
@@ -46,12 +43,9 @@ module Mongo
|
|
|
46
43
|
#
|
|
47
44
|
# @return [ Array<Symbol> ] The flags.
|
|
48
45
|
module_function def map_flags(options)
|
|
49
|
-
MAPPINGS.each.
|
|
46
|
+
MAPPINGS.each.each_with_object(options[:flags] || []) do |(key, value), flags|
|
|
50
47
|
cursor_type = options[:cursor_type]
|
|
51
|
-
if options[key] || (cursor_type && cursor_type == key)
|
|
52
|
-
flags.push(*value)
|
|
53
|
-
end
|
|
54
|
-
flags
|
|
48
|
+
flags.push(*value) if options[key] || (cursor_type && cursor_type == key)
|
|
55
49
|
end
|
|
56
50
|
end
|
|
57
51
|
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 @@ module Mongo
|
|
|
19
18
|
module Operation
|
|
20
19
|
class Find
|
|
21
20
|
module Builder
|
|
22
|
-
|
|
23
21
|
# Provides behavior for mapping Ruby options to legacy OP_QUERY
|
|
24
22
|
# find modifiers.
|
|
25
23
|
#
|
|
@@ -34,7 +32,6 @@ module Mongo
|
|
|
34
32
|
#
|
|
35
33
|
# @api private
|
|
36
34
|
module Modifiers
|
|
37
|
-
|
|
38
35
|
# Mappings from Ruby options to OP_QUERY modifiers.
|
|
39
36
|
DRIVER_MAPPINGS = BSON::Document.new(
|
|
40
37
|
comment: '$comment',
|
|
@@ -47,7 +44,7 @@ module Mongo
|
|
|
47
44
|
return_key: '$returnKey',
|
|
48
45
|
show_disk_loc: '$showDiskLoc',
|
|
49
46
|
snapshot: '$snapshot',
|
|
50
|
-
sort: '$orderby'
|
|
47
|
+
sort: '$orderby'
|
|
51
48
|
).freeze
|
|
52
49
|
|
|
53
50
|
# Mappings from OP_QUERY modifiers to Ruby options.
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2018-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class Find
|
|
21
|
-
|
|
22
20
|
# A MongoDB find operation sent as an op message.
|
|
23
21
|
#
|
|
24
22
|
# @api private
|
|
@@ -49,26 +47,20 @@ module Mongo
|
|
|
49
47
|
when nil # non-tailable
|
|
50
48
|
if view.timeout_mode == :cursor_lifetime
|
|
51
49
|
spec[:maxTimeMS] = timeout_ms || view.options[:max_time_ms]
|
|
52
|
-
|
|
50
|
+
elsif !timeout_ms && view.options[:max_time_ms] # timeout_mode == :iterable
|
|
53
51
|
# drivers MUST honor the timeoutMS option for the initial command
|
|
54
52
|
# but MUST NOT append a maxTimeMS field to the command sent to the
|
|
55
53
|
# server
|
|
56
|
-
|
|
57
|
-
spec[:maxTimeMS] = view.options[:max_time_ms]
|
|
58
|
-
end
|
|
54
|
+
spec[:maxTimeMS] = view.options[:max_time_ms]
|
|
59
55
|
end
|
|
60
56
|
|
|
61
57
|
when :tailable
|
|
62
58
|
# If timeoutMS is set, drivers...MUST NOT append a maxTimeMS field to any commands.
|
|
63
|
-
if !timeout_ms && view.options[:max_time_ms]
|
|
64
|
-
spec[:maxTimeMS] = view.options[:max_time_ms]
|
|
65
|
-
end
|
|
59
|
+
spec[:maxTimeMS] = view.options[:max_time_ms] if !timeout_ms && view.options[:max_time_ms]
|
|
66
60
|
|
|
67
61
|
when :tailable_await
|
|
68
62
|
# The server supports the maxTimeMS option for the original command.
|
|
69
|
-
if timeout_ms || view.options[:max_time_ms]
|
|
70
|
-
spec[:maxTimeMS] = timeout_ms || view.options[:max_time_ms]
|
|
71
|
-
end
|
|
63
|
+
spec[:maxTimeMS] = timeout_ms || view.options[:max_time_ms] if timeout_ms || view.options[:max_time_ms]
|
|
72
64
|
end
|
|
73
65
|
|
|
74
66
|
spec.tap do |spc|
|
|
@@ -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
|
#
|
|
@@ -18,13 +17,11 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class Find
|
|
21
|
-
|
|
22
20
|
# Defines custom behavior of results in find command.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.2.0
|
|
25
23
|
# @api semiprivate
|
|
26
24
|
class Result < Operation::Result
|
|
27
|
-
|
|
28
25
|
# Get the cursor id.
|
|
29
26
|
#
|
|
30
27
|
# @example Get the cursor id.
|
data/lib/mongo/operation/find.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2021 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,10 +17,8 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class GetMore
|
|
21
|
-
|
|
22
20
|
# @api private
|
|
23
21
|
module CommandBuilder
|
|
24
|
-
|
|
25
22
|
private
|
|
26
23
|
|
|
27
24
|
def selector(connection)
|
|
@@ -31,9 +28,7 @@ module Mongo
|
|
|
31
28
|
batchSize: spec[:batch_size],
|
|
32
29
|
maxTimeMS: spec[:max_time_ms],
|
|
33
30
|
}.compact.tap do |sel|
|
|
34
|
-
if spec[:comment] && connection.features.get_more_comment_enabled?
|
|
35
|
-
sel[:comment] = spec[:comment]
|
|
36
|
-
end
|
|
31
|
+
sel[:comment] = spec[:comment] if spec[:comment] && connection.features.get_more_comment_enabled?
|
|
37
32
|
end
|
|
38
33
|
end
|
|
39
34
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2018-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class GetMore
|
|
21
|
-
|
|
22
20
|
# A MongoDB getMore operation sent as an op message.
|
|
23
21
|
#
|
|
24
22
|
# @api private
|
|
@@ -54,9 +52,17 @@ module Mongo
|
|
|
54
52
|
# maxAwaitTimeMS option. Drivers MUST error if this option is set,
|
|
55
53
|
# timeoutMS is set to a non-zero value, and maxAwaitTimeMS is greater
|
|
56
54
|
# than or equal to timeoutMS. If this option is set, drivers MUST use
|
|
57
|
-
# it as the maxTimeMS field on getMore commands
|
|
55
|
+
# it as the maxTimeMS field on getMore commands, capped at remaining
|
|
56
|
+
# CSOT timeout if less than maxAwaitTimeMS.
|
|
58
57
|
max_await_time_ms = view.respond_to?(:max_await_time_ms) ? view.max_await_time_ms : nil
|
|
59
|
-
|
|
58
|
+
if max_await_time_ms
|
|
59
|
+
effective_ms = if timeout_ms && timeout_ms < max_await_time_ms
|
|
60
|
+
timeout_ms
|
|
61
|
+
else
|
|
62
|
+
max_await_time_ms
|
|
63
|
+
end
|
|
64
|
+
spec[:maxTimeMS] = effective_ms
|
|
65
|
+
end
|
|
60
66
|
end
|
|
61
67
|
|
|
62
68
|
spec
|
|
@@ -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
|
#
|
|
@@ -18,13 +17,11 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class GetMore
|
|
21
|
-
|
|
22
20
|
# Defines custom behavior of results for the get more command.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.2.0
|
|
25
23
|
# @api semiprivate
|
|
26
24
|
class Result < Operation::Result
|
|
27
|
-
|
|
28
25
|
# Get the cursor id.
|
|
29
26
|
#
|
|
30
27
|
# @example Get the cursor id.
|
|
@@ -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
|
#
|
|
@@ -21,7 +20,6 @@ require 'mongo/operation/get_more/result'
|
|
|
21
20
|
|
|
22
21
|
module Mongo
|
|
23
22
|
module Operation
|
|
24
|
-
|
|
25
23
|
# A MongoDB getMore operation.
|
|
26
24
|
#
|
|
27
25
|
# @api private
|
|
@@ -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,14 +17,12 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class Indexes
|
|
21
|
-
|
|
22
20
|
# Defines custom behavior of results when using the
|
|
23
21
|
# listIndexes command.
|
|
24
22
|
#
|
|
25
23
|
# @since 2.0.0
|
|
26
24
|
# @api semiprivate
|
|
27
25
|
class Result < Operation::Result
|
|
28
|
-
|
|
29
26
|
# Get the cursor id for the result.
|
|
30
27
|
#
|
|
31
28
|
# @example Get the cursor id.
|
|
@@ -86,7 +83,7 @@ module Mongo
|
|
|
86
83
|
# @since 2.0.0
|
|
87
84
|
# @api private
|
|
88
85
|
def validate!
|
|
89
|
-
|
|
86
|
+
successful? ? self : raise_operation_failure
|
|
90
87
|
end
|
|
91
88
|
|
|
92
89
|
private
|
|
@@ -102,4 +99,3 @@ module Mongo
|
|
|
102
99
|
end
|
|
103
100
|
end
|
|
104
101
|
end
|
|
105
|
-
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2015-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -20,7 +19,6 @@ require 'mongo/operation/indexes/result'
|
|
|
20
19
|
|
|
21
20
|
module Mongo
|
|
22
21
|
module Operation
|
|
23
|
-
|
|
24
22
|
# A MongoDB indexes operation.
|
|
25
23
|
#
|
|
26
24
|
# @api private
|
|
@@ -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
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class Insert
|
|
21
|
-
|
|
22
20
|
# Defines custom behavior of results for an insert when sent as part of a bulk write.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.0.0
|
|
@@ -49,7 +47,7 @@ module Mongo
|
|
|
49
47
|
# @since 2.0.0
|
|
50
48
|
# @api private
|
|
51
49
|
def initialize(replies, connection_description, connection_global_id, ids)
|
|
52
|
-
@replies = [*replies] if replies
|
|
50
|
+
@replies = [ *replies ] if replies
|
|
53
51
|
@connection_description = connection_description
|
|
54
52
|
@connection_global_id = connection_global_id
|
|
55
53
|
if replies && replies.first && (doc = replies.first.documents.first)
|
|
@@ -61,9 +59,7 @@ module Mongo
|
|
|
61
59
|
end
|
|
62
60
|
@inserted_ids = []
|
|
63
61
|
ids.each_with_index do |id, index|
|
|
64
|
-
if bad_indices[index].nil?
|
|
65
|
-
@inserted_ids << id
|
|
66
|
-
end
|
|
62
|
+
@inserted_ids << id if bad_indices[index].nil?
|
|
67
63
|
end
|
|
68
64
|
# I don't know if acknowledged? check here is necessary,
|
|
69
65
|
# as best as I can tell it doesn't hurt
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2018-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class Insert
|
|
21
|
-
|
|
22
20
|
# A MongoDB insert operation sent as an op message.
|
|
23
21
|
#
|
|
24
22
|
# @api private
|
|
@@ -33,12 +31,15 @@ module Mongo
|
|
|
33
31
|
|
|
34
32
|
private
|
|
35
33
|
|
|
36
|
-
def get_result(connection, context,
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
def get_result(connection, context, _options = {})
|
|
35
|
+
message = build_message(connection, context)
|
|
36
|
+
connection.tracer.trace_command(message, context, connection) do
|
|
37
|
+
result = Result.new(*dispatch_message(message, connection, context), @ids, context: context)
|
|
38
|
+
yield result
|
|
39
|
+
end
|
|
39
40
|
end
|
|
40
41
|
|
|
41
|
-
def selector(
|
|
42
|
+
def selector(_connection)
|
|
42
43
|
{
|
|
43
44
|
insert: coll_name,
|
|
44
45
|
Protocol::Msg::DATABASE_IDENTIFIER => db_name,
|
|
@@ -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
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class Insert
|
|
21
|
-
|
|
22
20
|
# Defines custom behavior of results for an insert.
|
|
23
21
|
#
|
|
24
22
|
# According to the CRUD spec, reporting the inserted ids
|
|
@@ -27,7 +25,6 @@ module Mongo
|
|
|
27
25
|
# @since 2.0.0
|
|
28
26
|
# @api semiprivate
|
|
29
27
|
class Result < Operation::Result
|
|
30
|
-
|
|
31
28
|
# Get the ids of the inserted documents.
|
|
32
29
|
#
|
|
33
30
|
# @since 2.0.0
|
|
@@ -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
|
#
|
|
@@ -21,7 +20,6 @@ require 'mongo/operation/insert/bulk_result'
|
|
|
21
20
|
|
|
22
21
|
module Mongo
|
|
23
22
|
module Operation
|
|
24
|
-
|
|
25
23
|
# A MongoDB insert operation.
|
|
26
24
|
#
|
|
27
25
|
# @api private
|
|
@@ -33,10 +31,9 @@ module Mongo
|
|
|
33
31
|
|
|
34
32
|
private
|
|
35
33
|
|
|
36
|
-
IDENTIFIER = 'documents'
|
|
34
|
+
IDENTIFIER = 'documents'
|
|
37
35
|
|
|
38
|
-
def validate!(connection)
|
|
39
|
-
end
|
|
36
|
+
def validate!(connection); end
|
|
40
37
|
end
|
|
41
38
|
end
|
|
42
39
|
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
|
#
|
|
@@ -18,10 +17,8 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class KillCursors
|
|
21
|
-
|
|
22
20
|
# @api private
|
|
23
21
|
module CommandBuilder
|
|
24
|
-
|
|
25
22
|
private
|
|
26
23
|
|
|
27
24
|
def int64_cursor_ids
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2018-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class KillCursors
|
|
21
|
-
|
|
22
20
|
# A MongoDB killcursors operation sent as an op message.
|
|
23
21
|
#
|
|
24
22
|
# @api private
|
|
@@ -30,7 +28,7 @@ module Mongo
|
|
|
30
28
|
|
|
31
29
|
private
|
|
32
30
|
|
|
33
|
-
def selector(
|
|
31
|
+
def selector(_connection)
|
|
34
32
|
{
|
|
35
33
|
killCursors: coll_name,
|
|
36
34
|
cursors: int64_cursor_ids,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2015-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -20,7 +19,6 @@ require 'mongo/operation/kill_cursors/op_msg'
|
|
|
20
19
|
|
|
21
20
|
module Mongo
|
|
22
21
|
module Operation
|
|
23
|
-
|
|
24
22
|
# A MongoDB killcursors operation.
|
|
25
23
|
#
|
|
26
24
|
# @api private
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2018-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class ListCollections
|
|
21
|
-
|
|
22
20
|
# A MongoDB listcollections operation sent as an op message.
|
|
23
21
|
#
|
|
24
22
|
# @api private
|
|
@@ -30,11 +28,11 @@ module Mongo
|
|
|
30
28
|
|
|
31
29
|
private
|
|
32
30
|
|
|
33
|
-
def selector(
|
|
31
|
+
def selector(_connection)
|
|
34
32
|
(spec[SELECTOR] || {}).merge({
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
listCollections: 1,
|
|
34
|
+
comment: spec[:comment]
|
|
35
|
+
}).compact
|
|
38
36
|
end
|
|
39
37
|
end
|
|
40
38
|
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
|
#
|
|
@@ -18,14 +17,12 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class ListCollections
|
|
21
|
-
|
|
22
20
|
# Defines custom behavior of results when using the
|
|
23
21
|
# listCollections command.
|
|
24
22
|
#
|
|
25
23
|
# @since 2.0.0
|
|
26
24
|
# @api semiprivate
|
|
27
25
|
class Result < Operation::Result
|
|
28
|
-
|
|
29
26
|
# Get the cursor id for the result.
|
|
30
27
|
#
|
|
31
28
|
# @example Get the cursor id.
|
|
@@ -93,7 +90,7 @@ module Mongo
|
|
|
93
90
|
labels: parser.labels,
|
|
94
91
|
wtimeout: parser.wtimeout,
|
|
95
92
|
document: parser.document,
|
|
96
|
-
server_message: parser.server_message
|
|
93
|
+
server_message: parser.server_message
|
|
97
94
|
)
|
|
98
95
|
end
|
|
99
96
|
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
|
#
|
|
@@ -20,7 +19,6 @@ require 'mongo/operation/list_collections/result'
|
|
|
20
19
|
|
|
21
20
|
module Mongo
|
|
22
21
|
module Operation
|
|
23
|
-
|
|
24
22
|
# A MongoDB listcollections operation.
|
|
25
23
|
#
|
|
26
24
|
# @api private
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2018-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class MapReduce
|
|
21
|
-
|
|
22
20
|
# A MongoDB map-reduce operation sent as an op message.
|
|
23
21
|
#
|
|
24
22
|
# @api private
|
|
@@ -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,30 +17,28 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Operation
|
|
20
19
|
class MapReduce
|
|
21
|
-
|
|
22
20
|
# Defines custom behavior of results for a map reduce operation.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.0.0
|
|
25
23
|
# @api semiprivate
|
|
26
24
|
class Result < Operation::Result
|
|
27
|
-
|
|
28
25
|
# The counts field for the map/reduce.
|
|
29
26
|
#
|
|
30
27
|
# @since 2.0.0
|
|
31
28
|
# @api private
|
|
32
|
-
COUNTS = 'counts'
|
|
29
|
+
COUNTS = 'counts'
|
|
33
30
|
|
|
34
31
|
# The field name for a result without a cursor.
|
|
35
32
|
#
|
|
36
33
|
# @since 2.0.0
|
|
37
34
|
# @api private
|
|
38
|
-
RESULTS = 'results'
|
|
35
|
+
RESULTS = 'results'
|
|
39
36
|
|
|
40
37
|
# The time the operation took constant.
|
|
41
38
|
#
|
|
42
39
|
# @since 2.0.0
|
|
43
40
|
# @api private
|
|
44
|
-
TIME = 'timeMillis'
|
|
41
|
+
TIME = 'timeMillis'
|
|
45
42
|
|
|
46
43
|
# Gets the map/reduce counts from the reply.
|
|
47
44
|
#
|