mongo 2.23.0 → 2.24.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 (463) hide show
  1. checksums.yaml +4 -4
  2. data/bin/mongo_console +0 -1
  3. data/lib/mongo/active_support.rb +1 -2
  4. data/lib/mongo/address/ipv4.rb +3 -6
  5. data/lib/mongo/address/ipv6.rb +6 -10
  6. data/lib/mongo/address/unix.rb +1 -4
  7. data/lib/mongo/address/validator.rb +16 -28
  8. data/lib/mongo/address.rb +30 -40
  9. data/lib/mongo/auth/aws/conversation.rb +6 -10
  10. data/lib/mongo/auth/aws/credentials.rb +0 -1
  11. data/lib/mongo/auth/aws/credentials_cache.rb +0 -1
  12. data/lib/mongo/auth/aws/credentials_retriever.rb +45 -59
  13. data/lib/mongo/auth/aws/request.rb +20 -35
  14. data/lib/mongo/auth/aws.rb +1 -2
  15. data/lib/mongo/auth/base.rb +20 -29
  16. data/lib/mongo/auth/conversation_base.rb +14 -18
  17. data/lib/mongo/auth/cr/conversation.rb +0 -3
  18. data/lib/mongo/auth/cr.rb +1 -4
  19. data/lib/mongo/auth/credential_cache.rb +0 -2
  20. data/lib/mongo/auth/gssapi/conversation.rb +3 -8
  21. data/lib/mongo/auth/gssapi.rb +1 -4
  22. data/lib/mongo/auth/ldap/conversation.rb +0 -3
  23. data/lib/mongo/auth/ldap.rb +1 -4
  24. data/lib/mongo/auth/roles.rb +16 -19
  25. data/lib/mongo/auth/sasl_conversation_base.rb +7 -11
  26. data/lib/mongo/auth/scram/conversation.rb +2 -5
  27. data/lib/mongo/auth/scram.rb +5 -10
  28. data/lib/mongo/auth/scram256/conversation.rb +2 -5
  29. data/lib/mongo/auth/scram256.rb +1 -3
  30. data/lib/mongo/auth/scram_conversation_base.rb +18 -24
  31. data/lib/mongo/auth/stringprep/profiles/sasl.rb +17 -18
  32. data/lib/mongo/auth/stringprep/tables.rb +2209 -2210
  33. data/lib/mongo/auth/stringprep/unicode_normalize/normalize.rb +36 -38
  34. data/lib/mongo/auth/stringprep/unicode_normalize/tables.rb +1142 -1150
  35. data/lib/mongo/auth/stringprep.rb +9 -12
  36. data/lib/mongo/auth/user/view.rb +3 -5
  37. data/lib/mongo/auth/user.rb +14 -24
  38. data/lib/mongo/auth/x509/conversation.rb +0 -3
  39. data/lib/mongo/auth/x509.rb +7 -9
  40. data/lib/mongo/auth.rb +18 -30
  41. data/lib/mongo/background_thread.rb +9 -17
  42. data/lib/mongo/bson.rb +0 -2
  43. data/lib/mongo/bulk_write/combineable.rb +0 -3
  44. data/lib/mongo/bulk_write/ordered_combiner.rb +1 -3
  45. data/lib/mongo/bulk_write/result.rb +11 -16
  46. data/lib/mongo/bulk_write/result_combiner.rb +9 -12
  47. data/lib/mongo/bulk_write/transformable.rb +16 -19
  48. data/lib/mongo/bulk_write/unordered_combiner.rb +1 -3
  49. data/lib/mongo/bulk_write/validatable.rb +11 -18
  50. data/lib/mongo/bulk_write.rb +76 -91
  51. data/lib/mongo/caching_cursor.rb +2 -7
  52. data/lib/mongo/client.rb +230 -275
  53. data/lib/mongo/client_encryption.rb +4 -5
  54. data/lib/mongo/cluster/periodic_executor.rb +2 -5
  55. data/lib/mongo/cluster/reapers/cursor_reaper.rb +21 -29
  56. data/lib/mongo/cluster/reapers/socket_reaper.rb +1 -6
  57. data/lib/mongo/cluster/sdam_flow.rb +136 -159
  58. data/lib/mongo/cluster/topology/base.rb +15 -18
  59. data/lib/mongo/cluster/topology/load_balanced.rb +24 -14
  60. data/lib/mongo/cluster/topology/no_replica_set_options.rb +3 -6
  61. data/lib/mongo/cluster/topology/replica_set_no_primary.rb +20 -23
  62. data/lib/mongo/cluster/topology/replica_set_with_primary.rb +0 -2
  63. data/lib/mongo/cluster/topology/sharded.rb +19 -9
  64. data/lib/mongo/cluster/topology/single.rb +24 -14
  65. data/lib/mongo/cluster/topology/unknown.rb +20 -10
  66. data/lib/mongo/cluster/topology.rb +29 -25
  67. data/lib/mongo/cluster.rb +148 -183
  68. data/lib/mongo/cluster_time.rb +14 -31
  69. data/lib/mongo/collection/helpers.rb +5 -8
  70. data/lib/mongo/collection/view/aggregation.rb +5 -10
  71. data/lib/mongo/collection/view/builder/aggregation.rb +6 -9
  72. data/lib/mongo/collection/view/builder/map_reduce.rb +18 -17
  73. data/lib/mongo/collection/view/builder.rb +0 -1
  74. data/lib/mongo/collection/view/change_stream/retryable.rb +3 -8
  75. data/lib/mongo/collection/view/change_stream.rb +59 -58
  76. data/lib/mongo/collection/view/explainable.rb +11 -20
  77. data/lib/mongo/collection/view/immutable.rb +1 -3
  78. data/lib/mongo/collection/view/iterable.rb +35 -28
  79. data/lib/mongo/collection/view/map_reduce.rb +20 -25
  80. data/lib/mongo/collection/view/readable.rb +50 -57
  81. data/lib/mongo/collection/view/writable.rb +56 -72
  82. data/lib/mongo/collection/view.rb +9 -8
  83. data/lib/mongo/collection.rb +63 -76
  84. data/lib/mongo/condition_variable.rb +4 -4
  85. data/lib/mongo/config/options.rb +0 -3
  86. data/lib/mongo/config/validators/option.rb +3 -5
  87. data/lib/mongo/config.rb +2 -4
  88. data/lib/mongo/crypt/auto_decryption_context.rb +0 -3
  89. data/lib/mongo/crypt/auto_encrypter.rb +34 -43
  90. data/lib/mongo/crypt/auto_encryption_context.rb +0 -3
  91. data/lib/mongo/crypt/binary.rb +5 -9
  92. data/lib/mongo/crypt/binding.rb +149 -155
  93. data/lib/mongo/crypt/context.rb +10 -17
  94. data/lib/mongo/crypt/data_key_context.rb +2 -7
  95. data/lib/mongo/crypt/encryption_io.rb +29 -39
  96. data/lib/mongo/crypt/explicit_decryption_context.rb +0 -3
  97. data/lib/mongo/crypt/explicit_encrypter.rb +1 -1
  98. data/lib/mongo/crypt/explicit_encryption_context.rb +19 -30
  99. data/lib/mongo/crypt/explicit_encryption_expression_context.rb +0 -2
  100. data/lib/mongo/crypt/handle.rb +42 -48
  101. data/lib/mongo/crypt/hooks.rb +12 -15
  102. data/lib/mongo/crypt/kms/aws/credentials.rb +12 -16
  103. data/lib/mongo/crypt/kms/aws/master_document.rb +6 -9
  104. data/lib/mongo/crypt/kms/aws.rb +0 -2
  105. data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +2 -7
  106. data/lib/mongo/crypt/kms/azure/master_document.rb +15 -19
  107. data/lib/mongo/crypt/kms/azure.rb +0 -1
  108. data/lib/mongo/crypt/kms/credentials.rb +13 -27
  109. data/lib/mongo/crypt/kms/gcp/credentials.rb +12 -14
  110. data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +7 -9
  111. data/lib/mongo/crypt/kms/gcp/master_document.rb +12 -16
  112. data/lib/mongo/crypt/kms/gcp.rb +0 -2
  113. data/lib/mongo/crypt/kms/kmip/credentials.rb +7 -8
  114. data/lib/mongo/crypt/kms/kmip/master_document.rb +3 -5
  115. data/lib/mongo/crypt/kms/kmip.rb +0 -1
  116. data/lib/mongo/crypt/kms/local/credentials.rb +7 -8
  117. data/lib/mongo/crypt/kms/local/master_document.rb +2 -6
  118. data/lib/mongo/crypt/kms/local.rb +0 -1
  119. data/lib/mongo/crypt/kms/master_key_document.rb +11 -15
  120. data/lib/mongo/crypt/kms.rb +14 -16
  121. data/lib/mongo/crypt/kms_context.rb +0 -2
  122. data/lib/mongo/crypt/rewrap_many_data_key_context.rb +2 -7
  123. data/lib/mongo/crypt/rewrap_many_data_key_result.rb +2 -4
  124. data/lib/mongo/crypt/status.rb +12 -14
  125. data/lib/mongo/crypt.rb +0 -1
  126. data/lib/mongo/csot_timeout_holder.rb +3 -2
  127. data/lib/mongo/cursor/kill_spec.rb +7 -10
  128. data/lib/mongo/cursor.rb +74 -64
  129. data/lib/mongo/cursor_host.rb +8 -10
  130. data/lib/mongo/database/view.rb +16 -37
  131. data/lib/mongo/database.rb +52 -56
  132. data/lib/mongo/dbref.rb +0 -1
  133. data/lib/mongo/distinguishing_semaphore.rb +0 -1
  134. data/lib/mongo/error/auth_error.rb +0 -2
  135. data/lib/mongo/error/bad_load_balancer_target.rb +0 -2
  136. data/lib/mongo/error/bulk_write_error.rb +7 -10
  137. data/lib/mongo/error/change_stream_resumable.rb +0 -2
  138. data/lib/mongo/error/client_closed.rb +0 -2
  139. data/lib/mongo/error/closed_stream.rb +1 -4
  140. data/lib/mongo/error/connection_check_out_timeout.rb +3 -6
  141. data/lib/mongo/error/connection_perished.rb +0 -2
  142. data/lib/mongo/error/connection_unavailable.rb +0 -2
  143. data/lib/mongo/error/credential_check_error.rb +0 -2
  144. data/lib/mongo/error/crypt_error.rb +0 -2
  145. data/lib/mongo/error/extra_file_chunk.rb +1 -4
  146. data/lib/mongo/error/failed_string_prep_validation.rb +5 -6
  147. data/lib/mongo/error/file_not_found.rb +0 -3
  148. data/lib/mongo/error/handshake_error.rb +0 -2
  149. data/lib/mongo/error/insufficient_iteration_count.rb +1 -4
  150. data/lib/mongo/error/internal_driver_error.rb +0 -2
  151. data/lib/mongo/error/invalid_address.rb +0 -2
  152. data/lib/mongo/error/invalid_application_name.rb +0 -3
  153. data/lib/mongo/error/invalid_bulk_operation.rb +1 -4
  154. data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -4
  155. data/lib/mongo/error/invalid_collection_name.rb +1 -4
  156. data/lib/mongo/error/invalid_config_option.rb +0 -3
  157. data/lib/mongo/error/invalid_cursor_operation.rb +0 -2
  158. data/lib/mongo/error/invalid_database_name.rb +1 -4
  159. data/lib/mongo/error/invalid_document.rb +1 -4
  160. data/lib/mongo/error/invalid_file.rb +0 -3
  161. data/lib/mongo/error/invalid_file_revision.rb +0 -3
  162. data/lib/mongo/error/invalid_min_pool_size.rb +0 -3
  163. data/lib/mongo/error/invalid_nonce.rb +0 -3
  164. data/lib/mongo/error/invalid_read_concern.rb +2 -4
  165. data/lib/mongo/error/invalid_read_option.rb +0 -3
  166. data/lib/mongo/error/invalid_replacement_document.rb +2 -5
  167. data/lib/mongo/error/invalid_server_auth_host.rb +0 -2
  168. data/lib/mongo/error/invalid_server_auth_response.rb +0 -2
  169. data/lib/mongo/error/invalid_server_preference.rb +7 -16
  170. data/lib/mongo/error/invalid_session.rb +1 -4
  171. data/lib/mongo/error/invalid_signature.rb +0 -3
  172. data/lib/mongo/error/invalid_transaction_operation.rb +5 -8
  173. data/lib/mongo/error/invalid_txt_record.rb +0 -2
  174. data/lib/mongo/error/invalid_update_document.rb +2 -5
  175. data/lib/mongo/error/invalid_uri.rb +1 -4
  176. data/lib/mongo/error/invalid_write_concern.rb +2 -5
  177. data/lib/mongo/error/kms_error.rb +0 -2
  178. data/lib/mongo/error/labelable.rb +0 -3
  179. data/lib/mongo/error/lint_error.rb +0 -2
  180. data/lib/mongo/error/max_bson_size.rb +8 -11
  181. data/lib/mongo/error/max_message_size.rb +2 -5
  182. data/lib/mongo/error/mismatched_domain.rb +0 -2
  183. data/lib/mongo/error/missing_connection.rb +0 -2
  184. data/lib/mongo/error/missing_file_chunk.rb +0 -3
  185. data/lib/mongo/error/missing_password.rb +0 -2
  186. data/lib/mongo/error/missing_resume_token.rb +1 -4
  187. data/lib/mongo/error/missing_scram_server_signature.rb +2 -4
  188. data/lib/mongo/error/missing_service_id.rb +0 -2
  189. data/lib/mongo/error/mongocryptd_spawn_error.rb +0 -2
  190. data/lib/mongo/error/multi_index_drop.rb +0 -3
  191. data/lib/mongo/error/need_primary_server.rb +0 -2
  192. data/lib/mongo/error/no_server_available.rb +3 -8
  193. data/lib/mongo/error/no_service_connection_available.rb +1 -3
  194. data/lib/mongo/error/no_srv_records.rb +0 -2
  195. data/lib/mongo/error/notable.rb +8 -16
  196. data/lib/mongo/error/operation_failure.rb +22 -35
  197. data/lib/mongo/error/parser.rb +33 -75
  198. data/lib/mongo/error/pool_cleared_error.rb +1 -3
  199. data/lib/mongo/error/pool_closed_error.rb +0 -3
  200. data/lib/mongo/error/pool_error.rb +0 -3
  201. data/lib/mongo/error/pool_paused_error.rb +0 -2
  202. data/lib/mongo/error/raise_original_error.rb +1 -3
  203. data/lib/mongo/error/read_write_retryable.rb +14 -17
  204. data/lib/mongo/error/sdam_error_detection.rb +3 -5
  205. data/lib/mongo/error/server_api_conflict.rb +0 -2
  206. data/lib/mongo/error/server_certificate_revoked.rb +0 -2
  207. data/lib/mongo/error/server_not_usable.rb +0 -2
  208. data/lib/mongo/error/session_ended.rb +1 -3
  209. data/lib/mongo/error/session_not_materialized.rb +1 -3
  210. data/lib/mongo/error/sessions_not_supported.rb +1 -4
  211. data/lib/mongo/error/snapshot_session_invalid_server_version.rb +1 -4
  212. data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +1 -4
  213. data/lib/mongo/error/socket_error.rb +0 -2
  214. data/lib/mongo/error/socket_timeout_error.rb +0 -2
  215. data/lib/mongo/error/transactions_not_supported.rb +3 -6
  216. data/lib/mongo/error/unchangeable_collection_option.rb +1 -4
  217. data/lib/mongo/error/unexpected_chunk_length.rb +0 -3
  218. data/lib/mongo/error/unexpected_response.rb +1 -4
  219. data/lib/mongo/error/unknown_payload_type.rb +0 -3
  220. data/lib/mongo/error/unmet_dependency.rb +0 -2
  221. data/lib/mongo/error/unsupported_array_filters.rb +3 -24
  222. data/lib/mongo/error/unsupported_collation.rb +3 -24
  223. data/lib/mongo/error/unsupported_features.rb +0 -2
  224. data/lib/mongo/error/unsupported_message_type.rb +0 -2
  225. data/lib/mongo/error/unsupported_option.rb +19 -21
  226. data/lib/mongo/error/write_retryable.rb +0 -2
  227. data/lib/mongo/error.rb +10 -24
  228. data/lib/mongo/event/base.rb +0 -2
  229. data/lib/mongo/event/listeners.rb +0 -3
  230. data/lib/mongo/event/publisher.rb +0 -3
  231. data/lib/mongo/event/subscriber.rb +0 -4
  232. data/lib/mongo/event.rb +4 -6
  233. data/lib/mongo/grid/file/chunk.rb +7 -10
  234. data/lib/mongo/grid/file/info.rb +20 -24
  235. data/lib/mongo/grid/file.rb +7 -8
  236. data/lib/mongo/grid/fs_bucket.rb +40 -48
  237. data/lib/mongo/grid/stream/read.rb +25 -35
  238. data/lib/mongo/grid/stream/write.rb +17 -22
  239. data/lib/mongo/grid/stream.rb +2 -4
  240. data/lib/mongo/grid.rb +0 -1
  241. data/lib/mongo/id.rb +0 -1
  242. data/lib/mongo/index/view.rb +49 -48
  243. data/lib/mongo/index.rb +7 -10
  244. data/lib/mongo/lint.rb +31 -37
  245. data/lib/mongo/loggable.rb +5 -8
  246. data/lib/mongo/logger.rb +1 -7
  247. data/lib/mongo/monitoring/cmap_log_subscriber.rb +0 -2
  248. data/lib/mongo/monitoring/command_log_subscriber.rb +25 -33
  249. data/lib/mongo/monitoring/event/cmap/base.rb +0 -2
  250. data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +1 -4
  251. data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +0 -3
  252. data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +1 -4
  253. data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +2 -5
  254. data/lib/mongo/monitoring/event/cmap/connection_closed.rb +1 -4
  255. data/lib/mongo/monitoring/event/cmap/connection_created.rb +1 -4
  256. data/lib/mongo/monitoring/event/cmap/connection_ready.rb +1 -4
  257. data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +0 -3
  258. data/lib/mongo/monitoring/event/cmap/pool_closed.rb +1 -4
  259. data/lib/mongo/monitoring/event/cmap/pool_created.rb +1 -4
  260. data/lib/mongo/monitoring/event/cmap/pool_ready.rb +1 -4
  261. data/lib/mongo/monitoring/event/cmap.rb +0 -1
  262. data/lib/mongo/monitoring/event/command_failed.rb +5 -9
  263. data/lib/mongo/monitoring/event/command_started.rb +8 -12
  264. data/lib/mongo/monitoring/event/command_succeeded.rb +7 -15
  265. data/lib/mongo/monitoring/event/secure.rb +15 -20
  266. data/lib/mongo/monitoring/event/server_closed.rb +1 -4
  267. data/lib/mongo/monitoring/event/server_description_changed.rb +4 -8
  268. data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +5 -10
  269. data/lib/mongo/monitoring/event/server_heartbeat_started.rb +1 -4
  270. data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +3 -8
  271. data/lib/mongo/monitoring/event/server_opening.rb +1 -4
  272. data/lib/mongo/monitoring/event/topology_changed.rb +2 -5
  273. data/lib/mongo/monitoring/event/topology_closed.rb +1 -4
  274. data/lib/mongo/monitoring/event/topology_opening.rb +1 -4
  275. data/lib/mongo/monitoring/event.rb +0 -1
  276. data/lib/mongo/monitoring/publishable.rb +20 -30
  277. data/lib/mongo/monitoring/sdam_log_subscriber.rb +0 -2
  278. data/lib/mongo/monitoring/server_closed_log_subscriber.rb +0 -3
  279. data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +0 -3
  280. data/lib/mongo/monitoring/server_opening_log_subscriber.rb +0 -3
  281. data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +5 -8
  282. data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +0 -3
  283. data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +0 -3
  284. data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +1 -3
  285. data/lib/mongo/monitoring.rb +38 -39
  286. data/lib/mongo/operation/aggregate/op_msg.rb +0 -2
  287. data/lib/mongo/operation/aggregate/result.rb +3 -6
  288. data/lib/mongo/operation/aggregate.rb +0 -2
  289. data/lib/mongo/operation/collections_info/result.rb +0 -3
  290. data/lib/mongo/operation/collections_info.rb +0 -2
  291. data/lib/mongo/operation/command/op_msg.rb +1 -4
  292. data/lib/mongo/operation/command.rb +0 -2
  293. data/lib/mongo/operation/context.rb +13 -16
  294. data/lib/mongo/operation/count/op_msg.rb +2 -4
  295. data/lib/mongo/operation/count.rb +0 -2
  296. data/lib/mongo/operation/create/op_msg.rb +2 -5
  297. data/lib/mongo/operation/create.rb +0 -2
  298. data/lib/mongo/operation/create_index/op_msg.rb +3 -7
  299. data/lib/mongo/operation/create_index.rb +0 -2
  300. data/lib/mongo/operation/create_user/op_msg.rb +2 -4
  301. data/lib/mongo/operation/create_user.rb +0 -2
  302. data/lib/mongo/operation/delete/bulk_result.rb +2 -3
  303. data/lib/mongo/operation/delete/op_msg.rb +3 -10
  304. data/lib/mongo/operation/delete/result.rb +0 -3
  305. data/lib/mongo/operation/delete.rb +1 -5
  306. data/lib/mongo/operation/distinct/op_msg.rb +2 -5
  307. data/lib/mongo/operation/distinct.rb +0 -2
  308. data/lib/mongo/operation/drop/op_msg.rb +0 -2
  309. data/lib/mongo/operation/drop.rb +0 -2
  310. data/lib/mongo/operation/drop_database/op_msg.rb +0 -2
  311. data/lib/mongo/operation/drop_database.rb +0 -2
  312. data/lib/mongo/operation/drop_index/op_msg.rb +4 -6
  313. data/lib/mongo/operation/drop_index.rb +0 -2
  314. data/lib/mongo/operation/explain/op_msg.rb +0 -2
  315. data/lib/mongo/operation/explain/result.rb +0 -3
  316. data/lib/mongo/operation/explain.rb +0 -2
  317. data/lib/mongo/operation/find/builder/command.rb +4 -12
  318. data/lib/mongo/operation/find/builder/flags.rb +9 -15
  319. data/lib/mongo/operation/find/builder/modifiers.rb +1 -4
  320. data/lib/mongo/operation/find/builder.rb +0 -1
  321. data/lib/mongo/operation/find/op_msg.rb +4 -12
  322. data/lib/mongo/operation/find/result.rb +0 -3
  323. data/lib/mongo/operation/find.rb +0 -2
  324. data/lib/mongo/operation/get_more/command_builder.rb +1 -6
  325. data/lib/mongo/operation/get_more/op_msg.rb +10 -4
  326. data/lib/mongo/operation/get_more/result.rb +0 -3
  327. data/lib/mongo/operation/get_more.rb +0 -2
  328. data/lib/mongo/operation/indexes/op_msg.rb +0 -2
  329. data/lib/mongo/operation/indexes/result.rb +1 -5
  330. data/lib/mongo/operation/indexes.rb +0 -2
  331. data/lib/mongo/operation/insert/bulk_result.rb +2 -6
  332. data/lib/mongo/operation/insert/op_msg.rb +2 -4
  333. data/lib/mongo/operation/insert/result.rb +0 -3
  334. data/lib/mongo/operation/insert.rb +2 -5
  335. data/lib/mongo/operation/kill_cursors/command_builder.rb +0 -3
  336. data/lib/mongo/operation/kill_cursors/op_msg.rb +1 -3
  337. data/lib/mongo/operation/kill_cursors.rb +0 -2
  338. data/lib/mongo/operation/list_collections/op_msg.rb +4 -6
  339. data/lib/mongo/operation/list_collections/result.rb +1 -4
  340. data/lib/mongo/operation/list_collections.rb +0 -2
  341. data/lib/mongo/operation/map_reduce/op_msg.rb +0 -2
  342. data/lib/mongo/operation/map_reduce/result.rb +3 -6
  343. data/lib/mongo/operation/map_reduce.rb +0 -2
  344. data/lib/mongo/operation/op_msg_base.rb +0 -1
  345. data/lib/mongo/operation/parallel_scan/op_msg.rb +4 -5
  346. data/lib/mongo/operation/parallel_scan/result.rb +2 -5
  347. data/lib/mongo/operation/parallel_scan.rb +0 -2
  348. data/lib/mongo/operation/remove_user/op_msg.rb +2 -4
  349. data/lib/mongo/operation/remove_user.rb +0 -2
  350. data/lib/mongo/operation/result.rb +38 -48
  351. data/lib/mongo/operation/shared/bypass_document_validation.rb +3 -7
  352. data/lib/mongo/operation/shared/causal_consistency_supported.rb +0 -3
  353. data/lib/mongo/operation/shared/executable.rb +19 -28
  354. data/lib/mongo/operation/shared/executable_no_validate.rb +0 -3
  355. data/lib/mongo/operation/shared/executable_transaction_label.rb +0 -2
  356. data/lib/mongo/operation/shared/idable.rb +3 -6
  357. data/lib/mongo/operation/shared/limited.rb +0 -3
  358. data/lib/mongo/operation/shared/object_id_generator.rb +0 -3
  359. data/lib/mongo/operation/shared/op_msg_executable.rb +0 -2
  360. data/lib/mongo/operation/shared/polymorphic_lookup.rb +0 -2
  361. data/lib/mongo/operation/shared/polymorphic_result.rb +2 -4
  362. data/lib/mongo/operation/shared/read_preference_supported.rb +10 -15
  363. data/lib/mongo/operation/shared/response_handling.rb +13 -26
  364. data/lib/mongo/operation/shared/result/aggregatable.rb +12 -13
  365. data/lib/mongo/operation/shared/sessions_supported.rb +87 -99
  366. data/lib/mongo/operation/shared/specifiable.rb +32 -58
  367. data/lib/mongo/operation/shared/write.rb +12 -17
  368. data/lib/mongo/operation/shared/write_concern_supported.rb +4 -7
  369. data/lib/mongo/operation/update/bulk_result.rb +13 -17
  370. data/lib/mongo/operation/update/op_msg.rb +2 -5
  371. data/lib/mongo/operation/update/result.rb +5 -5
  372. data/lib/mongo/operation/update.rb +1 -5
  373. data/lib/mongo/operation/update_user/op_msg.rb +2 -4
  374. data/lib/mongo/operation/update_user.rb +0 -2
  375. data/lib/mongo/operation/users_info/op_msg.rb +2 -4
  376. data/lib/mongo/operation/users_info/result.rb +1 -4
  377. data/lib/mongo/operation/users_info.rb +0 -2
  378. data/lib/mongo/operation/write_command/op_msg.rb +2 -10
  379. data/lib/mongo/operation/write_command.rb +0 -2
  380. data/lib/mongo/operation.rb +9 -14
  381. data/lib/mongo/options/mapper.rb +8 -15
  382. data/lib/mongo/options/redacted.rb +7 -9
  383. data/lib/mongo/options.rb +0 -1
  384. data/lib/mongo/protocol/bit_vector.rb +3 -5
  385. data/lib/mongo/protocol/caching_hash.rb +2 -7
  386. data/lib/mongo/protocol/compressed.rb +5 -10
  387. data/lib/mongo/protocol/get_more.rb +2 -8
  388. data/lib/mongo/protocol/kill_cursors.rb +2 -8
  389. data/lib/mongo/protocol/message.rb +103 -105
  390. data/lib/mongo/protocol/msg.rb +48 -63
  391. data/lib/mongo/protocol/query.rb +32 -41
  392. data/lib/mongo/protocol/registry.rb +2 -5
  393. data/lib/mongo/protocol/reply.rb +10 -16
  394. data/lib/mongo/protocol/serializers.rb +41 -59
  395. data/lib/mongo/protocol.rb +0 -1
  396. data/lib/mongo/query_cache.rb +7 -15
  397. data/lib/mongo/retryable/backpressure.rb +31 -0
  398. data/lib/mongo/retryable/base_worker.rb +39 -13
  399. data/lib/mongo/retryable/read_worker.rb +77 -21
  400. data/lib/mongo/retryable/retry_policy.rb +59 -0
  401. data/lib/mongo/retryable/write_worker.rb +155 -56
  402. data/lib/mongo/retryable.rb +70 -9
  403. data/lib/mongo/search_index/view.rb +1 -1
  404. data/lib/mongo/semaphore.rb +0 -1
  405. data/lib/mongo/server/app_metadata/environment.rb +3 -3
  406. data/lib/mongo/server/app_metadata.rb +4 -5
  407. data/lib/mongo/server/connection.rb +61 -61
  408. data/lib/mongo/server/connection_base.rb +43 -53
  409. data/lib/mongo/server/connection_common.rb +41 -64
  410. data/lib/mongo/server/connection_pool/generation_manager.rb +6 -11
  411. data/lib/mongo/server/connection_pool/populator.rb +1 -4
  412. data/lib/mongo/server/connection_pool.rb +195 -167
  413. data/lib/mongo/server/description/features.rb +23 -60
  414. data/lib/mongo/server/description/load_balancer.rb +0 -2
  415. data/lib/mongo/server/description.rb +117 -138
  416. data/lib/mongo/server/monitor/app_metadata.rb +3 -4
  417. data/lib/mongo/server/monitor/connection.rb +28 -35
  418. data/lib/mongo/server/monitor.rb +65 -60
  419. data/lib/mongo/server/pending_connection.rb +70 -71
  420. data/lib/mongo/server/push_monitor/connection.rb +0 -3
  421. data/lib/mongo/server/push_monitor.rb +21 -29
  422. data/lib/mongo/server/round_trip_time_calculator.rb +11 -17
  423. data/lib/mongo/server.rb +60 -93
  424. data/lib/mongo/server_selector/base.rb +133 -157
  425. data/lib/mongo/server_selector/nearest.rb +2 -5
  426. data/lib/mongo/server_selector/primary.rb +1 -5
  427. data/lib/mongo/server_selector/primary_preferred.rb +2 -6
  428. data/lib/mongo/server_selector/secondary.rb +2 -6
  429. data/lib/mongo/server_selector/secondary_preferred.rb +1 -5
  430. data/lib/mongo/server_selector.rb +3 -4
  431. data/lib/mongo/session/server_session.rb +6 -7
  432. data/lib/mongo/session/session_pool.rb +20 -34
  433. data/lib/mongo/session.rb +287 -188
  434. data/lib/mongo/socket/ocsp_cache.rb +8 -13
  435. data/lib/mongo/socket/ocsp_verifier.rb +69 -70
  436. data/lib/mongo/socket/ssl.rb +44 -43
  437. data/lib/mongo/socket/tcp.rb +5 -8
  438. data/lib/mongo/socket/unix.rb +0 -4
  439. data/lib/mongo/socket.rb +80 -102
  440. data/lib/mongo/srv/monitor.rb +6 -11
  441. data/lib/mongo/srv/resolver.rb +15 -24
  442. data/lib/mongo/srv/result.rb +18 -24
  443. data/lib/mongo/srv.rb +0 -1
  444. data/lib/mongo/timeout.rb +4 -11
  445. data/lib/mongo/topology_version.rb +8 -13
  446. data/lib/mongo/tracing/open_telemetry/command_tracer.rb +1 -1
  447. data/lib/mongo/tracing/open_telemetry/operation_tracer.rb +1 -1
  448. data/lib/mongo/tracing/open_telemetry/tracer.rb +1 -1
  449. data/lib/mongo/uri/options_mapper.rb +135 -126
  450. data/lib/mongo/uri/srv_protocol.rb +25 -38
  451. data/lib/mongo/uri.rb +95 -139
  452. data/lib/mongo/utils.rb +5 -12
  453. data/lib/mongo/version.rb +1 -1
  454. data/lib/mongo/write_concern/acknowledged.rb +0 -2
  455. data/lib/mongo/write_concern/base.rb +6 -6
  456. data/lib/mongo/write_concern/unacknowledged.rb +0 -2
  457. data/lib/mongo/write_concern.rb +14 -15
  458. data/lib/mongo.rb +1 -3
  459. data/mongo.gemspec +17 -17
  460. metadata +5 -5
  461. data/lib/mongo/error/server_api_not_supported.rb +0 -27
  462. data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +0 -32
  463. data/lib/mongo/operation/shared/validatable.rb +0 -87
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2015-2020 MongoDB Inc.
5
4
  #
