mongo 2.22.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 (467) 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 +267 -276
  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 +152 -184
  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/behavior.rb +1 -1
  71. data/lib/mongo/collection/view/aggregation.rb +10 -12
  72. data/lib/mongo/collection/view/builder/aggregation.rb +6 -9
  73. data/lib/mongo/collection/view/builder/map_reduce.rb +18 -17
  74. data/lib/mongo/collection/view/builder.rb +0 -1
  75. data/lib/mongo/collection/view/change_stream/retryable.rb +3 -8
  76. data/lib/mongo/collection/view/change_stream.rb +59 -58
  77. data/lib/mongo/collection/view/explainable.rb +11 -20
  78. data/lib/mongo/collection/view/immutable.rb +1 -3
  79. data/lib/mongo/collection/view/iterable.rb +44 -35
  80. data/lib/mongo/collection/view/map_reduce.rb +20 -25
  81. data/lib/mongo/collection/view/readable.rb +96 -94
  82. data/lib/mongo/collection/view/writable.rb +104 -114
  83. data/lib/mongo/collection/view.rb +11 -8
  84. data/lib/mongo/collection.rb +103 -106
  85. data/lib/mongo/condition_variable.rb +4 -4
  86. data/lib/mongo/config/options.rb +0 -3
  87. data/lib/mongo/config/validators/option.rb +3 -5
  88. data/lib/mongo/config.rb +6 -4
  89. data/lib/mongo/crypt/auto_decryption_context.rb +9 -3
  90. data/lib/mongo/crypt/auto_encrypter.rb +34 -43
  91. data/lib/mongo/crypt/auto_encryption_context.rb +0 -3
  92. data/lib/mongo/crypt/binary.rb +5 -9
  93. data/lib/mongo/crypt/binding.rb +150 -156
  94. data/lib/mongo/crypt/context.rb +20 -17
  95. data/lib/mongo/crypt/data_key_context.rb +2 -7
  96. data/lib/mongo/crypt/encryption_io.rb +29 -39
  97. data/lib/mongo/crypt/explicit_decryption_context.rb +9 -3
  98. data/lib/mongo/crypt/explicit_encrypter.rb +1 -1
  99. data/lib/mongo/crypt/explicit_encryption_context.rb +19 -30
  100. data/lib/mongo/crypt/explicit_encryption_expression_context.rb +0 -2
  101. data/lib/mongo/crypt/handle.rb +42 -48
  102. data/lib/mongo/crypt/hooks.rb +12 -15
  103. data/lib/mongo/crypt/kms/aws/credentials.rb +12 -16
  104. data/lib/mongo/crypt/kms/aws/master_document.rb +6 -9
  105. data/lib/mongo/crypt/kms/aws.rb +0 -2
  106. data/lib/mongo/crypt/kms/azure/credentials_retriever.rb +2 -7
  107. data/lib/mongo/crypt/kms/azure/master_document.rb +15 -19
  108. data/lib/mongo/crypt/kms/azure.rb +0 -1
  109. data/lib/mongo/crypt/kms/credentials.rb +13 -27
  110. data/lib/mongo/crypt/kms/gcp/credentials.rb +12 -14
  111. data/lib/mongo/crypt/kms/gcp/credentials_retriever.rb +7 -9
  112. data/lib/mongo/crypt/kms/gcp/master_document.rb +12 -16
  113. data/lib/mongo/crypt/kms/gcp.rb +0 -2
  114. data/lib/mongo/crypt/kms/kmip/credentials.rb +7 -8
  115. data/lib/mongo/crypt/kms/kmip/master_document.rb +3 -5
  116. data/lib/mongo/crypt/kms/kmip.rb +0 -1
  117. data/lib/mongo/crypt/kms/local/credentials.rb +7 -8
  118. data/lib/mongo/crypt/kms/local/master_document.rb +2 -6
  119. data/lib/mongo/crypt/kms/local.rb +0 -1
  120. data/lib/mongo/crypt/kms/master_key_document.rb +11 -15
  121. data/lib/mongo/crypt/kms.rb +14 -16
  122. data/lib/mongo/crypt/kms_context.rb +0 -2
  123. data/lib/mongo/crypt/rewrap_many_data_key_context.rb +2 -7
  124. data/lib/mongo/crypt/rewrap_many_data_key_result.rb +2 -4
  125. data/lib/mongo/crypt/status.rb +12 -14
  126. data/lib/mongo/crypt.rb +0 -1
  127. data/lib/mongo/csot_timeout_holder.rb +3 -2
  128. data/lib/mongo/cursor/kill_spec.rb +7 -10
  129. data/lib/mongo/cursor.rb +74 -64
  130. data/lib/mongo/cursor_host.rb +8 -10
  131. data/lib/mongo/database/view.rb +23 -39
  132. data/lib/mongo/database.rb +68 -65
  133. data/lib/mongo/dbref.rb +0 -1
  134. data/lib/mongo/deprecations.rb +98 -0
  135. data/lib/mongo/distinguishing_semaphore.rb +0 -1
  136. data/lib/mongo/error/auth_error.rb +0 -2
  137. data/lib/mongo/error/bad_load_balancer_target.rb +0 -2
  138. data/lib/mongo/error/bulk_write_error.rb +7 -10
  139. data/lib/mongo/error/change_stream_resumable.rb +0 -2
  140. data/lib/mongo/error/client_closed.rb +0 -2
  141. data/lib/mongo/error/closed_stream.rb +1 -4
  142. data/lib/mongo/error/connection_check_out_timeout.rb +3 -6
  143. data/lib/mongo/error/connection_perished.rb +0 -2
  144. data/lib/mongo/error/connection_unavailable.rb +0 -2
  145. data/lib/mongo/error/credential_check_error.rb +0 -2
  146. data/lib/mongo/error/crypt_error.rb +0 -2
  147. data/lib/mongo/error/extra_file_chunk.rb +1 -4
  148. data/lib/mongo/error/failed_string_prep_validation.rb +5 -6
  149. data/lib/mongo/error/file_not_found.rb +0 -3
  150. data/lib/mongo/error/handshake_error.rb +0 -2
  151. data/lib/mongo/error/insufficient_iteration_count.rb +1 -4
  152. data/lib/mongo/error/internal_driver_error.rb +0 -2
  153. data/lib/mongo/error/invalid_address.rb +0 -2
  154. data/lib/mongo/error/invalid_application_name.rb +0 -3
  155. data/lib/mongo/error/invalid_bulk_operation.rb +1 -4
  156. data/lib/mongo/error/invalid_bulk_operation_type.rb +1 -4
  157. data/lib/mongo/error/invalid_collection_name.rb +1 -4
  158. data/lib/mongo/error/invalid_config_option.rb +0 -3
  159. data/lib/mongo/error/invalid_cursor_operation.rb +0 -2
  160. data/lib/mongo/error/invalid_database_name.rb +1 -4
  161. data/lib/mongo/error/invalid_document.rb +1 -4
  162. data/lib/mongo/error/invalid_file.rb +0 -3
  163. data/lib/mongo/error/invalid_file_revision.rb +0 -3
  164. data/lib/mongo/error/invalid_min_pool_size.rb +0 -3
  165. data/lib/mongo/error/invalid_nonce.rb +0 -3
  166. data/lib/mongo/error/invalid_read_concern.rb +2 -4
  167. data/lib/mongo/error/invalid_read_option.rb +0 -3
  168. data/lib/mongo/error/invalid_replacement_document.rb +2 -5
  169. data/lib/mongo/error/invalid_server_auth_host.rb +0 -2
  170. data/lib/mongo/error/invalid_server_auth_response.rb +0 -2
  171. data/lib/mongo/error/invalid_server_preference.rb +7 -16
  172. data/lib/mongo/error/invalid_session.rb +1 -4
  173. data/lib/mongo/error/invalid_signature.rb +0 -3
  174. data/lib/mongo/error/invalid_transaction_operation.rb +5 -8
  175. data/lib/mongo/error/invalid_txt_record.rb +0 -2
  176. data/lib/mongo/error/invalid_update_document.rb +2 -5
  177. data/lib/mongo/error/invalid_uri.rb +1 -4
  178. data/lib/mongo/error/invalid_write_concern.rb +2 -5
  179. data/lib/mongo/error/kms_error.rb +0 -2
  180. data/lib/mongo/error/labelable.rb +0 -3
  181. data/lib/mongo/error/lint_error.rb +0 -2
  182. data/lib/mongo/error/max_bson_size.rb +8 -11
  183. data/lib/mongo/error/max_message_size.rb +2 -5
  184. data/lib/mongo/error/mismatched_domain.rb +0 -2
  185. data/lib/mongo/error/missing_connection.rb +0 -2
  186. data/lib/mongo/error/missing_file_chunk.rb +0 -3
  187. data/lib/mongo/error/missing_password.rb +0 -2
  188. data/lib/mongo/error/missing_resume_token.rb +1 -4
  189. data/lib/mongo/error/missing_scram_server_signature.rb +2 -4
  190. data/lib/mongo/error/missing_service_id.rb +0 -2
  191. data/lib/mongo/error/mongocryptd_spawn_error.rb +0 -2
  192. data/lib/mongo/error/multi_index_drop.rb +0 -3
  193. data/lib/mongo/error/need_primary_server.rb +0 -2
  194. data/lib/mongo/error/no_server_available.rb +3 -8
  195. data/lib/mongo/error/no_service_connection_available.rb +1 -3
  196. data/lib/mongo/error/no_srv_records.rb +0 -2
  197. data/lib/mongo/error/notable.rb +8 -16
  198. data/lib/mongo/error/operation_failure.rb +22 -35
  199. data/lib/mongo/error/parser.rb +33 -75
  200. data/lib/mongo/error/pool_cleared_error.rb +1 -3
  201. data/lib/mongo/error/pool_closed_error.rb +0 -3
  202. data/lib/mongo/error/pool_error.rb +0 -3
  203. data/lib/mongo/error/pool_paused_error.rb +0 -2
  204. data/lib/mongo/error/raise_original_error.rb +1 -3
  205. data/lib/mongo/error/read_write_retryable.rb +14 -17
  206. data/lib/mongo/error/sdam_error_detection.rb +3 -5
  207. data/lib/mongo/error/server_api_conflict.rb +0 -2
  208. data/lib/mongo/error/server_certificate_revoked.rb +0 -2
  209. data/lib/mongo/error/server_not_usable.rb +0 -2
  210. data/lib/mongo/error/session_ended.rb +1 -3
  211. data/lib/mongo/error/session_not_materialized.rb +1 -3
  212. data/lib/mongo/error/sessions_not_supported.rb +1 -4
  213. data/lib/mongo/error/snapshot_session_invalid_server_version.rb +1 -4
  214. data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +1 -4
  215. data/lib/mongo/error/socket_error.rb +0 -2
  216. data/lib/mongo/error/socket_timeout_error.rb +0 -2
  217. data/lib/mongo/error/transactions_not_supported.rb +3 -6
  218. data/lib/mongo/error/unchangeable_collection_option.rb +1 -4
  219. data/lib/mongo/error/unexpected_chunk_length.rb +0 -3
  220. data/lib/mongo/error/unexpected_response.rb +1 -4
  221. data/lib/mongo/error/unknown_payload_type.rb +0 -3
  222. data/lib/mongo/error/unmet_dependency.rb +0 -2
  223. data/lib/mongo/error/unsupported_array_filters.rb +3 -24
  224. data/lib/mongo/error/unsupported_collation.rb +3 -24
  225. data/lib/mongo/error/unsupported_features.rb +0 -2
  226. data/lib/mongo/error/unsupported_message_type.rb +0 -2
  227. data/lib/mongo/error/unsupported_option.rb +19 -21
  228. data/lib/mongo/error/write_retryable.rb +0 -2
  229. data/lib/mongo/error.rb +10 -24
  230. data/lib/mongo/event/base.rb +0 -2
  231. data/lib/mongo/event/listeners.rb +0 -3
  232. data/lib/mongo/event/publisher.rb +0 -3
  233. data/lib/mongo/event/subscriber.rb +0 -4
  234. data/lib/mongo/event.rb +4 -6
  235. data/lib/mongo/grid/file/chunk.rb +7 -10
  236. data/lib/mongo/grid/file/info.rb +20 -24
  237. data/lib/mongo/grid/file.rb +7 -8
  238. data/lib/mongo/grid/fs_bucket.rb +40 -48
  239. data/lib/mongo/grid/stream/read.rb +25 -35
  240. data/lib/mongo/grid/stream/write.rb +17 -22
  241. data/lib/mongo/grid/stream.rb +2 -4
  242. data/lib/mongo/grid.rb +0 -1
  243. data/lib/mongo/id.rb +0 -1
  244. data/lib/mongo/index/view.rb +68 -58
  245. data/lib/mongo/index.rb +7 -10
  246. data/lib/mongo/lint.rb +31 -37
  247. data/lib/mongo/loggable.rb +5 -8
  248. data/lib/mongo/logger.rb +1 -7
  249. data/lib/mongo/monitoring/cmap_log_subscriber.rb +0 -2
  250. data/lib/mongo/monitoring/command_log_subscriber.rb +25 -33
  251. data/lib/mongo/monitoring/event/cmap/base.rb +0 -2
  252. data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +1 -4
  253. data/lib/mongo/monitoring/event/cmap/connection_check_out_started.rb +0 -3
  254. data/lib/mongo/monitoring/event/cmap/connection_checked_in.rb +1 -4
  255. data/lib/mongo/monitoring/event/cmap/connection_checked_out.rb +2 -5
  256. data/lib/mongo/monitoring/event/cmap/connection_closed.rb +1 -4
  257. data/lib/mongo/monitoring/event/cmap/connection_created.rb +1 -4
  258. data/lib/mongo/monitoring/event/cmap/connection_ready.rb +1 -4
  259. data/lib/mongo/monitoring/event/cmap/pool_cleared.rb +0 -3
  260. data/lib/mongo/monitoring/event/cmap/pool_closed.rb +1 -4
  261. data/lib/mongo/monitoring/event/cmap/pool_created.rb +1 -4
  262. data/lib/mongo/monitoring/event/cmap/pool_ready.rb +1 -4
  263. data/lib/mongo/monitoring/event/cmap.rb +0 -1
  264. data/lib/mongo/monitoring/event/command_failed.rb +5 -9
  265. data/lib/mongo/monitoring/event/command_started.rb +8 -12
  266. data/lib/mongo/monitoring/event/command_succeeded.rb +7 -15
  267. data/lib/mongo/monitoring/event/secure.rb +15 -20
  268. data/lib/mongo/monitoring/event/server_closed.rb +1 -4
  269. data/lib/mongo/monitoring/event/server_description_changed.rb +4 -8
  270. data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +5 -10
  271. data/lib/mongo/monitoring/event/server_heartbeat_started.rb +1 -4
  272. data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +3 -8
  273. data/lib/mongo/monitoring/event/server_opening.rb +1 -4
  274. data/lib/mongo/monitoring/event/topology_changed.rb +2 -5
  275. data/lib/mongo/monitoring/event/topology_closed.rb +1 -4
  276. data/lib/mongo/monitoring/event/topology_opening.rb +1 -4
  277. data/lib/mongo/monitoring/event.rb +0 -1
  278. data/lib/mongo/monitoring/publishable.rb +20 -30
  279. data/lib/mongo/monitoring/sdam_log_subscriber.rb +0 -2
  280. data/lib/mongo/monitoring/server_closed_log_subscriber.rb +0 -3
  281. data/lib/mongo/monitoring/server_description_changed_log_subscriber.rb +0 -3
  282. data/lib/mongo/monitoring/server_opening_log_subscriber.rb +0 -3
  283. data/lib/mongo/monitoring/topology_changed_log_subscriber.rb +5 -8
  284. data/lib/mongo/monitoring/topology_closed_log_subscriber.rb +0 -3
  285. data/lib/mongo/monitoring/topology_opening_log_subscriber.rb +0 -3
  286. data/lib/mongo/monitoring/unified_sdam_log_subscriber.rb +1 -3
  287. data/lib/mongo/monitoring.rb +38 -39
  288. data/lib/mongo/operation/aggregate/op_msg.rb +0 -2
  289. data/lib/mongo/operation/aggregate/result.rb +3 -6
  290. data/lib/mongo/operation/aggregate.rb +0 -2
  291. data/lib/mongo/operation/collections_info/result.rb +0 -3
  292. data/lib/mongo/operation/collections_info.rb +0 -2
  293. data/lib/mongo/operation/command/op_msg.rb +1 -4
  294. data/lib/mongo/operation/command.rb +0 -2
  295. data/lib/mongo/operation/context.rb +13 -16
  296. data/lib/mongo/operation/count/op_msg.rb +2 -4
  297. data/lib/mongo/operation/count.rb +0 -2
  298. data/lib/mongo/operation/create/op_msg.rb +2 -5
  299. data/lib/mongo/operation/create.rb +4 -2
  300. data/lib/mongo/operation/create_index/op_msg.rb +3 -7
  301. data/lib/mongo/operation/create_index.rb +0 -2
  302. data/lib/mongo/operation/create_user/op_msg.rb +2 -4
  303. data/lib/mongo/operation/create_user.rb +0 -2
  304. data/lib/mongo/operation/delete/bulk_result.rb +2 -3
  305. data/lib/mongo/operation/delete/op_msg.rb +3 -10
  306. data/lib/mongo/operation/delete/result.rb +0 -3
  307. data/lib/mongo/operation/delete.rb +1 -5
  308. data/lib/mongo/operation/distinct/op_msg.rb +2 -5
  309. data/lib/mongo/operation/distinct.rb +0 -2
  310. data/lib/mongo/operation/drop/op_msg.rb +0 -2
  311. data/lib/mongo/operation/drop.rb +0 -2
  312. data/lib/mongo/operation/drop_database/op_msg.rb +0 -2
  313. data/lib/mongo/operation/drop_database.rb +0 -2
  314. data/lib/mongo/operation/drop_index/op_msg.rb +4 -6
  315. data/lib/mongo/operation/drop_index.rb +0 -2
  316. data/lib/mongo/operation/explain/op_msg.rb +0 -2
  317. data/lib/mongo/operation/explain/result.rb +0 -3
  318. data/lib/mongo/operation/explain.rb +0 -2
  319. data/lib/mongo/operation/find/builder/command.rb +4 -12
  320. data/lib/mongo/operation/find/builder/flags.rb +9 -15
  321. data/lib/mongo/operation/find/builder/modifiers.rb +1 -4
  322. data/lib/mongo/operation/find/builder.rb +0 -1
  323. data/lib/mongo/operation/find/op_msg.rb +4 -12
  324. data/lib/mongo/operation/find/result.rb +0 -3
  325. data/lib/mongo/operation/find.rb +0 -2
  326. data/lib/mongo/operation/get_more/command_builder.rb +1 -6
  327. data/lib/mongo/operation/get_more/op_msg.rb +10 -4
  328. data/lib/mongo/operation/get_more/result.rb +0 -3
  329. data/lib/mongo/operation/get_more.rb +0 -2
  330. data/lib/mongo/operation/indexes/op_msg.rb +0 -2
  331. data/lib/mongo/operation/indexes/result.rb +1 -5
  332. data/lib/mongo/operation/indexes.rb +0 -2
  333. data/lib/mongo/operation/insert/bulk_result.rb +2 -6
  334. data/lib/mongo/operation/insert/op_msg.rb +7 -6
  335. data/lib/mongo/operation/insert/result.rb +0 -3
  336. data/lib/mongo/operation/insert.rb +2 -5
  337. data/lib/mongo/operation/kill_cursors/command_builder.rb +0 -3
  338. data/lib/mongo/operation/kill_cursors/op_msg.rb +1 -3
  339. data/lib/mongo/operation/kill_cursors.rb +0 -2
  340. data/lib/mongo/operation/list_collections/op_msg.rb +4 -6
  341. data/lib/mongo/operation/list_collections/result.rb +1 -4
  342. data/lib/mongo/operation/list_collections.rb +0 -2
  343. data/lib/mongo/operation/map_reduce/op_msg.rb +0 -2
  344. data/lib/mongo/operation/map_reduce/result.rb +3 -6
  345. data/lib/mongo/operation/map_reduce.rb +0 -2
  346. data/lib/mongo/operation/op_msg_base.rb +0 -1
  347. data/lib/mongo/operation/parallel_scan/op_msg.rb +4 -5
  348. data/lib/mongo/operation/parallel_scan/result.rb +2 -5
  349. data/lib/mongo/operation/parallel_scan.rb +0 -2
  350. data/lib/mongo/operation/remove_user/op_msg.rb +2 -4
  351. data/lib/mongo/operation/remove_user.rb +0 -2
  352. data/lib/mongo/operation/result.rb +38 -48
  353. data/lib/mongo/operation/shared/bypass_document_validation.rb +3 -7
  354. data/lib/mongo/operation/shared/causal_consistency_supported.rb +0 -3
  355. data/lib/mongo/operation/shared/executable.rb +29 -31
  356. data/lib/mongo/operation/shared/executable_no_validate.rb +0 -3
  357. data/lib/mongo/operation/shared/executable_transaction_label.rb +0 -2
  358. data/lib/mongo/operation/shared/idable.rb +3 -6
  359. data/lib/mongo/operation/shared/limited.rb +0 -3
  360. data/lib/mongo/operation/shared/object_id_generator.rb +0 -3
  361. data/lib/mongo/operation/shared/op_msg_executable.rb +0 -2
  362. data/lib/mongo/operation/shared/polymorphic_lookup.rb +0 -2
  363. data/lib/mongo/operation/shared/polymorphic_result.rb +2 -4
  364. data/lib/mongo/operation/shared/read_preference_supported.rb +10 -15
  365. data/lib/mongo/operation/shared/response_handling.rb +13 -26
  366. data/lib/mongo/operation/shared/result/aggregatable.rb +12 -13
  367. data/lib/mongo/operation/shared/sessions_supported.rb +87 -99
  368. data/lib/mongo/operation/shared/specifiable.rb +37 -59
  369. data/lib/mongo/operation/shared/write.rb +12 -17
  370. data/lib/mongo/operation/shared/write_concern_supported.rb +4 -7
  371. data/lib/mongo/operation/update/bulk_result.rb +13 -17
  372. data/lib/mongo/operation/update/op_msg.rb +2 -5
  373. data/lib/mongo/operation/update/result.rb +5 -5
  374. data/lib/mongo/operation/update.rb +1 -5
  375. data/lib/mongo/operation/update_user/op_msg.rb +2 -4
  376. data/lib/mongo/operation/update_user.rb +0 -2
  377. data/lib/mongo/operation/users_info/op_msg.rb +2 -4
  378. data/lib/mongo/operation/users_info/result.rb +1 -4
  379. data/lib/mongo/operation/users_info.rb +0 -2
  380. data/lib/mongo/operation/write_command/op_msg.rb +2 -10
  381. data/lib/mongo/operation/write_command.rb +0 -2
  382. data/lib/mongo/operation.rb +9 -14
  383. data/lib/mongo/options/mapper.rb +8 -15
  384. data/lib/mongo/options/redacted.rb +7 -9
  385. data/lib/mongo/options.rb +0 -1
  386. data/lib/mongo/protocol/bit_vector.rb +3 -5
  387. data/lib/mongo/protocol/caching_hash.rb +2 -7
  388. data/lib/mongo/protocol/compressed.rb +5 -10
  389. data/lib/mongo/protocol/get_more.rb +2 -8
  390. data/lib/mongo/protocol/kill_cursors.rb +2 -8
  391. data/lib/mongo/protocol/message.rb +103 -105
  392. data/lib/mongo/protocol/msg.rb +48 -63
  393. data/lib/mongo/protocol/query.rb +32 -41
  394. data/lib/mongo/protocol/registry.rb +2 -5
  395. data/lib/mongo/protocol/reply.rb +10 -16
  396. data/lib/mongo/protocol/serializers.rb +41 -59
  397. data/lib/mongo/protocol.rb +0 -1
  398. data/lib/mongo/query_cache.rb +7 -15
  399. data/lib/mongo/retryable/backpressure.rb +31 -0
  400. data/lib/mongo/retryable/base_worker.rb +39 -13
  401. data/lib/mongo/retryable/read_worker.rb +77 -21
  402. data/lib/mongo/retryable/retry_policy.rb +59 -0
  403. data/lib/mongo/retryable/write_worker.rb +155 -56
  404. data/lib/mongo/retryable.rb +70 -9
  405. data/lib/mongo/search_index/view.rb +30 -10
  406. data/lib/mongo/semaphore.rb +0 -1
  407. data/lib/mongo/server/app_metadata/environment.rb +3 -3
  408. data/lib/mongo/server/app_metadata/platform.rb +17 -4
  409. data/lib/mongo/server/app_metadata.rb +4 -5
  410. data/lib/mongo/server/connection.rb +79 -61
  411. data/lib/mongo/server/connection_base.rb +43 -53
  412. data/lib/mongo/server/connection_common.rb +41 -64
  413. data/lib/mongo/server/connection_pool/generation_manager.rb +6 -11
  414. data/lib/mongo/server/connection_pool/populator.rb +1 -4
  415. data/lib/mongo/server/connection_pool.rb +195 -167
  416. data/lib/mongo/server/description/features.rb +51 -59
  417. data/lib/mongo/server/description/load_balancer.rb +0 -2
  418. data/lib/mongo/server/description.rb +117 -138
  419. data/lib/mongo/server/monitor/app_metadata.rb +3 -4
  420. data/lib/mongo/server/monitor/connection.rb +28 -35
  421. data/lib/mongo/server/monitor.rb +65 -60
  422. data/lib/mongo/server/pending_connection.rb +70 -71
  423. data/lib/mongo/server/push_monitor/connection.rb +0 -3
  424. data/lib/mongo/server/push_monitor.rb +21 -29
  425. data/lib/mongo/server/round_trip_time_calculator.rb +11 -17
  426. data/lib/mongo/server.rb +62 -94
  427. data/lib/mongo/server_selector/base.rb +133 -157
  428. data/lib/mongo/server_selector/nearest.rb +2 -5
  429. data/lib/mongo/server_selector/primary.rb +1 -5
  430. data/lib/mongo/server_selector/primary_preferred.rb +2 -6
  431. data/lib/mongo/server_selector/secondary.rb +2 -6
  432. data/lib/mongo/server_selector/secondary_preferred.rb +1 -5
  433. data/lib/mongo/server_selector.rb +3 -4
  434. data/lib/mongo/session/server_session.rb +6 -7
  435. data/lib/mongo/session/session_pool.rb +20 -34
  436. data/lib/mongo/session.rb +334 -199
  437. data/lib/mongo/socket/ocsp_cache.rb +8 -13
  438. data/lib/mongo/socket/ocsp_verifier.rb +69 -70
  439. data/lib/mongo/socket/ssl.rb +44 -43
  440. data/lib/mongo/socket/tcp.rb +5 -8
  441. data/lib/mongo/socket/unix.rb +0 -4
  442. data/lib/mongo/socket.rb +80 -102
  443. data/lib/mongo/srv/monitor.rb +10 -11
  444. data/lib/mongo/srv/resolver.rb +15 -24
  445. data/lib/mongo/srv/result.rb +25 -21
  446. data/lib/mongo/srv.rb +0 -1
  447. data/lib/mongo/timeout.rb +4 -11
  448. data/lib/mongo/topology_version.rb +8 -13
  449. data/lib/mongo/tracing/open_telemetry/command_tracer.rb +320 -0
  450. data/lib/mongo/tracing/open_telemetry/operation_tracer.rb +227 -0
  451. data/lib/mongo/tracing/open_telemetry/tracer.rb +236 -0
  452. data/lib/mongo/{error/server_api_not_supported.rb → tracing/open_telemetry.rb} +10 -10
  453. data/lib/mongo/tracing.rb +42 -0
  454. data/lib/mongo/uri/options_mapper.rb +135 -126
  455. data/lib/mongo/uri/srv_protocol.rb +34 -42
  456. data/lib/mongo/uri.rb +95 -139
  457. data/lib/mongo/utils.rb +5 -12
  458. data/lib/mongo/version.rb +1 -1
  459. data/lib/mongo/write_concern/acknowledged.rb +0 -2
  460. data/lib/mongo/write_concern/base.rb +6 -6
  461. data/lib/mongo/write_concern/unacknowledged.rb +0 -2
  462. data/lib/mongo/write_concern.rb +14 -15
  463. data/lib/mongo.rb +4 -3
  464. data/mongo.gemspec +17 -17
  465. metadata +11 -5
  466. data/lib/mongo/operation/shared/result/use_legacy_error_parser.rb +0 -32
  467. 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) 2017-2020 MongoDB Inc.
