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
@@ -1,15 +1,18 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
1
9
  data:
2
10
  - { _id: 1, x: 11 }
3
11
  - { _id: 2, x: 22 }
4
12
 
5
- # TODO: this should change to 4.0 once 4.0.0 is released.
6
- minServerVersion: '3.99'
7
-
8
13
  tests:
9
14
  -
10
15
  description: "BulkWrite succeeds after PrimarySteppedDown"
11
- clientOptions:
12
- retryWrites: true
13
16
  failPoint:
14
17
  configureFailPoint: failCommand
15
18
  mode: { times: 1 }
@@ -37,6 +40,7 @@ tests:
37
40
  outcome:
38
41
  result:
39
42
  deletedCount: 1
43
+ insertedCount: 1
40
44
  insertedIds: { 1: 3 }
41
45
  matchedCount: 1
42
46
  modifiedCount: 1
@@ -48,8 +52,6 @@ tests:
48
52
  - { _id: 3, x: 33 }
49
53
  -
50
54
  description: "BulkWrite succeeds after WriteConcernError ShutdownInProgress"
51
- clientOptions:
52
- retryWrites: true
53
55
  failPoint:
54
56
  configureFailPoint: failCommand
55
57
  mode: { times: 1 }
@@ -79,6 +81,7 @@ tests:
79
81
  outcome:
80
82
  result:
81
83
  deletedCount: 1
84
+ insertedCount: 1
82
85
  insertedIds: { 1: 3 }
83
86
  matchedCount: 1
84
87
  modifiedCount: 1
@@ -1,13 +1,14 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "3.6"
4
+ topology: ["replicaset"]
5
+
1
6
  data:
2
7
  - { _id: 1, x: 11 }
3
8
 
4
- minServerVersion: '3.6'
5
-
6
9
  tests:
7
10
  -
8
11
  description: "First command is retried"
9
- clientOptions:
10
- retryWrites: true
11
12
  failPoint:
12
13
  configureFailPoint: onPrimaryTransactionalWrite
13
14
  mode: { times: 1 }
@@ -32,6 +33,7 @@ tests:
32
33
  outcome:
33
34
  result:
34
35
  deletedCount: 1
36
+ insertedCount: 1
35
37
  insertedIds: { 0: 2 }
36
38
  matchedCount: 1
37
39
  modifiedCount: 1
@@ -45,8 +47,6 @@ tests:
45
47
  # that each write command consists of a single statement, which will
46
48
  # fail on the first attempt and succeed on the second, retry attempt.
47
49
  description: "All commands are retried"
48
- clientOptions:
49
- retryWrites: true
50
50
  failPoint:
51
51
  configureFailPoint: onPrimaryTransactionalWrite
52
52
  mode: { times: 7 }
@@ -90,6 +90,7 @@ tests:
90
90
  outcome:
91
91
  result:
92
92
  deletedCount: 1
93
+ insertedCount: 3
93
94
  insertedIds: { 0: 2, 2: 3, 4: 5 }
94
95
  matchedCount: 2
95
96
  modifiedCount: 2
@@ -103,8 +104,6 @@ tests:
103
104
  - { _id: 5, x: 55 }
104
105
  -
105
106
  description: "Both commands are retried after their first statement fails"
106
- clientOptions:
107
- retryWrites: true
108
107
  failPoint:
109
108
  configureFailPoint: onPrimaryTransactionalWrite
110
109
  mode: { times: 2 }
@@ -130,6 +129,7 @@ tests:
130
129
  outcome:
131
130
  result:
132
131
  deletedCount: 0
132
+ insertedCount: 1
133
133
  insertedIds: { 0: 2 }
134
134
  matchedCount: 2
135
135
  modifiedCount: 2
@@ -141,8 +141,6 @@ tests:
141
141
  - { _id: 2, x: 23 }
142
142
  -
143
143
  description: "Second command is retried after its second statement fails"
144
- clientOptions:
145
- retryWrites: true
146
144
  failPoint:
147
145
  configureFailPoint: onPrimaryTransactionalWrite
