mongo 2.13.0.beta1 → 2.14.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +1 -5
- data/Rakefile +50 -9
- data/lib/mongo.rb +13 -2
- data/lib/mongo/address.rb +1 -1
- data/lib/mongo/address/ipv4.rb +1 -1
- data/lib/mongo/address/ipv6.rb +1 -1
- data/lib/mongo/auth/aws/request.rb +31 -5
- data/lib/mongo/bulk_write.rb +18 -0
- data/lib/mongo/caching_cursor.rb +74 -0
- data/lib/mongo/client.rb +238 -31
- data/lib/mongo/cluster.rb +56 -20
- data/lib/mongo/cluster/sdam_flow.rb +13 -10
- data/lib/mongo/cluster/topology/replica_set_no_primary.rb +3 -2
- data/lib/mongo/cluster/topology/sharded.rb +1 -1
- data/lib/mongo/cluster/topology/single.rb +2 -2
- data/lib/mongo/collection.rb +66 -24
- data/lib/mongo/collection/view.rb +24 -20
- data/lib/mongo/collection/view/aggregation.rb +25 -4
- data/lib/mongo/collection/view/builder/find_command.rb +38 -18
- data/lib/mongo/collection/view/explainable.rb +27 -8
- data/lib/mongo/collection/view/iterable.rb +72 -12
- data/lib/mongo/collection/view/readable.rb +19 -3
- data/lib/mongo/collection/view/writable.rb +55 -5
- data/lib/mongo/crypt/encryption_io.rb +6 -6
- data/lib/mongo/cursor.rb +16 -3
- data/lib/mongo/database.rb +37 -4
- data/lib/mongo/database/view.rb +18 -3
- data/lib/mongo/distinguishing_semaphore.rb +55 -0
- data/lib/mongo/error.rb +5 -0
- data/lib/mongo/error/invalid_read_concern.rb +28 -0
- data/lib/mongo/error/invalid_server_auth_host.rb +22 -0
- data/lib/mongo/error/invalid_session.rb +2 -1
- data/lib/mongo/error/operation_failure.rb +11 -5
- data/lib/mongo/error/server_certificate_revoked.rb +22 -0
- data/lib/mongo/error/sessions_not_supported.rb +35 -0
- data/lib/mongo/error/unsupported_option.rb +14 -12
- data/lib/mongo/event/base.rb +6 -0
- data/lib/mongo/grid/file.rb +5 -0
- data/lib/mongo/grid/file/chunk.rb +2 -0
- data/lib/mongo/grid/fs_bucket.rb +15 -13
- data/lib/mongo/grid/stream/write.rb +9 -3
- data/lib/mongo/index/view.rb +3 -0
- data/lib/mongo/lint.rb +2 -1
- data/lib/mongo/logger.rb +3 -3
- data/lib/mongo/monitoring.rb +38 -0
- data/lib/mongo/monitoring/command_log_subscriber.rb +10 -2
- data/lib/mongo/monitoring/event/command_failed.rb +11 -0
- data/lib/mongo/monitoring/event/command_started.rb +37 -2
- data/lib/mongo/monitoring/event/command_succeeded.rb +11 -0
- data/lib/mongo/monitoring/event/server_closed.rb +1 -1
- data/lib/mongo/monitoring/event/server_description_changed.rb +27 -4
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +9 -2
- data/lib/mongo/monitoring/event/server_heartbeat_started.rb +9 -2
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +9 -2
- data/lib/mongo/monitoring/event/server_opening.rb +1 -1
- data/lib/mongo/monitoring/event/topology_changed.rb +1 -1
- data/lib/mongo/monitoring/event/topology_closed.rb +1 -1
- data/lib/mongo/monitoring/event/topology_opening.rb +1 -1
- data/lib/mongo/monitoring/publishable.rb +6 -3
- data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +9 -1
- data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +1 -1
- data/lib/mongo/operation.rb +2 -0
- data/lib/mongo/operation/aggregate/result.rb +9 -8
- data/lib/mongo/operation/collections_info/command.rb +5 -0
- data/lib/mongo/operation/collections_info/result.rb +18 -1
- data/lib/mongo/operation/delete/bulk_result.rb +2 -0
- data/lib/mongo/operation/delete/result.rb +3 -0
- data/lib/mongo/operation/explain/command.rb +4 -0
- data/lib/mongo/operation/explain/legacy.rb +4 -0
- data/lib/mongo/operation/explain/op_msg.rb +6 -0
- data/lib/mongo/operation/explain/result.rb +3 -0
- data/lib/mongo/operation/find/legacy/result.rb +2 -0
- data/lib/mongo/operation/find/result.rb +13 -0
- data/lib/mongo/operation/get_more/result.rb +3 -0
- data/lib/mongo/operation/indexes/result.rb +5 -0
- data/lib/mongo/operation/insert/bulk_result.rb +5 -0
- data/lib/mongo/operation/insert/result.rb +5 -0
- data/lib/mongo/operation/list_collections/result.rb +5 -0
- data/lib/mongo/operation/map_reduce/result.rb +10 -0
- data/lib/mongo/operation/parallel_scan/result.rb +4 -0
- data/lib/mongo/operation/result.rb +35 -6
- data/lib/mongo/operation/shared/bypass_document_validation.rb +1 -0
- data/lib/mongo/operation/shared/causal_consistency_supported.rb +1 -0
- data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +2 -0
- data/lib/mongo/operation/shared/executable.rb +1 -0
- data/lib/mongo/operation/shared/idable.rb +2 -1
- data/lib/mongo/operation/shared/limited.rb +1 -0
- data/lib/mongo/operation/shared/object_id_generator.rb +1 -0
- data/lib/mongo/operation/shared/result/aggregatable.rb +1 -0
- data/lib/mongo/operation/shared/sessions_supported.rb +1 -0
- data/lib/mongo/operation/shared/specifiable.rb +1 -0
- data/lib/mongo/operation/shared/write.rb +1 -0
- data/lib/mongo/operation/shared/write_concern_supported.rb +1 -0
- data/lib/mongo/operation/update/legacy/result.rb +7 -0
- data/lib/mongo/operation/update/result.rb +8 -0
- data/lib/mongo/operation/users_info/result.rb +3 -0
- data/lib/mongo/protocol/message.rb +47 -10
- data/lib/mongo/protocol/msg.rb +34 -1
- data/lib/mongo/protocol/query.rb +36 -0
- data/lib/mongo/protocol/serializers.rb +5 -2
- data/lib/mongo/query_cache.rb +242 -0
- data/lib/mongo/retryable.rb +8 -1
- data/lib/mongo/server.rb +15 -4
- data/lib/mongo/server/app_metadata.rb +27 -3
- data/lib/mongo/server/connection.rb +4 -4
- data/lib/mongo/server/connection_base.rb +38 -12
- data/lib/mongo/server/connection_common.rb +2 -2
- data/lib/mongo/server/connection_pool.rb +3 -0
- data/lib/mongo/server/description.rb +13 -1
- data/lib/mongo/server/monitor.rb +76 -44
- data/lib/mongo/server/monitor/connection.rb +57 -9
- data/lib/mongo/server/pending_connection.rb +14 -4
- data/lib/mongo/server/push_monitor.rb +173 -0
- data/{spec/runners/transactions/context.rb → lib/mongo/server/push_monitor/connection.rb} +9 -14
- data/lib/mongo/server_selector.rb +0 -1
- data/lib/mongo/server_selector/base.rb +583 -1
- data/lib/mongo/server_selector/nearest.rb +1 -6
- data/lib/mongo/server_selector/primary.rb +1 -6
- data/lib/mongo/server_selector/primary_preferred.rb +7 -10
- data/lib/mongo/server_selector/secondary.rb +1 -6
- data/lib/mongo/server_selector/secondary_preferred.rb +1 -7
- data/lib/mongo/session.rb +7 -1
- data/lib/mongo/socket.rb +26 -12
- data/lib/mongo/socket/ocsp_cache.rb +97 -0
- data/lib/mongo/socket/ocsp_verifier.rb +368 -0
- data/lib/mongo/socket/ssl.rb +46 -25
- data/lib/mongo/socket/tcp.rb +1 -1
- data/lib/mongo/srv/monitor.rb +7 -13
- data/lib/mongo/srv/resolver.rb +14 -10
- data/lib/mongo/timeout.rb +2 -0
- data/lib/mongo/topology_version.rb +9 -0
- data/lib/mongo/uri.rb +21 -390
- data/lib/mongo/uri/options_mapper.rb +582 -0
- data/lib/mongo/uri/srv_protocol.rb +3 -2
- data/lib/mongo/utils.rb +73 -0
- data/lib/mongo/version.rb +1 -1
- data/spec/NOTES.aws-auth.md +12 -7
- data/spec/README.aws-auth.md +2 -2
- data/spec/README.md +63 -1
- data/spec/integration/awaited_ismaster_spec.rb +28 -0
- data/spec/integration/bson_symbol_spec.rb +4 -2
- data/spec/integration/bulk_write_spec.rb +67 -0
- data/spec/integration/change_stream_examples_spec.rb +6 -2
- data/spec/integration/change_stream_spec.rb +1 -1
- data/spec/integration/check_clean_slate_spec.rb +16 -0
- data/spec/integration/client_authentication_options_spec.rb +92 -28
- data/spec/integration/client_construction_spec.rb +1 -0
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +9 -5
- data/spec/integration/connect_single_rs_name_spec.rb +5 -2
- data/spec/integration/connection_pool_populator_spec.rb +4 -2
- data/spec/integration/connection_spec.rb +7 -4
- data/spec/integration/crud_spec.rb +4 -4
- data/spec/integration/cursor_reaping_spec.rb +54 -18
- data/spec/integration/docs_examples_spec.rb +6 -0
- data/spec/integration/fork_reconnect_spec.rb +56 -1
- data/spec/integration/grid_fs_bucket_spec.rb +48 -0
- data/spec/integration/heartbeat_events_spec.rb +4 -23
- data/spec/integration/ocsp_connectivity_spec.rb +26 -0
- data/spec/integration/ocsp_verifier_cache_spec.rb +188 -0
- data/spec/integration/ocsp_verifier_spec.rb +334 -0
- data/spec/integration/query_cache_spec.rb +1045 -0
- data/spec/integration/query_cache_transactions_spec.rb +190 -0
- data/spec/integration/read_concern_spec.rb +1 -1
- data/spec/integration/retryable_errors_spec.rb +1 -1
- data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +1 -0
- data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +4 -2
- data/spec/integration/retryable_writes/shared/performs_modern_retries.rb +3 -3
- data/spec/integration/retryable_writes/shared/performs_no_retries.rb +2 -2
- data/spec/integration/sdam_error_handling_spec.rb +122 -15
- data/spec/integration/sdam_events_spec.rb +80 -6
- data/spec/integration/sdam_prose_spec.rb +64 -0
- data/spec/integration/server_monitor_spec.rb +25 -1
- data/spec/integration/server_selection_spec.rb +36 -0
- data/spec/integration/size_limit_spec.rb +23 -5
- data/spec/integration/srv_monitoring_spec.rb +38 -3
- data/spec/integration/srv_spec.rb +56 -0
- data/spec/integration/ssl_uri_options_spec.rb +2 -2
- data/spec/integration/transactions_examples_spec.rb +17 -7
- data/spec/integration/zlib_compression_spec.rb +25 -0
- data/spec/lite_spec_helper.rb +20 -9
- data/spec/mongo/address_spec.rb +1 -1
- data/spec/mongo/auth/aws/request_region_spec.rb +42 -0
- data/spec/mongo/auth/aws/request_spec.rb +76 -0
- data/spec/mongo/auth/scram_spec.rb +1 -1
- data/spec/mongo/auth/user_spec.rb +1 -1
- data/spec/mongo/bulk_write_spec.rb +2 -2
- data/spec/mongo/caching_cursor_spec.rb +70 -0
- data/spec/mongo/client_construction_spec.rb +386 -3
- data/spec/mongo/client_encryption_spec.rb +16 -10
- data/spec/mongo/client_spec.rb +85 -3
- data/spec/mongo/cluster/topology/replica_set_spec.rb +53 -10
- data/spec/mongo/cluster/topology/sharded_spec.rb +1 -1
- data/spec/mongo/cluster/topology/single_spec.rb +19 -8
- data/spec/mongo/cluster/topology/unknown_spec.rb +1 -1
- data/spec/mongo/cluster/topology_spec.rb +1 -1
- data/spec/mongo/cluster_spec.rb +37 -35
- data/spec/mongo/collection/view/change_stream_resume_spec.rb +7 -7
- data/spec/mongo/collection/view/explainable_spec.rb +87 -4
- data/spec/mongo/collection/view/map_reduce_spec.rb +2 -0
- data/spec/mongo/collection/view/readable_spec.rb +36 -0
- data/spec/mongo/collection_spec.rb +572 -0
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/binary_spec.rb +1 -6
- data/spec/mongo/crypt/binding/binary_spec.rb +1 -6
- data/spec/mongo/crypt/binding/context_spec.rb +2 -7
- data/spec/mongo/crypt/binding/helpers_spec.rb +1 -6
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +2 -7
- data/spec/mongo/crypt/binding/status_spec.rb +1 -6
- data/spec/mongo/crypt/binding/version_spec.rb +1 -6
- data/spec/mongo/crypt/data_key_context_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +1 -1
- data/spec/mongo/crypt/status_spec.rb +1 -6
- data/spec/mongo/database_spec.rb +353 -8
- data/spec/mongo/distinguishing_semaphore_spec.rb +63 -0
- data/spec/mongo/error/no_server_available_spec.rb +1 -1
- data/spec/mongo/error/operation_failure_spec.rb +40 -0
- data/spec/mongo/index/view_spec.rb +148 -2
- data/spec/mongo/logger_spec.rb +13 -11
- data/spec/mongo/monitoring/event/server_closed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_description_changed_spec.rb +1 -4
- data/spec/mongo/monitoring/event/server_opening_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_changed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_closed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/topology_opening_spec.rb +1 -1
- data/spec/mongo/operation/delete/op_msg_spec.rb +3 -3
- data/spec/mongo/operation/insert/command_spec.rb +2 -2
- data/spec/mongo/operation/insert/op_msg_spec.rb +3 -3
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +1 -1
- data/spec/mongo/operation/update/command_spec.rb +2 -2
- data/spec/mongo/operation/update/op_msg_spec.rb +3 -3
- data/spec/mongo/protocol/msg_spec.rb +10 -0
- data/spec/mongo/query_cache_spec.rb +280 -0
- data/spec/mongo/semaphore_spec.rb +51 -0
- data/spec/mongo/server/app_metadata_shared.rb +82 -2
- data/spec/mongo/server/connection_auth_spec.rb +2 -2
- data/spec/mongo/server/connection_pool_spec.rb +7 -3
- data/spec/mongo/server/connection_spec.rb +15 -8
- data/spec/mongo/server/description_spec.rb +18 -0
- data/spec/mongo/server_selector/nearest_spec.rb +23 -23
- data/spec/mongo/server_selector/primary_preferred_spec.rb +26 -26
- data/spec/mongo/server_selector/primary_spec.rb +9 -9
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +22 -22
- data/spec/mongo/server_selector/secondary_spec.rb +18 -18
- data/spec/mongo/server_selector_spec.rb +6 -6
- data/spec/mongo/session_spec.rb +35 -0
- data/spec/mongo/socket/ssl_spec.rb +4 -4
- data/spec/mongo/socket_spec.rb +1 -1
- data/spec/mongo/uri/srv_protocol_spec.rb +64 -33
- data/spec/mongo/uri_option_parsing_spec.rb +11 -11
- data/spec/mongo/uri_spec.rb +68 -41
- data/spec/mongo/utils_spec.rb +39 -0
- data/spec/runners/auth.rb +3 -0
- data/spec/runners/change_streams/test.rb +3 -3
- data/spec/runners/cmap.rb +1 -1
- data/spec/runners/command_monitoring.rb +3 -34
- data/spec/runners/connection_string.rb +35 -124
- data/spec/runners/crud/context.rb +9 -5
- data/spec/runners/crud/operation.rb +59 -27
- data/spec/runners/crud/spec.rb +0 -8
- data/spec/runners/crud/test.rb +1 -1
- data/spec/runners/crud/test_base.rb +0 -19
- data/spec/runners/sdam.rb +2 -2
- data/spec/runners/server_selection.rb +242 -28
- data/spec/runners/transactions.rb +12 -12
- data/spec/runners/transactions/operation.rb +151 -25
- data/spec/runners/transactions/test.rb +62 -18
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/constraints.rb +303 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +175 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +149 -0
- data/spec/spec_helper.rb +3 -1
- data/spec/spec_tests/cmap_spec.rb +7 -3
- data/spec/spec_tests/command_monitoring_spec.rb +22 -12
- data/spec/spec_tests/crud_spec.rb +1 -1
- data/spec/spec_tests/data/change_streams/change-streams-errors.yml +4 -9
- data/spec/spec_tests/data/change_streams/change-streams-resume-whitelist.yml +66 -0
- data/spec/spec_tests/data/change_streams/change-streams.yml +0 -1
- data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +6 -2
- data/spec/spec_tests/data/cmap/pool-create-min-size.yml +3 -0
- data/spec/spec_tests/data/connection_string/valid-warnings.yml +24 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/MaxStalenessTooSmall.yml +15 -0
- data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/NoKnownServers.yml +4 -3
- data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +1 -0
- data/spec/spec_tests/data/sdam_integration/cancel-server-check.yml +96 -0
- data/spec/spec_tests/data/sdam_integration/connectTimeoutMS.yml +88 -0
- data/spec/spec_tests/data/sdam_integration/find-network-error.yml +83 -0
- data/spec/spec_tests/data/sdam_integration/find-shutdown-error.yml +116 -0
- data/spec/spec_tests/data/sdam_integration/insert-network-error.yml +86 -0
- data/spec/spec_tests/data/sdam_integration/insert-shutdown-error.yml +115 -0
- data/spec/spec_tests/data/sdam_integration/isMaster-command-error.yml +168 -0
- data/spec/spec_tests/data/sdam_integration/isMaster-network-error.yml +162 -0
- data/spec/spec_tests/data/sdam_integration/isMaster-timeout.yml +229 -0
- data/spec/spec_tests/data/sdam_integration/rediscover-quickly-after-step-down.yml +87 -0
- data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +1 -3
- data/spec/spec_tests/data/sdam_monitoring/standalone.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +2 -2
- data/spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.yml +2 -2
- data/spec/spec_tests/data/uri_options/auth-options.yml +25 -0
- data/spec/spec_tests/data/uri_options/compression-options.yml +6 -3
- data/spec/spec_tests/data/uri_options/read-preference-options.yml +24 -0
- data/spec/spec_tests/data/uri_options/ruby-connection-options.yml +1 -0
- data/spec/spec_tests/data/uri_options/tls-options.yml +160 -4
- data/spec/spec_tests/dns_seedlist_discovery_spec.rb +9 -1
- data/spec/spec_tests/max_staleness_spec.rb +4 -142
- data/spec/spec_tests/retryable_reads_spec.rb +2 -2
- data/spec/spec_tests/sdam_integration_spec.rb +13 -0
- data/spec/spec_tests/sdam_monitoring_spec.rb +1 -2
- data/spec/spec_tests/server_selection_spec.rb +4 -116
- data/spec/spec_tests/uri_options_spec.rb +31 -33
- data/spec/stress/cleanup_spec.rb +17 -2
- data/spec/stress/connection_pool_stress_spec.rb +10 -8
- data/spec/stress/fork_reconnect_stress_spec.rb +1 -1
- data/spec/support/certificates/atlas-ocsp-ca.crt +28 -0
- data/spec/support/certificates/atlas-ocsp.crt +41 -0
- data/spec/support/client_registry.rb +1 -0
- data/spec/support/client_registry_macros.rb +11 -2
- data/spec/support/cluster_config.rb +4 -0
- data/spec/support/common_shortcuts.rb +45 -0
- data/spec/support/constraints.rb +6 -253
- data/spec/support/event_subscriber.rb +123 -33
- data/spec/support/keyword_struct.rb +26 -0
- data/spec/support/matchers.rb +16 -0
- data/spec/support/ocsp +1 -0
- data/spec/support/session_registry.rb +52 -0
- data/spec/support/shared/server_selector.rb +13 -1
- data/spec/support/spec_config.rb +60 -13
- data/spec/support/spec_setup.rb +1 -1
- data/spec/support/utils.rb +84 -1
- metadata +1027 -937
- metadata.gz.sig +0 -0
- data/lib/mongo/server_selector/selectable.rb +0 -560
- data/spec/runners/sdam_monitoring.rb +0 -89
- data/spec/support/lite_constraints.rb +0 -141
@@ -35,6 +35,13 @@ module Mongo
|
|
35
35
|
# description.
|
36
36
|
attr_reader :new_description
|
37
37
|
|
38
|
+
# @return [ true | false ] Whether the heartbeat was awaited.
|
39
|
+
#
|
40
|
+
# @api experimental
|
41
|
+
def awaited?
|
42
|
+
@awaited
|
43
|
+
end
|
44
|
+
|
38
45
|
# Create the event.
|
39
46
|
#
|
40
47
|
# @example Create the event.
|
@@ -44,13 +51,19 @@ module Mongo
|
|
44
51
|
# @param [ Integer ] topology The topology.
|
45
52
|
# @param [ Server::Description ] previous_description The previous description.
|
46
53
|
# @param [ Server::Description ] new_description The new description.
|
54
|
+
# @param [ true | false ] awaited Whether the server description was
|
55
|
+
# a result of processing an awaited ismaster response.
|
47
56
|
#
|
48
57
|
# @since 2.4.0
|
49
|
-
|
58
|
+
# @api private
|
59
|
+
def initialize(address, topology, previous_description, new_description,
|
60
|
+
awaited: false
|
61
|
+
)
|
50
62
|
@address = address
|
51
63
|
@topology = topology
|
52
64
|
@previous_description = previous_description
|
53
65
|
@new_description = new_description
|
66
|
+
@awaited = !!awaited
|
54
67
|
end
|
55
68
|
|
56
69
|
# Returns a concise yet useful summary of the event.
|
@@ -62,10 +75,20 @@ module Mongo
|
|
62
75
|
# @since 2.7.0
|
63
76
|
# @api experimental
|
64
77
|
def summary
|
65
|
-
"#<#{
|
66
|
-
" address=#{address}
|
78
|
+
"#<#{short_class_name}" +
|
79
|
+
" address=#{address}" +
|
67
80
|
# TODO Add summaries to descriptions and use them here
|
68
|
-
" prev=#{previous_description.
|
81
|
+
" prev=#{previous_description.server_type.upcase} new=#{new_description.server_type.upcase}#{awaited_indicator}>"
|
82
|
+
end
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def awaited_indicator
|
87
|
+
if awaited?
|
88
|
+
' [awaited]'
|
89
|
+
else
|
90
|
+
''
|
91
|
+
end
|
69
92
|
end
|
70
93
|
end
|
71
94
|
end
|
@@ -36,6 +36,11 @@ module Mongo
|
|
36
36
|
# Alias of error for SDAM spec compliance.
|
37
37
|
alias :failure :error
|
38
38
|
|
39
|
+
# @return [ true | false ] Whether the heartbeat was awaited.
|
40
|
+
def awaited?
|
41
|
+
@awaited
|
42
|
+
end
|
43
|
+
|
39
44
|
# Create the event.
|
40
45
|
#
|
41
46
|
# @example Create the event.
|
@@ -43,13 +48,15 @@ module Mongo
|
|
43
48
|
#
|
44
49
|
# @param [ Address ] address The server address.
|
45
50
|
# @param [ Float ] round_trip_time Duration of ismaster call in seconds.
|
51
|
+
# @param [ true | false ] awaited Whether the heartbeat was awaited.
|
46
52
|
#
|
47
53
|
# @since 2.7.0
|
48
54
|
# @api private
|
49
|
-
def initialize(address, round_trip_time, error)
|
55
|
+
def initialize(address, round_trip_time, error, awaited: false)
|
50
56
|
@address = address
|
51
57
|
@round_trip_time = round_trip_time
|
52
58
|
@error = error
|
59
|
+
@awaited = !!awaited
|
53
60
|
end
|
54
61
|
|
55
62
|
# Returns a concise yet useful summary of the event.
|
@@ -61,7 +68,7 @@ module Mongo
|
|
61
68
|
# @since 2.7.0
|
62
69
|
# @api experimental
|
63
70
|
def summary
|
64
|
-
"#<#{
|
71
|
+
"#<#{short_class_name}" +
|
65
72
|
" address=#{address}" +
|
66
73
|
" error=#{error.inspect}>"
|
67
74
|
end
|
@@ -24,17 +24,24 @@ module Mongo
|
|
24
24
|
# @return [ Address ] address The server address.
|
25
25
|
attr_reader :address
|
26
26
|
|
27
|
+
# @return [ true | false ] Whether the heartbeat was awaited.
|
28
|
+
def awaited?
|
29
|
+
@awaited
|
30
|
+
end
|
31
|
+
|
27
32
|
# Create the event.
|
28
33
|
#
|
29
34
|
# @example Create the event.
|
30
35
|
# ServerHeartbeatStarted.new(address)
|
31
36
|
#
|
32
37
|
# @param [ Address ] address The server address.
|
38
|
+
# @param [ true | false ] awaited Whether the heartbeat was awaited.
|
33
39
|
#
|
34
40
|
# @since 2.7.0
|
35
41
|
# @api private
|
36
|
-
def initialize(address)
|
42
|
+
def initialize(address, awaited: false)
|
37
43
|
@address = address
|
44
|
+
@awaited = !!awaited
|
38
45
|
end
|
39
46
|
|
40
47
|
# Returns a concise yet useful summary of the event.
|
@@ -46,7 +53,7 @@ module Mongo
|
|
46
53
|
# @since 2.7.0
|
47
54
|
# @api experimental
|
48
55
|
def summary
|
49
|
-
"#<#{
|
56
|
+
"#<#{short_class_name}" +
|
50
57
|
" address=#{address}>"
|
51
58
|
end
|
52
59
|
end
|
@@ -30,6 +30,11 @@ module Mongo
|
|
30
30
|
# Alias of round_trip_time.
|
31
31
|
alias :duration :round_trip_time
|
32
32
|
|
33
|
+
# @return [ true | false ] Whether the heartbeat was awaited.
|
34
|
+
def awaited?
|
35
|
+
@awaited
|
36
|
+
end
|
37
|
+
|
33
38
|
# Create the event.
|
34
39
|
#
|
35
40
|
# @example Create the event.
|
@@ -37,12 +42,14 @@ module Mongo
|
|
37
42
|
#
|
38
43
|
# @param [ Address ] address The server address.
|
39
44
|
# @param [ Float ] round_trip_time Duration of ismaster call in seconds.
|
45
|
+
# @param [ true | false ] awaited Whether the heartbeat was awaited.
|
40
46
|
#
|
41
47
|
# @since 2.7.0
|
42
48
|
# @api private
|
43
|
-
def initialize(address, round_trip_time)
|
49
|
+
def initialize(address, round_trip_time, awaited: false)
|
44
50
|
@address = address
|
45
51
|
@round_trip_time = round_trip_time
|
52
|
+
@awaited = !!awaited
|
46
53
|
end
|
47
54
|
|
48
55
|
# Returns a concise yet useful summary of the event.
|
@@ -54,7 +61,7 @@ module Mongo
|
|
54
61
|
# @since 2.7.0
|
55
62
|
# @api experimental
|
56
63
|
def summary
|
57
|
-
"#<#{
|
64
|
+
"#<#{short_class_name}" +
|
58
65
|
" address=#{address}>"
|
59
66
|
end
|
60
67
|
end
|
@@ -32,7 +32,7 @@ module Mongo
|
|
32
32
|
def publish_sdam_event(topic, event)
|
33
33
|
return unless monitoring?
|
34
34
|
|
35
|
-
log_debug("EVENT: #{event.summary}")
|
35
|
+
#log_debug("EVENT: #{event.summary}")
|
36
36
|
monitoring.succeeded(topic, event)
|
37
37
|
end
|
38
38
|
|
@@ -45,13 +45,16 @@ module Mongo
|
|
45
45
|
private
|
46
46
|
|
47
47
|
def command_started(address, operation_id, payload,
|
48
|
-
socket_object_id: nil, connection_id: nil, connection_generation: nil
|
48
|
+
socket_object_id: nil, connection_id: nil, connection_generation: nil,
|
49
|
+
server_connection_id: nil
|
49
50
|
)
|
50
51
|
monitoring.started(
|
51
52
|
Monitoring::COMMAND,
|
52
53
|
Event::CommandStarted.generate(address, operation_id, payload,
|
53
54
|
socket_object_id: socket_object_id, connection_id: connection_id,
|
54
|
-
connection_generation: connection_generation
|
55
|
+
connection_generation: connection_generation,
|
56
|
+
server_connection_id: server_connection_id,
|
57
|
+
)
|
55
58
|
)
|
56
59
|
end
|
57
60
|
|
@@ -25,9 +25,17 @@ module Mongo
|
|
25
25
|
def log_event(event)
|
26
26
|
log_debug(
|
27
27
|
"Server description for #{event.address} changed from " +
|
28
|
-
"'#{event.previous_description.server_type}' to '#{event.new_description.server_type}'."
|
28
|
+
"'#{event.previous_description.server_type}' to '#{event.new_description.server_type}'#{awaited_indicator(event)}."
|
29
29
|
)
|
30
30
|
end
|
31
|
+
|
32
|
+
def awaited_indicator(event)
|
33
|
+
if event.awaited?
|
34
|
+
' [awaited]'
|
35
|
+
else
|
36
|
+
''
|
37
|
+
end
|
38
|
+
end
|
31
39
|
end
|
32
40
|
end
|
33
41
|
end
|
@@ -23,7 +23,7 @@ module Mongo
|
|
23
23
|
private
|
24
24
|
|
25
25
|
def log_event(event)
|
26
|
-
if event.previous_topology != event.new_topology
|
26
|
+
if event.previous_topology.class != event.new_topology.class
|
27
27
|
log_debug(
|
28
28
|
"Topology type '#{event.previous_topology.display_name}' changed to " +
|
29
29
|
"type '#{event.new_topology.display_name}'."
|
data/lib/mongo/operation.rb
CHANGED
@@ -14,25 +14,24 @@
|
|
14
14
|
|
15
15
|
module Mongo
|
16
16
|
module Operation
|
17
|
-
|
18
|
-
# Aggregate result wrapper.
|
19
|
-
#
|
20
|
-
# @since 2.0.0
|
21
17
|
class Aggregate
|
22
18
|
|
23
19
|
# Defines custom behavior of results in an aggregation context.
|
24
20
|
#
|
25
21
|
# @since 2.0.0
|
22
|
+
# @api semiprivate
|
26
23
|
class Result < Operation::Result
|
27
24
|
|
28
25
|
# The field name for the aggregation explain information.
|
29
26
|
#
|
30
27
|
# @since 2.0.5
|
28
|
+
# @api private
|
31
29
|
EXPLAIN = 'stages'.freeze
|
32
30
|
|
33
31
|
# The legacy field name for the aggregation explain information.
|
34
32
|
#
|
35
33
|
# @since 2.0.5
|
34
|
+
# @api private
|
36
35
|
EXPLAIN_LEGACY = 'serverPipeline'.freeze
|
37
36
|
|
38
37
|
# Get the cursor id for the result.
|
@@ -48,6 +47,7 @@ module Mongo
|
|
48
47
|
# @return [ Integer ] The cursor id.
|
49
48
|
#
|
50
49
|
# @since 2.0.0
|
50
|
+
# @api private
|
51
51
|
def cursor_id
|
52
52
|
cursor_document ? cursor_document[CURSOR_ID] : 0
|
53
53
|
end
|
@@ -62,8 +62,8 @@ module Mongo
|
|
62
62
|
end
|
63
63
|
|
64
64
|
# Get the documents for the aggregation result. This is either the
|
65
|
-
# first document's 'result' field, or if a cursor option was selected,
|
66
|
-
# it is the 'firstBatch' field in the 'cursor' field of the first
|
65
|
+
# first document's 'result' field, or if a cursor option was selected,
|
66
|
+
# it is the 'firstBatch' field in the 'cursor' field of the first
|
67
67
|
# document returned. Otherwise, it is an explain document.
|
68
68
|
#
|
69
69
|
# @example Get the documents.
|
@@ -72,10 +72,11 @@ module Mongo
|
|
72
72
|
# @return [ Array<BSON::Document> ] The documents.
|
73
73
|
#
|
74
74
|
# @since 2.0.0
|
75
|
+
# @api public
|
75
76
|
def documents
|
76
|
-
docs = reply.documents[0][RESULT]
|
77
|
+
docs = reply.documents[0][RESULT]
|
77
78
|
docs ||= cursor_document[FIRST_BATCH] if cursor_document
|
78
|
-
docs ||= explain_document
|
79
|
+
docs ||= explain_document
|
79
80
|
docs
|
80
81
|
end
|
81
82
|
|
@@ -20,8 +20,24 @@ module Mongo
|
|
20
20
|
# collection.
|
21
21
|
#
|
22
22
|
# @since 2.1.0
|
23
|
+
# @api semiprivate
|
23
24
|
class Result < Operation::Result
|
24
25
|
|
26
|
+
# Initialize a new result.
|
27
|
+
#
|
28
|
+
# @param [ Array<Protocol::Message> | nil ] replies The wire protocol replies, if any.
|
29
|
+
# @param [ Server::Description ] connection_description
|
30
|
+
# Server description of the server that performed the operation that
|
31
|
+
# this result is for.
|
32
|
+
# @param [ String ] database_name The name of the database that the
|
33
|
+
# query was sent to.
|
34
|
+
#
|
35
|
+
# @api private
|
36
|
+
def initialize(replies, connection_description, database_name)
|
37
|
+
super(replies, connection_description)
|
38
|
+
@database_name = database_name
|
39
|
+
end
|
40
|
+
|
25
41
|
# Get the namespace for the cursor.
|
26
42
|
#
|
27
43
|
# @example Get the namespace.
|
@@ -30,8 +46,9 @@ module Mongo
|
|
30
46
|
# @return [ String ] The namespace.
|
31
47
|
#
|
32
48
|
# @since 2.1.0
|
49
|
+
# @api private
|
33
50
|
def namespace
|
34
|
-
Database::NAMESPACES
|
51
|
+
"#{@database_name}.#{Database::NAMESPACES}"
|
35
52
|
end
|
36
53
|
end
|
37
54
|
end
|
@@ -19,6 +19,7 @@ module Mongo
|
|
19
19
|
# Defines custom behavior of results for a delete when part of a bulk write.
|
20
20
|
#
|
21
21
|
# @since 2.0.0
|
22
|
+
# @api semiprivate
|
22
23
|
class BulkResult < Operation::Result
|
23
24
|
include Aggregatable
|
24
25
|
|
@@ -30,6 +31,7 @@ module Mongo
|
|
30
31
|
# @return [ Integer ] The number of documents deleted.
|
31
32
|
#
|
32
33
|
# @since 2.0.0
|
34
|
+
# @api public
|
33
35
|
def n_removed
|
34
36
|
return 0 unless acknowledged?
|
35
37
|
@replies.reduce(0) do |n, reply|
|
@@ -19,6 +19,7 @@ module Mongo
|
|
19
19
|
# Defines custom behavior of results for a delete.
|
20
20
|
#
|
21
21
|
# @since 2.0.0
|
22
|
+
# @api semiprivate
|
22
23
|
class Result < Operation::Result
|
23
24
|
|
24
25
|
# Get the number of documents deleted.
|
@@ -29,10 +30,12 @@ module Mongo
|
|
29
30
|
# @return [ Integer ] The deleted count.
|
30
31
|
#
|
31
32
|
# @since 2.0.0
|
33
|
+
# @api public
|
32
34
|
def deleted_count
|
33
35
|
n
|
34
36
|
end
|
35
37
|
|
38
|
+
# @api public
|
36
39
|
def bulk_result
|
37
40
|
BulkResult.new(@replies, connection_description)
|
38
41
|
end
|