5
4
  #
@@ -17,12 +16,10 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Raised if an unknown payload type is encountered when an OP_MSG is created or read.
22
20
  #
23
21
  # @since 2.5.0
24
22
  class UnknownPayloadType < Error
25
-
26
23
  # The error message.
27
24
  #
28
25
  # @since 2.5.0
@@ -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
  # Raised if an optional dependency of the driver is not met.
22
20
  class UnmetDependency < Error; end
23
21
  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,43 +16,23 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Raised if the array filters option is specified for an operation but the server
22
20
  # selected does not support array filters.
23
21
  #
24
22
  # @since 2.5.0
25
23
  #
26
- # @deprecated RUBY-2260 In driver version 3.0, this error class will be
24
+ # @deprecated RUBY-2260 In driver version 3.0, this error class will be
27
25
  # replaced with UnsupportedOption. To handle this error, catch
28
26
  # Mongo::Error::UnsupportedOption, which will prevent any breaking changes
29
27
  # in your application when upgrading to version 3.0 of the driver.
30
28
  class UnsupportedArrayFilters < UnsupportedOption
31
-
32
- # The default error message describing that array filters are not supported.
33
- #
34
- # @return [ String ] A default message describing that array filters are not supported by the server.
35
- #
36
- # @since 2.5.0
37
- DEFAULT_MESSAGE = "The array_filters option is not a supported feature of the server handling this operation. " +
38
- "Operation results may be unexpected.".freeze
39
-
40
29
  # The error message describing that array filters cannot be used when write concern is unacknowledged.
