mongo 2.5.3 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/LICENSE +1 -1
  5. data/README.md +3 -2
  6. data/lib/mongo.rb +2 -2
  7. data/lib/mongo/address.rb +10 -2
  8. data/lib/mongo/address/ipv4.rb +1 -1
  9. data/lib/mongo/address/ipv6.rb +26 -5
  10. data/lib/mongo/address/unix.rb +1 -1
  11. data/lib/mongo/auth.rb +10 -3
  12. data/lib/mongo/auth/cr.rb +4 -1
  13. data/lib/mongo/auth/cr/conversation.rb +4 -1
  14. data/lib/mongo/auth/ldap.rb +1 -1
  15. data/lib/mongo/auth/ldap/conversation.rb +1 -1
  16. data/lib/mongo/auth/roles.rb +1 -1
  17. data/lib/mongo/auth/scram.rb +24 -7
  18. data/lib/mongo/auth/scram/conversation.rb +52 -19
  19. data/lib/mongo/auth/stringprep.rb +114 -0
  20. data/lib/mongo/auth/stringprep/profiles/sasl.rb +73 -0
  21. data/lib/mongo/auth/stringprep/tables.rb +3232 -0
  22. data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +174 -0
  23. data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +1170 -0
  24. data/lib/mongo/auth/user.rb +14 -3
  25. data/lib/mongo/auth/user/view.rb +1 -1
  26. data/lib/mongo/auth/x509.rb +1 -1
  27. data/lib/mongo/auth/x509/conversation.rb +1 -1
  28. data/lib/mongo/bson.rb +1 -1
  29. data/lib/mongo/bulk_write.rb +8 -8
  30. data/lib/mongo/bulk_write/combineable.rb +1 -1
  31. data/lib/mongo/bulk_write/ordered_combiner.rb +1 -1
  32. data/lib/mongo/bulk_write/result.rb +1 -1
  33. data/lib/mongo/bulk_write/result_combiner.rb +4 -4
  34. data/lib/mongo/bulk_write/transformable.rb +1 -1
  35. data/lib/mongo/bulk_write/unordered_combiner.rb +1 -1
  36. data/lib/mongo/bulk_write/validatable.rb +1 -1
  37. data/lib/mongo/client.rb +115 -24
  38. data/lib/mongo/cluster.rb +17 -10
  39. data/lib/mongo/cluster/app_metadata.rb +7 -1
  40. data/lib/mongo/cluster/periodic_executor.rb +1 -1
  41. data/lib/mongo/cluster/reapers/socket_reaper.rb +1 -1
  42. data/lib/mongo/cluster/topology.rb +12 -2
  43. data/lib/mongo/cluster/topology/replica_set.rb +9 -1
  44. data/lib/mongo/cluster/topology/sharded.rb +1 -1
  45. data/lib/mongo/cluster/topology/single.rb +1 -1
  46. data/lib/mongo/cluster/topology/unknown.rb +1 -1
  47. data/lib/mongo/collection.rb +75 -19
  48. data/lib/mongo/collection/view.rb +1 -1
  49. data/lib/mongo/collection/view/aggregation.rb +1 -1
  50. data/lib/mongo/collection/view/builder.rb +1 -1
  51. data/lib/mongo/collection/view/builder/aggregation.rb +3 -3
  52. data/lib/mongo/collection/view/builder/find_command.rb +1 -1
  53. data/lib/mongo/collection/view/builder/flags.rb +1 -1
  54. data/lib/mongo/collection/view/builder/map_reduce.rb +1 -1
  55. data/lib/mongo/collection/view/builder/modifiers.rb +1 -1
  56. data/lib/mongo/collection/view/builder/op_query.rb +1 -1
  57. data/lib/mongo/collection/view/change_stream.rb +193 -17
  58. data/lib/mongo/collection/view/change_stream/retryable.rb +3 -20
  59. data/lib/mongo/collection/view/explainable.rb +1 -1
  60. data/lib/mongo/collection/view/immutable.rb +1 -1
  61. data/lib/mongo/collection/view/iterable.rb +2 -2
  62. data/lib/mongo/collection/view/map_reduce.rb +1 -1
  63. data/lib/mongo/collection/view/readable.rb +108 -29
  64. data/lib/mongo/collection/view/writable.rb +3 -3
  65. data/lib/mongo/cursor.rb +44 -4
  66. data/lib/mongo/cursor/builder.rb +1 -1
  67. data/lib/mongo/cursor/builder/get_more_command.rb +1 -1
  68. data/lib/mongo/cursor/builder/kill_cursors_command.rb +1 -1
  69. data/lib/mongo/cursor/builder/op_get_more.rb +1 -1
  70. data/lib/mongo/cursor/builder/op_kill_cursors.rb +1 -1
  71. data/lib/mongo/database.rb +46 -3
  72. data/lib/mongo/database/view.rb +11 -11
  73. data/lib/mongo/dbref.rb +1 -1
  74. data/lib/mongo/error.rb +57 -1
  75. data/lib/mongo/error/bulk_write_error.rb +2 -2
  76. data/lib/mongo/error/change_stream_resumable.rb +37 -0
  77. data/lib/mongo/error/closed_stream.rb +1 -1
  78. data/lib/mongo/error/extra_file_chunk.rb +1 -1
  79. data/lib/mongo/error/failed_stringprep_validation.rb +38 -0
  80. data/lib/mongo/error/file_not_found.rb +1 -1
  81. data/lib/mongo/error/insufficient_iteration_count.rb +38 -0
  82. data/lib/mongo/error/invalid_application_name.rb +1 -1
  83. data/lib/mongo/error/invalid_bulk_operation.rb +1 -1
  84. data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -1
  85. data/lib/mongo/error/invalid_collection_name.rb +1 -1
  86. data/lib/mongo/error/invalid_database_name.rb +1 -1
  87. data/lib/mongo/error/invalid_document.rb +1 -1
  88. data/lib/mongo/error/invalid_file.rb +1 -1
  89. data/lib/mongo/error/invalid_file_revision.rb +1 -1
  90. data/lib/mongo/error/invalid_min_pool_size.rb +1 -1
  91. data/lib/mongo/error/invalid_nonce.rb +1 -1
  92. data/lib/mongo/error/invalid_read_option.rb +35 -0
  93. data/lib/mongo/error/invalid_replacement_document.rb +1 -1
  94. data/lib/mongo/error/invalid_server_preference.rb +1 -1
  95. data/lib/mongo/error/invalid_session.rb +1 -1
  96. data/lib/mongo/error/invalid_signature.rb +1 -1
  97. data/lib/mongo/error/invalid_transaction_operation.rb +82 -0
  98. data/lib/mongo/error/invalid_txt_record.rb +1 -1
  99. data/lib/mongo/error/invalid_update_document.rb +1 -1
  100. data/lib/mongo/error/invalid_uri.rb +1 -1
  101. data/lib/mongo/error/invalid_write_concern.rb +1 -1
  102. data/lib/mongo/error/max_bson_size.rb +1 -1
  103. data/lib/mongo/error/max_message_size.rb +1 -1
  104. data/lib/mongo/error/mismatched_domain.rb +1 -1
  105. data/lib/mongo/error/missing_file_chunk.rb +1 -1
  106. data/lib/mongo/error/missing_resume_token.rb +1 -1
  107. data/lib/mongo/error/multi_index_drop.rb +1 -1
  108. data/lib/mongo/error/need_primary_server.rb +1 -1
  109. data/lib/mongo/error/no_server_available.rb +1 -1
  110. data/lib/mongo/error/no_srv_records.rb +1 -1
  111. data/lib/mongo/error/operation_failure.rb +108 -14
  112. data/lib/mongo/error/parser.rb +50 -1
  113. data/lib/mongo/error/socket_error.rb +5 -2
  114. data/lib/mongo/error/socket_timeout_error.rb +5 -2
  115. data/lib/mongo/error/unchangeable_collection_option.rb +1 -1
  116. data/lib/mongo/error/unexpected_chunk_length.rb +1 -1
  117. data/lib/mongo/error/unexpected_response.rb +1 -1
  118. data/lib/mongo/error/unknown_payload_type.rb +1 -1
  119. data/lib/mongo/error/unsupported_array_filters.rb +1 -1
  120. data/lib/mongo/error/unsupported_collation.rb +1 -1
  121. data/lib/mongo/error/unsupported_features.rb +1 -1
  122. data/lib/mongo/error/unsupported_message_type.rb +1 -1
  123. data/lib/mongo/error/write_retryable.rb +27 -0
  124. data/lib/mongo/event.rb +10 -9
  125. data/lib/mongo/event/base.rb +33 -0
  126. data/lib/mongo/event/description_changed.rb +2 -2
  127. data/lib/mongo/event/listeners.rb +1 -1
  128. data/lib/mongo/event/member_discovered.rb +4 -2
  129. data/lib/mongo/event/primary_elected.rb +2 -2
  130. data/lib/mongo/event/publisher.rb +1 -1
  131. data/lib/mongo/event/standalone_discovered.rb +2 -2
  132. data/lib/mongo/event/subscriber.rb +1 -1
  133. data/lib/mongo/grid.rb +1 -1
  134. data/lib/mongo/grid/file.rb +1 -1
  135. data/lib/mongo/grid/file/chunk.rb +3 -3
  136. data/lib/mongo/grid/file/info.rb +26 -3
  137. data/lib/mongo/grid/fs_bucket.rb +1 -1
  138. data/lib/mongo/grid/stream.rb +1 -1
  139. data/lib/mongo/grid/stream/read.rb +1 -1
  140. data/lib/mongo/grid/stream/write.rb +1 -1
  141. data/lib/mongo/index.rb +1 -1
  142. data/lib/mongo/index/view.rb +1 -1
  143. data/lib/mongo/loggable.rb +1 -1
  144. data/lib/mongo/logger.rb +1 -1
  145. data/lib/mongo/monitoring.rb +99 -62
  146. data/lib/mongo/monitoring/command_log_subscriber.rb +2 -2
  147. data/lib/mongo/monitoring/event.rb +2 -1
  148. data/lib/mongo/monitoring/event/command_failed.rb +19 -6
  149. data/lib/mongo/monitoring/event/command_started.rb +14 -3
  150. data/lib/mongo/monitoring/event/command_succeeded.rb +5 -3
  151. data/lib/mongo/monitoring/event/secure.rb +1 -1
  152. data/lib/mongo/monitoring/event/server_closed.rb +2 -2
  153. data/lib/mongo/monitoring/event/server_description_changed.rb +2 -2
  154. data/lib/mongo/monitoring/event/server_opening.rb +11 -2
  155. data/lib/mongo/monitoring/event/topology_changed.rb +13 -2
  156. data/lib/mongo/monitoring/event/topology_closed.rb +2 -2
  157. data/lib/mongo/monitoring/event/topology_opening.rb +11 -2
  158. data/lib/mongo/monitoring/publishable.rb +10 -6
  159. data/lib/mongo/monitoring/sdam_log_subscriber.rb +1 -1
  160. data/lib/mongo/monitoring/server_closed_log_subscriber.rb +1 -1
  161. data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +1 -1
  162. data/lib/mongo/monitoring/server_opening_log_subscriber.rb +1 -1
  163. data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +1 -1
  164. data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +1 -1
  165. data/lib/mongo/operation/aggregate/op_msg.rb +3 -0
  166. data/lib/mongo/operation/create/op_msg.rb +9 -0
  167. data/lib/mongo/operation/create_index/op_msg.rb +9 -0
  168. data/lib/mongo/operation/create_user/command.rb +1 -1
  169. data/lib/mongo/operation/create_user/op_msg.rb +10 -1
  170. data/lib/mongo/operation/delete/op_msg.rb +3 -0
  171. data/lib/mongo/operation/distinct/op_msg.rb +9 -0
  172. data/lib/mongo/operation/drop/op_msg.rb +9 -0
  173. data/lib/mongo/operation/drop_database/op_msg.rb +9 -0
  174. data/lib/mongo/operation/drop_index/op_msg.rb +9 -0
  175. data/lib/mongo/operation/explain/op_msg.rb +3 -0
  176. data/lib/mongo/operation/find/op_msg.rb +3 -0
  177. data/lib/mongo/operation/get_more.rb +1 -1
  178. data/lib/mongo/operation/get_more/command.rb +1 -1
  179. data/lib/mongo/operation/get_more/legacy.rb +1 -1
  180. data/lib/mongo/operation/get_more/op_msg.rb +3 -0
  181. data/lib/mongo/operation/indexes/op_msg.rb +3 -0
  182. data/lib/mongo/operation/indexes/result.rb +1 -1
  183. data/lib/mongo/operation/insert/bulk_result.rb +32 -2
  184. data/lib/mongo/operation/insert/op_msg.rb +3 -0
  185. data/lib/mongo/operation/insert/result.rb +1 -1
  186. data/lib/mongo/operation/kill_cursors/op_msg.rb +9 -0
  187. data/lib/mongo/operation/list_collections/op_msg.rb +3 -0
  188. data/lib/mongo/operation/list_collections/result.rb +5 -1
  189. data/lib/mongo/operation/map_reduce/op_msg.rb +3 -0
  190. data/lib/mongo/operation/map_reduce/result.rb +1 -1
  191. data/lib/mongo/operation/parallel_scan/op_msg.rb +3 -0
  192. data/lib/mongo/operation/remove_user/op_msg.rb +9 -0
  193. data/lib/mongo/operation/result.rb +27 -14
  194. data/lib/mongo/operation/shared/executable.rb +1 -0
  195. data/lib/mongo/operation/shared/sessions_supported.rb +78 -7
  196. data/lib/mongo/operation/shared/specifiable.rb +18 -2
  197. data/lib/mongo/operation/shared/write_concern_supported.rb +1 -1
  198. data/lib/mongo/operation/update/op_msg.rb +3 -0
  199. data/lib/mongo/operation/update_user/command.rb +1 -1
  200. data/lib/mongo/operation/update_user/op_msg.rb +10 -1
  201. data/lib/mongo/operation/users_info/op_msg.rb +3 -0
  202. data/lib/mongo/options.rb +1 -1
  203. data/lib/mongo/options/mapper.rb +1 -1
  204. data/lib/mongo/options/redacted.rb +1 -1
  205. data/lib/mongo/protocol/bit_vector.rb +1 -1
  206. data/lib/mongo/protocol/compressed.rb +1 -1
  207. data/lib/mongo/protocol/delete.rb +1 -1
  208. data/lib/mongo/protocol/get_more.rb +7 -7
  209. data/lib/mongo/protocol/insert.rb +1 -1
  210. data/lib/mongo/protocol/kill_cursors.rb +1 -1
  211. data/lib/mongo/protocol/message.rb +5 -5
  212. data/lib/mongo/protocol/msg.rb +9 -7
  213. data/lib/mongo/protocol/query.rb +1 -1
  214. data/lib/mongo/protocol/registry.rb +1 -1
  215. data/lib/mongo/protocol/reply.rb +10 -10
  216. data/lib/mongo/protocol/serializers.rb +1 -1
  217. data/lib/mongo/protocol/update.rb +1 -1
  218. data/lib/mongo/retryable.rb +22 -14
  219. data/lib/mongo/server.rb +1 -1
  220. data/lib/mongo/server/connectable.rb +1 -1
  221. data/lib/mongo/server/connection.rb +16 -4
  222. data/lib/mongo/server/connection_pool.rb +1 -1
  223. data/lib/mongo/server/connection_pool/queue.rb +1 -1
  224. data/lib/mongo/server/context.rb +1 -1
  225. data/lib/mongo/server/description.rb +14 -2
  226. data/lib/mongo/server/description/features.rb +10 -9
  227. data/lib/mongo/server/description/inspector.rb +1 -1
  228. data/lib/mongo/server/description/inspector/description_changed.rb +1 -1
  229. data/lib/mongo/server/description/inspector/member_discovered.rb +1 -1
  230. data/lib/mongo/server/description/inspector/primary_elected.rb +1 -1
  231. data/lib/mongo/server/description/inspector/standalone_discovered.rb +1 -1
  232. data/lib/mongo/server/monitor.rb +15 -3
  233. data/lib/mongo/server/monitor/connection.rb +1 -1
  234. data/lib/mongo/server_selector.rb +1 -1
  235. data/lib/mongo/server_selector/nearest.rb +1 -1
  236. data/lib/mongo/server_selector/primary.rb +1 -1
  237. data/lib/mongo/server_selector/primary_preferred.rb +1 -1
  238. data/lib/mongo/server_selector/secondary.rb +1 -1
  239. data/lib/mongo/server_selector/secondary_preferred.rb +1 -1
  240. data/lib/mongo/server_selector/selectable.rb +7 -2
  241. data/lib/mongo/session.rb +389 -12
  242. data/lib/mongo/session/server_session.rb +7 -2
  243. data/lib/mongo/session/session_pool.rb +1 -1
  244. data/lib/mongo/socket.rb +1 -1
  245. data/lib/mongo/socket/ssl.rb +1 -1
  246. data/lib/mongo/socket/tcp.rb +1 -1
  247. data/lib/mongo/socket/unix.rb +1 -1
  248. data/lib/mongo/uri.rb +6 -4
  249. data/lib/mongo/uri/srv_protocol.rb +1 -1
  250. data/lib/mongo/version.rb +2 -2
  251. data/lib/mongo/write_concern.rb +1 -1
  252. data/lib/mongo/write_concern/acknowledged.rb +1 -1
  253. data/lib/mongo/write_concern/normalizable.rb +1 -1
  254. data/lib/mongo/write_concern/unacknowledged.rb +1 -1
  255. data/mongo.gemspec +4 -1
  256. data/spec/atlas/atlas_connectivity_spec.rb +54 -0
  257. data/spec/integration/bulk_insert_spec.rb +78 -0
  258. data/spec/integration/change_stream_spec.rb +365 -0
  259. data/spec/integration/command_monitoring_spec.rb +92 -0
  260. data/spec/lite_spec_helper.rb +63 -0
  261. data/spec/mongo/address/ipv6_spec.rb +29 -1
  262. data/spec/mongo/address_spec.rb +34 -0
  263. data/spec/mongo/auth/scram/conversation_spec.rb +326 -120
  264. data/spec/mongo/auth/scram/negotiation_spec.rb +574 -0
  265. data/spec/mongo/auth/scram_spec.rb +107 -38
  266. data/spec/mongo/auth/stringprep/profiles/sasl_spec.rb +113 -0
  267. data/spec/mongo/auth/stringprep_spec.rb +188 -0
  268. data/spec/mongo/auth/user/view_spec.rb +5 -2
  269. data/spec/mongo/auth/user_spec.rb +1 -1
  270. data/spec/mongo/bulk_write/result_spec.rb +120 -0
  271. data/spec/mongo/bulk_write_spec.rb +42 -2
  272. data/spec/mongo/client_spec.rb +121 -9
  273. data/spec/mongo/cluster/app_metadata_spec.rb +14 -1
  274. data/spec/mongo/cluster/topology_spec.rb +1 -23
  275. data/spec/mongo/collection/view/change_stream_spec.rb +62 -180
  276. data/spec/mongo/collection_spec.rb +45 -12
  277. data/spec/mongo/cursor/builder/get_more_command_spec.rb +7 -7
  278. data/spec/mongo/cursor_spec.rb +2 -2
  279. data/spec/mongo/database_spec.rb +3 -3
  280. data/spec/mongo/docs_examples_spec.rb +194 -0
  281. data/spec/mongo/error/operation_failure_spec.rb +152 -0
  282. data/spec/mongo/error/parser_spec.rb +127 -0
  283. data/spec/mongo/grid/fs_bucket_spec.rb +32 -0
  284. data/spec/mongo/grid/stream/write_spec.rb +40 -1
  285. data/spec/mongo/monitoring/event/command_failed_spec.rb +30 -0
  286. data/spec/mongo/monitoring/event/command_started_spec.rb +26 -4
  287. data/spec/mongo/monitoring/event/command_succeeded_spec.rb +29 -7
  288. data/spec/mongo/monitoring_spec.rb +28 -3
  289. data/spec/mongo/protocol/get_more_spec.rb +2 -2
  290. data/spec/mongo/retryable_spec.rb +252 -34
  291. data/spec/mongo/retryable_writes_spec.rb +468 -544
  292. data/spec/mongo/server/connection_spec.rb +5 -5
  293. data/spec/mongo/server/description_spec.rb +23 -6
  294. data/spec/mongo/session/server_session_spec.rb +2 -2
  295. data/spec/mongo/session/session_pool_spec.rb +2 -2
  296. data/spec/mongo/transactions_examples_spec.rb +227 -0
  297. data/spec/mongo/transactions_spec.rb +44 -0
  298. data/spec/spec_helper.rb +135 -49
  299. data/spec/spec_tests/change_streams_spec.rb +42 -0
  300. data/spec/{mongo → spec_tests}/command_monitoring_spec.rb +8 -2
  301. data/spec/{mongo → spec_tests}/connection_string_spec.rb +1 -1
  302. data/spec/{mongo → spec_tests}/crud_spec.rb +5 -7
  303. data/spec/{mongo → spec_tests}/dns_seedlist_discovery_spec.rb +1 -1
  304. data/spec/{mongo → spec_tests}/gridfs_spec.rb +0 -0
  305. data/spec/{mongo → spec_tests}/max_staleness_spec.rb +0 -0
  306. data/spec/spec_tests/retryable_writes_spec.rb +78 -0
  307. data/spec/{mongo → spec_tests}/sdam_monitoring_spec.rb +4 -3
  308. data/spec/{mongo → spec_tests}/sdam_spec.rb +7 -7
  309. data/spec/{mongo → spec_tests}/server_selection_rtt_spec.rb +0 -0
  310. data/spec/{mongo → spec_tests}/server_selection_spec.rb +0 -0
  311. data/spec/support/authorization.rb +18 -6
  312. data/spec/support/change_streams.rb +265 -0
  313. data/spec/support/change_streams/operation.rb +62 -0
  314. data/spec/support/change_streams_tests/change-streams-errors.yml +53 -0
  315. data/spec/support/change_streams_tests/change-streams.yml +299 -0
  316. data/spec/support/command_monitoring.rb +1 -1
  317. data/spec/support/command_monitoring/bulkWrite.yml +4 -28
  318. data/spec/support/command_monitoring/command.yml +19 -0
  319. data/spec/support/command_monitoring/find.yml +17 -19
  320. data/spec/support/command_monitoring/insertMany.yml +2 -8
  321. data/spec/support/command_monitoring/unacknowledgedBulkWrite.yml +34 -0
  322. data/spec/support/connection_string.rb +1 -1
  323. data/spec/support/constraints.rb +56 -0
  324. data/spec/support/crud.rb +9 -4
  325. data/spec/support/crud/read.rb +24 -3
  326. data/spec/support/crud/write.rb +7 -2
  327. data/spec/support/crud_tests/read/count-collation.yml +12 -2
  328. data/spec/support/crud_tests/read/count.yml +43 -5
  329. data/spec/support/gridfs.rb +1 -1
  330. data/spec/support/primary_socket.rb +21 -0
  331. data/spec/support/retryable_writes_tests/bulkWrite-serverErrors.yml +90 -0
  332. data/spec/support/retryable_writes_tests/bulkWrite.yml +99 -1
  333. data/spec/support/retryable_writes_tests/deleteOne-serverErrors.yml +50 -0
  334. data/spec/support/retryable_writes_tests/deleteOne.yml +10 -1
  335. data/spec/support/retryable_writes_tests/findOneAndDelete-serverErrors.yml +50 -0
  336. data/spec/support/retryable_writes_tests/findOneAndDelete.yml +39 -30
  337. data/spec/support/retryable_writes_tests/findOneAndReplace-serverErrors.yml +54 -0
  338. data/spec/support/retryable_writes_tests/findOneAndReplace.yml +9 -0
  339. data/spec/support/retryable_writes_tests/findOneAndUpdate-serverErrors.yml +54 -0
  340. data/spec/support/retryable_writes_tests/findOneAndUpdate.yml +9 -0
  341. data/spec/support/retryable_writes_tests/insertMany-serverErrors.yml +59 -0
  342. data/spec/support/retryable_writes_tests/insertMany.yml +11 -6
  343. data/spec/support/retryable_writes_tests/insertOne-serverErrors.yml +471 -0
  344. data/spec/support/retryable_writes_tests/insertOne.yml +9 -0
  345. data/spec/support/retryable_writes_tests/replaceOne-serverErrors.yml +58 -0
  346. data/spec/support/retryable_writes_tests/replaceOne.yml +9 -0
  347. data/spec/support/retryable_writes_tests/updateOne-serverErrors.yml +58 -0
  348. data/spec/support/retryable_writes_tests/updateOne.yml +71 -53
  349. data/spec/support/sdam/rs/normalize_case_me.yml +100 -0
  350. data/spec/support/sdam/sharded/compatible.yml +38 -0
  351. data/spec/support/sdam/sharded/mongos_disconnect.yml +9 -3
  352. data/spec/support/sdam/sharded/multiple_mongoses.yml +6 -2
  353. data/spec/support/sdam/sharded/non_mongos_removed.yml +6 -2
  354. data/spec/support/sdam/sharded/too_new.yml +36 -0
  355. data/spec/support/sdam/sharded/too_old.yml +36 -0
  356. data/spec/support/sdam/single/compatible.yml +26 -0
  357. data/spec/support/sdam/single/direct_connection_external_ip.yml +3 -1
  358. data/spec/support/sdam/single/direct_connection_mongos.yml +3 -1
  359. data/spec/support/sdam/single/direct_connection_rsarbiter.yml +3 -1
  360. data/spec/support/sdam/single/direct_connection_rsprimary.yml +3 -1
  361. data/spec/support/sdam/single/direct_connection_rssecondary.yml +3 -1
  362. data/spec/support/sdam/single/direct_connection_slave.yml +3 -1
  363. data/spec/support/sdam/single/direct_connection_standalone.yml +3 -1
  364. data/spec/support/sdam/single/not_ok_response.yml +6 -2
  365. data/spec/support/sdam/single/standalone_removed.yml +3 -1
  366. data/spec/support/sdam/single/too_new.yml +26 -0
  367. data/spec/support/sdam/single/too_old.yml +24 -0
  368. data/spec/support/shared/session.rb +107 -0
  369. data/spec/support/transactions.rb +391 -0
  370. data/spec/support/transactions/operation.rb +373 -0
  371. data/spec/support/transactions_tests/abort.yml +403 -0
  372. data/spec/support/transactions_tests/bulk.yml +267 -0
  373. data/spec/support/transactions_tests/causal-consistency.yml +173 -0
  374. data/spec/support/transactions_tests/commit.yml +593 -0
  375. data/spec/support/transactions_tests/delete.yml +184 -0
  376. data/spec/support/transactions_tests/error-labels.yml +948 -0
  377. data/spec/support/transactions_tests/errors.yml +125 -0
  378. data/spec/support/transactions_tests/findOneAndDelete.yml +126 -0
  379. data/spec/support/transactions_tests/findOneAndReplace.yml +140 -0
  380. data/spec/support/transactions_tests/findOneAndUpdate.yml +228 -0
  381. data/spec/support/transactions_tests/insert.yml +264 -0
  382. data/spec/support/transactions_tests/isolation.yml +125 -0
  383. data/spec/support/transactions_tests/read-pref.yml +340 -0
  384. data/spec/support/transactions_tests/reads.yml +298 -0
  385. data/spec/support/transactions_tests/retryable-abort.yml +1292 -0
  386. data/spec/support/transactions_tests/retryable-commit.yml +1332 -0
  387. data/spec/support/transactions_tests/retryable-writes.yml +208 -0
  388. data/spec/support/transactions_tests/run-command.yml +189 -0
  389. data/spec/support/transactions_tests/transaction-options.yml +877 -0
  390. data/spec/support/transactions_tests/update.yml +246 -0
  391. data/spec/support/transactions_tests/write-concern.yml +236 -0
  392. metadata +494 -359
  393. metadata.gz.sig +0 -0
  394. data/lib/csasl/csasl.bundle +0 -0
