mongo 2.8.0 → 2.9.0.rc0

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.
Files changed (276) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Rakefile +12 -0
  5. data/lib/mongo.rb +15 -1
  6. data/lib/mongo/address/ipv6.rb +0 -2
  7. data/lib/mongo/auth/scram/conversation.rb +0 -3
  8. data/lib/mongo/bulk_write/result_combiner.rb +12 -2
  9. data/lib/mongo/client.rb +59 -6
  10. data/lib/mongo/cluster.rb +19 -8
  11. data/lib/mongo/cluster/reapers/cursor_reaper.rb +0 -2
  12. data/lib/mongo/cluster/reapers/socket_reaper.rb +12 -9
  13. data/lib/mongo/collection.rb +1 -1
  14. data/lib/mongo/collection/view/aggregation.rb +5 -1
  15. data/lib/mongo/collection/view/builder/map_reduce.rb +1 -1
  16. data/lib/mongo/collection/view/change_stream.rb +30 -10
  17. data/lib/mongo/collection/view/iterable.rb +13 -6
  18. data/lib/mongo/collection/view/map_reduce.rb +12 -10
  19. data/lib/mongo/collection/view/readable.rb +19 -14
  20. data/lib/mongo/cursor.rb +12 -8
  21. data/lib/mongo/database.rb +10 -7
  22. data/lib/mongo/database/view.rb +18 -11
  23. data/lib/mongo/error.rb +2 -2
  24. data/lib/mongo/error/connection_check_out_timeout.rb +49 -0
  25. data/lib/mongo/error/operation_failure.rb +9 -9
  26. data/lib/mongo/error/parser.rb +25 -3
  27. data/lib/mongo/error/pool_closed_error.rb +43 -0
  28. data/lib/mongo/error/sdam_error_detection.rb +18 -0
  29. data/lib/mongo/grid/file/chunk.rb +0 -2
  30. data/lib/mongo/grid/fs_bucket.rb +26 -12
  31. data/lib/mongo/grid/stream/read.rb +36 -21
  32. data/lib/mongo/index/view.rb +11 -7
  33. data/lib/mongo/logger.rb +0 -2
  34. data/lib/mongo/monitoring.rb +31 -0
  35. data/lib/mongo/monitoring/cmap_log_subscriber.rb +53 -0
  36. data/lib/mongo/monitoring/event.rb +1 -0
  37. data/lib/mongo/monitoring/event/cmap.rb +25 -0
  38. data/lib/mongo/monitoring/event/cmap/base.rb +28 -0
  39. data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +78 -0
  40. data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +56 -0
  41. data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +63 -0
  42. data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +64 -0
  43. data/lib/mongo/monitoring/event/cmap/connection_closed.rb +103 -0
  44. data/lib/mongo/monitoring/event/cmap/connection_created.rb +64 -0
  45. data/lib/mongo/monitoring/event/cmap/connection_ready.rb +64 -0
  46. data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +57 -0
  47. data/lib/mongo/monitoring/event/cmap/pool_closed.rb +57 -0
  48. data/lib/mongo/monitoring/event/cmap/pool_created.rb +63 -0
  49. data/lib/mongo/monitoring/event/command_started.rb +12 -3
  50. data/lib/mongo/monitoring/publishable.rb +10 -2
  51. data/lib/mongo/operation.rb +0 -1
  52. data/lib/mongo/operation/find/legacy/result.rb +1 -0
  53. data/lib/mongo/operation/list_collections/result.rb +7 -1
  54. data/lib/mongo/operation/result.rb +10 -1
  55. data/lib/mongo/operation/shared/executable.rb +15 -0
  56. data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +29 -0
  57. data/lib/mongo/operation/shared/specifiable.rb +0 -16
  58. data/lib/mongo/operation/update/legacy/result.rb +1 -0
  59. data/lib/mongo/protocol/compressed.rb +0 -2
  60. data/lib/mongo/protocol/msg.rb +25 -2
  61. data/lib/mongo/retryable.rb +171 -33
  62. data/lib/mongo/server.rb +26 -7
  63. data/lib/mongo/server/app_metadata.rb +0 -2
  64. data/lib/mongo/server/connectable.rb +8 -2
  65. data/lib/mongo/server/connection.rb +83 -13
  66. data/lib/mongo/server/connection_base.rb +1 -1
  67. data/lib/mongo/server/connection_pool.rb +439 -43
  68. data/lib/mongo/server/monitor/connection.rb +4 -1
  69. data/lib/mongo/session.rb +37 -5
  70. data/lib/mongo/session/session_pool.rb +2 -2
  71. data/lib/mongo/socket.rb +0 -2
  72. data/lib/mongo/socket/ssl.rb +0 -2
  73. data/lib/mongo/uri.rb +127 -66
  74. data/lib/mongo/uri/srv_protocol.rb +35 -13
  75. data/lib/mongo/version.rb +1 -1
  76. data/spec/README.md +190 -63
  77. data/spec/integration/change_stream_spec.rb +64 -0
  78. data/spec/integration/command_spec.rb +0 -7
  79. data/spec/integration/error_detection_spec.rb +39 -0
  80. data/spec/integration/read_concern.rb +83 -0
  81. data/spec/integration/retryable_writes_spec.rb +6 -50
  82. data/spec/integration/sdam_error_handling_spec.rb +60 -7
  83. data/spec/integration/ssl_uri_options_spec.rb +24 -0
  84. data/spec/integration/step_down_spec.rb +197 -0
  85. data/spec/lite_spec_helper.rb +4 -0
  86. data/spec/mongo/client_construction_spec.rb +42 -17
  87. data/spec/mongo/client_spec.rb +32 -1
  88. data/spec/mongo/cluster/socket_reaper_spec.rb +2 -2
  89. data/spec/mongo/cluster_spec.rb +36 -2
  90. data/spec/mongo/collection/view/aggregation_spec.rb +2 -0
  91. data/spec/mongo/collection/view/change_stream_spec.rb +28 -28
  92. data/spec/mongo/collection/view/readable_spec.rb +1 -1
  93. data/spec/mongo/collection/view_spec.rb +3 -1
  94. data/spec/mongo/cursor_spec.rb +5 -5
  95. data/spec/mongo/error/parser_spec.rb +61 -1
  96. data/spec/mongo/grid/stream/read_spec.rb +2 -2
  97. data/spec/mongo/monitoring/event/cmap/connection_check_out_failed_spec.rb +23 -0
  98. data/spec/mongo/monitoring/event/cmap/connection_check_out_started_spec.rb +19 -0
  99. data/spec/mongo/monitoring/event/cmap/connection_checked_in_spec.rb +23 -0
  100. data/spec/mongo/monitoring/event/cmap/connection_checked_out_spec.rb +23 -0
  101. data/spec/mongo/monitoring/event/cmap/connection_closed_spec.rb +27 -0
  102. data/spec/mongo/monitoring/event/cmap/connection_created_spec.rb +24 -0
  103. data/spec/mongo/monitoring/event/cmap/connection_ready_spec.rb +24 -0
  104. data/spec/mongo/monitoring/event/cmap/pool_cleared_spec.rb +19 -0
  105. data/spec/mongo/monitoring/event/cmap/pool_closed_spec.rb +19 -0
  106. data/spec/mongo/monitoring/event/cmap/pool_created_spec.rb +26 -0
  107. data/spec/mongo/operation/delete/bulk_spec.rb +1 -6
  108. data/spec/mongo/operation/delete/command_spec.rb +1 -1
  109. data/spec/mongo/operation/delete/op_msg_spec.rb +1 -1
  110. data/spec/mongo/operation/delete_spec.rb +4 -4
  111. data/spec/mongo/operation/insert/bulk_spec.rb +1 -1
  112. data/spec/mongo/operation/insert/command_spec.rb +1 -1
  113. data/spec/mongo/operation/insert/op_msg_spec.rb +1 -1
  114. data/spec/mongo/operation/update/bulk_spec.rb +1 -1
  115. data/spec/mongo/operation/update/command_spec.rb +2 -2
  116. data/spec/mongo/operation/update/op_msg_spec.rb +2 -2
  117. data/spec/mongo/protocol/msg_spec.rb +11 -0
  118. data/spec/mongo/retryable_spec.rb +78 -25
  119. data/spec/mongo/server/connection_pool_spec.rb +661 -126
  120. data/spec/mongo/server/connection_spec.rb +55 -7
  121. data/spec/mongo/server_spec.rb +5 -0
  122. data/spec/mongo/uri/srv_protocol_spec.rb +135 -2
  123. data/spec/mongo/uri_option_parsing_spec.rb +511 -0
  124. data/spec/mongo/uri_spec.rb +42 -6
  125. data/spec/spec_helper.rb +1 -84
  126. data/spec/spec_tests/cmap_spec.rb +50 -0
  127. data/spec/spec_tests/command_monitoring_spec.rb +7 -18
  128. data/spec/spec_tests/crud_spec.rb +3 -49
  129. data/spec/spec_tests/data/cmap/connection-must-have-id.yml +21 -0
  130. data/spec/spec_tests/data/cmap/connection-must-order-ids.yml +21 -0
  131. data/spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml +24 -0
  132. data/spec/spec_tests/data/cmap/pool-checkin-destroy-stale.yml +24 -0
  133. data/spec/spec_tests/data/cmap/pool-checkin-make-available.yml +21 -0
  134. data/spec/spec_tests/data/cmap/pool-checkin.yml +18 -0
  135. data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +13 -0
  136. data/spec/spec_tests/data/cmap/pool-checkout-error-closed.yml +28 -0
  137. data/spec/spec_tests/data/cmap/pool-checkout-multiple.yml +34 -0
  138. data/spec/spec_tests/data/cmap/pool-checkout-no-idle.yml +31 -0
  139. data/spec/spec_tests/data/cmap/pool-checkout-no-stale.yml +29 -0
  140. data/spec/spec_tests/data/cmap/pool-close-destroy-conns.yml +26 -0
  141. data/spec/spec_tests/data/cmap/pool-close.yml +11 -0
  142. data/spec/spec_tests/data/cmap/pool-create-max-size.yml +56 -0
  143. data/spec/spec_tests/data/cmap/pool-create-min-size.yml +27 -0
  144. data/spec/spec_tests/data/cmap/pool-create-with-options.yml +20 -0
  145. data/spec/spec_tests/data/cmap/pool-create.yml +12 -0
  146. data/spec/spec_tests/data/cmap/wait-queue-fairness.yml +94 -0
  147. data/spec/spec_tests/data/cmap/wait-queue-timeout.yml +41 -0
  148. data/spec/spec_tests/data/retryable_reads/aggregate-serverErrors.yml +157 -0
  149. data/spec/spec_tests/data/retryable_reads/aggregate.yml +87 -0
  150. data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch-serverErrors.yml +149 -0
  151. data/spec/spec_tests/data/retryable_reads/changeStreams-client.watch.yml +61 -0
  152. data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch-serverErrors.yml +149 -0
  153. data/spec/spec_tests/data/retryable_reads/changeStreams-db.coll.watch.yml +65 -0
  154. data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch-serverErrors.yml +153 -0
  155. data/spec/spec_tests/data/retryable_reads/changeStreams-db.watch.yml +61 -0
  156. data/spec/spec_tests/data/retryable_reads/count-serverErrors.yml +150 -0
  157. data/spec/spec_tests/data/retryable_reads/count.yml +64 -0
  158. data/spec/spec_tests/data/retryable_reads/countDocuments-serverErrors.yml +150 -0
  159. data/spec/spec_tests/data/retryable_reads/countDocuments.yml +64 -0
  160. data/spec/spec_tests/data/retryable_reads/distinct-serverErrors.yml +156 -0
  161. data/spec/spec_tests/data/retryable_reads/distinct.yml +71 -0
  162. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors.yml +148 -0
  163. data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount.yml +62 -0
  164. data/spec/spec_tests/data/retryable_reads/find-serverErrors.yml +160 -0
  165. data/spec/spec_tests/data/retryable_reads/find.yml +86 -0
  166. data/spec/spec_tests/data/retryable_reads/findOne-serverErrors.yml +154 -0
  167. data/spec/spec_tests/data/retryable_reads/findOne.yml +68 -0
  168. data/spec/spec_tests/data/retryable_reads/gridfs-download-serverErrors.yml +173 -0
  169. data/spec/spec_tests/data/retryable_reads/gridfs-download.yml +79 -0
  170. data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName-serverErrors.yml +174 -0
  171. data/spec/spec_tests/data/retryable_reads/gridfs-downloadByName.yml +79 -0
  172. data/spec/spec_tests/data/retryable_reads/listCollectionNames-serverErrors.yml +143 -0
  173. data/spec/spec_tests/data/retryable_reads/listCollectionNames.yml +59 -0
  174. data/spec/spec_tests/data/retryable_reads/listCollectionObjects-serverErrors.yml +144 -0
  175. data/spec/spec_tests/data/retryable_reads/listCollectionObjects.yml +59 -0
  176. data/spec/spec_tests/data/retryable_reads/listCollections-serverErrors.yml +143 -0
  177. data/spec/spec_tests/data/retryable_reads/listCollections.yml +59 -0
  178. data/spec/spec_tests/data/retryable_reads/listDatabaseNames-serverErrors.yml +143 -0
  179. data/spec/spec_tests/data/retryable_reads/listDatabaseNames.yml +59 -0
  180. data/spec/spec_tests/data/retryable_reads/listDatabaseObjects-serverErrors.yml +144 -0
  181. data/spec/spec_tests/data/retryable_reads/listDatabaseObjects.yml +59 -0
  182. data/spec/spec_tests/data/retryable_reads/listDatabases-serverErrors.yml +144 -0
  183. data/spec/spec_tests/data/retryable_reads/listDatabases.yml +59 -0
  184. data/spec/spec_tests/data/retryable_reads/listIndexNames-serverErrors.yml +144 -0
  185. data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +60 -0
  186. data/spec/spec_tests/data/retryable_reads/listIndexes-serverErrors.yml +145 -0
  187. data/spec/spec_tests/data/retryable_reads/listIndexes.yml +60 -0
  188. data/spec/spec_tests/data/retryable_reads/mapReduce.yml +60 -0
  189. data/spec/spec_tests/data/retryable_writes/bulkWrite-serverErrors.yml +10 -7
  190. data/spec/spec_tests/data/retryable_writes/bulkWrite.yml +15 -22
  191. data/spec/spec_tests/data/retryable_writes/deleteMany.yml +22 -0
  192. data/spec/spec_tests/data/retryable_writes/deleteOne-serverErrors.yml +8 -7
  193. data/spec/spec_tests/data/retryable_writes/deleteOne.yml +5 -8
  194. data/spec/spec_tests/data/retryable_writes/findOneAndDelete-serverErrors.yml +8 -7
  195. data/spec/spec_tests/data/retryable_writes/findOneAndDelete.yml +5 -8
  196. data/spec/spec_tests/data/retryable_writes/findOneAndReplace-serverErrors.yml +8 -7
  197. data/spec/spec_tests/data/retryable_writes/findOneAndReplace.yml +5 -8
  198. data/spec/spec_tests/data/retryable_writes/findOneAndUpdate-serverErrors.yml +8 -7
  199. data/spec/spec_tests/data/retryable_writes/findOneAndUpdate.yml +5 -8
  200. data/spec/spec_tests/data/retryable_writes/insertMany-serverErrors.yml +8 -7
  201. data/spec/spec_tests/data/retryable_writes/insertMany.yml +5 -8
  202. data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +10 -45
  203. data/spec/spec_tests/data/retryable_writes/insertOne.yml +5 -8
  204. data/spec/spec_tests/data/retryable_writes/replaceOne-serverErrors.yml +8 -7
  205. data/spec/spec_tests/data/retryable_writes/replaceOne.yml +5 -8
  206. data/spec/spec_tests/data/retryable_writes/updateMany.yml +27 -0
  207. data/spec/spec_tests/data/retryable_writes/updateOne-serverErrors.yml +8 -7
  208. data/spec/spec_tests/data/retryable_writes/updateOne.yml +5 -14
  209. data/spec/spec_tests/data/transactions/abort.yml +7 -2
  210. data/spec/spec_tests/data/transactions/bulk.yml +7 -2
  211. data/spec/spec_tests/data/transactions/causal-consistency.yml +11 -4
  212. data/spec/spec_tests/data/transactions/commit.yml +11 -4
  213. data/spec/spec_tests/data/transactions/count.yml +64 -0
  214. data/spec/spec_tests/data/transactions/delete.yml +7 -2
  215. data/spec/spec_tests/data/transactions/error-labels.yml +8 -2
  216. data/spec/spec_tests/data/transactions/errors.yml +7 -2
  217. data/spec/spec_tests/data/transactions/findOneAndDelete.yml +7 -2
  218. data/spec/spec_tests/data/transactions/findOneAndReplace.yml +7 -2
  219. data/spec/spec_tests/data/transactions/findOneAndUpdate.yml +7 -2
  220. data/spec/spec_tests/data/transactions/insert.yml +9 -2
  221. data/spec/spec_tests/data/transactions/isolation.yml +7 -2
  222. data/spec/spec_tests/data/transactions/read-concern.yml +15 -6
  223. data/spec/spec_tests/data/transactions/read-pref.yml +7 -2
  224. data/spec/spec_tests/data/transactions/reads.yml +8 -48
  225. data/spec/spec_tests/data/transactions/retryable-abort.yml +7 -2
  226. data/spec/spec_tests/data/transactions/retryable-commit.yml +7 -2
  227. data/spec/spec_tests/data/transactions/retryable-writes.yml +7 -2
  228. data/spec/spec_tests/data/transactions/run-command.yml +7 -2
  229. data/spec/spec_tests/data/transactions/transaction-options.yml +7 -2
  230. data/spec/spec_tests/data/transactions/update.yml +7 -2
  231. data/spec/spec_tests/data/transactions/write-concern.yml +7 -2
  232. data/spec/spec_tests/data/transactions_api/callback-aborts.yml +6 -1
  233. data/spec/spec_tests/data/transactions_api/callback-commits.yml +6 -1
  234. data/spec/spec_tests/data/transactions_api/callback-retry.yml +6 -1
  235. data/spec/spec_tests/data/transactions_api/commit-retry.yml +6 -1
  236. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror-4.2.yml +6 -3
  237. data/spec/spec_tests/data/transactions_api/commit-transienttransactionerror.yml +6 -1
  238. data/spec/spec_tests/data/transactions_api/commit-writeconcernerror.yml +6 -1
  239. data/spec/spec_tests/data/transactions_api/commit.yml +6 -1
  240. data/spec/spec_tests/data/transactions_api/transaction-options.yml +6 -1
  241. data/spec/spec_tests/retryable_reads_spec.rb +11 -0
  242. data/spec/spec_tests/retryable_writes_spec.rb +4 -69
  243. data/spec/spec_tests/transactions_api_spec.rb +42 -37
  244. data/spec/spec_tests/transactions_spec.rb +42 -33
  245. data/spec/support/authorization.rb +12 -0
  246. data/spec/support/change_streams/operation.rb +1 -1
  247. data/spec/support/client_registry.rb +20 -0
  248. data/spec/support/cluster_config.rb +16 -15
  249. data/spec/support/cluster_tools.rb +346 -0
  250. data/spec/support/cmap.rb +367 -0
  251. data/spec/support/cmap/verifier.rb +46 -0
  252. data/spec/support/command_monitoring.rb +4 -6
  253. data/spec/support/common_shortcuts.rb +6 -0
  254. data/spec/support/connection_string.rb +2 -2
  255. data/spec/support/crud.rb +171 -184
  256. data/spec/support/crud/operation.rb +43 -0
  257. data/spec/support/crud/outcome.rb +53 -0
  258. data/spec/support/crud/read.rb +102 -12
  259. data/spec/support/crud/requirement.rb +69 -0
  260. data/spec/support/crud/spec.rb +68 -0
  261. data/spec/support/crud/test.rb +141 -0
  262. data/spec/support/crud/verifier.rb +96 -18
  263. data/spec/support/crud/write.rb +18 -3
  264. data/spec/support/event_subscriber.rb +15 -0
  265. data/spec/support/primary_socket.rb +2 -2
  266. data/spec/support/spec_config.rb +89 -20
  267. data/spec/support/transactions.rb +2 -306
  268. data/spec/support/transactions/operation.rb +7 -7
  269. data/spec/support/transactions/spec.rb +28 -0
  270. data/spec/support/transactions/test.rb +191 -0
  271. data/spec/support/utils.rb +123 -0
  272. metadata +202 -9
  273. metadata.gz.sig +0 -0
  274. data/lib/mongo/server/connection_pool/queue.rb +0 -359
  275. data/spec/mongo/server/connection_pool/queue_spec.rb +0 -353
  276. data/spec/support/transactions/verifier.rb +0 -97