41
30
  #
42
31
  # @return [ String ] A message describing that array filters cannot be used when write concern is unacknowledged.
43
32
  #
44
33
  # @since 2.5.0
45
- UNACKNOWLEDGED_WRITES_MESSAGE = "The array_filters option cannot be specified when using unacknowledged writes. " +
46
- "Either remove the array_filters option or use acknowledged writes (w >= 1).".freeze
47
-
48
- # Create the new exception.
49
- #
50
- # @example Create the new exception.
51
- # Mongo::Error::UnsupportedArrayFilters.new
52
- #
53
- # @since 2.5.0
54
- def initialize(message = nil)
55
- super(message || DEFAULT_MESSAGE)
56
- end
34
+ UNACKNOWLEDGED_WRITES_MESSAGE = 'The array_filters option cannot be specified when using unacknowledged writes. ' +
35
+ 'Either remove the array_filters option or use acknowledged writes (w >= 1).'
57
36
  end
58
37
  end
59
38
  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,43 +16,23 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Raised if a collation is specified for an operation but the server selected does not
22
20
  # support collations.
23
21
  #
24
22
  # @since 2.4.0
25
23
  #
26
- # @deprecated RUBY-2260 In driver version 3.0, this error class will be
24
+ # @deprecated RUBY-2260 In driver version 3.0, this error class will be
27
25
  # replaced with UnsupportedOption. To handle this error, catch