@@ -15,33 +14,8 @@
15
14
  # See the License for the specific language governing permissions and
16
15
  # limitations under the License.
17
16
 
18
- # Sample error - mongo 3.4:
19
- # {
20
- # "ok" : 0,
21
- # "errmsg" : "not master",
22
- # "code" : 10107,
23
- # "codeName" : "NotMaster"
24
- # }
25
- #
26
- # Sample response with a write concern error - mongo 3.4:
27
- # {
28
- # "n" : 1,
29
- # "opTime" : {
30
- # "ts" : Timestamp(1527728618, 1),
31
- # "t" : NumberLong(4)
32
- # },
33
- # "electionId" : ObjectId("7fffffff0000000000000004"),
34
- # "writeConcernError" : {
35
- # "code" : 100,
36
- # "codeName" : "CannotSatisfyWriteConcern",
37
- # "errmsg" : "Not enough data-bearing nodes"
38
- # },
39
- # "ok" : 1
40
- # }
41
-
42
17
  module Mongo
43
18
  class Error
44
-
45
19
  # Class for parsing the various forms that errors can come in from MongoDB
46
20
  # command responses.
47
21
  #
@@ -100,14 +74,6 @@ module Mongo
100
74
 
101
75
  # Create the new parser with the returned document.
102
76
  #
