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) 2018-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,12 +17,10 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
19
|
module Event
|
|
21
|
-
|
|
22
20
|
# Event fired when a server heartbeat is dispatched.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.7.0
|
|
25
23
|
class ServerHeartbeatSucceeded < Mongo::Event::Base
|
|
26
|
-
|
|
27
24
|
# Create the event.
|
|
28
25
|
#
|
|
29
26
|
# @example Create the event.
|
|
@@ -37,9 +34,7 @@ module Mongo
|
|
|
37
34
|
#
|
|
38
35
|
# @since 2.7.0
|
|
39
36
|
# @api private
|
|
40
|
-
def initialize(address, round_trip_time, awaited: false
|
|
41
|
-
started_event:
|
|
42
|
-
)
|
|
37
|
+
def initialize(address, round_trip_time, started_event:, awaited: false)
|
|
43
38
|
@address = address
|
|
44
39
|
@round_trip_time = round_trip_time
|
|
45
40
|
@awaited = !!awaited
|
|
@@ -53,7 +48,7 @@ module Mongo
|
|
|
53
48
|
attr_reader :round_trip_time
|
|
54
49
|
|
|
55
50
|
# Alias of round_trip_time.
|
|
56
|
-
alias
|
|
51
|
+
alias duration round_trip_time
|
|
57
52
|
|
|
58
53
|
# @return [ true | false ] Whether the heartbeat was awaited.
|
|
59
54
|
def awaited?
|
|
@@ -76,7 +71,7 @@ module Mongo
|
|
|
76
71
|
# @api experimental
|
|
77
72
|
def summary
|
|
78
73
|
"#<#{short_class_name}" +
|
|
79
|
-
|
|
74
|
+
" address=#{address}>"
|
|
80
75
|
end
|
|
81
76
|
end
|
|
82
77
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2016-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,12 +17,10 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
19
|
module Event
|
|
21
|
-
|
|
22
20
|
# Event fired when the server is opening.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.4.0
|
|
25
23
|
class ServerOpening < Mongo::Event::Base
|
|
26
|
-
|
|
27
24
|
# @return [ Address ] address The server address.
|
|
28
25
|
attr_reader :address
|
|
29
26
|
|
|
@@ -54,7 +51,7 @@ module Mongo
|
|
|
54
51
|
# @api experimental
|
|
55
52
|
def summary
|
|
56
53
|
"#<#{short_class_name}" +
|
|
57
|
-
|
|
54
|
+
" address=#{address} topology=#{topology.summary}>"
|
|
58
55
|
end
|
|
59
56
|
end
|
|
60
57
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2016-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,12 +17,10 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
19
|
module Event
|
|
21
|
-
|
|
22
20
|
# Event fired when the topology changes.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.4.0
|
|
25
23
|
class TopologyChanged < Mongo::Event::Base
|
|
26
|
-
|
|
27
24
|
# @return [ Cluster::Topology ] previous_topology The previous topology.
|
|
28
25
|
attr_reader :previous_topology
|
|
29
26
|
|
|
@@ -54,8 +51,8 @@ module Mongo
|
|
|
54
51
|
# @api experimental
|
|
55
52
|
def summary
|
|
56
53
|
"#<#{short_class_name}" +
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
" prev=#{previous_topology.summary}" +
|
|
55
|
+
" new=#{new_topology.summary}>"
|
|
59
56
|
end
|
|
60
57
|
end
|
|
61
58
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2016-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,12 +17,10 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
19
|
module Event
|
|
21
|
-
|
|
22
20
|
# Event fired when the topology closes.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.4.0
|
|
25
23
|
class TopologyClosed < Mongo::Event::Base
|
|
26
|
-
|
|
27
24
|
# @return [ Topology ] topology The topology.
|
|
28
25
|
attr_reader :topology
|
|
29
26
|
|
|
@@ -49,7 +46,7 @@ module Mongo
|
|
|
49
46
|
# @api experimental
|
|
50
47
|
def summary
|
|
51
48
|
"#<#{short_class_name}" +
|
|
52
|
-
|
|
49
|
+
" topology=#{topology.summary}>"
|
|
53
50
|
end
|
|
54
51
|
end
|
|
55
52
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2016-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -18,12 +17,10 @@
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
19
|
module Event
|
|
21
|
-
|
|
22
20
|
# Event fired when the topology is opening.
|
|
23
21
|
#
|
|
24
22
|
# @since 2.4.0
|
|
25
23
|
class TopologyOpening < Mongo::Event::Base
|
|
26
|
-
|
|
27
24
|
# @return [ Topology ] topology The topology.
|
|
28
25
|
attr_reader :topology
|
|
29
26
|
|
|
@@ -49,7 +46,7 @@ module Mongo
|
|
|
49
46
|
# @api experimental
|
|
50
47
|
def summary
|
|
51
48
|
"#<#{short_class_name}" +
|
|
52
|
-
|
|
49
|
+
" topology=#{topology.summary}>"
|
|
53
50
|
end
|
|
54
51
|
end
|
|
55
52
|
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
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
|
-
|
|
21
19
|
# Defines behavior for an object that can publish monitoring events.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.1.0
|
|
@@ -47,15 +45,13 @@ module Mongo
|
|
|
47
45
|
private
|
|
48
46
|
|
|
49
47
|
def command_started(address, operation_id, payload,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
)
|
|
48
|
+
socket_object_id: nil, connection_id: nil, connection_generation: nil,
|
|
49
|
+
server_connection_id: nil, service_id: nil)
|
|
53
50
|
event = Event::CommandStarted.generate(address, operation_id, payload,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
)
|
|
51
|
+
socket_object_id: socket_object_id, connection_id: connection_id,
|
|
52
|
+
connection_generation: connection_generation,
|
|
53
|
+
server_connection_id: server_connection_id,
|
|
54
|
+
service_id: service_id)
|
|
59
55
|
monitoring.started(
|
|
60
56
|
Monitoring::COMMAND,
|
|
61
57
|
event
|
|
@@ -64,27 +60,23 @@ module Mongo
|
|
|
64
60
|
end
|
|
65
61
|
|
|
66
62
|
def command_completed(result, address, operation_id, payload, duration,
|
|
67
|
-
|
|
68
|
-
)
|
|
63
|
+
started_event:, server_connection_id: nil, service_id: nil)
|
|
69
64
|
document = result ? (result.documents || []).first : nil
|
|
70
|
-
if document && (document['ok'] && document['ok'] != 1 || document.key?('$err'))
|
|
65
|
+
if document && ((document['ok'] && document['ok'] != 1) || document.key?('$err'))
|
|
71
66
|
parser = Error::Parser.new(document)
|
|
72
67
|
command_failed(document, address, operation_id,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
)
|
|
68
|
+
payload, parser.message, duration,
|
|
69
|
+
started_event: started_event, server_connection_id: server_connection_id,
|
|
70
|
+
service_id: service_id)
|
|
77
71
|
else
|
|
78
72
|
command_succeeded(result, address, operation_id, payload, duration,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
)
|
|
73
|
+
started_event: started_event, server_connection_id: server_connection_id,
|
|
74
|
+
service_id: service_id)
|
|
82
75
|
end
|
|
83
76
|
end
|
|
84
77
|
|
|
85
78
|
def command_succeeded(result, address, operation_id, payload, duration,
|
|
86
|
-
|
|
87
|
-
)
|
|
79
|
+
started_event:, server_connection_id: nil, service_id: nil)
|
|
88
80
|
monitoring.succeeded(
|
|
89
81
|
Monitoring::COMMAND,
|
|
90
82
|
Event::CommandSucceeded.generate(
|
|
@@ -95,22 +87,20 @@ module Mongo
|
|
|
95
87
|
duration,
|
|
96
88
|
started_event: started_event,
|
|
97
89
|
server_connection_id: server_connection_id,
|
|
98
|
-
service_id: service_id
|
|
90
|
+
service_id: service_id
|
|
99
91
|
)
|
|
100
92
|
)
|
|
101
93
|
end
|
|
102
94
|
|
|
103
95
|
def command_failed(failure, address, operation_id, payload, message, duration,
|
|
104
|
-
|
|
105
|
-
)
|
|
96
|
+
started_event:, server_connection_id: nil, service_id: nil)
|
|
106
97
|
monitoring.failed(
|
|
107
98
|
Monitoring::COMMAND,
|
|
108
99
|
Event::CommandFailed.generate(address, operation_id, payload,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
)
|
|
100
|
+
message, failure, duration,
|
|
101
|
+
started_event: started_event,
|
|
102
|
+
server_connection_id: server_connection_id,
|
|
103
|
+
service_id: service_id)
|
|
114
104
|
)
|
|
115
105
|
end
|
|
116
106
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2016-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,12 +16,10 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
|
-
|
|
21
19
|
# Subscribes to Server Closed events and logs them.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.4.0
|
|
24
22
|
class ServerClosedLogSubscriber < SDAMLogSubscriber
|
|
25
|
-
|
|
26
23
|
private
|
|
27
24
|
|
|
28
25
|
def log_event(event)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2016-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,12 +16,10 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
|
-
|
|
21
19
|
# Subscribes to Server Description Changed events and logs them.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.4.0
|
|
24
22
|
class ServerDescriptionChangedLogSubscriber < SDAMLogSubscriber
|
|
25
|
-
|
|
26
23
|
private
|
|
27
24
|
|
|
28
25
|
def log_event(event)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2016-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,12 +16,10 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
|
-
|
|
21
19
|
# Subscribes to Server Opening events and logs them.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.4.0
|
|
24
22
|
class ServerOpeningLogSubscriber < SDAMLogSubscriber
|
|
25
|
-
|
|
26
23
|
private
|
|
27
24
|
|
|
28
25
|
def log_event(event)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2016-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,24 +16,22 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
|
-
|
|
21
19
|
# Subscribes to Topology Changed events and logs them.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.4.0
|
|
24
22
|
class TopologyChangedLogSubscriber < SDAMLogSubscriber
|
|
25
|
-
|
|
26
23
|
private
|
|
27
24
|
|
|
28
25
|
def log_event(event)
|
|
29
|
-
if event.previous_topology.class
|
|
26
|
+
if event.previous_topology.class == event.new_topology.class
|
|
30
27
|
log_debug(
|
|
31
|
-
"
|
|
32
|
-
|
|
28
|
+
"There was a change in the members of the '#{event.new_topology.display_name}' " +
|
|
29
|
+
'topology.'
|
|
33
30
|
)
|
|
34
31
|
else
|
|
35
32
|
log_debug(
|
|
36
|
-
"
|
|
37
|
-
|
|
33
|
+
"Topology type '#{event.previous_topology.display_name}' changed to " +
|
|
34
|
+
"type '#{event.new_topology.display_name}'."
|
|
38
35
|
)
|
|
39
36
|
end
|
|
40
37
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2018-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,12 +16,10 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
|
-
|
|
21
19
|
# Subscribes to Topology Closed events and logs them.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.7.0
|
|
24
22
|
class TopologyClosedLogSubscriber < SDAMLogSubscriber
|
|
25
|
-
|
|
26
23
|
private
|
|
27
24
|
|
|
28
25
|
def log_event(event)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2016-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,12 +16,10 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
|
-
|
|
21
19
|
# Subscribes to Topology Opening events and logs them.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.4.0
|
|
24
22
|
class TopologyOpeningLogSubscriber < SDAMLogSubscriber
|
|
25
|
-
|
|
26
23
|
private
|
|
27
24
|
|
|
28
25
|
def log_event(event)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
3
|
# Copyright (C) 2019-2020 MongoDB Inc.
|
|
5
4
|
#
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
18
|
class Monitoring
|
|
20
|
-
|
|
21
19
|
# Subscribes to SDAM events and logs them.
|
|
22
20
|
#
|
|
23
21
|
# @since 2.11.0
|
|
@@ -50,7 +48,7 @@ module Mongo
|
|
|
50
48
|
log_debug("EVENT: #{event.summary}") if logger.debug?
|
|
51
49
|
end
|
|
52
50
|
|
|
53
|
-
alias
|
|
51
|
+
alias succeeded published
|
|
54
52
|
|
|
55
53
|
def subscribe(client)
|
|
56
54
|
client.subscribe(Mongo::Monitoring::TOPOLOGY_OPENING, self)
|
data/lib/mongo/monitoring.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
|
#
|
|
@@ -16,7 +15,6 @@
|
|
|
16
15
|
# limitations under the License.
|
|
17
16
|
|
|
18
17
|
module Mongo
|
|
19
|
-
|
|
20
18
|
# The class defines behavior for the performance monitoring API.
|
|
21
19
|
#
|
|
22
20
|
# @since 2.1.0
|
|
@@ -26,47 +24,47 @@ module Mongo
|
|
|
26
24
|
# The command topic.
|
|
27
25
|
#
|
|
28
26
|
# @since 2.1.0
|
|
29
|
-
COMMAND = 'Command'
|
|
27
|
+
COMMAND = 'Command'
|
|
30
28
|
|
|
31
29
|
# The connection pool topic.
|
|
32
30
|
#
|
|
33
31
|
# @since 2.9.0
|
|
34
|
-
CONNECTION_POOL = 'ConnectionPool'
|
|
32
|
+
CONNECTION_POOL = 'ConnectionPool'
|
|
35
33
|
|
|
36
34
|
# Server closed topic.
|
|
37
35
|
#
|
|
38
36
|
# @since 2.4.0
|
|
39
|
-
SERVER_CLOSED = 'ServerClosed'
|
|
37
|
+
SERVER_CLOSED = 'ServerClosed'
|
|
40
38
|
|
|
41
39
|
# Server description changed topic.
|
|
42
40
|
#
|
|
43
41
|
# @since 2.4.0
|
|
44
|
-
SERVER_DESCRIPTION_CHANGED = 'ServerDescriptionChanged'
|
|
42
|
+
SERVER_DESCRIPTION_CHANGED = 'ServerDescriptionChanged'
|
|
45
43
|
|
|
46
44
|
# Server opening topic.
|
|
47
45
|
#
|
|
48
46
|
# @since 2.4.0
|
|
49
|
-
SERVER_OPENING = 'ServerOpening'
|
|
47
|
+
SERVER_OPENING = 'ServerOpening'
|
|
50
48
|
|
|
51
49
|
# Topology changed topic.
|
|
52
50
|
#
|
|
53
51
|
# @since 2.4.0
|
|
54
|
-
TOPOLOGY_CHANGED = 'TopologyChanged'
|
|
52
|
+
TOPOLOGY_CHANGED = 'TopologyChanged'
|
|
55
53
|
|
|
56
54
|
# Topology closed topic.
|
|
57
55
|
#
|
|
58
56
|
# @since 2.4.0
|
|
59
|
-
TOPOLOGY_CLOSED = 'TopologyClosed'
|
|
57
|
+
TOPOLOGY_CLOSED = 'TopologyClosed'
|
|
60
58
|
|
|
61
59
|
# Topology opening topic.
|
|
62
60
|
#
|
|
63
61
|
# @since 2.4.0
|
|
64
|
-
TOPOLOGY_OPENING = 'TopologyOpening'
|
|
62
|
+
TOPOLOGY_OPENING = 'TopologyOpening'
|
|
65
63
|
|
|
66
64
|
# Server heartbeat started topic.
|
|
67
65
|
#
|
|
68
66
|
# @since 2.7.0
|
|
69
|
-
SERVER_HEARTBEAT = 'ServerHeartbeat'
|
|
67
|
+
SERVER_HEARTBEAT = 'ServerHeartbeat'
|
|
70
68
|
|
|
71
69
|
# Used for generating unique operation ids to link events together.
|
|
72
70
|
#
|
|
@@ -77,7 +75,7 @@ module Mongo
|
|
|
77
75
|
#
|
|
78
76
|
# @since 2.1.0
|
|
79
77
|
def self.next_operation_id
|
|
80
|
-
|
|
78
|
+
next_id
|
|
81
79
|
end
|
|
82
80
|
|
|
83
81
|
# Contains subscription methods common between monitoring and
|
|
@@ -138,9 +136,9 @@ module Mongo
|
|
|
138
136
|
def unsubscribe(topic, subscriber)
|
|
139
137
|
subs = subscribers_for(topic)
|
|
140
138
|
index = subs.index(subscriber)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
139
|
+
return unless index
|
|
140
|
+
|
|
141
|
+
subs.delete_at(index)
|
|
144
142
|
end
|
|
145
143
|
|
|
146
144
|
# Get all the subscribers.
|
|
@@ -219,23 +217,23 @@ module Mongo
|
|
|
219
217
|
# @api private
|
|
220
218
|
def initialize(options = {})
|
|
221
219
|
@options = options
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
220
|
+
return unless options[:monitoring] != false
|
|
221
|
+
|
|
222
|
+
Global.subscribers.each do |topic, subscribers|
|
|
223
|
+
subscribers.each do |subscriber|
|
|
224
|
+
subscribe(topic, subscriber)
|
|
227
225
|
end
|
|
228
|
-
subscribe(COMMAND, CommandLogSubscriber.new(options))
|
|
229
|
-
# CMAP events are not logged by default because this will create
|
|
230
|
-
# log entries for every operation performed by the driver.
|
|
231
|
-
#subscribe(CONNECTION_POOL, CmapLogSubscriber.new(options))
|
|
232
|
-
subscribe(SERVER_OPENING, ServerOpeningLogSubscriber.new(options))
|
|
233
|
-
subscribe(SERVER_CLOSED, ServerClosedLogSubscriber.new(options))
|
|
234
|
-
subscribe(SERVER_DESCRIPTION_CHANGED, ServerDescriptionChangedLogSubscriber.new(options))
|
|
235
|
-
subscribe(TOPOLOGY_OPENING, TopologyOpeningLogSubscriber.new(options))
|
|
236
|
-
subscribe(TOPOLOGY_CHANGED, TopologyChangedLogSubscriber.new(options))
|
|
237
|
-
subscribe(TOPOLOGY_CLOSED, TopologyClosedLogSubscriber.new(options))
|
|
238
226
|
end
|
|
227
|
+
subscribe(COMMAND, CommandLogSubscriber.new(options))
|
|
228
|
+
# CMAP events are not logged by default because this will create
|
|
229
|
+
# log entries for every operation performed by the driver.
|
|
230
|
+
# subscribe(CONNECTION_POOL, CmapLogSubscriber.new(options))
|
|
231
|
+
subscribe(SERVER_OPENING, ServerOpeningLogSubscriber.new(options))
|
|
232
|
+
subscribe(SERVER_CLOSED, ServerClosedLogSubscriber.new(options))
|
|
233
|
+
subscribe(SERVER_DESCRIPTION_CHANGED, ServerDescriptionChangedLogSubscriber.new(options))
|
|
234
|
+
subscribe(TOPOLOGY_OPENING, TopologyOpeningLogSubscriber.new(options))
|
|
235
|
+
subscribe(TOPOLOGY_CHANGED, TopologyChangedLogSubscriber.new(options))
|
|
236
|
+
subscribe(TOPOLOGY_CLOSED, TopologyClosedLogSubscriber.new(options))
|
|
239
237
|
end
|
|
240
238
|
|
|
241
239
|
# @api private
|
|
@@ -256,7 +254,7 @@ module Mongo
|
|
|
256
254
|
#
|
|
257
255
|
# @since 2.9.0
|
|
258
256
|
def published(topic, event)
|
|
259
|
-
subscribers_for(topic).each{ |subscriber| subscriber.published(event) }
|
|
257
|
+
subscribers_for(topic).each { |subscriber| subscriber.published(event) }
|
|
260
258
|
end
|
|
261
259
|
|
|
262
260
|
# Publish a started event.
|
|
@@ -272,7 +270,7 @@ module Mongo
|
|
|
272
270
|
#
|
|
273
271
|
# @since 2.1.0
|
|
274
272
|
def started(topic, event)
|
|
275
|
-
subscribers_for(topic).each{ |subscriber| subscriber.started(event) }
|
|
273
|
+
subscribers_for(topic).each { |subscriber| subscriber.started(event) }
|
|
276
274
|
end
|
|
277
275
|
|
|
278
276
|
# Publish a succeeded event.
|
|
@@ -288,7 +286,7 @@ module Mongo
|
|
|
288
286
|
#
|
|
289
287
|
# @since 2.1.0
|
|
290
288
|
def succeeded(topic, event)
|
|
291
|
-
subscribers_for(topic).each{ |subscriber| subscriber.succeeded(event) }
|
|
289
|
+
subscribers_for(topic).each { |subscriber| subscriber.succeeded(event) }
|
|
292
290
|
end
|
|
293
291
|
|
|
294
292
|
# Publish a failed event.
|
|
@@ -304,14 +302,15 @@ module Mongo
|
|
|
304
302
|
#
|
|
305
303
|
# @since 2.1.0
|
|
306
304
|
def failed(topic, event)
|
|
307
|
-
subscribers_for(topic).each{ |subscriber| subscriber.failed(event) }
|
|
305
|
+
subscribers_for(topic).each { |subscriber| subscriber.failed(event) }
|
|
308
306
|
end
|
|
309
307
|
|
|
310
308
|
# @api private
|
|
311
309
|
def publish_heartbeat(server, awaited: false)
|
|
312
310
|
if monitoring?
|
|
313
311
|
started_event = Event::ServerHeartbeatStarted.new(
|
|
314
|
-
server.address, awaited: awaited
|
|
312
|
+
server.address, awaited: awaited
|
|
313
|
+
)
|
|
315
314
|
started(SERVER_HEARTBEAT, started_event)
|
|
316
315
|
end
|
|
317
316
|
|
|
@@ -328,14 +327,14 @@ module Mongo
|
|
|
328
327
|
|
|
329
328
|
begin
|
|
330
329
|
result = yield
|
|
331
|
-
rescue =>
|
|
330
|
+
rescue StandardError => e
|
|
332
331
|
if monitoring?
|
|
333
332
|
event = Event::ServerHeartbeatFailed.new(
|
|
334
333
|
server.address,
|
|
335
334
|
Utils.monotonic_time - start_time,
|
|
336
|
-
|
|
335
|
+
e,
|
|
337
336
|
awaited: awaited,
|
|
338
|
-
started_event: started_event
|
|
337
|
+
started_event: started_event
|
|
339
338
|
)
|
|
340
339
|
failed(SERVER_HEARTBEAT, event)
|
|
341
340
|
end
|
|
@@ -346,7 +345,7 @@ module Mongo
|
|
|
346
345
|
server.address,
|
|
347
346
|
Utils.monotonic_time - start_time,
|
|
348
347
|
awaited: awaited,
|
|
349
|
-
started_event: started_event
|
|
348
|
+
started_event: started_event
|
|
350
349
|
)
|
|
351
350
|
succeeded(SERVER_HEARTBEAT, event)
|
|
352
351
|
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 Aggregate
|
|
21
|
-
|
|
22
20
|
# A MongoDB aggregate operation sent as an op message.
|
|
23
21
|
#
|
|
24
22
|
# @api private
|