@@ -0,0 +1,59 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["single", "replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
9
+ database_name: &database_name "retryable-reads-tests"
10
+ collection_name: &collection_name "coll"
11
+
12
+ data: []
13
+
14
+ tests:
15
+ -
16
+ description: "ListDatabaseNames succeeds on first attempt"
17
+ operations:
18
+ - &retryable_operation
19
+ name: listDatabaseNames
20
+ object: client
21
+ expectations:
22
+ - &retryable_command_started_event
23
+ command_started_event:
24
+ command:
25
+ listDatabases: 1
26
+ -
27
+ description: "ListDatabaseNames succeeds on second attempt"
28
+ failPoint: &failCommand_failPoint
29
+ configureFailPoint: failCommand
30
+ mode: { times: 1 }
31
+ data:
32
+ failCommands:
33
+ - listDatabases
34
+ closeConnection: true
35
+ operations: [*retryable_operation]
36
+ expectations:
37
+ - *retryable_command_started_event
38
+ - *retryable_command_started_event
39
+ -
40
+ description: "ListDatabaseNames fails on first attempt"
41
+ clientOptions:
42
+ retryReads: false
43
+ failPoint: *failCommand_failPoint
44
+ operations:
45
+ - &retryable_operation_fails
46
+ <<: *retryable_operation
47
+ error: true
48
+ expectations:
49
+ - *retryable_command_started_event
50
+ -
51
+ description: "ListDatabaseNames fails on second attempt"
52
+ failPoint:
53
+ <<: *failCommand_failPoint
54
+ mode: { times: 2 }
55
+ operations: [*retryable_operation_fails]
56
+ expectations:
57
+ - *retryable_command_started_event
58
+ - *retryable_command_started_event
59
+
@@ -0,0 +1,144 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["single", "replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
9
+ database_name: &database_name "retryable-reads-tests"
10
+ collection_name: &collection_name "coll"
11
+
12
+ data: []
13
+
14
+ tests:
15
+ -
16
+ description: "ListDatabaseObjects succeeds after InterruptedAtShutdown"
17
+ failPoint: &failCommand_failPoint
18
+ configureFailPoint: failCommand
19
+ mode: { times: 1 }
20
+ data: { failCommands: [listDatabases], errorCode: 11600 }
21
+ operations:
22
+ - &retryable_operation
23
+ name: listDatabaseObjects
24
+ object: client
25
+ expectations:
26
+ - &retryable_command_started_event
27
+ command_started_event:
28
+ command:
29
+ listDatabases: 1
30
+ - *retryable_command_started_event
31
+ -
32
+ description: "ListDatabaseObjects succeeds after InterruptedDueToStepDown"
33
+ failPoint:
34
+ <<: *failCommand_failPoint
35
+ data: { failCommands: [listDatabases], errorCode: 11602 }
36
+ operations: [*retryable_operation]
37
+ expectations:
38
+ - *retryable_command_started_event
39
+ - *retryable_command_started_event
40
+ -
41
+ description: "ListDatabaseObjects succeeds after NotMaster"
42
+ failPoint:
43
+ <<: *failCommand_failPoint
44
+ data: { failCommands: [listDatabases], errorCode: 10107 }
45
+ operations: [*retryable_operation]
46
+ expectations:
47
+ - *retryable_command_started_event
48
+ - *retryable_command_started_event
49
+ -
50
+ description: "ListDatabaseObjects succeeds after NotMasterNoSlaveOk"
51
+ failPoint:
52
+ <<: *failCommand_failPoint
53
+ data: { failCommands: [listDatabases], errorCode: 13435 }
54
+ operations: [*retryable_operation]
55
+ expectations:
56
+ - *retryable_command_started_event
57
+ - *retryable_command_started_event
58
+ -
59
+ description: "ListDatabaseObjects succeeds after NotMasterOrSecondary"
60
+ failPoint:
61
+ <<: *failCommand_failPoint
62
+ data: { failCommands: [listDatabases], errorCode: 13436 }
63
+ operations: [*retryable_operation]
64
+ expectations:
65
+ - *retryable_command_started_event
66
+ - *retryable_command_started_event
67
+ -
68
+ description: "ListDatabaseObjects succeeds after PrimarySteppedDown"
69
+ failPoint:
70
+ <<: *failCommand_failPoint
71
+ data: { failCommands: [listDatabases], errorCode: 189 }
72
+ operations: [*retryable_operation]
73
+ expectations:
74
+ - *retryable_command_started_event
75
+ - *retryable_command_started_event
76
+ -
77
+ description: "ListDatabaseObjects succeeds after ShutdownInProgress"
78
+ failPoint:
79
+ <<: *failCommand_failPoint
80
+ data: { failCommands: [listDatabases], errorCode: 91 }
81
+ operations: [*retryable_operation]
82
+ expectations:
83
+ - *retryable_command_started_event
84
+ - *retryable_command_started_event
85
+ -
86
+ description: "ListDatabaseObjects succeeds after HostNotFound"
87
+ failPoint:
88
+ <<: *failCommand_failPoint
89
+ data: { failCommands: [listDatabases], errorCode: 7 }
90
+ operations: [*retryable_operation]
91
+ expectations:
92
+ - *retryable_command_started_event
93
+ - *retryable_command_started_event
94
+ -
95
+ description: "ListDatabaseObjects succeeds after HostUnreachable"
96
+ failPoint:
97
+ <<: *failCommand_failPoint
98
+ data: { failCommands: [listDatabases], errorCode: 6 }
99
+ operations: [*retryable_operation]
100
+ expectations:
101
+ - *retryable_command_started_event
102
+ - *retryable_command_started_event
103
+ -
104
+ description: "ListDatabaseObjects succeeds after NetworkTimeout"
105
+ failPoint:
106
+ <<: *failCommand_failPoint
107
+ data: { failCommands: [listDatabases], errorCode: 89 }
108
+ operations: [*retryable_operation]
109
+ expectations:
110
+ - *retryable_command_started_event
111
+ - *retryable_command_started_event
112
+ -
113
+ description: "ListDatabaseObjects succeeds after SocketException"
114
+ failPoint:
115
+ <<: *failCommand_failPoint
116
+ data: { failCommands: [listDatabases], errorCode: 9001 }
117
+ operations: [*retryable_operation]
118
+ expectations:
119
+ - *retryable_command_started_event
120
+ - *retryable_command_started_event
121
+ -
122
+ description: "ListDatabaseObjects fails after two NotMaster errors"
123
+ failPoint:
124
+ <<: *failCommand_failPoint
125
+ mode: { times: 2 }
126
+ data: { failCommands: [listDatabases], errorCode: 10107 }
127
+ operations:
128
+ - &retryable_operation_fails
129
+ <<: *retryable_operation
130
+ error: true
131
+ expectations:
132
+ - *retryable_command_started_event
133
+ - *retryable_command_started_event
134
+ -
135
+ description: "ListDatabaseObjects fails after NotMaster when retryReads is false"
136
+ clientOptions:
137
+ retryReads: false
138
+ failPoint:
139
+ <<: *failCommand_failPoint
140
+ data: { failCommands: [listDatabases], errorCode: 10107 }
141
+ operations: [*retryable_operation_fails]
142
+ expectations:
143
+ - *retryable_command_started_event
144
+
@@ -0,0 +1,59 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["single", "replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
9
+ database_name: &database_name "retryable-reads-tests"
10
+ collection_name: &collection_name "coll"
11
+
12
+ data: []
13
+
14
+ tests:
15
+ -
16
+ description: "ListDatabaseObjects succeeds on first attempt"
17
+ operations:
18
+ - &retryable_operation
19
+ name: listDatabaseObjects
20
+ object: client
21
+ expectations:
22
+ - &retryable_command_started_event
23
+ command_started_event:
24
+ command:
25
+ listDatabases: 1
26
+ -
27
+ description: "ListDatabaseObjects succeeds on second attempt"
28
+ failPoint: &failCommand_failPoint
29
+ configureFailPoint: failCommand
30
+ mode: { times: 1 }
31
+ data:
32
+ failCommands:
33
+ - listDatabases
34
+ closeConnection: true
35
+ operations: [*retryable_operation]
36
+ expectations:
37
+ - *retryable_command_started_event
38
+ - *retryable_command_started_event
39
+ -
40
+ description: "ListDatabaseObjects fails on first attempt"
41
+ clientOptions:
42
+ retryReads: false
43
+ failPoint: *failCommand_failPoint
44
+ operations:
45
+ - &retryable_operation_fails
46
+ <<: *retryable_operation
47
+ error: true
48
+ expectations:
49
+ - *retryable_command_started_event
50
+ -
51
+ description: "ListDatabaseObjects fails on second attempt"
52
+ failPoint:
53
+ <<: *failCommand_failPoint
54
+ mode: { times: 2 }
55
+ operations: [*retryable_operation_fails]
56
+ expectations:
57
+ - *retryable_command_started_event
58
+ - *retryable_command_started_event
59
+
@@ -0,0 +1,144 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["single", "replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
9
+ database_name: &database_name "retryable-reads-tests"
10
+ collection_name: &collection_name "coll"
11
+
12
+ data: []
13
+
14
+ tests:
15
+ -
16
+ description: "ListDatabases succeeds after InterruptedAtShutdown"
17
+ failPoint: &failCommand_failPoint
18
+ configureFailPoint: failCommand
19
+ mode: { times: 1 }
20
+ data: { failCommands: [listDatabases], errorCode: 11600 }
21
+ operations:
22
+ - &retryable_operation
23
+ name: listDatabases
24
+ object: client
25
+ expectations:
26
+ - &retryable_command_started_event
27
+ command_started_event:
28
+ command:
29
+ listDatabases: 1
30
+ - *retryable_command_started_event
31
+ -
32
+ description: "ListDatabases succeeds after InterruptedDueToStepDown"
33
+ failPoint:
34
+ <<: *failCommand_failPoint
35
+ data: { failCommands: [listDatabases], errorCode: 11602 }
36
+ operations: [*retryable_operation]
37
+ expectations:
38
+ - *retryable_command_started_event
39
+ - *retryable_command_started_event
40
+ -
41
+ description: "ListDatabases succeeds after NotMaster"
42
+ failPoint:
43
+ <<: *failCommand_failPoint
44
+ data: { failCommands: [listDatabases], errorCode: 10107 }
45
+ operations: [*retryable_operation]
46
+ expectations:
47
+ - *retryable_command_started_event
48
+ - *retryable_command_started_event
49
+ -
50
+ description: "ListDatabases succeeds after NotMasterNoSlaveOk"
51
+ failPoint:
52
+ <<: *failCommand_failPoint
53
+ data: { failCommands: [listDatabases], errorCode: 13435 }
54
+ operations: [*retryable_operation]
55
+ expectations:
56
+ - *retryable_command_started_event
57
+ - *retryable_command_started_event
58
+ -
59
+ description: "ListDatabases succeeds after NotMasterOrSecondary"
60
+ failPoint:
61
+ <<: *failCommand_failPoint
62
+ data: { failCommands: [listDatabases], errorCode: 13436 }
63
+ operations: [*retryable_operation]
64
+ expectations:
65
+ - *retryable_command_started_event
66
+ - *retryable_command_started_event
67
+ -
68
+ description: "ListDatabases succeeds after PrimarySteppedDown"
69
+ failPoint:
70
+ <<: *failCommand_failPoint
71
+ data: { failCommands: [listDatabases], errorCode: 189 }
72
+ operations: [*retryable_operation]
73
+ expectations:
74
+ - *retryable_command_started_event
75
+ - *retryable_command_started_event
76
+ -
77
+ description: "ListDatabases succeeds after ShutdownInProgress"
78
+ failPoint:
79
+ <<: *failCommand_failPoint
80
+ data: { failCommands: [listDatabases], errorCode: 91 }
81
+ operations: [*retryable_operation]
82
+ expectations:
83
+ - *retryable_command_started_event
84
+ - *retryable_command_started_event
85
+ -
86
+ description: "ListDatabases succeeds after HostNotFound"
87
+ failPoint:
88
+ <<: *failCommand_failPoint
89
+ data: { failCommands: [listDatabases], errorCode: 7 }
90
+ operations: [*retryable_operation]
91
+ expectations:
92
+ - *retryable_command_started_event
93
+ - *retryable_command_started_event
94
+ -
95
+ description: "ListDatabases succeeds after HostUnreachable"
96
+ failPoint:
97
+ <<: *failCommand_failPoint
98
+ data: { failCommands: [listDatabases], errorCode: 6 }
99
+ operations: [*retryable_operation]
100
+ expectations:
101
+ - *retryable_command_started_event
102
+ - *retryable_command_started_event
103
+ -
104
+ description: "ListDatabases succeeds after NetworkTimeout"
105
+ failPoint:
106
+ <<: *failCommand_failPoint
107
+ data: { failCommands: [listDatabases], errorCode: 89 }
108
+ operations: [*retryable_operation]
109
+ expectations:
110
+ - *retryable_command_started_event
111
+ - *retryable_command_started_event
112
+ -
113
+ description: "ListDatabases succeeds after SocketException"
114
+ failPoint:
115
+ <<: *failCommand_failPoint
116
+ data: { failCommands: [listDatabases], errorCode: 9001 }
117
+ operations: [*retryable_operation]
118
+ expectations:
119
+ - *retryable_command_started_event
120
+ - *retryable_command_started_event
121
+ -
122
+ description: "ListDatabases fails after two NotMaster errors"
123
+ failPoint:
124
+ <<: *failCommand_failPoint
125
+ mode: { times: 2 }
126
+ data: { failCommands: [listDatabases], errorCode: 10107 }
127
+ operations:
128
+ - &retryable_operation_fails
129
+ <<: *retryable_operation
130
+ error: true
131
+ expectations:
132
+ - *retryable_command_started_event
133
+ - *retryable_command_started_event
134
+ -
135
+ description: "ListDatabases fails after NotMaster when retryReads is false"
136
+ clientOptions:
137
+ retryReads: false
138
+ failPoint:
139
+ <<: *failCommand_failPoint
140
+ data: { failCommands: [listDatabases], errorCode: 10107 }
141
+ operations: [*retryable_operation_fails]
142
+ expectations:
143
+ - *retryable_command_started_event
144
+
@@ -0,0 +1,59 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["single", "replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
9
+ database_name: &database_name "retryable-reads-tests"
10
+ collection_name: &collection_name "coll"
11
+
12
+ data: []
13
+
14
+ tests:
15
+ -
16
+ description: "ListDatabases succeeds on first attempt"
17
+ operations:
18
+ - &retryable_operation
19
+ name: listDatabases
20
+ object: client
21
+ expectations:
22
+ - &retryable_command_started_event
23
+ command_started_event:
24
+ command:
25
+ listDatabases: 1
26
+ -
27
+ description: "ListDatabases succeeds on second attempt"
28
+ failPoint: &failCommand_failPoint
29
+ configureFailPoint: failCommand
30
+ mode: { times: 1 }
31
+ data:
32
+ failCommands:
33
+ - listDatabases
34
+ closeConnection: true
35
+ operations: [*retryable_operation]
36
+ expectations:
37
+ - *retryable_command_started_event
38
+ - *retryable_command_started_event
39
+ -
40
+ description: "ListDatabases fails on first attempt"
41
+ clientOptions:
42
+ retryReads: false
43
+ failPoint: *failCommand_failPoint
44
+ operations:
45
+ - &retryable_operation_fails
46
+ <<: *retryable_operation
47
+ error: true
48
+ expectations:
49
+ - *retryable_command_started_event
50
+ -
51
+ description: "ListDatabases fails on second attempt"
52
+ failPoint:
53
+ <<: *failCommand_failPoint
54
+ mode: { times: 2 }
55
+ operations: [*retryable_operation_fails]
56
+ expectations:
57
+ - *retryable_command_started_event
58
+ - *retryable_command_started_event
59
+