103
- # In legacy mode, the code and codeName fields of the document are not
104
- # examined because the status (ok: 1) is not part of the document and
105
- # there is no way to distinguish successful from failed responses using
106
- # the document itself, and a successful response may legitimately have
107
- # { code: 123, codeName: 'foo' } as the contents of a user-inserted
108
- # document. The legacy server versions do not fill out code nor codeName
109
- # thus not reading them does not lose information.
110
- #
111
77
  # @example Create the new parser.
112
78
  # Parser.new({ 'errmsg' => 'failed' })
113
79
  #
@@ -115,18 +81,15 @@ module Mongo
115
81
  # @param [ Array<Protocol::Message> ] replies The message replies.
116
82
  # @param [ Hash ] options The options.
117
83
  #
118
- # @option options [ true | false ] :legacy Whether document and replies
119
- # are from a legacy (pre-3.2) response
120
- #
121
84
  # @since 2.0.0
122
85
  def initialize(document, replies = nil, options = nil)
123
86
  @document = document || {}
124
87
  @replies = replies
125
88
  @options = if options
126
- options.dup
127
- else
128
- {}
129
- end.freeze
89
+ options.dup
90
+ else
91
+ {}
92
+ end.freeze
130
93
  parse!
131
94
  end
132
95
 
@@ -194,17 +157,15 @@ module Mongo
194
157
 