28
26
  # Mongo::Error::UnsupportedOption, which will prevent any breaking changes
29
27
  # in your application when upgrading to version 3.0 of the driver.
30
28
  class UnsupportedCollation < UnsupportedOption
31
-
32
- # The default error message describing that collations is not supported.
33
- #
34
- # @return [ String ] A default message describing that collations is not supported by the server.
35
- #
36
- # @since 2.4.0
37
- DEFAULT_MESSAGE = "Collations is not a supported feature of the server handling this operation. " +
38
- "Operation results may be unexpected."
39
-
40
29
  # The error message describing that collations cannot be used when write concern is unacknowledged.
41
30
  #
42
31
  # @return [ String ] A message describing that collations cannot be used when write concern is unacknowledged.
43
32
  #
44
33
  # @since 2.4.0
45
- UNACKNOWLEDGED_WRITES_MESSAGE = "A collation cannot be specified when using unacknowledged writes. " +
46
- "Either remove the collation option or use acknowledged writes (w >= 1)."
47
-
48
- # Create the new exception.
49
- #
50
- # @example Create the new exception.
51
- # Mongo::Error::UnsupportedCollation.new
52
- #
53
- # @since 2.4.0
54
- def initialize(message = nil)
55
- super(message || DEFAULT_MESSAGE)
56
- end
34
+ UNACKNOWLEDGED_WRITES_MESSAGE = 'A collation cannot be specified when using unacknowledged writes. ' +
35
+ 'Either remove the collation option or use acknowledged writes (w >= 1).'
57
36
  end