148
146
  mode: { skip: 2 }
@@ -168,6 +166,7 @@ tests:
168
166
  outcome:
169
167
  result:
170
168
  deletedCount: 0
169
+ insertedCount: 1
171
170
  insertedIds: { 0: 2 }
172
171
  matchedCount: 2
173
172
  modifiedCount: 2
@@ -179,8 +178,6 @@ tests:
179
178
  - { _id: 2, x: 23 }
180
179
  -
181
180
  description: "BulkWrite with unordered execution"
182
- clientOptions:
183
- retryWrites: true
184
181
  failPoint:
185
182
  configureFailPoint: onPrimaryTransactionalWrite
186
183
  mode: { times: 1 }
@@ -200,6 +197,7 @@ tests:
200
197
  outcome:
201
198
  result:
202
199
  deletedCount: 0
200
+ insertedCount: 2
203
201
  insertedIds: { 0: 2, 1: 3 }
204
202
  matchedCount: 0
205
203
  modifiedCount: 0
@@ -212,8 +210,6 @@ tests:
212
210
  - { _id: 3, x: 33 }
213
211
  -
214
212
  description: "First insertOne is never committed"
215
- clientOptions:
216
- retryWrites: true
217
213
  failPoint:
218
214
  configureFailPoint: onPrimaryTransactionalWrite
219
215
  mode: { times: 2 }
@@ -240,6 +236,7 @@ tests:
240
236
  error: true
241
237
  result:
242
238
  deletedCount: 0
239
+ insertedCount: 0
243
240
  insertedIds: { }
244
241
  matchedCount: 0
245
242
  modifiedCount: 0
@@ -250,8 +247,6 @@ tests:
250
247
  - { _id: 1, x: 11 }
251
248
  -
252
249
  description: "Second updateOne is never committed"
253
- clientOptions:
254
- retryWrites: true
255
250
  failPoint:
256
251
  configureFailPoint: onPrimaryTransactionalWrite
257
252
  mode: { skip: 1 }
@@ -278,6 +273,7 @@ tests:
278
273
  error: true
279
274
  result:
280
275
  deletedCount: 0
276
+ insertedCount: 1
281
277
  insertedIds: { 0: 2 }
282
278
  matchedCount: 0
283
279
  modifiedCount: 0
@@ -289,8 +285,6 @@ tests:
289
285
  - { _id: 2, x: 22 }
290
286
  -
291
287
  description: "Third updateOne is never committed"
292
- clientOptions:
293
- retryWrites: true
294
288
  failPoint:
295
289
  configureFailPoint: onPrimaryTransactionalWrite
296
290
  mode: { skip: 2 }
@@ -318,6 +312,7 @@ tests:
318
312
  error: true
319
313
  result:
320
314
  deletedCount: 0
315
+ insertedCount: 1
321
316
  insertedIds: { 1: 2 }
322
317
  matchedCount: 1
323
318
  modifiedCount: 1
@@ -333,8 +328,6 @@ tests:
333
328
  # affect the initial deleteMany and will trigger once (and only once)
334
329
  # for the first insertOne attempt.
335
330
  description: "Single-document write following deleteMany is retried"
336
- clientOptions:
337
- retryWrites: true
338
331
  failPoint:
339
332
  configureFailPoint: onPrimaryTransactionalWrite
340
333
  mode: { times: 1 }
@@ -355,6 +348,7 @@ tests:
355
348
  outcome:
356
349
  result:
357
350
  deletedCount: 1
351
+ insertedCount: 1
358
352
  insertedIds: { 1: 2 }
359
353
  matchedCount: 0
360
354
  modifiedCount: 0
@@ -369,8 +363,6 @@ tests:
369
363
  # affect the initial updateMany and will trigger once (and only once)
370
364
  # for the first insertOne attempt.
371
365
  description: "Single-document write following updateMany is retried"
372
- clientOptions:
373
- retryWrites: true
374
366
  failPoint:
375
367
  configureFailPoint: onPrimaryTransactionalWrite