195
158
  def parse!
196
159
  if document['ok'] != 1 && document['writeErrors']
197
- raise ArgumentError, "writeErrors should only be given in successful responses"
160
+ raise ArgumentError, 'writeErrors should only be given in successful responses'
198
161
  end
199
162
 
200
- @message = +""
163
+ @message = +''
201
164
  parse_single(@message, '$err')
202
165
  parse_single(@message, 'err')
203
166
  parse_single(@message, 'errmsg')
204
167
  parse_multiple(@message, 'writeErrors')
205
- if write_concern_error_document
206
- parse_single(@message, 'errmsg', write_concern_error_document)
207
- end
168
+ parse_single(@message, 'errmsg', write_concern_error_document) if write_concern_error_document
208
169
  parse_flag(@message)
209
170
  parse_code
210
171
  parse_labels
@@ -214,27 +175,27 @@ module Mongo
214
175
  @message = self.class.build_message(
215
176
  code: code,
216
177
  code_name: code_name,
217
- message: @message,
178
+ message: @message
218
179
  )
219
180
  end
220
181
 
221
182
  def parse_single(message, key, doc = document)
222
- if error = doc[key]
223
- append(message, error)
224
- end
183
+ return unless error = doc[key]
184
+
185
+ append(message, error)
225
186
  end