58
37
  end
59
38
  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,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Raised when the driver does not support the complete set of server
22
20
  # features.
23
21
  #
@@ -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,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # Raised when trying to get a message type from the registry that doesn't exist.
22
20
  #
23
21
  # @since 2.5.0
@@ -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
  # Raised if an unsupported option is specified for an operation.
22
20
  class UnsupportedOption < Error
23
21
  # The error message provided when the user passes the hint option to
@@ -25,38 +23,38 @@ module Mongo
25
23
  # option and does not provide option validation.
26
24
  #
27
25
  # @api private
28
- HINT_MESSAGE = "The MongoDB server handling this request does not support " \
29
- "the hint option on this command. The hint option is supported on update " \
30
- "commands on MongoDB server versions 4.2 and later and on findAndModify " \
31
- "and delete commands on MongoDB server versions 4.4 and later"
26
+ HINT_MESSAGE = 'The MongoDB server handling this request does not support ' \
27
+ 'the hint option on this command. The hint option is supported on update ' \
28
+ 'commands on MongoDB server versions 4.2 and later and on findAndModify ' \
29
+ 'and delete commands on MongoDB server versions 4.4 and later'
32
30
 
33
31
  # The error message provided when the user passes the hint option to
34
32
  # an unacknowledged write operation.