376
368
  mode: { times: 1 }
@@ -392,6 +384,7 @@ tests:
392
384
  outcome:
393
385
  result:
394
386
  deletedCount: 0
387
+ insertedCount: 1
395
388
  insertedIds: { 1: 2 }
396
389
  matchedCount: 1
397
390
  modifiedCount: 1
@@ -0,0 +1,22 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "3.6"
4
+ topology: ["replicaset", "sharded"]
5
+
6
+ data:
7
+ - { _id: 1, x: 11 }
8
+ - { _id: 2, x: 22 }
9
+
10
+ tests:
11
+ -
12
+ description: "DeleteMany ignores retryWrites"
13
+ useMultipleMongoses: true
14
+ operation:
15
+ name: "deleteMany"
16
+ arguments:
17
+ filter: { }
18
+ outcome:
19
+ result:
20
+ deletedCount: 2
21
+ collection:
22
+ data: []
@@ -1,15 +1,18 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
1
9
  data:
2
10
  - { _id: 1, x: 11 }
3
11
  - { _id: 2, x: 22 }
4
12
 
5
- # TODO: this should change to 4.0 once 4.0.0 is released.
6
- minServerVersion: '3.99'
7
-
8
13
  tests:
9
14
  -
10
15
  description: "DeleteOne succeeds after PrimarySteppedDown"
11
- clientOptions:
12
- retryWrites: true
13
16
  failPoint:
14
17
  configureFailPoint: failCommand
15
18
  mode: { times: 1 }
@@ -28,8 +31,6 @@ tests:
28
31
  - { _id: 2, x: 22 }
29
32
  -
30
33
  description: "DeleteOne succeeds after WriteConcernError ShutdownInProgress"
31
- clientOptions:
32
- retryWrites: true
33
34
  failPoint:
34
35
  configureFailPoint: failCommand
35
36
  mode: { times: 1 }
@@ -1,14 +1,15 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "3.6"
4
+ topology: ["replicaset"]
5
+
1
6
  data:
2
7
  - { _id: 1, x: 11 }
3
8
  - { _id: 2, x: 22 }
4
9
 
5
- minServerVersion: '3.6'
6
-
7
10
  tests:
8
11
  -
9
12
  description: "DeleteOne is committed on first attempt"
10
- clientOptions:
11
- retryWrites: true
12
13
  failPoint:
13
14
  configureFailPoint: onPrimaryTransactionalWrite
14
15
  mode: { times: 1 }
@@ -24,8 +25,6 @@ tests:
24
25
  - { _id: 2, x: 22 }
25
26
  -
26
27
  description: "DeleteOne is not committed on first attempt"
27
- clientOptions:
28
- retryWrites: true
29
28
  failPoint:
30
29
  configureFailPoint: onPrimaryTransactionalWrite
31
30
  mode: { times: 1 }
@@ -42,8 +41,6 @@ tests:
42
41
  - { _id: 2, x: 22 }
43
42
  -
44
43
  description: "DeleteOne is never committed"
45
- clientOptions:
46
- retryWrites: true
47
44
  failPoint:
48
45
  configureFailPoint: onPrimaryTransactionalWrite
49
46
  mode: { times: 2 }
@@ -1,15 +1,18 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
1
9
  data:
2
10
  - { _id: 1, x: 11 }
3
11
  - { _id: 2, x: 22 }
4
12
 
5
- # TODO: this should change to 4.0 once 4.0.0 is released.
6
- minServerVersion: '3.99'
7
-
8
13
  tests:
9
14
  -
10
15
  description: "FindOneAndDelete succeeds after PrimarySteppedDown"
11
- clientOptions:
12
- retryWrites: true
13
16
  failPoint:
14
17
  configureFailPoint: failCommand
15
18
  mode: { times: 1 }
@@ -28,8 +31,6 @@ tests:
28
31
  - { _id: 2, x: 22 }
29
32
  -
30
33
  description: "FindOneAndDelete succeeds after WriteConcernError ShutdownInProgress"