226
187
 
227
188
  def parse_multiple(message, key)
228
- if errors = document[key]
229
- errors.each do |error|
230
- parse_single(message, 'errmsg', error)
231
- end
189
+ return unless errors = document[key]
190
+
191
+ errors.each do |error|
192
+ parse_single(message, 'errmsg', error)
232
193
  end
233
194
  end
234
195
 
235
196
  def parse_flag(message)
236
197
  if replies && replies.first &&
237
- (replies.first.respond_to?(:cursor_not_found?)) && replies.first.cursor_not_found?
198
+ replies.first.respond_to?(:cursor_not_found?) && replies.first.cursor_not_found?
238
199
  append(message, CURSOR_NOT_FOUND)
239
200
  end
240
201
  end
@@ -248,7 +209,7 @@ module Mongo
248
209
  end
249
210
 
250
211
  def parse_code
251
- if document['ok'] == 1 || @options[:legacy]
212
+ if document['ok'] == 1
252
213
  @code = @code_name = nil
253
214
  else
254
215
  @code = document['code']
@@ -259,25 +220,22 @@ module Mongo
259
220
  # codes of the top level response with write concern error codes.
260
221
  # In practice this should never be an issue as a write concern
261
222
  # can only fail after the operation succeeds on the primary.
262
- if @code.nil? && @code_name.nil?
263
- if subdoc = write_concern_error_document
264
- @code = subdoc['code']
265
- @code_name = subdoc['codeName']
266
- end
223
+ if @code.nil? && @code_name.nil? && (subdoc = write_concern_error_document)
224
+ @code = subdoc['code']
225
+ @code_name = subdoc['codeName']
267
226
  end
