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
@@ -0,0 +1,86 @@
|
|
1
|
+
# Test SDAM error handling.
|
2
|
+
runOn:
|
3
|
+
# failCommand appName requirements
|
4
|
+
- minServerVersion: "4.4"
|
5
|
+
|
6
|
+
database_name: &database_name "sdam-tests"
|
7
|
+
collection_name: &collection_name "insert-network-error"
|
8
|
+
|
9
|
+
data: &data
|
10
|
+
- {_id: 1}
|
11
|
+
- {_id: 2}
|
12
|
+
|
13
|
+
tests:
|
14
|
+
- description: Reset server and pool after network error on insert
|
15
|
+
failPoint:
|
16
|
+
configureFailPoint: failCommand
|
17
|
+
mode: { times: 1 }
|
18
|
+
data:
|
19
|
+
failCommands: ["insert"]
|
20
|
+
closeConnection: true
|
21
|
+
appName: insertNetworkErrorTest
|
22
|
+
clientOptions:
|
23
|
+
retryWrites: false
|
24
|
+
appname: insertNetworkErrorTest
|
25
|
+
operations:
|
26
|
+
- name: insertMany
|
27
|
+
object: collection
|
28
|
+
arguments:
|
29
|
+
documents:
|
30
|
+
- _id: 3
|
31
|
+
- _id: 4
|
32
|
+
error: true
|
33
|
+
- name: waitForEvent
|
34
|
+
object: testRunner
|
35
|
+
arguments:
|
36
|
+
event: ServerMarkedUnknownEvent
|
37
|
+
count: 1
|
38
|
+
- name: waitForEvent
|
39
|
+
object: testRunner
|
40
|
+
arguments:
|
41
|
+
event: PoolClearedEvent
|
42
|
+
count: 1
|
43
|
+
# Perform another operation to ensure the node is rediscovered.
|
44
|
+
- name: insertMany
|
45
|
+
object: collection
|
46
|
+
arguments:
|
47
|
+
documents:
|
48
|
+
- _id: 5
|
49
|
+
- _id: 6
|
50
|
+
# Assert the server was marked Unknown and pool was cleared exactly once.
|
51
|
+
- name: assertEventCount
|
52
|
+
object: testRunner
|
53
|
+
arguments:
|
54
|
+
event: ServerMarkedUnknownEvent
|
55
|
+
count: 1
|
56
|
+
- name: assertEventCount
|
57
|
+
object: testRunner
|
58
|
+
arguments:
|
59
|
+
event: PoolClearedEvent
|
60
|
+
count: 1
|
61
|
+
|
62
|
+
expectations:
|
63
|
+
- command_started_event:
|
64
|
+
command:
|
65
|
+
insert: *collection_name
|
66
|
+
documents:
|
67
|
+
- _id: 3
|
68
|
+
- _id: 4
|
69
|
+
command_name: insert
|
70
|
+
database_name: *database_name
|
71
|
+
- command_started_event:
|
72
|
+
command:
|
73
|
+
insert: *collection_name
|
74
|
+
documents:
|
75
|
+
- _id: 5
|
76
|
+
- _id: 6
|
77
|
+
command_name: insert
|
78
|
+
database_name: *database_name
|
79
|
+
|
80
|
+
outcome:
|
81
|
+
collection:
|
82
|
+
data:
|
83
|
+
- {_id: 1}
|
84
|
+
- {_id: 2}
|
85
|
+
- {_id: 5}
|
86
|
+
- {_id: 6}
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# Test SDAM error handling.
|
2
|
+
runOn:
|
3
|
+
# failCommand appName requirements
|
4
|
+
- minServerVersion: "4.4"
|
5
|
+
|
6
|
+
database_name: &database_name "sdam-tests"
|
7
|
+
collection_name: &collection_name "insert-shutdown-error"
|
8
|
+
|
9
|
+
data: []
|
10
|
+
|
11
|
+
tests:
|
12
|
+
- description: Concurrent shutdown error on insert
|
13
|
+
clientOptions:
|
14
|
+
retryWrites: false
|
15
|
+
heartbeatFrequencyMS: 500
|
16
|
+
appname: shutdownErrorInsertTest
|
17
|
+
operations:
|
18
|
+
# Perform an operation to ensure the node is discovered.
|
19
|
+
- name: insertOne
|
20
|
+
object: collection
|
21
|
+
arguments:
|
22
|
+
document:
|
23
|
+
_id: 1
|
24
|
+
# Configure the next two inserts to fail with a non-timeout shutdown
|
25
|
+
# errors. Block the connection for 500ms to ensure both operations check
|
26
|
+
# out connections from the same pool generation.
|
27
|
+
- name: configureFailPoint
|
28
|
+
object: testRunner
|
29
|
+
arguments:
|
30
|
+
failPoint:
|
31
|
+
configureFailPoint: failCommand
|
32
|
+
mode: { times: 2 }
|
33
|
+
data:
|
34
|
+
failCommands: ["insert"]
|
35
|
+
appName: shutdownErrorInsertTest
|
36
|
+
errorCode: 91
|
37
|
+
blockConnection: true
|
38
|
+
blockTimeMS: 500
|
39
|
+
# Start threads.
|
40
|
+
- name: startThread
|
41
|
+
object: testRunner
|
42
|
+
arguments:
|
43
|
+
name: thread1
|
44
|
+
- name: startThread
|
45
|
+
object: testRunner
|
46
|
+
arguments:
|
47
|
+
name: thread2
|
48
|
+
# Perform concurrent insert operations. Both fail with shutdown errors.
|
49
|
+
- name: runOnThread
|
50
|
+
object: testRunner
|
51
|
+
arguments:
|
52
|
+
name: thread1
|
53
|
+
operation:
|
54
|
+
name: insertOne
|
55
|
+
object: collection
|
56
|
+
arguments:
|
57
|
+
document:
|
58
|
+
_id: 2
|
59
|
+
error: true
|
60
|
+
- name: runOnThread
|
61
|
+
object: testRunner
|
62
|
+
arguments:
|
63
|
+
name: thread2
|
64
|
+
operation:
|
65
|
+
name: insertOne
|
66
|
+
object: collection
|
67
|
+
arguments:
|
68
|
+
document:
|
69
|
+
_id: 3
|
70
|
+
error: true
|
71
|
+
# Stop threads.
|
72
|
+
- name: waitForThread
|
73
|
+
object: testRunner
|
74
|
+
arguments:
|
75
|
+
name: thread1
|
76
|
+
- name: waitForThread
|
77
|
+
object: testRunner
|
78
|
+
arguments:
|
79
|
+
name: thread2
|
80
|
+
# The first shutdown error should mark the server Unknown and then clear
|
81
|
+
# the pool.
|
82
|
+
- name: waitForEvent
|
83
|
+
object: testRunner
|
84
|
+
arguments:
|
85
|
+
event: ServerMarkedUnknownEvent
|
86
|
+
count: 1
|
87
|
+
- name: waitForEvent
|
88
|
+
object: testRunner
|
89
|
+
arguments:
|
90
|
+
event: PoolClearedEvent
|
91
|
+
count: 1
|
92
|
+
# Perform an operation to ensure the node is rediscovered.
|
93
|
+
- name: insertOne
|
94
|
+
object: collection
|
95
|
+
arguments:
|
96
|
+
document:
|
97
|
+
_id: 4
|
98
|
+
# Assert the server was marked Unknown and pool was cleared exactly once.
|
99
|
+
- name: assertEventCount
|
100
|
+
object: testRunner
|
101
|
+
arguments:
|
102
|
+
event: ServerMarkedUnknownEvent
|
103
|
+
count: 1
|
104
|
+
- name: assertEventCount
|
105
|
+
object: testRunner
|
106
|
+
arguments:
|
107
|
+
event: PoolClearedEvent
|
108
|
+
count: 1
|
109
|
+
|
110
|
+
# Order of operations is non-deterministic so we cannot check events.
|
111
|
+
outcome:
|
112
|
+
collection:
|
113
|
+
data:
|
114
|
+
- {_id: 1}
|
115
|
+
- {_id: 4}
|
@@ -0,0 +1,168 @@
|
|
1
|
+
# Test SDAM error handling.
|
2
|
+
runOn:
|
3
|
+
# failCommand appName requirements
|
4
|
+
- minServerVersion: "4.4"
|
5
|
+
|
6
|
+
database_name: &database_name "sdam-tests"
|
7
|
+
collection_name: &collection_name "isMaster-command-error"
|
8
|
+
|
9
|
+
data: []
|
10
|
+
|
11
|
+
tests:
|
12
|
+
- description: Command error on Monitor handshake
|
13
|
+
# Configure the initial handshake to fail with a command error.
|
14
|
+
# Use times: 2 so that the RTT isMaster fails as well.
|
15
|
+
failPoint:
|
16
|
+
configureFailPoint: failCommand
|
17
|
+
mode: { times: 2 }
|
18
|
+
data:
|
19
|
+
failCommands: ["isMaster"]
|
20
|
+
appName: commandErrorHandshakeTest
|
21
|
+
closeConnection: false
|
22
|
+
errorCode: 91 # ShutdownInProgress
|
23
|
+
clientOptions:
|
24
|
+
retryWrites: false
|
25
|
+
connectTimeoutMS: 250
|
26
|
+
heartbeatFrequencyMS: 500
|
27
|
+
appname: commandErrorHandshakeTest
|
28
|
+
operations:
|
29
|
+
# The command error on the initial handshake should mark the server
|
30
|
+
# Unknown (emitting a ServerDescriptionChangedEvent) and clear the pool.
|
31
|
+
- name: waitForEvent
|
32
|
+
object: testRunner
|
33
|
+
arguments:
|
34
|
+
event: ServerMarkedUnknownEvent
|
35
|
+
count: 1
|
36
|
+
# https://jira.mongodb.org/browse/DRIVERS-1314
|
37
|
+
# - name: waitForEvent
|
38
|
+
# object: testRunner
|
39
|
+
# arguments:
|
40
|
+
# event: PoolClearedEvent
|
41
|
+
# count: 1
|
42
|
+
# Perform an operation to ensure the node is discovered.
|
43
|
+
- name: insertMany
|
44
|
+
object: collection
|
45
|
+
arguments:
|
46
|
+
documents:
|
47
|
+
- _id: 1
|
48
|
+
- _id: 2
|
49
|
+
# We cannot assert the server was marked Unknown and pool was cleared an
|
50
|
+
# exact number of times because the RTT isMaster may or may not have
|
51
|
+
# triggered this failpoint as well.
|
52
|
+
# - name: assertEventCount
|
53
|
+
# object: testRunner
|
54
|
+
# arguments:
|
55
|
+
# event: ServerMarkedUnknownEvent
|
56
|
+
# count: 1
|
57
|
+
# - name: assertEventCount
|
58
|
+
# object: testRunner
|
59
|
+
# arguments:
|
60
|
+
# event: PoolClearedEvent
|
61
|
+
# count: 1
|
62
|
+
|
63
|
+
expectations:
|
64
|
+
- command_started_event:
|
65
|
+
command:
|
66
|
+
insert: *collection_name
|
67
|
+
documents:
|
68
|
+
- _id: 1
|
69
|
+
- _id: 2
|
70
|
+
command_name: insert
|
71
|
+
database_name: *database_name
|
72
|
+
|
73
|
+
outcome:
|
74
|
+
collection:
|
75
|
+
data:
|
76
|
+
- {_id: 1}
|
77
|
+
- {_id: 2}
|
78
|
+
|
79
|
+
- description: Command error on Monitor check
|
80
|
+
clientOptions:
|
81
|
+
retryWrites: false
|
82
|
+
connectTimeoutMS: 1000
|
83
|
+
heartbeatFrequencyMS: 500
|
84
|
+
appname: commandErrorCheckTest
|
85
|
+
operations:
|
86
|
+
# Perform an operation to ensure the node is discovered.
|
87
|
+
- name: insertMany
|
88
|
+
object: collection
|
89
|
+
arguments:
|
90
|
+
documents:
|
91
|
+
- _id: 1
|
92
|
+
- _id: 2
|
93
|
+
# Configure the next streaming isMaster check to fail with a command
|
94
|
+
# error.
|
95
|
+
# Use times: 2 so that the RTT isMaster is blocked as well.
|
96
|
+
- name: configureFailPoint
|
97
|
+
object: testRunner
|
98
|
+
arguments:
|
99
|
+
failPoint:
|
100
|
+
configureFailPoint: failCommand
|
101
|
+
mode: { times: 2 }
|
102
|
+
data:
|
103
|
+
failCommands: ["isMaster"]
|
104
|
+
appName: commandErrorCheckTest
|
105
|
+
closeConnection: false
|
106
|
+
blockConnection: true
|
107
|
+
blockTimeMS: 750
|
108
|
+
errorCode: 91 # ShutdownInProgress
|
109
|
+
# The command error on the next check should mark the server Unknown and
|
110
|
+
# clear the pool.
|
111
|
+
- name: waitForEvent
|
112
|
+
object: testRunner
|
113
|
+
arguments:
|
114
|
+
event: ServerMarkedUnknownEvent
|
115
|
+
# Ruby driver marks server unknown for each fail point hit
|
116
|
+
count: 2
|
117
|
+
# Ruby driver normally produces 2 pool clears, but sometimes only 1
|
118
|
+
# - name: waitForEvent
|
119
|
+
# object: testRunner
|
120
|
+
# arguments:
|
121
|
+
# event: PoolClearedEvent
|
122
|
+
# count: 1
|
123
|
+
# Perform an operation to ensure the node is rediscovered.
|
124
|
+
- name: insertMany
|
125
|
+
object: collection
|
126
|
+
arguments:
|
127
|
+
documents:
|
128
|
+
- _id: 3
|
129
|
+
- _id: 4
|
130
|
+
# Assert the server was marked Unknown and pool was cleared exactly once.
|
131
|
+
- name: assertEventCount
|
132
|
+
object: testRunner
|
133
|
+
arguments:
|
134
|
+
event: ServerMarkedUnknownEvent
|
135
|
+
# Ruby driver marks server unknown for each fail point hit
|
136
|
+
count: 2
|
137
|
+
# Ruby driver normally produces 2 pool clears, but sometimes only 1
|
138
|
+
# - name: waitForEvent
|
139
|
+
# object: testRunner
|
140
|
+
# arguments:
|
141
|
+
# event: PoolClearedEvent
|
142
|
+
# count: 1
|
143
|
+
|
144
|
+
expectations:
|
145
|
+
- command_started_event:
|
146
|
+
command:
|
147
|
+
insert: *collection_name
|
148
|
+
documents:
|
149
|
+
- _id: 1
|
150
|
+
- _id: 2
|
151
|
+
command_name: insert
|
152
|
+
database_name: *database_name
|
153
|
+
- command_started_event:
|
154
|
+
command:
|
155
|
+
insert: *collection_name
|
156
|
+
documents:
|
157
|
+
- _id: 3
|
158
|
+
- _id: 4
|
159
|
+
command_name: insert
|
160
|
+
database_name: *database_name
|
161
|
+
|
162
|
+
outcome:
|
163
|
+
collection:
|
164
|
+
data:
|
165
|
+
- {_id: 1}
|
166
|
+
- {_id: 2}
|
167
|
+
- {_id: 3}
|
168
|
+
- {_id: 4}
|
@@ -0,0 +1,162 @@
|
|
1
|
+
# Test SDAM error handling.
|
2
|
+
runOn:
|
3
|
+
# failCommand appName requirements
|
4
|
+
- minServerVersion: "4.4"
|
5
|
+
|
6
|
+
database_name: &database_name "sdam-tests"
|
7
|
+
collection_name: &collection_name "isMaster-network-error"
|
8
|
+
|
9
|
+
data: []
|
10
|
+
|
11
|
+
tests:
|
12
|
+
- description: Network error on Monitor handshake
|
13
|
+
# Configure the initial handshake to fail with a network error.
|
14
|
+
# Use times: 2 so that the RTT isMaster fails as well.
|
15
|
+
failPoint:
|
16
|
+
configureFailPoint: failCommand
|
17
|
+
mode: { times: 2 }
|
18
|
+
data:
|
19
|
+
failCommands: ["isMaster"]
|
20
|
+
appName: networkErrorHandshakeTest
|
21
|
+
closeConnection: true
|
22
|
+
clientOptions:
|
23
|
+
retryWrites: false
|
24
|
+
connectTimeoutMS: 250
|
25
|
+
heartbeatFrequencyMS: 500
|
26
|
+
appname: networkErrorHandshakeTest
|
27
|
+
operations:
|
28
|
+
# The network error on the initial handshake should mark the server
|
29
|
+
# Unknown (emitting a ServerDescriptionChangedEvent) and clear the pool.
|
30
|
+
- name: waitForEvent
|
31
|
+
object: testRunner
|
32
|
+
arguments:
|
33
|
+
event: ServerMarkedUnknownEvent
|
34
|
+
count: 1
|
35
|
+
# https://jira.mongodb.org/browse/DRIVERS-1314
|
36
|
+
# - name: waitForEvent
|
37
|
+
# object: testRunner
|
38
|
+
# arguments:
|
39
|
+
# event: PoolClearedEvent
|
40
|
+
# count: 1
|
41
|
+
# Perform an operation to ensure the node is discovered.
|
42
|
+
- name: insertMany
|
43
|
+
object: collection
|
44
|
+
arguments:
|
45
|
+
documents:
|
46
|
+
- _id: 1
|
47
|
+
- _id: 2
|
48
|
+
# We cannot assert the server was marked Unknown and pool was cleared an
|
49
|
+
# exact number of times because the RTT isMaster may or may not have
|
50
|
+
# triggered this failpoint as well.
|
51
|
+
# - name: assertEventCount
|
52
|
+
# object: testRunner
|
53
|
+
# arguments:
|
54
|
+
# event: ServerMarkedUnknownEvent
|
55
|
+
# count: 1
|
56
|
+
# - name: assertEventCount
|
57
|
+
# object: testRunner
|
58
|
+
# arguments:
|
59
|
+
# event: PoolClearedEvent
|
60
|
+
# count: 1
|
61
|
+
|
62
|
+
expectations:
|
63
|
+
- command_started_event:
|
64
|
+
command:
|
65
|
+
insert: *collection_name
|
66
|
+
documents:
|
67
|
+
- _id: 1
|
68
|
+
- _id: 2
|
69
|
+
command_name: insert
|
70
|
+
database_name: *database_name
|
71
|
+
|
72
|
+
outcome:
|
73
|
+
collection:
|
74
|
+
data:
|
75
|
+
- {_id: 1}
|
76
|
+
- {_id: 2}
|
77
|
+
|
78
|
+
- description: Network error on Monitor check
|
79
|
+
clientOptions:
|
80
|
+
retryWrites: false
|
81
|
+
connectTimeoutMS: 250
|
82
|
+
heartbeatFrequencyMS: 500
|
83
|
+
appname: networkErrorCheckTest
|
84
|
+
operations:
|
85
|
+
# Perform an operation to ensure the node is discovered.
|
86
|
+
- name: insertMany
|
87
|
+
object: collection
|
88
|
+
arguments:
|
89
|
+
documents:
|
90
|
+
- _id: 1
|
91
|
+
- _id: 2
|
92
|
+
# Configure the next streaming isMaster check to fail with a non-timeout
|
93
|
+
# network error. Use times: 2 to ensure that the the Monitor check fails
|
94
|
+
# since the RTT isMaster may trigger this failpoint as well.
|
95
|
+
- name: configureFailPoint
|
96
|
+
object: testRunner
|
97
|
+
arguments:
|
98
|
+
failPoint:
|
99
|
+
configureFailPoint: failCommand
|
100
|
+
mode: { times: 2 }
|
101
|
+
data:
|
102
|
+
failCommands: ["isMaster"]
|
103
|
+
appName: networkErrorCheckTest
|
104
|
+
closeConnection: true
|
105
|
+
# The network error on the next check should mark the server Unknown and
|
106
|
+
# clear the pool.
|
107
|
+
- name: waitForEvent
|
108
|
+
object: testRunner
|
109
|
+
arguments:
|
110
|
+
event: ServerMarkedUnknownEvent
|
111
|
+
count: 1
|
112
|
+
- name: waitForEvent
|
113
|
+
object: testRunner
|
114
|
+
arguments:
|
115
|
+
event: PoolClearedEvent
|
116
|
+
count: 1
|
117
|
+
# Perform an operation to ensure the node is rediscovered.
|
118
|
+
- name: insertMany
|
119
|
+
object: collection
|
120
|
+
arguments:
|
121
|
+
documents:
|
122
|
+
- _id: 3
|
123
|
+
- _id: 4
|
124
|
+
# We cannot assert the server was marked Unknown and pool was cleared an
|
125
|
+
# exact number of times because the RTT isMaster may or may not have
|
126
|
+
# triggered this failpoint as well.
|
127
|
+
# - name: assertEventCount
|
128
|
+
# object: testRunner
|
129
|
+
# arguments:
|
130
|
+
# event: ServerMarkedUnknownEvent
|
131
|
+
# count: 1
|
132
|
+
# - name: assertEventCount
|
133
|
+
# object: testRunner
|
134
|
+
# arguments:
|
135
|
+
# event: PoolClearedEvent
|
136
|
+
# count: 1
|
137
|
+
|
138
|
+
expectations:
|
139
|
+
- command_started_event:
|
140
|
+
command:
|
141
|
+
insert: *collection_name
|
142
|
+
documents:
|
143
|
+
- _id: 1
|
144
|
+
- _id: 2
|
145
|
+
command_name: insert
|
146
|
+
database_name: *database_name
|
147
|
+
- command_started_event:
|
148
|
+
command:
|
149
|
+
insert: *collection_name
|
150
|
+
documents:
|
151
|
+
- _id: 3
|
152
|
+
- _id: 4
|
153
|
+
command_name: insert
|
154
|
+
database_name: *database_name
|
155
|
+
|
156
|
+
outcome:
|
157
|
+
collection:
|
158
|
+
data:
|
159
|
+
- {_id: 1}
|
160
|
+
- {_id: 2}
|
161
|
+
- {_id: 3}
|
162
|
+
- {_id: 4}
|