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,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: "ListCollectionObjects succeeds after InterruptedAtShutdown"
17
+ failPoint: &failCommand_failPoint
18
+ configureFailPoint: failCommand
19
+ mode: { times: 1 }
20
+ data: { failCommands: [listCollections], errorCode: 11600 }
21
+ operations:
22
+ - &retryable_operation
23
+ name: listCollectionObjects
24
+ object: database
25
+ expectations:
26
+ - &retryable_command_started_event
27
+ command_started_event:
28
+ command:
29
+ listCollections: 1
30
+ - *retryable_command_started_event
31
+ -
32
+ description: "ListCollectionObjects succeeds after InterruptedDueToStepDown"
33
+ failPoint:
34
+ <<: *failCommand_failPoint
35
+ data: { failCommands: [listCollections], errorCode: 11602 }
36
+ operations: [*retryable_operation]
37
+ expectations:
38
+ - *retryable_command_started_event
39
+ - *retryable_command_started_event
40
+ -
41
+ description: "ListCollectionObjects succeeds after NotMaster"
42
+ failPoint:
43
+ <<: *failCommand_failPoint
44
+ data: { failCommands: [listCollections], errorCode: 10107 }
45
+ operations: [*retryable_operation]
46
+ expectations:
47
+ - *retryable_command_started_event
48
+ - *retryable_command_started_event
49
+ -
50
+ description: "ListCollectionObjects succeeds after NotMasterNoSlaveOk"
51
+ failPoint:
52
+ <<: *failCommand_failPoint
53
+ data: { failCommands: [listCollections], errorCode: 13435 }
54
+ operations: [*retryable_operation]
55
+ expectations:
56
+ - *retryable_command_started_event
57
+ - *retryable_command_started_event
58
+ -
59
+ description: "ListCollectionObjects succeeds after NotMasterOrSecondary"
60
+ failPoint:
61
+ <<: *failCommand_failPoint
62
+ data: { failCommands: [listCollections], errorCode: 13436 }
63
+ operations: [*retryable_operation]
64
+ expectations:
65
+ - *retryable_command_started_event
66
+ - *retryable_command_started_event
67
+ -
68
+ description: "ListCollectionObjects succeeds after PrimarySteppedDown"
69
+ failPoint:
70
+ <<: *failCommand_failPoint
71
+ data: { failCommands: [listCollections], errorCode: 189 }
72
+ operations: [*retryable_operation]
73
+ expectations:
74
+ - *retryable_command_started_event
75
+ - *retryable_command_started_event
76
+ -
77
+ description: "ListCollectionObjects succeeds after ShutdownInProgress"
78
+ failPoint:
79
+ <<: *failCommand_failPoint
80
+ data: { failCommands: [listCollections], errorCode: 91 }
81
+ operations: [*retryable_operation]
82
+ expectations:
83
+ - *retryable_command_started_event
84
+ - *retryable_command_started_event
85
+ -
86
+ description: "ListCollectionObjects succeeds after HostNotFound"
87
+ failPoint:
88
+ <<: *failCommand_failPoint
89
+ data: { failCommands: [listCollections], errorCode: 7 }
90
+ operations: [*retryable_operation]
91
+ expectations:
92
+ - *retryable_command_started_event
93
+ - *retryable_command_started_event
94
+ -
95
+ description: "ListCollectionObjects succeeds after HostUnreachable"
96
+ failPoint:
97
+ <<: *failCommand_failPoint
98
+ data: { failCommands: [listCollections], errorCode: 6 }
99
+ operations: [*retryable_operation]
100
+ expectations:
101
+ - *retryable_command_started_event
102
+ - *retryable_command_started_event
103
+ -
104
+ description: "ListCollectionObjects succeeds after NetworkTimeout"
105
+ failPoint:
106
+ <<: *failCommand_failPoint
107
+ data: { failCommands: [listCollections], errorCode: 89 }
108
+ operations: [*retryable_operation]
109
+ expectations:
110
+ - *retryable_command_started_event
111
+ - *retryable_command_started_event
112
+ -
113
+ description: "ListCollectionObjects succeeds after SocketException"
114
+ failPoint:
115
+ <<: *failCommand_failPoint
116
+ data: { failCommands: [listCollections], errorCode: 9001 }
117
+ operations: [*retryable_operation]
118
+ expectations:
119
+ - *retryable_command_started_event
120
+ - *retryable_command_started_event
121
+ -
122
+ description: "ListCollectionObjects fails after two NotMaster errors"
123
+ failPoint:
124
+ <<: *failCommand_failPoint
125
+ mode: { times: 2 }
126
+ data: { failCommands: [listCollections], 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: "ListCollectionObjects fails after NotMaster when retryReads is false"
136
+ clientOptions:
137
+ retryReads: false
138
+ failPoint:
139
+ <<: *failCommand_failPoint
140
+ data: { failCommands: [listCollections], 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: "ListCollectionObjects succeeds on first attempt"
17
+ operations:
18
+ - &retryable_operation
19
+ name: listCollectionObjects
20
+ object: database
21
+ expectations:
22
+ - &retryable_command_started_event
23
+ command_started_event:
24
+ command:
25
+ listCollections: 1
26
+ -
27
+ description: "ListCollectionObjects succeeds on second attempt"
28
+ failPoint: &failCommand_failPoint
29
+ configureFailPoint: failCommand
30
+ mode: { times: 1 }
31
+ data:
32
+ failCommands:
33
+ - listCollections
34
+ closeConnection: true
35
+ operations: [*retryable_operation]
36
+ expectations:
37
+ - *retryable_command_started_event
38
+ - *retryable_command_started_event
39
+ -
40
+ description: "ListCollectionObjects 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: "ListCollectionObjects 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,143 @@
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: "ListCollections succeeds after InterruptedAtShutdown"
17
+ failPoint: &failCommand_failPoint
18
+ configureFailPoint: failCommand
19
+ mode: { times: 1 }
20
+ data: { failCommands: [listCollections], errorCode: 11600 }
21
+ operations:
22
+ - &retryable_operation
23
+ name: listCollections
24
+ object: database
25
+ expectations:
26
+ - &retryable_command_started_event
27
+ command_started_event:
28
+ command:
29
+ listCollections: 1
30
+ - *retryable_command_started_event
31
+ -
32
+ description: "ListCollections succeeds after InterruptedDueToStepDown"
33
+ failPoint:
34
+ <<: *failCommand_failPoint
35
+ data: { failCommands: [listCollections], errorCode: 11602 }
36
+ operations: [*retryable_operation]
37
+ expectations:
38
+ - *retryable_command_started_event
39
+ - *retryable_command_started_event
40
+ -
41
+ description: "ListCollections succeeds after NotMaster"
42
+ failPoint:
43
+ <<: *failCommand_failPoint
44
+ data: { failCommands: [listCollections], errorCode: 10107 }
45
+ operations: [*retryable_operation]
46
+ expectations:
47
+ - *retryable_command_started_event
48
+ - *retryable_command_started_event
49
+ -
50
+ description: "ListCollections succeeds after NotMasterNoSlaveOk"
51
+ failPoint:
52
+ <<: *failCommand_failPoint
53
+ data: { failCommands: [listCollections], errorCode: 13435 }
54
+ operations: [*retryable_operation]
55
+ expectations:
56
+ - *retryable_command_started_event
57
+ - *retryable_command_started_event
58
+ -
59
+ description: "ListCollections succeeds after NotMasterOrSecondary"
60
+ failPoint:
61
+ <<: *failCommand_failPoint
62
+ data: { failCommands: [listCollections], errorCode: 13436 }
63
+ operations: [*retryable_operation]
64
+ expectations:
65
+ - *retryable_command_started_event
66
+ - *retryable_command_started_event
67
+ -
68
+ description: "ListCollections succeeds after PrimarySteppedDown"
69
+ failPoint:
70
+ <<: *failCommand_failPoint
71
+ data: { failCommands: [listCollections], errorCode: 189 }
72
+ operations: [*retryable_operation]
73
+ expectations:
74
+ - *retryable_command_started_event
75
+ - *retryable_command_started_event
76
+ -
77
+ description: "ListCollections succeeds after ShutdownInProgress"
78
+ failPoint:
79
+ <<: *failCommand_failPoint
80
+ data: { failCommands: [listCollections], errorCode: 91 }
81
+ operations: [*retryable_operation]
82
+ expectations:
83
+ - *retryable_command_started_event
84
+ - *retryable_command_started_event
85
+ -
86
+ description: "ListCollections succeeds after HostNotFound"
87
+ failPoint:
88
+ <<: *failCommand_failPoint
89
+ data: { failCommands: [listCollections], errorCode: 7 }
90
+ operations: [*retryable_operation]
91
+ expectations:
92
+ - *retryable_command_started_event
93
+ - *retryable_command_started_event
94
+ -
95
+ description: "ListCollections succeeds after HostUnreachable"
96
+ failPoint:
97
+ <<: *failCommand_failPoint
98
+ data: { failCommands: [listCollections], errorCode: 6 }
99
+ operations: [*retryable_operation]
100
+ expectations:
101
+ - *retryable_command_started_event
102
+ - *retryable_command_started_event
103
+ -
104
+ description: "ListCollections succeeds after NetworkTimeout"
105
+ failPoint:
106
+ <<: *failCommand_failPoint
107
+ data: { failCommands: [listCollections], errorCode: 89 }
108
+ operations: [*retryable_operation]
109
+ expectations:
110
+ - *retryable_command_started_event
111
+ - *retryable_command_started_event
112
+ -
113
+ description: "ListCollections succeeds after SocketException"
114
+ failPoint:
115
+ <<: *failCommand_failPoint
116
+ data: { failCommands: [listCollections], errorCode: 9001 }
117
+ operations: [*retryable_operation]
118
+ expectations:
119
+ - *retryable_command_started_event
120
+ - *retryable_command_started_event
121
+ -
122
+ description: "ListCollections fails after two NotMaster errors"
123
+ failPoint:
124
+ <<: *failCommand_failPoint
125
+ mode: { times: 2 }
126
+ data: { failCommands: [listCollections], 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: "ListCollections fails after NotMaster when retryReads is false"
136
+ clientOptions:
137
+ retryReads: false
138
+ failPoint:
139
+ <<: *failCommand_failPoint
140
+ data: { failCommands: [listCollections], errorCode: 10107 }
141
+ operations: [*retryable_operation_fails]
142
+ expectations:
143
+ - *retryable_command_started_event
@@ -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: "ListCollections succeeds on first attempt"
17
+ operations:
18
+ - &retryable_operation
19
+ name: listCollections
20
+ object: database
21
+ expectations:
22
+ - &retryable_command_started_event
23
+ command_started_event:
24
+ command:
25
+ listCollections: 1
26
+ -
27
+ description: "ListCollections succeeds on second attempt"
28
+ failPoint: &failCommand_failPoint
29
+ configureFailPoint: failCommand
30
+ mode: { times: 1 }
31
+ data:
32
+ failCommands:
33
+ - listCollections
34
+ closeConnection: true
35
+ operations: [*retryable_operation]
36
+ expectations:
37
+ - *retryable_command_started_event
38
+ - *retryable_command_started_event
39
+ -
40
+ description: "ListCollections 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: "ListCollections 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,143 @@
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 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: listDatabaseNames
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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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: "ListDatabaseNames 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