268
227
 
269
- if @code.nil? && @code_name.nil?
270
- # If we have writeErrors, and all of their codes are the same,
271
- # use that code. Otherwise don't set the code
272
- if write_errors = document['writeErrors']
273
- codes = write_errors.map { |e| e['code'] }.compact
274
- if codes.uniq.length == 1
275
- @code = codes.first
276
- # code name may not be returned by the server
277
- @code_name = write_errors.map { |e| e['codeName'] }.compact.first
278
- end
279
- end
280
- end
228
+ return unless @code.nil? && @code_name.nil?
229
+ # If we have writeErrors, and all of their codes are the same,
230
+ # use that code. Otherwise don't set the code
231
+ return unless write_errors = document['writeErrors']
232
+
233
+ codes = write_errors.map { |e| e['code'] }.compact
234
+ return unless codes.uniq.length == 1
235
+
236
+ @code = codes.first
237
+ # code name may not be returned by the server
238
+ @code_name = write_errors.map { |e| e['codeName'] }.compact.first
281
239
  end
282
240
 
283
241
  def parse_labels
@@ -286,8 +244,8 @@ module Mongo
286
244
 
287
245
  def parse_wtimeout
288
246
  @wtimeout = write_concern_error_document &&
289
- write_concern_error_document['errInfo'] &&
290
- write_concern_error_document['errInfo']['wtimeout']
247
+ write_concern_error_document['errInfo'] &&
248
+ write_concern_error_document['errInfo']['wtimeout']
291
249
  end