31
- clientOptions:
32
- retryWrites: true
33
34
  failPoint:
34
35
  configureFailPoint: failCommand
35
36
  mode: { times: 1 }
@@ -1,14 +1,15 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "3.6"
4
+ topology: ["replicaset"]
5
+
1
6
  data:
2
7
  - { _id: 1, x: 11 }
3
8
  - { _id: 2, x: 22 }
4
9
 
5
- minServerVersion: '3.6'
6
-
7
10
  tests:
8
11
  -
9
12
  description: "FindOneAndDelete is committed on first attempt"
10
- clientOptions:
11
- retryWrites: true
12
13
  failPoint:
13
14
  configureFailPoint: onPrimaryTransactionalWrite
14
15
  mode: { times: 1 }
@@ -24,8 +25,6 @@ tests:
24
25
  - { _id: 2, x: 22 }
25
26
  -
26
27
  description: "FindOneAndDelete is not committed on first attempt"
27
- clientOptions:
28
- retryWrites: true
29
28
  failPoint:
30
29
  configureFailPoint: onPrimaryTransactionalWrite
31
30
  mode: { times: 1 }
@@ -42,8 +41,6 @@ tests:
42
41
  - { _id: 2, x: 22 }
43
42
  -
44
43
  description: "FindOneAndDelete is never committed"
45
- clientOptions:
46
- retryWrites: true
47
44
  failPoint:
48
45
  configureFailPoint: onPrimaryTransactionalWrite
49
46
  mode: { times: 2 }
@@ -1,15 +1,18 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "4.0"
4
+ topology: ["replicaset"]
5
+ -
6
+ minServerVersion: "4.1.7"
7
+ topology: ["sharded"]
8
+
1
9
  data:
2
10
  - { _id: 1, x: 11 }
3
11
  - { _id: 2, x: 22 }
4
12
 
5
- # TODO: this should change to 4.0 once 4.0.0 is released.
6
- minServerVersion: '3.99'
7
-
8
13
  tests:
9
14
  -
10
15
  description: "FindOneAndReplace succeeds after PrimarySteppedDown"
11
- clientOptions:
12
- retryWrites: true
13
16
  failPoint:
14
17
  configureFailPoint: failCommand
15
18
  mode: { times: 1 }
@@ -30,8 +33,6 @@ tests:
30
33
  - { _id: 2, x: 22 }
31
34
  -
32
35
  description: "FindOneAndReplace succeeds after WriteConcernError ShutdownInProgress"
33
- clientOptions:
34
- retryWrites: true
35
36
  failPoint:
36
37
  configureFailPoint: failCommand
37
38
  mode: { times: 1 }
@@ -1,14 +1,15 @@
1
+ runOn:
2
+ -
3
+ minServerVersion: "3.6"
4
+ topology: ["replicaset"]
5
+
1
6
  data:
2
7
  - { _id: 1, x: 11 }
3
8
  - { _id: 2, x: 22 }
4
9
 
5
- minServerVersion: '3.6'
6
-
7
10
  tests:
8
11
  -
9
12
  description: "FindOneAndReplace is committed on first attempt"
10
- clientOptions:
11
- retryWrites: true
12
13
  failPoint:
13
14
  configureFailPoint: onPrimaryTransactionalWrite
14
15
  mode: { times: 1 }
@@ -26,8 +27,6 @@ tests:
26
27
  - { _id: 2, x: 22 }
27
28
  -
28
29
  description: "FindOneAndReplace is not committed on first attempt"
29
- clientOptions:
30
- retryWrites: true
31
30
  failPoint:
32
31
  configureFailPoint: onPrimaryTransactionalWrite
33
32
  mode: { times: 1 }
@@ -46,8 +45,6 @@ tests:
46
45
  - { _id: 2, x: 22 }
47
46
  -
48
47
  description: "FindOneAndReplace is never committed"
49
- clientOptions:
50
- retryWrites: true
51
48
  failPoint:
52
49
  configureFailPoint: onPrimaryTransactionalWrite
53
50
  mode: { times: 2 }