35
33
  #
36
34
  # @api private
37
- UNACKNOWLEDGED_HINT_MESSAGE = "The hint option cannot be specified on " \
38
- "an unacknowledged write operation. Remove the hint option or perform " \
39
- "this operation with a write concern of at least { w: 1 }"
35
+ UNACKNOWLEDGED_HINT_MESSAGE = 'The hint option cannot be specified on ' \
36
+ 'an unacknowledged write operation. Remove the hint option or perform ' \
37
+ 'this operation with a write concern of at least { w: 1 }'
40
38
 
41
39
  # The error message provided when the user passes the allow_disk_use
42
40
  # option to a find operation against a server that does not support the
43
41
  # allow_disk_use operation and does not provide option validation.
44
42
  #
45
43
  # @api private
46
- ALLOW_DISK_USE_MESSAGE = "The MongoDB server handling this request does " \
47
- "not support the allow_disk_use option on this command. The " \
48
- "allow_disk_use option is supported on find commands on MongoDB " \
49
- "server versions 4.4 and later"
44
+ ALLOW_DISK_USE_MESSAGE = 'The MongoDB server handling this request does ' \
45
+ 'not support the allow_disk_use option on this command. The ' \
46
+ 'allow_disk_use option is supported on find commands on MongoDB ' \
47
+ 'server versions 4.4 and later'
50
48
 
51
49
  # The error message provided when the user passes the commit_quorum option
52
50
  # to a createIndexes operation against a server that does not support
53
51
  # that option.
54
52
  #
55
53
  # @api private
56
- COMMIT_QUORUM_MESSAGE = "The MongoDB server handling this request does " \
57
- "not support the commit_quorum option on this command. The commit_quorum " \
58
- "option is supported on createIndexes commands on MongoDB server versions " \
59
- "4.4 and later"
54
+ COMMIT_QUORUM_MESSAGE = 'The MongoDB server handling this request does ' \
55
+ 'not support the commit_quorum option on this command. The commit_quorum ' \
56
+ 'option is supported on createIndexes commands on MongoDB server versions ' \
57
+ '4.4 and later'
60
58
 
61
59
  # Raise an error about an unsupported hint option.
62
60
  #
@@ -72,10 +70,10 @@ module Mongo
72
70
  unacknowledged_write = options[:unacknowledged_write] || false
73
71
 
74
72
  error_message = if unacknowledged_write
75
- UNACKNOWLEDGED_HINT_MESSAGE
76
- else
77
- HINT_MESSAGE
78
- end
73
+ UNACKNOWLEDGED_HINT_MESSAGE
74
+ else
75
+ HINT_MESSAGE
76
+ end
79
77
 
80
78
  new(error_message)
81
79
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2018-2020 MongoDB Inc.
5
4
  #
@@ -17,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Error
20
-
21
19
  # A module signifying the error is always write retryable.
22
20
  #
23
21
  # @since 2.6.0
data/lib/mongo/error.rb CHANGED
@@ -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
  #
@@ -29,53 +28,41 @@ module Mongo
29
28
  # The error code field.
30
29
  #
31
30
  # @since 2.0.0
32
- CODE = 'code'.freeze
31
+ CODE = 'code'
33
32
 
34
- # An error field, MongoDB < 2.6
33
+ # The standard error message field
35
34
  #
36
35
  # @since 2.0.0
37
36
  # @deprecated