292
250
  end
293
251
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-present MongoDB Inc.
5
4
  #
@@ -17,8 +16,7 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
- # Exception raised if an operation is attempted connection that was
19
+ # Exception raised if an operation is attempted on a connection that was
22
20
  # interrupted due to server monitor timeout.
23
21
  class PoolClearedError < PoolError
24
22
  include WriteRetryable
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -17,12 +16,10 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Exception raised if an operation is attempted on a closed connection pool.
22
20
  #
23
21
  # @since 2.9.0
24
22
  class PoolClosedError < PoolError
25
-
26
23
  # Instantiate the new exception.
27
24
  #
28
25
  # @example Instantiate the exception.
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -17,10 +16,8 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Abstract base class for connection pool-related exceptions.
22
20
  class PoolError < Error
23
-
24
21
  # @return [ Mongo::Address ] address The address of the server the
25
22
  # pool's connections connect to.
26
23
  #
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -17,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Exception raised if an operation is attempted on a paused connection pool.
22
20
  class PoolPausedError < PoolError
23
21
  include WriteRetryable
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2020 MongoDB Inc.
5
4
  #
@@ -17,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # This is a special marker exception class used internally in the
22
20
  # retryable reads/writes implementation. Its purpose is to bypass
23
21
  # note addition when raising the exception from the first read/write
@@ -26,7 +24,7 @@ module Mongo
26
24
  # @note This class must not derive from Error.
27
25
  #
28
26
  # @api private
29
- class RaiseOriginalError < Exception
27
+ class RaiseOriginalError < Exception # rubocop:disable Lint/InheritException
30
28
  end
31
29
  end
32
30
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2022 MongoDB Inc.
5
4
  #
@@ -17,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # A module encapsulating functionality to indicate whether errors are
22
20
  # retryable.
23
21
  #
@@ -27,24 +25,23 @@ module Mongo
27
25
  #
28
26
  # @api semipublic
29
27
  module ReadWriteRetryable
30
-
31
28
  # Error codes and code names that should result in a failing write
32
29
  # being retried.
33
30
  #
34
31
  # @api private
35
32
  WRITE_RETRY_ERRORS = [
36
- {:code_name => 'HostUnreachable', :code => 6},
37
- {:code_name => 'HostNotFound', :code => 7},
38
- {:code_name => 'NetworkTimeout', :code => 89},
39
- {:code_name => 'ShutdownInProgress', :code => 91},
40
- {:code_name => 'PrimarySteppedDown', :code => 189},
41
- {:code_name => 'ExceededTimeLimit', :code => 262},
42
- {:code_name => 'SocketException', :code => 9001},
43
- {:code_name => 'NotMaster', :code => 10107},
44
- {:code_name => 'InterruptedAtShutdown', :code => 11600},
45
- {:code_name => 'InterruptedDueToReplStateChange', :code => 11602},
46
- {:code_name => 'NotPrimaryNoSecondaryOk', :code => 13435},
47
- {:code_name => 'NotMasterOrSecondary', :code => 13436},
33
+ { code_name: 'HostUnreachable', code: 6 },
34
+ { code_name: 'HostNotFound', code: 7 },
35
+ { code_name: 'NetworkTimeout', code: 89 },
36
+ { code_name: 'ShutdownInProgress', code: 91 },
37
+ { code_name: 'PrimarySteppedDown', code: 189 },
38
+ { code_name: 'ExceededTimeLimit', code: 262 },
39
+ { code_name: 'SocketException', code: 9001 },
40
+ { code_name: 'NotMaster', code: 10_107 },
41
+ { code_name: 'InterruptedAtShutdown', code: 11_600 },
42
+ { code_name: 'InterruptedDueToReplStateChange', code: 11_602 },
43
+ { code_name: 'NotPrimaryNoSecondaryOk', code: 13_435 },
44
+ { code_name: 'NotMasterOrSecondary', code: 13_436 },
48
45
  ].freeze
49
46
 
50
47
  # These are magic error messages that could indicate a master change.
@@ -80,7 +77,7 @@ module Mongo
80
77
  # @deprecated
81
78
  def retryable?
82
79
  write_retryable? ||
83
- code.nil? && RETRY_MESSAGES.any?{ |m| message.include?(m) }
80
+ (code.nil? && RETRY_MESSAGES.any? { |m| message.include?(m) })
84
81
  end
85
82
 
86
83
  # Whether the error is a retryable error according to the modern retryable
@@ -92,7 +89,7 @@ module Mongo
92
89
  # @return [ true, false ]
93
90
  def write_retryable?
94
91
  write_retryable_code? ||
95
- code.nil? && WRITE_RETRY_MESSAGES.any? { |m| message.include?(m) }
92
+ (code.nil? && WRITE_RETRY_MESSAGES.any? { |m| message.include?(m) })
96
93
  end
97
94
 
98
95
  private def write_retryable_code?
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  module Mongo
5
4
  class Error
@@ -10,15 +9,14 @@ module Mongo
10
9
  #
11
10
  # @api semipublic
12
11
  module SdamErrorDetection
13
-
14
12
  # @api private
15
- NOT_MASTER_CODES = [10107, 13435].freeze
13
+ NOT_MASTER_CODES = [ 10_107, 13_435 ].freeze
16
14
 
17
15
  # @api private
18
- NODE_RECOVERING_CODES = [11600, 11602, 13436, 189, 91, 10058].freeze
16
+ NODE_RECOVERING_CODES = [ 11_600, 11_602, 13_436, 189, 91, 10_058 ].freeze
19
17
 