@@ -0,0 +1,1332 @@
1
+ database_name: &database_name "ruby-driver"
2
+ collection_name: &collection_name "transactions-tests"
3
+
4
+ data: []
5
+
6
+ tests:
7
+ - description: commitTransaction fails after two errors
8
+
9
+ clientOptions:
10
+ retryWrites: false
11
+
12
+ failPoint:
13
+ configureFailPoint: failCommand
14
+ mode: { times: 2 }
15
+ data:
16
+ failCommands: ["commitTransaction"]
17
+ closeConnection: true
18
+
19
+ operations:
20
+ - name: startTransaction
21
+ object: session0
22
+ - name: insertOne
23
+ object: collection
24
+ arguments:
25
+ session: session0
26
+ document:
27
+ _id: 1
28
+ result:
29
+ insertedId: 1
30
+ # First call to commit fails after a single retry attempt.
31
+ - name: commitTransaction
32
+ object: session0
33
+ result:
34
+ errorLabelsContain: ["UnknownTransactionCommitResult"]
35
+ errorLabelsOmit: ["TransientTransactionError"]
36
+ # Second call to commit succeeds because the failpoint was disabled.
37
+ - name: commitTransaction
38
+ object: session0
39
+
40
+ expectations:
41
+ - command_started_event:
42
+ command:
43
+ insert: *collection_name
44
+ documents:
45
+ - _id: 1
46
+ ordered: true
47
+ readConcern:
48
+ lsid: session0
49
+ txnNumber:
50
+ $numberLong: "1"
51
+ startTransaction: true
52
+ autocommit: false
53
+ writeConcern:
54
+ command_name: insert
55
+ database_name: *database_name
56
+ - command_started_event:
57
+ command:
58
+ commitTransaction: 1
59
+ lsid: session0
60
+ txnNumber:
61
+ $numberLong: "1"
62
+ startTransaction:
63
+ autocommit: false
64
+ writeConcern:
65
+ command_name: commitTransaction
66
+ database_name: admin
67
+ - command_started_event:
68
+ command:
69
+ commitTransaction: 1
70
+ lsid: session0
71
+ txnNumber:
72
+ $numberLong: "1"
73
+ startTransaction:
74
+ autocommit: false
75
+ writeConcern:
76
+ command_name: commitTransaction
77
+ database_name: admin
78
+ - command_started_event:
79
+ command:
80
+ commitTransaction: 1
81
+ lsid: session0
82
+ txnNumber:
83
+ $numberLong: "1"
84
+ startTransaction:
85
+ autocommit: false
86
+ writeConcern:
87
+ command_name: commitTransaction
88
+ database_name: admin
89
+
90
+ outcome:
91
+ collection:
92
+ data:
93
+ - _id: 1
94
+
95
+ - description: commitTransaction fails after Interrupted
96
+
97
+ failPoint:
98
+ configureFailPoint: failCommand
99
+ mode: { times: 1 }
100
+ data:
101
+ failCommands: ["commitTransaction"]
102
+ errorCode: 11601
103
+ closeConnection: false
104
+
105
+ operations:
106
+ - name: startTransaction
107
+ object: session0
108
+ - name: insertOne
109
+ object: collection
110
+ arguments:
111
+ session: session0
112
+ document:
113
+ _id: 1
114
+ result:
115
+ insertedId: 1
116
+ - name: commitTransaction
117
+ object: session0
118
+ result:
119
+ errorCodeName: Interrupted
120
+ errorLabelsOmit: ["TransientTransactionError"]
121
+
122
+ expectations:
123
+ - command_started_event:
124
+ command:
125
+ insert: *collection_name
126
+ documents:
127
+ - _id: 1
128
+ ordered: true
129
+ readConcern:
130
+ lsid: session0
131
+ txnNumber:
132
+ $numberLong: "1"
133
+ startTransaction: true
134
+ autocommit: false
135
+ writeConcern:
136
+ command_name: insert
137
+ database_name: *database_name
138
+ - command_started_event:
139
+ command:
140
+ commitTransaction: 1
141
+ lsid: session0
142
+ txnNumber:
143
+ $numberLong: "1"
144
+ startTransaction:
145
+ autocommit: false
146
+ writeConcern:
147
+ command_name: commitTransaction
148
+ database_name: admin
149
+
150
+ outcome:
151
+ collection:
152
+ data: []
153
+
154
+ - description: commitTransaction fails after WriteConcernError Interrupted
155
+
156
+ failPoint:
157
+ configureFailPoint: failCommand
158
+ mode: { times: 1 }
159
+ data:
160
+ failCommands: ["commitTransaction"]
161
+ writeConcernError:
162
+ code: 11601
163
+ errmsg: operation was interrupted
164
+
165
+ operations:
166
+ - name: startTransaction
167
+ object: session0
168
+ arguments:
169
+ options:
170
+ writeConcern:
171
+ w: majority
172
+ - name: insertOne
173
+ object: collection
174
+ arguments:
175
+ session: session0
176
+ document:
177
+ _id: 1
178
+ result:
179
+ insertedId: 1
180
+ - name: commitTransaction
181
+ object: session0
182
+ result:
183
+ errorLabelsOmit: ["TransientTransactionError"]
184
+
185
+ expectations:
186
+ - command_started_event:
187
+ command:
188
+ insert: *collection_name
189
+ documents:
190
+ - _id: 1
191
+ ordered: true
192
+ readConcern:
193
+ lsid: session0
194
+ txnNumber:
195
+ $numberLong: "1"
196
+ startTransaction: true
197
+ autocommit: false
198
+ writeConcern:
199
+ command_name: insert
200
+ database_name: *database_name
201
+ - command_started_event:
202
+ command:
203
+ commitTransaction: 1
204
+ lsid: session0
205
+ txnNumber:
206
+ $numberLong: "1"
207
+ startTransaction:
208
+ autocommit: false
209
+ writeConcern:
210
+ w: majority
211
+ command_name: commitTransaction
212
+ database_name: admin
213
+
214
+ outcome:
215
+ collection:
216
+ data:
217
+ - _id: 1
218
+
219
+ - description: commitTransaction succeeds after connection error
220
+
221
+ failPoint:
222
+ configureFailPoint: failCommand
223
+ mode: { times: 1 }
224
+ data:
225
+ failCommands: ["commitTransaction"]
226
+ closeConnection: true
227
+
228
+ operations:
229
+ - name: startTransaction
230
+ object: session0
231
+ - name: insertOne
232
+ object: collection
233
+ arguments:
234
+ session: session0
235
+ document:
236
+ _id: 1
237
+ result:
238
+ insertedId: 1
239
+ - name: commitTransaction
240
+ object: session0
241
+
242
+ expectations:
243
+ - command_started_event:
244
+ command:
245
+ insert: *collection_name
246
+ documents:
247
+ - _id: 1
248
+ ordered: true
249
+ readConcern:
250
+ lsid: session0
251
+ txnNumber:
252
+ $numberLong: "1"
253
+ startTransaction: true
254
+ autocommit: false
255
+ writeConcern:
256
+ command_name: insert
257
+ database_name: *database_name
258
+ - command_started_event:
259
+ command:
260
+ commitTransaction: 1
261
+ lsid: session0
262
+ txnNumber:
263
+ $numberLong: "1"
264
+ startTransaction:
265
+ autocommit: false
266
+ writeConcern:
267
+ command_name: commitTransaction
268
+ database_name: admin
269
+ - command_started_event:
270
+ command:
271
+ commitTransaction: 1
272
+ lsid: session0
273
+ txnNumber:
274
+ $numberLong: "1"
275
+ startTransaction:
276
+ autocommit: false
277
+ writeConcern:
278
+ command_name: commitTransaction
279
+ database_name: admin
280
+
281
+ outcome:
282
+ collection:
283
+ data:
284
+ - _id: 1
285
+
286
+ - description: commitTransaction succeeds after NotMaster
287
+
288
+ failPoint:
289
+ configureFailPoint: failCommand
290
+ mode: { times: 1 }
291
+ data:
292
+ failCommands: ["commitTransaction"]
293
+ errorCode: 10107
294
+ closeConnection: false
295
+
296
+ operations:
297
+ - name: startTransaction
298
+ object: session0
299
+ - name: insertOne
300
+ object: collection
301
+ arguments:
302
+ session: session0
303
+ document:
304
+ _id: 1
305
+ result:
306
+ insertedId: 1
307
+ - name: commitTransaction
308
+ object: session0
309
+
310
+ expectations:
311
+ - command_started_event:
312
+ command:
313
+ insert: *collection_name
314
+ documents:
315
+ - _id: 1
316
+ ordered: true
317
+ readConcern:
318
+ lsid: session0
319
+ txnNumber:
320
+ $numberLong: "1"
321
+ startTransaction: true
322
+ autocommit: false
323
+ writeConcern:
324
+ command_name: insert
325
+ database_name: *database_name
326
+ - command_started_event:
327
+ command:
328
+ commitTransaction: 1
329
+ lsid: session0
330
+ txnNumber:
331
+ $numberLong: "1"
332
+ startTransaction:
333
+ autocommit: false
334
+ writeConcern:
335
+ command_name: commitTransaction
336
+ database_name: admin
337
+ - command_started_event:
338
+ command:
339
+ commitTransaction: 1
340
+ lsid: session0
341
+ txnNumber:
342
+ $numberLong: "1"
343
+ startTransaction:
344
+ autocommit: false
345
+ writeConcern:
346
+ command_name: commitTransaction
347
+ database_name: admin
348
+
349
+ outcome:
350
+ collection:
351
+ data:
352
+ - _id: 1
353
+
354
+ - description: commitTransaction succeeds after NotMasterOrSecondary
355
+
356
+ failPoint:
357
+ configureFailPoint: failCommand
358
+ mode: { times: 1 }
359
+ data:
360
+ failCommands: ["commitTransaction"]
361
+ errorCode: 13436
362
+ closeConnection: false
363
+
364
+ operations:
365
+ - name: startTransaction
366
+ object: session0
367
+ - name: insertOne
368
+ object: collection
369
+ arguments:
370
+ session: session0
371
+ document:
372
+ _id: 1
373
+ result:
374
+ insertedId: 1
375
+ - name: commitTransaction
376
+ object: session0
377
+
378
+ expectations:
379
+ - command_started_event:
380
+ command:
381
+ insert: *collection_name
382
+ documents:
383
+ - _id: 1
384
+ ordered: true
385
+ readConcern:
386
+ lsid: session0
387
+ txnNumber:
388
+ $numberLong: "1"
389
+ startTransaction: true
390
+ autocommit: false
391
+ writeConcern:
392
+ command_name: insert
393
+ database_name: *database_name
394
+ - command_started_event:
395
+ command:
396
+ commitTransaction: 1
397
+ lsid: session0
398
+ txnNumber:
399
+ $numberLong: "1"
400
+ startTransaction:
401
+ autocommit: false
402
+ writeConcern:
403
+ command_name: commitTransaction
404
+ database_name: admin
405
+ - command_started_event:
406
+ command:
407
+ commitTransaction: 1
408
+ lsid: session0
409
+ txnNumber:
410
+ $numberLong: "1"
411
+ startTransaction:
412
+ autocommit: false
413
+ writeConcern:
414
+ command_name: commitTransaction
415
+ database_name: admin
416
+
417
+ outcome:
418
+ collection:
419
+ data:
420
+ - _id: 1
421
+
422
+ - description: commitTransaction succeeds after NotMasterNoSlaveOk
423
+
424
+ failPoint:
425
+ configureFailPoint: failCommand
426
+ mode: { times: 1 }
427
+ data:
428
+ failCommands: ["commitTransaction"]
429
+ errorCode: 13435
430
+ closeConnection: false
431
+
432
+ operations:
433
+ - name: startTransaction
434
+ object: session0
435
+ - name: insertOne
436
+ object: collection
437
+ arguments:
438
+ session: session0
439
+ document:
440
+ _id: 1
441
+ result:
442
+ insertedId: 1
443
+ - name: commitTransaction
444
+ object: session0
445
+
446
+ expectations:
447
+ - command_started_event:
448
+ command:
449
+ insert: *collection_name
450
+ documents:
451
+ - _id: 1
452
+ ordered: true
453
+ readConcern:
454
+ lsid: session0
455
+ txnNumber:
456
+ $numberLong: "1"
457
+ startTransaction: true
458
+ autocommit: false
459
+ writeConcern:
460
+ command_name: insert
461
+ database_name: *database_name
462
+ - command_started_event:
463
+ command:
464
+ commitTransaction: 1
465
+ lsid: session0
466
+ txnNumber:
467
+ $numberLong: "1"
468
+ startTransaction:
469
+ autocommit: false
470
+ writeConcern:
471
+ command_name: commitTransaction
472
+ database_name: admin
473
+ - command_started_event:
474
+ command:
475
+ commitTransaction: 1
476
+ lsid: session0
477
+ txnNumber:
478
+ $numberLong: "1"
479
+ startTransaction:
480
+ autocommit: false
481
+ writeConcern:
482
+ command_name: commitTransaction
483
+ database_name: admin
484
+
485
+ outcome:
486
+ collection:
487
+ data:
488
+ - _id: 1
489
+
490
+ - description: commitTransaction succeeds after InterruptedDueToReplStateChange
491
+
492
+ failPoint:
493
+ configureFailPoint: failCommand
494
+ mode: { times: 1 }
495
+ data:
496
+ failCommands: ["commitTransaction"]
497
+ errorCode: 11602
498
+ closeConnection: false
499
+
500
+ operations:
501
+ - name: startTransaction
502
+ object: session0
503
+ - name: insertOne
504
+ object: collection
505
+ arguments:
506
+ session: session0
507
+ document:
508
+ _id: 1
509
+ result:
510
+ insertedId: 1
511
+ - name: commitTransaction
512
+ object: session0
513
+
514
+ expectations:
515
+ - command_started_event:
516
+ command:
517
+ insert: *collection_name
518
+ documents:
519
+ - _id: 1
520
+ ordered: true
521
+ readConcern:
522
+ lsid: session0
523
+ txnNumber:
524
+ $numberLong: "1"
525
+ startTransaction: true
526
+ autocommit: false
527
+ writeConcern:
528
+ command_name: insert
529
+ database_name: *database_name
530
+ - command_started_event:
531
+ command:
532
+ commitTransaction: 1
533
+ lsid: session0
534
+ txnNumber:
535
+ $numberLong: "1"
536
+ startTransaction:
537
+ autocommit: false
538
+ writeConcern:
539
+ command_name: commitTransaction
540
+ database_name: admin
541
+ - command_started_event:
542
+ command:
543
+ commitTransaction: 1
544
+ lsid: session0
545
+ txnNumber:
546
+ $numberLong: "1"
547
+ startTransaction:
548
+ autocommit: false
549
+ writeConcern:
550
+ command_name: commitTransaction
551
+ database_name: admin
552
+
553
+ outcome:
554
+ collection:
555
+ data:
556
+ - _id: 1
557
+
558
+ - description: commitTransaction succeeds after InterruptedAtShutdown
559
+
560
+ failPoint:
561
+ configureFailPoint: failCommand
562
+ mode: { times: 1 }
563
+ data:
564
+ failCommands: ["commitTransaction"]
565
+ errorCode: 11600
566
+ closeConnection: false
567
+
568
+ operations:
569
+ - name: startTransaction
570
+ object: session0
571
+ - name: insertOne
572
+ object: collection
573
+ arguments:
574
+ session: session0
575
+ document:
576
+ _id: 1
577
+ result:
578
+ insertedId: 1
579
+ - name: commitTransaction
580
+ object: session0
581
+
582
+ expectations:
583
+ - command_started_event:
584
+ command:
585
+ insert: *collection_name
586
+ documents:
587
+ - _id: 1
588
+ ordered: true
589
+ readConcern:
590
+ lsid: session0
591
+ txnNumber:
592
+ $numberLong: "1"
593
+ startTransaction: true
594
+ autocommit: false
595
+ writeConcern:
596
+ command_name: insert
597
+ database_name: *database_name
598
+ - command_started_event:
599
+ command:
600
+ commitTransaction: 1
601
+ lsid: session0
602
+ txnNumber:
603
+ $numberLong: "1"
604
+ startTransaction:
605
+ autocommit: false
606
+ writeConcern:
607
+ command_name: commitTransaction
608
+ database_name: admin
609
+ - command_started_event:
610
+ command:
611
+ commitTransaction: 1
612
+ lsid: session0
613
+ txnNumber:
614
+ $numberLong: "1"
615
+ startTransaction:
616
+ autocommit: false
617
+ writeConcern:
618
+ command_name: commitTransaction
619
+ database_name: admin
620
+
621
+ outcome:
622
+ collection:
623
+ data:
624
+ - _id: 1
625
+
626
+ - description: commitTransaction succeeds after PrimarySteppedDown
627
+
628
+ failPoint:
629
+ configureFailPoint: failCommand
630
+ mode: { times: 1 }
631
+ data:
632
+ failCommands: ["commitTransaction"]
633
+ errorCode: 189
634
+ closeConnection: false
635
+
636
+ operations:
637
+ - name: startTransaction
638
+ object: session0
639
+ - name: insertOne
640
+ object: collection
641
+ arguments:
642
+ session: session0
643
+ document:
644
+ _id: 1
645
+ result:
646
+ insertedId: 1
647
+ - name: commitTransaction
648
+ object: session0
649
+
650
+ expectations:
651
+ - command_started_event:
652
+ command:
653
+ insert: *collection_name
654
+ documents:
655
+ - _id: 1
656
+ ordered: true
657
+ readConcern:
658
+ lsid: session0
659
+ txnNumber:
660
+ $numberLong: "1"
661
+ startTransaction: true
662
+ autocommit: false
663
+ writeConcern:
664
+ command_name: insert
665
+ database_name: *database_name
666
+ - command_started_event:
667
+ command:
668
+ commitTransaction: 1
669
+ lsid: session0
670
+ txnNumber:
671
+ $numberLong: "1"
672
+ startTransaction:
673
+ autocommit: false
674
+ writeConcern:
675
+ command_name: commitTransaction
676
+ database_name: admin
677
+ - command_started_event:
678
+ command:
679
+ commitTransaction: 1
680
+ lsid: session0
681
+ txnNumber:
682
+ $numberLong: "1"
683
+ startTransaction:
684
+ autocommit: false
685
+ writeConcern:
686
+ command_name: commitTransaction
687
+ database_name: admin
688
+
689
+ outcome:
690
+ collection:
691
+ data:
692
+ - _id: 1
693
+
694
+ - description: commitTransaction succeeds after ShutdownInProgress
695
+
696
+ failPoint:
697
+ configureFailPoint: failCommand
698
+ mode: { times: 1 }
699
+ data:
700
+ failCommands: ["commitTransaction"]
701
+ errorCode: 91
702
+ closeConnection: false
703
+
704
+ operations:
705
+ - name: startTransaction
706
+ object: session0
707
+ - name: insertOne
708
+ object: collection
709
+ arguments:
710
+ session: session0
711
+ document:
712
+ _id: 1
713
+ result:
714
+ insertedId: 1
715
+ - name: commitTransaction
716
+ object: session0
717
+
718
+ expectations:
719
+ - command_started_event:
720
+ command:
721
+ insert: *collection_name
722
+ documents:
723
+ - _id: 1
724
+ ordered: true
725
+ readConcern:
726
+ lsid: session0
727
+ txnNumber:
728
+ $numberLong: "1"
729
+ startTransaction: true
730
+ autocommit: false
731
+ writeConcern:
732
+ command_name: insert
733
+ database_name: *database_name
734
+ - command_started_event:
735
+ command:
736
+ commitTransaction: 1
737
+ lsid: session0
738
+ txnNumber:
739
+ $numberLong: "1"
740
+ startTransaction:
741
+ autocommit: false
742
+ writeConcern:
743
+ command_name: commitTransaction
744
+ database_name: admin
745
+ - command_started_event:
746
+ command:
747
+ commitTransaction: 1
748
+ lsid: session0
749
+ txnNumber:
750
+ $numberLong: "1"
751
+ startTransaction:
752
+ autocommit: false
753
+ writeConcern:
754
+ command_name: commitTransaction
755
+ database_name: admin
756
+
757
+ outcome:
758
+ collection:
759
+ data:
760
+ - _id: 1
761
+
762
+ - description: commitTransaction succeeds after HostNotFound
763
+
764
+ failPoint:
765
+ configureFailPoint: failCommand
766
+ mode: { times: 1 }
767
+ data:
768
+ failCommands: ["commitTransaction"]
769
+ errorCode: 7
770
+ closeConnection: false
771
+
772
+ operations:
773
+ - name: startTransaction
774
+ object: session0
775
+ - name: insertOne
776
+ object: collection
777
+ arguments:
778
+ session: session0
779
+ document:
780
+ _id: 1
781
+ result:
782
+ insertedId: 1
783
+ - name: commitTransaction
784
+ object: session0
785
+
786
+ expectations:
787
+ - command_started_event:
788
+ command:
789
+ insert: *collection_name
790
+ documents:
791
+ - _id: 1
792
+ ordered: true
793
+ readConcern:
794
+ lsid: session0
795
+ txnNumber:
796
+ $numberLong: "1"
797
+ startTransaction: true
798
+ autocommit: false
799
+ writeConcern:
800
+ command_name: insert
801
+ database_name: *database_name
802
+ - command_started_event:
803
+ command:
804
+ commitTransaction: 1
805
+ lsid: session0
806
+ txnNumber:
807
+ $numberLong: "1"
808
+ startTransaction:
809
+ autocommit: false
810
+ writeConcern:
811
+ command_name: commitTransaction
812
+ database_name: admin
813
+ - command_started_event:
814
+ command:
815
+ commitTransaction: 1
816
+ lsid: session0
817
+ txnNumber:
818
+ $numberLong: "1"
819
+ startTransaction:
820
+ autocommit: false
821
+ writeConcern:
822
+ command_name: commitTransaction
823
+ database_name: admin
824
+
825
+ outcome:
826
+ collection:
827
+ data:
828
+ - _id: 1
829
+
830
+ - description: commitTransaction succeeds after HostUnreachable
831
+
832
+ failPoint:
833
+ configureFailPoint: failCommand
834
+ mode: { times: 1 }
835
+ data:
836
+ failCommands: ["commitTransaction"]
837
+ errorCode: 6
838
+ closeConnection: false
839
+
840
+ operations:
841
+ - name: startTransaction
842
+ object: session0
843
+ - name: insertOne
844
+ object: collection
845
+ arguments:
846
+ session: session0
847
+ document:
848
+ _id: 1
849
+ result:
850
+ insertedId: 1
851
+ - name: commitTransaction
852
+ object: session0
853
+
854
+ expectations:
855
+ - command_started_event:
856
+ command:
857
+ insert: *collection_name
858
+ documents:
859
+ - _id: 1
860
+ ordered: true
861
+ readConcern:
862
+ lsid: session0
863
+ txnNumber:
864
+ $numberLong: "1"
865
+ startTransaction: true
866
+ autocommit: false
867
+ writeConcern:
868
+ command_name: insert
869
+ database_name: *database_name
870
+ - command_started_event:
871
+ command:
872
+ commitTransaction: 1
873
+ lsid: session0
874
+ txnNumber:
875
+ $numberLong: "1"
876
+ startTransaction:
877
+ autocommit: false
878
+ writeConcern:
879
+ command_name: commitTransaction
880
+ database_name: admin
881
+ - command_started_event:
882
+ command:
883
+ commitTransaction: 1
884
+ lsid: session0
885
+ txnNumber:
886
+ $numberLong: "1"
887
+ startTransaction:
888
+ autocommit: false
889
+ writeConcern:
890
+ command_name: commitTransaction
891
+ database_name: admin
892
+
893
+ outcome:
894
+ collection:
895
+ data:
896
+ - _id: 1
897
+
898
+ - description: commitTransaction succeeds after SocketException
899
+
900
+ failPoint:
901
+ configureFailPoint: failCommand
902
+ mode: { times: 1 }
903
+ data:
904
+ failCommands: ["commitTransaction"]
905
+ errorCode: 9001
906
+ closeConnection: false
907
+
908
+ operations:
909
+ - name: startTransaction
910
+ object: session0
911
+ - name: insertOne
912
+ object: collection
913
+ arguments:
914
+ session: session0
915
+ document:
916
+ _id: 1
917
+ result:
918
+ insertedId: 1
919
+ - name: commitTransaction
920
+ object: session0
921
+
922
+ expectations:
923
+ - command_started_event:
924
+ command:
925
+ insert: *collection_name
926
+ documents:
927
+ - _id: 1
928
+ ordered: true
929
+ readConcern:
930
+ lsid: session0
931
+ txnNumber:
932
+ $numberLong: "1"
933
+ startTransaction: true
934
+ autocommit: false
935
+ writeConcern:
936
+ command_name: insert
937
+ database_name: *database_name
938
+ - command_started_event:
939
+ command:
940
+ commitTransaction: 1
941
+ lsid: session0
942
+ txnNumber:
943
+ $numberLong: "1"
944
+ startTransaction:
945
+ autocommit: false
946
+ writeConcern:
947
+ command_name: commitTransaction
948
+ database_name: admin
949
+ - command_started_event:
950
+ command:
951
+ commitTransaction: 1
952
+ lsid: session0
953
+ txnNumber:
954
+ $numberLong: "1"
955
+ startTransaction:
956
+ autocommit: false
957
+ writeConcern:
958
+ command_name: commitTransaction
959
+ database_name: admin
960
+
961
+ outcome:
962
+ collection:
963
+ data:
964
+ - _id: 1
965
+
966
+ - description: commitTransaction succeeds after NetworkTimeout
967
+
968
+ failPoint:
969
+ configureFailPoint: failCommand
970
+ mode: { times: 1 }
971
+ data:
972
+ failCommands: ["commitTransaction"]
973
+ errorCode: 89
974
+ closeConnection: false
975
+
976
+ operations:
977
+ - name: startTransaction
978
+ object: session0
979
+ - name: insertOne
980
+ object: collection
981
+ arguments:
982
+ session: session0
983
+ document:
984
+ _id: 1
985
+ result:
986
+ insertedId: 1
987
+ - name: commitTransaction
988
+ object: session0
989
+
990
+ expectations:
991
+ - command_started_event:
992
+ command:
993
+ insert: *collection_name
994
+ documents:
995
+ - _id: 1
996
+ ordered: true
997
+ readConcern:
998
+ lsid: session0
999
+ txnNumber:
1000
+ $numberLong: "1"
1001
+ startTransaction: true
1002
+ autocommit: false
1003
+ writeConcern:
1004
+ command_name: insert
1005
+ database_name: *database_name
1006
+ - command_started_event:
1007
+ command:
1008
+ commitTransaction: 1
1009
+ lsid: session0
1010
+ txnNumber:
1011
+ $numberLong: "1"
1012
+ startTransaction:
1013
+ autocommit: false
1014
+ writeConcern:
1015
+ command_name: commitTransaction
1016
+ database_name: admin
1017
+ - command_started_event:
1018
+ command:
1019
+ commitTransaction: 1
1020
+ lsid: session0
1021
+ txnNumber:
1022
+ $numberLong: "1"
1023
+ startTransaction:
1024
+ autocommit: false
1025
+ writeConcern:
1026
+ command_name: commitTransaction
1027
+ database_name: admin
1028
+
1029
+ outcome:
1030
+ collection:
1031
+ data:
1032
+ - _id: 1
1033
+
1034
+ - description: commitTransaction succeeds after WriteConcernError InterruptedAtShutdown
1035
+
1036
+ failPoint:
1037
+ configureFailPoint: failCommand
1038
+ mode: { times: 1 }
1039
+ data:
1040
+ failCommands: ["commitTransaction"]
1041
+ writeConcernError:
1042
+ code: 11600
1043
+ errmsg: Replication is being shut down
1044
+
1045
+ operations:
1046
+ - name: startTransaction
1047
+ object: session0
1048
+ arguments:
1049
+ options:
1050
+ writeConcern:
1051
+ w: majority
1052
+ - name: insertOne
1053
+ object: collection
1054
+ arguments:
1055
+ session: session0
1056
+ document:
1057
+ _id: 1
1058
+ result:
1059
+ insertedId: 1
1060
+ - name: commitTransaction
1061
+ object: session0
1062
+
1063
+ expectations:
1064
+ - command_started_event:
1065
+ command:
1066
+ insert: *collection_name
1067
+ documents:
1068
+ - _id: 1
1069
+ ordered: true
1070
+ readConcern:
1071
+ lsid: session0
1072
+ txnNumber:
1073
+ $numberLong: "1"
1074
+ startTransaction: true
1075
+ autocommit: false
1076
+ writeConcern:
1077
+ command_name: insert
1078
+ database_name: *database_name
1079
+ - command_started_event:
1080
+ command:
1081
+ commitTransaction: 1
1082
+ lsid: session0
1083
+ txnNumber:
1084
+ $numberLong: "1"
1085
+ startTransaction:
1086
+ autocommit: false
1087
+ writeConcern:
1088
+ w: majority
1089
+ command_name: commitTransaction
1090
+ database_name: admin
1091
+ - command_started_event:
1092
+ command:
1093
+ commitTransaction: 1
1094
+ lsid: session0
1095
+ txnNumber:
1096
+ $numberLong: "1"
1097
+ startTransaction:
1098
+ autocommit: false
1099
+ writeConcern:
1100
+ w: majority
1101
+ command_name: commitTransaction
1102
+ database_name: admin
1103
+
1104
+ outcome:
1105
+ collection:
1106
+ data:
1107
+ - _id: 1
1108
+
1109
+ - description: commitTransaction succeeds after WriteConcernError InterruptedDueToReplStateChange
1110
+
1111
+ failPoint:
1112
+ configureFailPoint: failCommand
1113
+ mode: { times: 1 }
1114
+ data:
1115
+ failCommands: ["commitTransaction"]
1116
+ writeConcernError:
1117
+ code: 11602
1118
+ errmsg: Replication is being shut down
1119
+
1120
+ operations:
1121
+ - name: startTransaction
1122
+ object: session0
1123
+ arguments:
1124
+ options:
1125
+ writeConcern:
1126
+ w: majority
1127
+ - name: insertOne
1128
+ object: collection
1129
+ arguments:
1130
+ session: session0
1131
+ document:
1132
+ _id: 1
1133
+ result:
1134
+ insertedId: 1
1135
+ - name: commitTransaction
1136
+ object: session0
1137
+
1138
+ expectations:
1139
+ - command_started_event:
1140
+ command:
1141
+ insert: *collection_name
1142
+ documents:
1143
+ - _id: 1
1144
+ ordered: true
1145
+ readConcern:
1146
+ lsid: session0
1147
+ txnNumber:
1148
+ $numberLong: "1"
1149
+ startTransaction: true
1150
+ autocommit: false
1151
+ writeConcern:
1152
+ command_name: insert
1153
+ database_name: *database_name
1154
+ - command_started_event:
1155
+ command:
1156
+ commitTransaction: 1
1157
+ lsid: session0
1158
+ txnNumber:
1159
+ $numberLong: "1"
1160
+ startTransaction:
1161
+ autocommit: false
1162
+ writeConcern:
1163
+ w: majority
1164
+ command_name: commitTransaction
1165
+ database_name: admin
1166
+ - command_started_event:
1167
+ command:
1168
+ commitTransaction: 1
1169
+ lsid: session0
1170
+ txnNumber:
1171
+ $numberLong: "1"
1172
+ startTransaction:
1173
+ autocommit: false
1174
+ writeConcern:
1175
+ w: majority
1176
+ command_name: commitTransaction
1177
+ database_name: admin
1178
+
1179
+ outcome:
1180
+ collection:
1181
+ data:
1182
+ - _id: 1
1183
+
1184
+ - description: commitTransaction succeeds after WriteConcernError PrimarySteppedDown
1185
+
1186
+ failPoint:
1187
+ configureFailPoint: failCommand
1188
+ mode: { times: 1 }
1189
+ data:
1190
+ failCommands: ["commitTransaction"]
1191
+ writeConcernError:
1192
+ code: 189
1193
+ errmsg: Replication is being shut down
1194
+
1195
+ operations:
1196
+ - name: startTransaction
1197
+ object: session0
1198
+ arguments:
1199
+ options:
1200
+ writeConcern:
1201
+ w: majority
1202
+ - name: insertOne
1203
+ object: collection
1204
+ arguments:
1205
+ session: session0
1206
+ document:
1207
+ _id: 1
1208
+ result:
1209
+ insertedId: 1
1210
+ - name: commitTransaction
1211
+ object: session0
1212
+
1213
+ expectations:
1214
+ - command_started_event:
1215
+ command:
1216
+ insert: *collection_name
1217
+ documents:
1218
+ - _id: 1
1219
+ ordered: true
1220
+ readConcern:
1221
+ lsid: session0
1222
+ txnNumber:
1223
+ $numberLong: "1"
1224
+ startTransaction: true
1225
+ autocommit: false
1226
+ writeConcern:
1227
+ command_name: insert
1228
+ database_name: *database_name
1229
+ - command_started_event:
1230
+ command:
1231
+ commitTransaction: 1
1232
+ lsid: session0
1233
+ txnNumber:
1234
+ $numberLong: "1"
1235
+ startTransaction:
1236
+ autocommit: false
1237
+ writeConcern:
1238
+ w: majority
1239
+ command_name: commitTransaction
1240
+ database_name: admin
1241
+ - command_started_event:
1242
+ command:
1243
+ commitTransaction: 1
1244
+ lsid: session0
1245
+ txnNumber:
1246
+ $numberLong: "1"
1247
+ startTransaction:
1248
+ autocommit: false
1249
+ writeConcern:
1250
+ w: majority
1251
+ command_name: commitTransaction
1252
+ database_name: admin
1253
+
1254
+ outcome:
1255
+ collection:
1256
+ data:
1257
+ - _id: 1
1258
+
1259
+ - description: commitTransaction succeeds after WriteConcernError ShutdownInProgress
1260
+
1261
+ failPoint:
1262
+ configureFailPoint: failCommand
1263
+ mode: { times: 1 }
1264
+ data:
1265
+ failCommands: ["commitTransaction"]
1266
+ writeConcernError:
1267
+ code: 91
1268
+ errmsg: Replication is being shut down
1269
+
1270
+ operations:
1271
+ - name: startTransaction
1272
+ object: session0
1273
+ arguments:
1274
+ options:
1275
+ writeConcern:
1276
+ w: majority
1277
+ - name: insertOne
1278
+ object: collection
1279
+ arguments:
1280
+ session: session0
1281
+ document:
1282
+ _id: 1
1283
+ result:
1284
+ insertedId: 1
1285
+ - name: commitTransaction
1286
+ object: session0
1287
+
1288
+ expectations:
1289
+ - command_started_event:
1290
+ command:
1291
+ insert: *collection_name
1292
+ documents:
1293
+ - _id: 1
1294
+ ordered: true
1295
+ readConcern:
1296
+ lsid: session0
1297
+ txnNumber:
1298
+ $numberLong: "1"
1299
+ startTransaction: true
1300
+ autocommit: false
1301
+ writeConcern:
1302
+ command_name: insert
1303
+ database_name: *database_name
1304
+ - command_started_event:
1305
+ command:
1306
+ commitTransaction: 1
1307
+ lsid: session0
1308
+ txnNumber:
1309
+ $numberLong: "1"
1310
+ startTransaction:
1311
+ autocommit: false
1312
+ writeConcern:
1313
+ w: majority
1314
+ command_name: commitTransaction
1315
+ database_name: admin
1316
+ - command_started_event:
1317
+ command:
1318
+ commitTransaction: 1
1319
+ lsid: session0
1320
+ txnNumber:
1321
+ $numberLong: "1"
1322
+ startTransaction:
1323
+ autocommit: false
1324
+ writeConcern:
1325
+ w: majority
1326
+ command_name: commitTransaction
1327
+ database_name: admin
1328
+
1329
+ outcome:
1330
+ collection:
1331
+ data:
1332
+ - _id: 1