38
- ERR = '$err'.freeze
39
-
40
- # An error field, MongoDB < 2.4
41
- #
42
- # @since 2.0.0
43
- # @deprecated
44
- ERROR = 'err'.freeze
45
-
46
- # The standard error message field, MongoDB 3.0+
47
- #
48
- # @since 2.0.0
49
- # @deprecated
50
- ERRMSG = 'errmsg'.freeze
37
+ ERRMSG = 'errmsg'
51
38
 
52
39
  # The constant for the writeErrors array.
53
40
  #
54
41
  # @since 2.0.0
55
42
  # @deprecated
56
- WRITE_ERRORS = 'writeErrors'.freeze
43
+ WRITE_ERRORS = 'writeErrors'
57
44
 
58
45
  # The constant for a write concern error.
59
46
  #
60
47
  # @since 2.0.0
61
48
  # @deprecated
62
- WRITE_CONCERN_ERROR = 'writeConcernError'.freeze
49
+ WRITE_CONCERN_ERROR = 'writeConcernError'
63
50
 
64
51
  # The constant for write concern errors.
65
52
  #
66
53
  # @since 2.1.0
67
54
  # @deprecated
68
- WRITE_CONCERN_ERRORS = 'writeConcernErrors'.freeze
55
+ WRITE_CONCERN_ERRORS = 'writeConcernErrors'
69
56
 
70
57
  # Constant for an unknown error.
71
58
  #
72
59
  # @since 2.0.0
73
- UNKNOWN_ERROR = 8.freeze
60
+ UNKNOWN_ERROR = 8
74
61
 
75
62
  # Constant for a bad value error.
76
63
  #
77
64
  # @since 2.0.0
78
- BAD_VALUE = 2.freeze
65
+ BAD_VALUE = 2
79
66
 
80
67
  # Constant for a Cursor not found error.
81
68
  #
@@ -100,14 +87,14 @@ module Mongo
100
87
  #
101
88
  # @since 2.6.0
102
89
  # @deprecated
103
- UNKNOWN_TRANSACTION_COMMIT_RESULT_LABEL = 'UnknownTransactionCommitResult'.freeze
90
+ UNKNOWN_TRANSACTION_COMMIT_RESULT_LABEL = 'UnknownTransactionCommitResult'
104
91
 
105
92
  # Error label describing errors that will likely not occur if a transaction is manually retried
106
93
  # from the start.
107
94
  #
108
95
  # @since 2.6.0
109
96
  # @deprecated
110
- TRANSIENT_TRANSACTION_ERROR_LABEL = 'TransientTransactionError'.freeze
97
+ TRANSIENT_TRANSACTION_ERROR_LABEL = 'TransientTransactionError'
111
98
 
112
99
  def initialize(msg = nil)
113
100
  super
@@ -215,7 +202,6 @@ require 'mongo/error/missing_resume_token'
215
202
  require 'mongo/error/missing_scram_server_signature'
216
203
  require 'mongo/error/missing_service_id'
217
204
  require 'mongo/error/server_api_conflict'
218
- require 'mongo/error/server_api_not_supported'
219
205
  require 'mongo/error/server_not_usable'
220
206
  require 'mongo/error/server_timeout_error'
221
207
  require 'mongo/error/transactions_not_supported'
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2018-2020 MongoDB Inc.
5
4
  #
@@ -17,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  module Event
20
-
21
19
  # Base class for all events.
22
20
  #
23
21
  # @since 2.6.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
  #
@@ -17,12 +16,10 @@
17
16
 
18
17
  module Mongo
19
18
  module Event
20
-
21
19
  # The queue of events getting processed in the client.
22
20
  #
23
21
  # @since 2.0.0
24
22
  class Listeners
25
-
26
23
  # Initialize the event listeners.
27
24
  #
28
25
  # @example Initialize the event listeners.
@@ -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
  module Event
20
-
21
19
  # This module is included for objects that need to publish events.
22
20
  #
23
21
  # @since 2.0.0
24
22
  module Publisher
25
-
26
23
  # @return [ Event::Listeners ] event_listeners The listeners.
27
24
  attr_reader :event_listeners
28
25
 
@@ -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
  module Event
20
-
21
19
  # Adds convenience methods for adding listeners to event publishers.
22
20
  #
23
21
  # @since 2.0.0
24
22
  module Subscriber
25
-
26
23
  # @return [ Event::Listeners ] event_listeners The listeners.
27
24
  attr_reader :event_listeners
28
25
 
@@ -41,4 +38,3 @@ module Mongo
41
38
  end
42
39
  end
43
40
  end
44
-
data/lib/mongo/event.rb CHANGED
@@ -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,30 +16,29 @@
17
16
 
18
17
  module Mongo
19
18
  module Event
20
-
21
19
  # When a standalone is discovered.
22
20
  #
23
21
  # @since 2.0.6
24
22
  # @deprecated Will be removed in 3.0
25
- STANDALONE_DISCOVERED = 'standalone_discovered'.freeze
23
+ STANDALONE_DISCOVERED = 'standalone_discovered'
26
24
 
27
25
  # When a server is elected primary.
28
26
  #
29
27
  # @since 2.0.0
30
28
  # @deprecated Will be removed in 3.0
31
- PRIMARY_ELECTED = 'primary_elected'.freeze
29
+ PRIMARY_ELECTED = 'primary_elected'
32
30
 
33
31
  # When a server is discovered to be a member of a topology.
34
32
  #
35
33
  # @since 2.4.0
36
34
  # @deprecated Will be removed in 3.0
37
- MEMBER_DISCOVERED = 'member_discovered'.freeze
35
+ MEMBER_DISCOVERED = 'member_discovered'
38
36
 
39
37
  # When a server is to be removed from a cluster.
40
38
  #
41
39
  # @since 2.0.6
42
40
  # @deprecated Will be removed in 3.0
43
- DESCRIPTION_CHANGED = 'description_changed'.freeze
41
+ DESCRIPTION_CHANGED = 'description_changed'
44
42
  end
45
43
  end
46
44
 
@@ -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
  #
@@ -18,21 +17,19 @@
18
17
  module Mongo
19
18
  module Grid
20
19
  class File
21
-
22
20
  # Encapsulates behavior around GridFS chunks of file data.
23
21
  #
24
22
  # @since 2.0.0
25
23
  class Chunk
26
-
27
24
  # Name of the chunks collection.
28
25
  #
29
26
  # @since 2.0.0
