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) 2017-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,12 +16,10 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Raised if an unknown payload type is encountered when an OP_MSG is created or read.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.5.0
|
|
24
22
|
class UnknownPayloadType < Error
|
|
25
|
-
|
|
26
23
|
# The error message.
|
|
27
24
|
#
|
|
28
25
|
# @since 2.5.0
|
|
@@ -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
|
# Raised if an optional dependency of the driver is not met.
|
|
22
20
|
class UnmetDependency < Error; end
|
|
23
21
|
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,43 +16,23 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Raised if the array filters option is specified for an operation but the server
|
|
22
20
|
# selected does not support array filters.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.5.0
|
|
25
23
|
#
|
|
26
|
-
# @deprecated RUBY-2260 In driver version 3.0, this error class will be
|
|
24
|
+
# @deprecated RUBY-2260 In driver version 3.0, this error class will be
|
|
27
25
|
# replaced with UnsupportedOption. To handle this error, catch
|
|
28
26
|
# Mongo::Error::UnsupportedOption, which will prevent any breaking changes
|
|
29
27
|
# in your application when upgrading to version 3.0 of the driver.
|
|
30
28
|
class UnsupportedArrayFilters < UnsupportedOption
|
|
31
|
-
|
|
32
|
-
# The default error message describing that array filters are not supported.
|
|
33
|
-
#
|
|
34
|
-
# @return [ String ] A default message describing that array filters are not supported by the server.
|
|
35
|
-
#
|
|
36
|
-
# @since 2.5.0
|
|
37
|
-
DEFAULT_MESSAGE = "The array_filters option is not a supported feature of the server handling this operation. " +
|
|
38
|
-
"Operation results may be unexpected.".freeze
|
|
39
|
-
|
|
40
29
|
# The error message describing that array filters cannot be used when write concern is unacknowledged.
|
|
41
30
|
#
|
|
42
31
|
# @return [ String ] A message describing that array filters cannot be used when write concern is unacknowledged.
|
|
43
32
|
#
|
|
44
33
|
# @since 2.5.0
|
|
45
|
-
UNACKNOWLEDGED_WRITES_MESSAGE =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
# Create the new exception.
|
|
49
|
-
#
|
|
50
|
-
# @example Create the new exception.
|
|
51
|
-
# Mongo::Error::UnsupportedArrayFilters.new
|
|
52
|
-
#
|
|
53
|
-
# @since 2.5.0
|
|
54
|
-
def initialize(message = nil)
|
|
55
|
-
super(message || DEFAULT_MESSAGE)
|
|
56
|
-
end
|
|
34
|
+
UNACKNOWLEDGED_WRITES_MESSAGE = 'The array_filters option cannot be specified when using unacknowledged writes. ' +
|
|
35
|
+
'Either remove the array_filters option or use acknowledged writes (w >= 1).'
|
|
57
36
|
end
|
|
58
37
|
end
|
|
59
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
|
#
|
|
@@ -17,43 +16,23 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Raised if a collation is specified for an operation but the server selected does not
|
|
22
20
|
# support collations.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.4.0
|
|
25
23
|
#
|
|
26
|
-
# @deprecated RUBY-2260 In driver version 3.0, this error class will be
|
|
24
|
+
# @deprecated RUBY-2260 In driver version 3.0, this error class will be
|
|
27
25
|
# replaced with UnsupportedOption. To handle this error, catch
|
|
28
26
|
# Mongo::Error::UnsupportedOption, which will prevent any breaking changes
|
|
29
27
|
# in your application when upgrading to version 3.0 of the driver.
|
|
30
28
|
class UnsupportedCollation < UnsupportedOption
|
|
31
|
-
|
|
32
|
-
# The default error message describing that collations is not supported.
|
|
33
|
-
#
|
|
34
|
-
# @return [ String ] A default message describing that collations is not supported by the server.
|
|
35
|
-
#
|
|
36
|
-
# @since 2.4.0
|
|
37
|
-
DEFAULT_MESSAGE = "Collations is not a supported feature of the server handling this operation. " +
|
|
38
|
-
"Operation results may be unexpected."
|
|
39
|
-
|
|
40
29
|
# The error message describing that collations cannot be used when write concern is unacknowledged.
|
|
41
30
|
#
|
|
42
31
|
# @return [ String ] A message describing that collations cannot be used when write concern is unacknowledged.
|
|
43
32
|
#
|
|
44
33
|
# @since 2.4.0
|
|
45
|
-
UNACKNOWLEDGED_WRITES_MESSAGE =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
# Create the new exception.
|
|
49
|
-
#
|
|
50
|
-
# @example Create the new exception.
|
|
51
|
-
# Mongo::Error::UnsupportedCollation.new
|
|
52
|
-
#
|
|
53
|
-
# @since 2.4.0
|
|
54
|
-
def initialize(message = nil)
|
|
55
|
-
super(message || DEFAULT_MESSAGE)
|
|
56
|
-
end
|
|
34
|
+
UNACKNOWLEDGED_WRITES_MESSAGE = 'A collation cannot be specified when using unacknowledged writes. ' +
|
|
35
|
+
'Either remove the collation option or use acknowledged writes (w >= 1).'
|
|
57
36
|
end
|
|
58
37
|
end
|
|
59
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
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Error
|
|
20
|
-
|
|
21
19
|
# Raised when trying to get a message type from the registry that doesn't exist.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.5.0
|
|
@@ -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
|
# Raised if an unsupported option is specified for an operation.
|
|
22
20
|
class UnsupportedOption < Error
|
|
23
21
|
# The error message provided when the user passes the hint option to
|
|
@@ -25,38 +23,38 @@ module Mongo
|
|
|
25
23
|
# option and does not provide option validation.
|
|
26
24
|
#
|
|
27
25
|
# @api private
|
|
28
|
-
HINT_MESSAGE =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
HINT_MESSAGE = 'The MongoDB server handling this request does not support ' \
|
|
27
|
+
'the hint option on this command. The hint option is supported on update ' \
|
|
28
|
+
'commands on MongoDB server versions 4.2 and later and on findAndModify ' \
|
|
29
|
+
'and delete commands on MongoDB server versions 4.4 and later'
|
|
32
30
|
|
|
33
31
|
# The error message provided when the user passes the hint option to
|
|
34
32
|
# an unacknowledged write operation.
|
|
35
33
|
#
|
|
36
34
|
# @api private
|
|
37
|
-
UNACKNOWLEDGED_HINT_MESSAGE =
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
UNACKNOWLEDGED_HINT_MESSAGE = 'The hint option cannot be specified on ' \
|
|
36
|
+
'an unacknowledged write operation. Remove the hint option or perform ' \
|
|
37
|
+
'this operation with a write concern of at least { w: 1 }'
|
|
40
38
|
|
|
41
39
|
# The error message provided when the user passes the allow_disk_use
|
|
42
40
|
# option to a find operation against a server that does not support the
|
|
43
41
|
# allow_disk_use operation and does not provide option validation.
|
|
44
42
|
#
|
|
45
43
|
# @api private
|
|
46
|
-
ALLOW_DISK_USE_MESSAGE =
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
ALLOW_DISK_USE_MESSAGE = 'The MongoDB server handling this request does ' \
|
|
45
|
+
'not support the allow_disk_use option on this command. The ' \
|
|
46
|
+
'allow_disk_use option is supported on find commands on MongoDB ' \
|
|
47
|
+
'server versions 4.4 and later'
|
|
50
48
|
|
|
51
49
|
# The error message provided when the user passes the commit_quorum option
|
|
52
50
|
# to a createIndexes operation against a server that does not support
|
|
53
51
|
# that option.
|
|
54
52
|
#
|
|
55
53
|
# @api private
|
|
56
|
-
COMMIT_QUORUM_MESSAGE =
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
COMMIT_QUORUM_MESSAGE = 'The MongoDB server handling this request does ' \
|
|
55
|
+
'not support the commit_quorum option on this command. The commit_quorum ' \
|
|
56
|
+
'option is supported on createIndexes commands on MongoDB server versions ' \
|
|
57
|
+
'4.4 and later'
|
|
60
58
|
|
|
61
59
|
# Raise an error about an unsupported hint option.
|
|
62
60
|
#
|
|
@@ -72,10 +70,10 @@ module Mongo
|
|
|
72
70
|
unacknowledged_write = options[:unacknowledged_write] || false
|
|
73
71
|
|
|
74
72
|
error_message = if unacknowledged_write
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
UNACKNOWLEDGED_HINT_MESSAGE
|
|
74
|
+
else
|
|
75
|
+
HINT_MESSAGE
|
|
76
|
+
end
|
|
79
77
|
|
|
80
78
|
new(error_message)
|
|
81
79
|
end
|
data/lib/mongo/error.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -29,53 +28,41 @@ module Mongo
|
|
|
29
28
|
# The error code field.
|
|
30
29
|
#
|
|
31
30
|
# @since 2.0.0
|
|
32
|
-
CODE = 'code'
|
|
31
|
+
CODE = 'code'
|
|
33
32
|
|
|
34
|
-
#
|
|
33
|
+
# The standard error message field
|
|
35
34
|
#
|
|
36
35
|
# @since 2.0.0
|
|
37
36
|
# @deprecated
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
# An error field, MongoDB < 2.4
|
|
41
|
-
#
|
|
42
|
-
# @since 2.0.0
|
|
43
|
-
# @deprecated
|
|
44
|
-
ERROR = 'err'.freeze
|
|
45
|
-
|
|
46
|
-
# The standard error message field, MongoDB 3.0+
|
|
47
|
-
#
|
|
48
|
-
# @since 2.0.0
|
|
49
|
-
# @deprecated
|
|
50
|
-
ERRMSG = 'errmsg'.freeze
|
|
37
|
+
ERRMSG = 'errmsg'
|
|
51
38
|
|
|
52
39
|
# The constant for the writeErrors array.
|
|
53
40
|
#
|
|
54
41
|
# @since 2.0.0
|
|
55
42
|
# @deprecated
|
|
56
|
-
WRITE_ERRORS = 'writeErrors'
|
|
43
|
+
WRITE_ERRORS = 'writeErrors'
|
|
57
44
|
|
|
58
45
|
# The constant for a write concern error.
|
|
59
46
|
#
|
|
60
47
|
# @since 2.0.0
|
|
61
48
|
# @deprecated
|
|
62
|
-
WRITE_CONCERN_ERROR = 'writeConcernError'
|
|
49
|
+
WRITE_CONCERN_ERROR = 'writeConcernError'
|
|
63
50
|
|
|
64
51
|
# The constant for write concern errors.
|
|
65
52
|
#
|
|
66
53
|
# @since 2.1.0
|
|
67
54
|
# @deprecated
|
|
68
|
-
WRITE_CONCERN_ERRORS = 'writeConcernErrors'
|
|
55
|
+
WRITE_CONCERN_ERRORS = 'writeConcernErrors'
|
|
69
56
|
|
|
70
57
|
# Constant for an unknown error.
|
|
71
58
|
#
|
|
72
59
|
# @since 2.0.0
|
|
73
|
-
UNKNOWN_ERROR = 8
|
|
60
|
+
UNKNOWN_ERROR = 8
|
|
74
61
|
|
|
75
62
|
# Constant for a bad value error.
|
|
76
63
|
#
|
|
77
64
|
# @since 2.0.0
|
|
78
|
-
BAD_VALUE = 2
|
|
65
|
+
BAD_VALUE = 2
|
|
79
66
|
|
|
80
67
|
# Constant for a Cursor not found error.
|
|
81
68
|
#
|
|
@@ -100,14 +87,14 @@ module Mongo
|
|
|
100
87
|
#
|
|
101
88
|
# @since 2.6.0
|
|
102
89
|
# @deprecated
|
|
103
|
-
UNKNOWN_TRANSACTION_COMMIT_RESULT_LABEL = 'UnknownTransactionCommitResult'
|
|
90
|
+
UNKNOWN_TRANSACTION_COMMIT_RESULT_LABEL = 'UnknownTransactionCommitResult'
|
|
104
91
|
|
|
105
92
|
# Error label describing errors that will likely not occur if a transaction is manually retried
|
|
106
93
|
# from the start.
|
|
107
94
|
#
|
|
108
95
|
# @since 2.6.0
|
|
109
96
|
# @deprecated
|
|
110
|
-
TRANSIENT_TRANSACTION_ERROR_LABEL = 'TransientTransactionError'
|
|
97
|
+
TRANSIENT_TRANSACTION_ERROR_LABEL = 'TransientTransactionError'
|
|
111
98
|
|
|
112
99
|
def initialize(msg = nil)
|
|
113
100
|
super
|
|
@@ -215,7 +202,6 @@ require 'mongo/error/missing_resume_token'
|
|
|
215
202
|
require 'mongo/error/missing_scram_server_signature'
|
|
216
203
|
require 'mongo/error/missing_service_id'
|
|
217
204
|
require 'mongo/error/server_api_conflict'
|
|
218
|
-
require 'mongo/error/server_api_not_supported'
|
|
219
205
|
require 'mongo/error/server_not_usable'
|
|
220
206
|
require 'mongo/error/server_timeout_error'
|
|
221
207
|
require 'mongo/error/transactions_not_supported'
|
data/lib/mongo/event/base.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
|
#
|
|
@@ -17,12 +16,10 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Event
|
|
20
|
-
|
|
21
19
|
# The queue of events getting processed in the client.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.0.0
|
|
24
22
|
class Listeners
|
|
25
|
-
|
|
26
23
|
# Initialize the event listeners.
|
|
27
24
|
#
|
|
28
25
|
# @example Initialize the event listeners.
|
|
@@ -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
|
module Event
|
|
20
|
-
|
|
21
19
|
# This module is included for objects that need to publish events.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.0.0
|
|
24
22
|
module Publisher
|
|
25
|
-
|
|
26
23
|
# @return [ Event::Listeners ] event_listeners The listeners.
|
|
27
24
|
attr_reader :event_listeners
|
|
28
25
|
|
|
@@ -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
|
module Event
|
|
20
|
-
|
|
21
19
|
# Adds convenience methods for adding listeners to event publishers.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.0.0
|
|
24
22
|
module Subscriber
|
|
25
|
-
|
|
26
23
|
# @return [ Event::Listeners ] event_listeners The listeners.
|
|
27
24
|
attr_reader :event_listeners
|
|
28
25
|
|
|
@@ -41,4 +38,3 @@ module Mongo
|
|
|
41
38
|
end
|
|
42
39
|
end
|
|
43
40
|
end
|
|
44
|
-
|
data/lib/mongo/event.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,30 +16,29 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Event
|
|
20
|
-
|
|
21
19
|
# When a standalone is discovered.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.0.6
|
|
24
22
|
# @deprecated Will be removed in 3.0
|
|
25
|
-
STANDALONE_DISCOVERED = 'standalone_discovered'
|
|
23
|
+
STANDALONE_DISCOVERED = 'standalone_discovered'
|
|
26
24
|
|
|
27
25
|
# When a server is elected primary.
|
|
28
26
|
#
|
|
29
27
|
# @since 2.0.0
|
|
30
28
|
# @deprecated Will be removed in 3.0
|
|
31
|
-
PRIMARY_ELECTED = 'primary_elected'
|
|
29
|
+
PRIMARY_ELECTED = 'primary_elected'
|
|
32
30
|
|
|
33
31
|
# When a server is discovered to be a member of a topology.
|
|
34
32
|
#
|
|
35
33
|
# @since 2.4.0
|
|
36
34
|
# @deprecated Will be removed in 3.0
|
|
37
|
-
MEMBER_DISCOVERED = 'member_discovered'
|
|
35
|
+
MEMBER_DISCOVERED = 'member_discovered'
|
|
38
36
|
|
|
39
37
|
# When a server is to be removed from a cluster.
|
|
40
38
|
#
|
|
41
39
|
# @since 2.0.6
|
|
42
40
|
# @deprecated Will be removed in 3.0
|
|
43
|
-
DESCRIPTION_CHANGED = 'description_changed'
|
|
41
|
+
DESCRIPTION_CHANGED = 'description_changed'
|
|
44
42
|
end
|
|
45
43
|
end
|
|
46
44
|
|
|
@@ -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,21 +17,19 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Grid
|
|
20
19
|
class File
|
|
21
|
-
|
|
22
20
|
# Encapsulates behavior around GridFS chunks of file data.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.0.0
|
|
25
23
|
class Chunk
|
|
26
|
-
|
|
27
24
|
# Name of the chunks collection.
|
|
28
25
|
#
|
|
29
26
|
# @since 2.0.0
|
|
30
|
-
COLLECTION = 'chunks'
|
|
27
|
+
COLLECTION = 'chunks'
|
|
31
28
|
|
|
32
29
|
# Default size for chunks of data.
|
|
33
30
|
#
|
|
34
31
|
# @since 2.0.0
|
|
35
|
-
DEFAULT_SIZE = (255 * 1024)
|
|
32
|
+
DEFAULT_SIZE = (255 * 1024)
|
|
36
33
|
|
|
37
34
|
# @return [ BSON::Document ] document The document to store for the
|
|
38
35
|
# chunk.
|
|
@@ -50,6 +47,7 @@ module Mongo
|
|
|
50
47
|
# @since 2.0.0
|
|
51
48
|
def ==(other)
|
|
52
49
|
return false unless other.is_a?(Chunk)
|
|
50
|
+
|
|
53
51
|
document == other.document
|
|
54
52
|
end
|
|
55
53
|
|
|
@@ -123,10 +121,10 @@ module Mongo
|
|
|
123
121
|
#
|
|
124
122
|
# @since 2.0.0
|
|
125
123
|
def initialize(document)
|
|
126
|
-
@document = BSON::Document.new(:
|
|
124
|
+
@document = BSON::Document.new(_id: BSON::ObjectId.new).merge(document)
|
|
127
125
|
end
|
|
128
126
|
|
|
129
|
-
#
|
|
127
|
+
# Convert the chunk to BSON for storage.
|
|
130
128
|
#
|
|
131
129
|
# @example Convert the chunk to BSON.
|
|
132
130
|
# chunk.to_bson
|
|
@@ -138,12 +136,11 @@ module Mongo
|
|
|
138
136
|
# @return [ String ] The raw BSON data.
|
|
139
137
|
#
|
|
140
138
|
# @since 2.0.0
|
|
141
|
-
def to_bson(buffer = BSON::ByteBuffer.new,
|
|
139
|
+
def to_bson(buffer = BSON::ByteBuffer.new, _validating_keys = nil)
|
|
142
140
|
document.to_bson(buffer)
|
|
143
141
|
end
|
|
144
142
|
|
|
145
143
|
class << self
|
|
146
|
-
|
|
147
144
|
# Takes an array of chunks and assembles them back into the full
|
|
148
145
|
# piece of raw data.
|
|
149
146
|
#
|
|
@@ -157,7 +154,7 @@ module Mongo
|
|
|
157
154
|
# @since 2.0.0
|
|
158
155
|
# @api private
|
|
159
156
|
def assemble(chunks)
|
|
160
|
-
chunks.reduce(+''){ |data, chunk| data << chunk.data.data }
|
|
157
|
+
chunks.reduce(+'') { |data, chunk| data << chunk.data.data }
|
|
161
158
|
end
|
|
162
159
|
|
|
163
160
|
# Split the provided data into multiple chunks.
|
data/lib/mongo/grid/file/info.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2014-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
module Grid
|
|
20
19
|
class File
|
|
21
|
-
|
|
22
20
|
# Encapsulates behavior around GridFS files collection file document.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.0.0
|
|
@@ -26,31 +24,30 @@ module Mongo
|
|
|
26
24
|
# @deprecated Please use the 'stream' API on a FSBucket instead.
|
|
27
25
|
# Will be removed in driver version 3.0.
|
|
28
26
|
class Info
|
|
29
|
-
|
|
30
27
|
# Name of the files collection.
|
|
31
28
|
#
|
|
32
29
|
# @since 2.0.0
|
|
33
|
-
COLLECTION = 'files'
|
|
30
|
+
COLLECTION = 'files'
|
|
34
31
|
|
|
35
32
|
# Mappings of user supplied fields to db specification.
|
|
36
33
|
#
|
|
37
34
|
# @since 2.0.0
|
|
38
35
|
MAPPINGS = {
|
|
39
|
-
:
|
|
40
|
-
:
|
|
41
|
-
:
|
|
42
|
-
:
|
|
43
|
-
:
|
|
44
|
-
:
|
|
45
|
-
:
|
|
46
|
-
:
|
|
47
|
-
:
|
|
36
|
+
chunk_size: :chunkSize,
|
|
37
|
+
content_type: :contentType,
|
|
38
|
+
filename: :filename,
|
|
39
|
+
_id: :_id,
|
|
40
|
+
md5: :md5,
|
|
41
|
+
length: :length,
|
|
42
|
+
metadata: :metadata,
|
|
43
|
+
upload_date: :uploadDate,
|
|
44
|
+
aliases: :aliases
|
|
48
45
|
}.freeze
|
|
49
46
|
|
|
50
47
|
# Default content type for stored files.
|
|
51
48
|
#
|
|
52
49
|
# @since 2.0.0
|
|
53
|
-
DEFAULT_CONTENT_TYPE = 'binary/octet-stream'
|
|
50
|
+
DEFAULT_CONTENT_TYPE = 'binary/octet-stream'
|
|
54
51
|
|
|
55
52
|
# @return [ BSON::Document ] document The files collection document.
|
|
56
53
|
attr_reader :document
|
|
@@ -67,6 +64,7 @@ module Mongo
|
|
|
67
64
|
# @since 2.0.0
|
|
68
65
|
def ==(other)
|
|
69
66
|
return false unless other.is_a?(Info)
|
|
67
|
+
|
|
70
68
|
document == other.document
|
|
71
69
|
end
|
|
72
70
|
|
|
@@ -141,7 +139,7 @@ module Mongo
|
|
|
141
139
|
# document contains a mix of user options and keys added
|
|
142
140
|
# internally by the driver, like session.
|
|
143
141
|
# Remove the keys that driver adds but keep user options.
|
|
144
|
-
document = document.reject do |key,
|
|
142
|
+
document = document.reject do |key, _value|
|
|
145
143
|
key.to_s == 'session'
|
|
146
144
|
end
|
|
147
145
|
@document = default_document.merge(Options::Mapper.transform(document, MAPPINGS))
|
|
@@ -171,7 +169,7 @@ module Mongo
|
|
|
171
169
|
def length
|
|
172
170
|
document[:length]
|
|
173
171
|
end
|
|
174
|
-
alias
|
|
172
|
+
alias size length
|
|
175
173
|
|
|
176
174
|
# Get the additional metadata from the file information document.
|
|
177
175
|
#
|
|
@@ -233,10 +231,8 @@ module Mongo
|
|
|
233
231
|
# @return [ String ] The raw BSON data.
|
|
234
232
|
#
|
|
235
233
|
# @since 2.0.0
|
|
236
|
-
def to_bson(buffer = BSON::ByteBuffer.new,
|
|
237
|
-
if @client_md5 && !document[:md5]
|
|
238
|
-
document[:md5] = @client_md5.hexdigest
|
|
239
|
-
end
|
|
234
|
+
def to_bson(buffer = BSON::ByteBuffer.new, _validating_keys = nil)
|
|
235
|
+
document[:md5] = @client_md5.hexdigest if @client_md5 && !document[:md5]
|
|
240
236
|
document.to_bson(buffer)
|
|
241
237
|
end
|
|
242
238
|
|
|
@@ -256,11 +252,11 @@ module Mongo
|
|
|
256
252
|
|
|
257
253
|
def default_document
|
|
258
254
|
BSON::Document.new(
|
|
259
|
-
:
|
|
260
|
-
:
|
|
255
|
+
_id: BSON::ObjectId.new,
|
|
256
|
+
chunkSize: Chunk::DEFAULT_SIZE,
|
|
261
257
|
# MongoDB stores times with millisecond precision
|
|
262
|
-
:
|
|
263
|
-
:
|
|
258
|
+
uploadDate: Time.now.utc.round(3),
|
|
259
|
+
contentType: DEFAULT_CONTENT_TYPE
|
|
264
260
|
)
|
|
265
261
|
end
|
|
266
262
|
end
|