20
18
  # @api private
21
- NODE_SHUTTING_DOWN_CODES = [11600, 91].freeze
19
+ NODE_SHUTTING_DOWN_CODES = [ 11_600, 91 ].freeze
22
20
 
23
21
  # Whether the error is a "not master" error, or one of its variants.
24
22
  #
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2021 MongoDB Inc.
5
4
  #
@@ -17,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Exception raised when a Client has :server_api configured and an
22
20
  # operation attempts to specify any of server API version parameters.
23
21
  class ServerApiConflict < Error
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2020 MongoDB Inc.
5
4
  #
@@ -17,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Server certificate has been revoked (determined via OCSP).
22
20
  class ServerCertificateRevoked < Error
23
21
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -23,7 +22,6 @@ module Mongo
23
22
  # Exception raised if an unknown server is attempted to be used for
24
23
  # an operation.
25
24
  class ServerNotUsable < Error
26
-
27
25
  # Instantiate the new exception.
28
26
  #
29
27
  # @api private
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -17,13 +16,12 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Session was previously ended.
22
20
  #
23
21
  # @since 2.7.0
24
22
  class SessionEnded < Error
25
23
  def initialize
26
- super("The session was ended and cannot be used")
24
+ super('The session was ended and cannot be used')
27
25
  end
28
26
  end
29
27
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2022 MongoDB Inc.
5
4
  #
@@ -17,12 +16,11 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # This exception is raised when a session is attempted to be used but
22
20
  # it was never materialized.
23
21
  class SessionNotMaterialized < InvalidSession
24
22
  def initialize
25
- super("The session was not materialized and cannot be used. Use start_session or with_session in order to start a session that will be materialized.")
23
+ super('The session was not materialized and cannot be used. Use start_session or with_session in order to start a session that will be materialized.')
26
24
  end
27
25
  end
28
26
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2020 MongoDB Inc.
5
4
  #
@@ -17,21 +16,19 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # This exception is raised when a session is attempted to be used and the
22
20
  # deployment does not support sessions.
23
21
  #
24
22
  # @note The subclassing of InvalidSession only exists for backwards
25
23
  # compatibility and will be removed in driver version 3.0.
26
24
  class SessionsNotSupported < InvalidSession
27
-
28
25
  # Create the new exception.
29
26
  #
30
27
  # @param [ String ] message The error message.
31
28
  #
32
29
  # @api private
33
30
  def initialize(message)
34
- super(message)
31
+ super
35
32
  end
36
33
  end
37
34
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2021 MongoDB Inc.
5
4
  #
@@ -17,14 +16,12 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Exception raised if an operation using a snapshot session is
22
20
  # directed to a pre-5.0 server.
23
21
  class SnapshotSessionInvalidServerVersion < Error
24
-
25
22
  # Instantiate the new exception.
26
23
  def initialize
27
- super("Snapshot reads require MongoDB 5.0 or later")
24
+ super('Snapshot reads require MongoDB 5.0 or later')
28
25
  end
29
26
  end
30
27
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2021 MongoDB Inc.
5
4
  #
@@ -17,13 +16,11 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Exception raised if a transaction is attempted on a snapshot session.
22
20
  class SnapshotSessionTransactionProhibited < Error
23
-
24
21
  # Instantiate the new exception.
25
22
  def initialize
26
- super("Transactions are not supported in snapshot sessions")
23
+ super('Transactions are not supported in snapshot sessions')
27
24
  end
28
25
  end
29
26
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2015-2020 MongoDB Inc.
5
4
  #
@@ -17,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Raised when a socket has an error.
22
20
  #
23
21
  # @since 2.0.0
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2015-2020 MongoDB Inc.
5
4
  #
@@ -19,7 +18,6 @@ require 'mongo/error/timeout_error'
19
18
 
20
19
  module Mongo
21
20
  class Error
22
-
23
21
  # Raised when a socket connection times out.
24
22
  #
25
23
  # @since 2.0.0
@@ -16,13 +16,10 @@
16
16
 
17
17
  module Mongo
18
18
  class Error
19
- # Transactions are not supported by the cluster. There might be the
20
- # following reasons:
21
- # - topology is standalone
22
- # - topology is replica set and server version is < 4.0
23
- # - topology is sharded and server version is < 4.2
19
+ # Transactions are not supported by the cluster, e.g. if the topology is
20
+ # standalone.
24
21
  #
25
- # @param [ String ] reason The reason why transactions are no supported.
22
+ # @param [ String ] reason The reason why transactions are not supported.
26
23
  #
27
24
  # @since 2.7.0
28
25
  class TransactionsNotSupported < Error
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2014-2020 MongoDB Inc.
5
4
  #
@@ -17,13 +16,11 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Raised if a new collection is created from an existing one and options other than the
22
20
  # changeable ones are provided.
23
21
  #
24
22
  # @since 2.1.0
25
23
  class UnchangeableCollectionOption < Error
26
-
27
24
  # Create the new exception.
28
25
  #
29
26
  # @example Create the new exception.
@@ -34,7 +31,7 @@ module Mongo
34
31
  # @since 2.1.0
35
32
  def initialize(option)
36
33
  super("The option #{option} cannot be set on a new collection instance." +
37
- " The options that can be updated are #{Collection::CHANGEABLE_OPTIONS}")
34
+ " The options that can be updated are #{Collection::CHANGEABLE_OPTIONS}")
38
35
  end
39
36
  end
40
37
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2014-2020 MongoDB Inc.
5
4
  #
@@ -17,13 +16,11 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Raised if the next chunk when reading from a GridFSBucket does not have the
22
20
  # expected length.
23
21
  #
24
22
  # @since 2.1.0
25
23
  class UnexpectedChunkLength < Error
26
-
27
24
  # Create the new exception.
28
25
  #
29
26
  # @example Create the new exception.
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2014-2020 MongoDB Inc.
5
4
  #
@@ -17,12 +16,10 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Raised if the response read from the socket does not match the latest query.
22
20
  #
23
21
  # @since 2.2.6
24
22
  class UnexpectedResponse < Error
25
-
26
23
  # Create the new exception.
27
24
  #
28
25
  # @example Create the new exception.
@@ -34,7 +31,7 @@ module Mongo
34
31
  # @since 2.2.6
35
32
  def initialize(expected_response_to, response_to)
36
33
  super("Unexpected response. Got response for request ID #{response_to} " +
37
- "but expected response for request ID #{expected_response_to}")
34
+ "but expected response for request ID #{expected_response_to}")
38
35
  end
39
36
  end
40
37
  end