30
- COLLECTION = 'chunks'.freeze
27
+ COLLECTION = 'chunks'
31
28
 
32
29
  # Default size for chunks of data.
33
30
  #
34
31
  # @since 2.0.0
35
- DEFAULT_SIZE = (255 * 1024).freeze
32
+ DEFAULT_SIZE = (255 * 1024)
36
33
 
37
34
  # @return [ BSON::Document ] document The document to store for the
38
35
  # chunk.
@@ -50,6 +47,7 @@ module Mongo
50
47
  # @since 2.0.0
51
48
  def ==(other)
52
49
  return false unless other.is_a?(Chunk)
50
+
53
51
  document == other.document
54
52
  end
55
53
 
@@ -123,10 +121,10 @@ module Mongo
123
121
  #
124
122
  # @since 2.0.0
125
123
  def initialize(document)
126
- @document = BSON::Document.new(:_id => BSON::ObjectId.new).merge(document)
124
+ @document = BSON::Document.new(_id: BSON::ObjectId.new).merge(document)
127
125
  end
128
126
 
129
- # Conver the chunk to BSON for storage.
127
+ # Convert the chunk to BSON for storage.
130
128
  #
131
129
  # @example Convert the chunk to BSON.
132
130
  # chunk.to_bson
@@ -138,12 +136,11 @@ module Mongo
138
136
  # @return [ String ] The raw BSON data.
139
137
  #
140
138
  # @since 2.0.0
141
- def to_bson(buffer = BSON::ByteBuffer.new, validating_keys = nil)
139
+ def to_bson(buffer = BSON::ByteBuffer.new, _validating_keys = nil)
142
140
  document.to_bson(buffer)
143
141
  end
144
142
 
145
143
  class << self
146
-
147
144
  # Takes an array of chunks and assembles them back into the full
148
145
  # piece of raw data.
149
146
  #
@@ -157,7 +154,7 @@ module Mongo
157
154
  # @since 2.0.0
158
155
  # @api private
159
156
  def assemble(chunks)
160
- chunks.reduce(+''){ |data, chunk| data << chunk.data.data }
157
+ chunks.reduce(+'') { |data, chunk| data << chunk.data.data }
161
158
  end
162
159
 
163
160
  # Split the provided data into multiple chunks.
@@ -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
  #
@@ -18,7 +17,6 @@
18
17
  module Mongo
19
18
  module Grid
20
19
  class File
21
-
22
20
  # Encapsulates behavior around GridFS files collection file document.
23
21
  #
24
22
  # @since 2.0.0
@@ -26,31 +24,30 @@ module Mongo
26
24
  # @deprecated Please use the 'stream' API on a FSBucket instead.
27
25
  # Will be removed in driver version 3.0.
28
26
  class Info
29
-
30
27
  # Name of the files collection.
31
28
  #
32
29
  # @since 2.0.0
33
- COLLECTION = 'files'.freeze
30
+ COLLECTION = 'files'
34
31
 
35
32
  # Mappings of user supplied fields to db specification.
36
33
  #
37
34
  # @since 2.0.0
38
35
  MAPPINGS = {
39
- :chunk_size => :chunkSize,
40
- :content_type => :contentType,
41
- :filename => :filename,
42
- :_id => :_id,
43
- :md5 => :md5,
44
- :length => :length,
45
- :metadata => :metadata,
46
- :upload_date => :uploadDate,
47
- :aliases => :aliases
36
+ chunk_size: :chunkSize,
37
+ content_type: :contentType,
38
+ filename: :filename,
39
+ _id: :_id,
40
+ md5: :md5,
41
+ length: :length,
42
+ metadata: :metadata,
43
+ upload_date: :uploadDate,
44
+ aliases: :aliases
48
45
  }.freeze
49
46
 
50
47
  # Default content type for stored files.
51
48
  #
52
49
  # @since 2.0.0
53
- DEFAULT_CONTENT_TYPE = 'binary/octet-stream'.freeze
50
+ DEFAULT_CONTENT_TYPE = 'binary/octet-stream'
54
51
 
55
52
  # @return [ BSON::Document ] document The files collection document.
56
53
  attr_reader :document
@@ -67,6 +64,7 @@ module Mongo
67
64
  # @since 2.0.0
68
65
  def ==(other)
69
66
  return false unless other.is_a?(Info)
67
+
70
68
  document == other.document
71
69
  end
72
70
 
@@ -141,7 +139,7 @@ module Mongo
141
139
  # document contains a mix of user options and keys added
142
140
  # internally by the driver, like session.
143
141
  # Remove the keys that driver adds but keep user options.
144
- document = document.reject do |key, value|
142
+ document = document.reject do |key, _value|
145
143
  key.to_s == 'session'
146
144
  end
147
145
  @document = default_document.merge(Options::Mapper.transform(document, MAPPINGS))
@@ -171,7 +169,7 @@ module Mongo
171
169
  def length
172
170
  document[:length]
173
171
  end
174
- alias :size :length
172
+ alias size length
175
173
 
176
174
  # Get the additional metadata from the file information document.
177
175
  #
@@ -233,10 +231,8 @@ module Mongo
233
231
  # @return [ String ] The raw BSON data.
234
232
  #
235
233
  # @since 2.0.0
236
- def to_bson(buffer = BSON::ByteBuffer.new, validating_keys = nil)
237
- if @client_md5 && !document[:md5]
238
- document[:md5] = @client_md5.hexdigest
239
- end
234
+ def to_bson(buffer = BSON::ByteBuffer.new, _validating_keys = nil)
235
+ document[:md5] = @client_md5.hexdigest if @client_md5 && !document[:md5]
240
236
  document.to_bson(buffer)
241
237
  end
242
238
 
@@ -256,11 +252,11 @@ module Mongo
256
252
 
257
253
  def default_document
258
254
  BSON::Document.new(
259
- :_id => BSON::ObjectId.new,
260
- :chunkSize => Chunk::DEFAULT_SIZE,
255
+ _id: BSON::ObjectId.new,
256
+ chunkSize: Chunk::DEFAULT_SIZE,
261
257
  # MongoDB stores times with millisecond precision
262
- :uploadDate => Time.now.utc.round(3),
263
- :contentType => DEFAULT_CONTENT_TYPE
258
+ uploadDate: Time.now.utc.round(3),
259
+ contentType: DEFAULT_CONTENT_TYPE
264
260
  )
265
261
  end
266
262
  end