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) 2018-2020 MongoDB Inc.
5
4
  #
@@ -18,12 +17,10 @@
18
17
  module Mongo
19
18
  class Monitoring
20
19
  module Event
21
-
22
20
  # Event fired when a server heartbeat is dispatched.
23
21
  #
24
22
  # @since 2.7.0
25
23
  class ServerHeartbeatSucceeded < Mongo::Event::Base
26
-
27
24
  # Create the event.
28
25
  #
29
26
  # @example Create the event.
@@ -37,9 +34,7 @@ module Mongo
37
34
  #
38
35
  # @since 2.7.0
39
36
  # @api private
40
- def initialize(address, round_trip_time, awaited: false,
41
- started_event:
42
- )
37
+ def initialize(address, round_trip_time, started_event:, awaited: false)
43
38
  @address = address
44
39
  @round_trip_time = round_trip_time
45
40
  @awaited = !!awaited
@@ -53,7 +48,7 @@ module Mongo
53
48
  attr_reader :round_trip_time
54
49
 
55
50
  # Alias of round_trip_time.
56
- alias :duration :round_trip_time
51
+ alias duration round_trip_time
57
52
 
58
53
  # @return [ true | false ] Whether the heartbeat was awaited.
59
54
  def awaited?
@@ -76,7 +71,7 @@ module Mongo
76
71
  # @api experimental
77
72
  def summary
78
73
  "#<#{short_class_name}" +
79
- " address=#{address}>"
74
+ " address=#{address}>"
80
75
  end
81
76
  end
82
77
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -18,12 +17,10 @@
18
17
  module Mongo
19
18
  class Monitoring
20
19
  module Event
21
-
22
20
  # Event fired when the server is opening.
23
21
  #
24
22
  # @since 2.4.0
25
23
  class ServerOpening < Mongo::Event::Base
26
-
27
24
  # @return [ Address ] address The server address.
28
25
  attr_reader :address
29
26
 
@@ -54,7 +51,7 @@ module Mongo
54
51
  # @api experimental
55
52
  def summary
56
53
  "#<#{short_class_name}" +
57
- " address=#{address} topology=#{topology.summary}>"
54
+ " address=#{address} topology=#{topology.summary}>"
58
55
  end
59
56
  end
60
57
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -18,12 +17,10 @@
18
17
  module Mongo
19
18
  class Monitoring
20
19
  module Event
21
-
22
20
  # Event fired when the topology changes.
23
21
  #
24
22
  # @since 2.4.0
25
23
  class TopologyChanged < Mongo::Event::Base
26
-
27
24
  # @return [ Cluster::Topology ] previous_topology The previous topology.
28
25
  attr_reader :previous_topology
29
26
 
@@ -54,8 +51,8 @@ module Mongo
54
51
  # @api experimental
55
52
  def summary
56
53
  "#<#{short_class_name}" +
57
- " prev=#{previous_topology.summary}" +
58
- " new=#{new_topology.summary}>"
54
+ " prev=#{previous_topology.summary}" +
55
+ " new=#{new_topology.summary}>"
59
56
  end
60
57
  end
61
58
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -18,12 +17,10 @@
18
17
  module Mongo
19
18
  class Monitoring
20
19
  module Event
21
-
22
20
  # Event fired when the topology closes.
23
21
  #
24
22
  # @since 2.4.0
25
23
  class TopologyClosed < Mongo::Event::Base
26
-
27
24
  # @return [ Topology ] topology The topology.
28
25
  attr_reader :topology
29
26
 
@@ -49,7 +46,7 @@ module Mongo
49
46
  # @api experimental
50
47
  def summary
51
48
  "#<#{short_class_name}" +
52
- " topology=#{topology.summary}>"
49
+ " topology=#{topology.summary}>"
53
50
  end
54
51
  end
55
52
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -18,12 +17,10 @@
18
17
  module Mongo
19
18
  class Monitoring
20
19
  module Event
21
-
22
20
  # Event fired when the topology is opening.
23
21
  #
24
22
  # @since 2.4.0
25
23
  class TopologyOpening < Mongo::Event::Base
26
-
27
24
  # @return [ Topology ] topology The topology.
28
25
  attr_reader :topology
29
26
 
@@ -49,7 +46,7 @@ module Mongo
49
46
  # @api experimental
50
47
  def summary
51
48
  "#<#{short_class_name}" +
52
- " topology=#{topology.summary}>"
49
+ " topology=#{topology.summary}>"
53
50
  end
54
51
  end
55
52
  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
  #
@@ -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 Monitoring
20
-
21
19
  # Defines behavior for an object that can publish monitoring events.
22
20
  #
23
21
  # @since 2.1.0
@@ -47,15 +45,13 @@ module Mongo
47
45
  private
48
46
 
49
47
  def command_started(address, operation_id, payload,
50
- socket_object_id: nil, connection_id: nil, connection_generation: nil,
51
- server_connection_id: nil, service_id: nil
52
- )
48
+ socket_object_id: nil, connection_id: nil, connection_generation: nil,
49
+ server_connection_id: nil, service_id: nil)
53
50
  event = Event::CommandStarted.generate(address, operation_id, payload,
54
- socket_object_id: socket_object_id, connection_id: connection_id,
55
- connection_generation: connection_generation,
56
- server_connection_id: server_connection_id,
57
- service_id: service_id,
58
- )
51
+ socket_object_id: socket_object_id, connection_id: connection_id,
52
+ connection_generation: connection_generation,
53
+ server_connection_id: server_connection_id,
54
+ service_id: service_id)
59
55
  monitoring.started(
60
56
  Monitoring::COMMAND,
61
57
  event
@@ -64,27 +60,23 @@ module Mongo
64
60
  end
65
61
 
66
62
  def command_completed(result, address, operation_id, payload, duration,
67
- started_event:, server_connection_id: nil, service_id: nil
68
- )
63
+ started_event:, server_connection_id: nil, service_id: nil)
69
64
  document = result ? (result.documents || []).first : nil
70
- if document && (document['ok'] && document['ok'] != 1 || document.key?('$err'))
65
+ if document && ((document['ok'] && document['ok'] != 1) || document.key?('$err'))
71
66
  parser = Error::Parser.new(document)
72
67
  command_failed(document, address, operation_id,
73
- payload, parser.message, duration,
74
- started_event: started_event, server_connection_id: server_connection_id,
75
- service_id: service_id,
76
- )
68
+ payload, parser.message, duration,
69
+ started_event: started_event, server_connection_id: server_connection_id,
70
+ service_id: service_id)
77
71
  else
78
72
  command_succeeded(result, address, operation_id, payload, duration,
79
- started_event: started_event, server_connection_id: server_connection_id,
80
- service_id: service_id,
81
- )
73
+ started_event: started_event, server_connection_id: server_connection_id,
74
+ service_id: service_id)
82
75
  end
83
76
  end
84
77
 
85
78
  def command_succeeded(result, address, operation_id, payload, duration,
86
- started_event:, server_connection_id: nil, service_id: nil
87
- )
79
+ started_event:, server_connection_id: nil, service_id: nil)
88
80
  monitoring.succeeded(
89
81
  Monitoring::COMMAND,
90
82
  Event::CommandSucceeded.generate(
@@ -95,22 +87,20 @@ module Mongo
95
87
  duration,
96
88
  started_event: started_event,
97
89
  server_connection_id: server_connection_id,
98
- service_id: service_id,
90
+ service_id: service_id
99
91
  )
100
92
  )
101
93
  end
102
94
 
103
95
  def command_failed(failure, address, operation_id, payload, message, duration,
104
- started_event:, server_connection_id: nil, service_id: nil
105
- )
96
+ started_event:, server_connection_id: nil, service_id: nil)
106
97
  monitoring.failed(
107
98
  Monitoring::COMMAND,
108
99
  Event::CommandFailed.generate(address, operation_id, payload,
109
- message, failure, duration,
110
- started_event: started_event,
111
- server_connection_id: server_connection_id,
112
- service_id: service_id,
113
- )
100
+ message, failure, duration,
101
+ started_event: started_event,
102
+ server_connection_id: server_connection_id,
103
+ service_id: service_id)
114
104
  )
115
105
  end
116
106
 
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -17,7 +16,6 @@
17
16
 
18
17
  module Mongo
19
18
  class Monitoring
20
-
21
19
  # Subscribes to SDAM events and logs them.
22
20
  #
23
21
  # @since 2.4.0
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -17,12 +16,10 @@
17
16
 
18
17
  module Mongo
19
18
  class Monitoring
20
-
21
19
  # Subscribes to Server Closed events and logs them.
22
20
  #
23
21
  # @since 2.4.0
24
22
  class ServerClosedLogSubscriber < SDAMLogSubscriber
25
-
26
23
  private
27
24
 
28
25
  def log_event(event)
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -17,12 +16,10 @@
17
16
 
18
17
  module Mongo
19
18
  class Monitoring
20
-
21
19
  # Subscribes to Server Description Changed events and logs them.
22
20
  #
23
21
  # @since 2.4.0
24
22
  class ServerDescriptionChangedLogSubscriber < SDAMLogSubscriber
25
-
26
23
  private
27
24
 
28
25
  def log_event(event)
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -17,12 +16,10 @@
17
16
 
18
17
  module Mongo
19
18
  class Monitoring
20
-
21
19
  # Subscribes to Server Opening events and logs them.
22
20
  #
23
21
  # @since 2.4.0
24
22
  class ServerOpeningLogSubscriber < SDAMLogSubscriber
25
-
26
23
  private
27
24
 
28
25
  def log_event(event)
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -17,24 +16,22 @@
17
16
 
18
17
  module Mongo
19
18
  class Monitoring
20
-
21
19
  # Subscribes to Topology Changed events and logs them.
22
20
  #
23
21
  # @since 2.4.0
24
22
  class TopologyChangedLogSubscriber < SDAMLogSubscriber
25
-
26
23
  private
27
24
 
28
25
  def log_event(event)
29
- if event.previous_topology.class != event.new_topology.class
26
+ if event.previous_topology.class == event.new_topology.class
30
27
  log_debug(
31
- "Topology type '#{event.previous_topology.display_name}' changed to " +
32
- "type '#{event.new_topology.display_name}'."
28
+ "There was a change in the members of the '#{event.new_topology.display_name}' " +
29
+ 'topology.'
33
30
  )
34
31
  else
35
32
  log_debug(
36
- "There was a change in the members of the '#{event.new_topology.display_name}' " +
37
- "topology."
33
+ "Topology type '#{event.previous_topology.display_name}' changed to " +
34
+ "type '#{event.new_topology.display_name}'."
38
35
  )
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) 2018-2020 MongoDB Inc.
5
4
  #
@@ -17,12 +16,10 @@
17
16
 
18
17
  module Mongo
19
18
  class Monitoring
20
-
21
19
  # Subscribes to Topology Closed events and logs them.
22
20
  #
23
21
  # @since 2.7.0
24
22
  class TopologyClosedLogSubscriber < SDAMLogSubscriber
25
-
26
23
  private
27
24
 
28
25
  def log_event(event)
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2016-2020 MongoDB Inc.
5
4
  #
@@ -17,12 +16,10 @@
17
16
 
18
17
  module Mongo
19
18
  class Monitoring
20
-
21
19
  # Subscribes to Topology Opening events and logs them.
22
20
  #
23
21
  # @since 2.4.0
24
22
  class TopologyOpeningLogSubscriber < SDAMLogSubscriber
25
-
26
23
  private
27
24
 
28
25
  def log_event(event)
@@ -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 Monitoring
20
-
21
19
  # Subscribes to SDAM events and logs them.
22
20
  #
23
21
  # @since 2.11.0
@@ -50,7 +48,7 @@ module Mongo
50
48
  log_debug("EVENT: #{event.summary}") if logger.debug?
51
49
  end
52
50
 
53
- alias :succeeded :published
51
+ alias succeeded published
54
52
 
55
53
  def subscribe(client)
56
54
  client.subscribe(Mongo::Monitoring::TOPOLOGY_OPENING, self)
@@ -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
  #
@@ -16,7 +15,6 @@
16
15
  # limitations under the License.
17
16
 
18
17
  module Mongo
19
-
20
18
  # The class defines behavior for the performance monitoring API.
21
19
  #
22
20
  # @since 2.1.0
@@ -26,47 +24,47 @@ module Mongo
26
24
  # The command topic.
27
25
  #
28
26
  # @since 2.1.0
29
- COMMAND = 'Command'.freeze
27
+ COMMAND = 'Command'
30
28
 
31
29
  # The connection pool topic.
32
30
  #
33
31
  # @since 2.9.0
34
- CONNECTION_POOL = 'ConnectionPool'.freeze
32
+ CONNECTION_POOL = 'ConnectionPool'
35
33
 
36
34
  # Server closed topic.
37
35
  #
38
36
  # @since 2.4.0
39
- SERVER_CLOSED = 'ServerClosed'.freeze
37
+ SERVER_CLOSED = 'ServerClosed'
40
38
 
41
39
  # Server description changed topic.
42
40
  #
43
41
  # @since 2.4.0
44
- SERVER_DESCRIPTION_CHANGED = 'ServerDescriptionChanged'.freeze
42
+ SERVER_DESCRIPTION_CHANGED = 'ServerDescriptionChanged'
45
43
 
46
44
  # Server opening topic.
47
45
  #
48
46
  # @since 2.4.0
49
- SERVER_OPENING = 'ServerOpening'.freeze
47
+ SERVER_OPENING = 'ServerOpening'
50
48
 
51
49
  # Topology changed topic.
52
50
  #
53
51
  # @since 2.4.0
54
- TOPOLOGY_CHANGED = 'TopologyChanged'.freeze
52
+ TOPOLOGY_CHANGED = 'TopologyChanged'
55
53
 
56
54
  # Topology closed topic.
57
55
  #
58
56
  # @since 2.4.0
59
- TOPOLOGY_CLOSED = 'TopologyClosed'.freeze
57
+ TOPOLOGY_CLOSED = 'TopologyClosed'
60
58
 
61
59
  # Topology opening topic.
62
60
  #
63
61
  # @since 2.4.0
64
- TOPOLOGY_OPENING = 'TopologyOpening'.freeze
62
+ TOPOLOGY_OPENING = 'TopologyOpening'
65
63
 
66
64
  # Server heartbeat started topic.
67
65
  #
68
66
  # @since 2.7.0
69
- SERVER_HEARTBEAT = 'ServerHeartbeat'.freeze
67
+ SERVER_HEARTBEAT = 'ServerHeartbeat'
70
68
 
71
69
  # Used for generating unique operation ids to link events together.
72
70
  #
@@ -77,7 +75,7 @@ module Mongo
77
75
  #
78
76
  # @since 2.1.0
79
77
  def self.next_operation_id
80
- self.next_id
78
+ next_id
81
79
  end
82
80
 
83
81
  # Contains subscription methods common between monitoring and
@@ -138,9 +136,9 @@ module Mongo
138
136
  def unsubscribe(topic, subscriber)
139
137
  subs = subscribers_for(topic)
140
138
  index = subs.index(subscriber)
141
- if index
142
- subs.delete_at(index)
143
- end
139
+ return unless index
140
+
141
+ subs.delete_at(index)
144
142
  end
145
143
 
146
144
  # Get all the subscribers.
@@ -219,23 +217,23 @@ module Mongo
219
217
  # @api private
220
218
  def initialize(options = {})
221
219
  @options = options
222
- if options[:monitoring] != false
223
- Global.subscribers.each do |topic, subscribers|
224
- subscribers.each do |subscriber|
225
- subscribe(topic, subscriber)
226
- end
220
+ return unless options[:monitoring] != false
221
+
222
+ Global.subscribers.each do |topic, subscribers|
223
+ subscribers.each do |subscriber|
224
+ subscribe(topic, subscriber)
227
225
  end
228
- subscribe(COMMAND, CommandLogSubscriber.new(options))
229
- # CMAP events are not logged by default because this will create
230
- # log entries for every operation performed by the driver.
231
- #subscribe(CONNECTION_POOL, CmapLogSubscriber.new(options))
232
- subscribe(SERVER_OPENING, ServerOpeningLogSubscriber.new(options))
233
- subscribe(SERVER_CLOSED, ServerClosedLogSubscriber.new(options))
234
- subscribe(SERVER_DESCRIPTION_CHANGED, ServerDescriptionChangedLogSubscriber.new(options))
235
- subscribe(TOPOLOGY_OPENING, TopologyOpeningLogSubscriber.new(options))
236
- subscribe(TOPOLOGY_CHANGED, TopologyChangedLogSubscriber.new(options))
237
- subscribe(TOPOLOGY_CLOSED, TopologyClosedLogSubscriber.new(options))
238
226
  end
227
+ subscribe(COMMAND, CommandLogSubscriber.new(options))
228
+ # CMAP events are not logged by default because this will create
229
+ # log entries for every operation performed by the driver.
230
+ # subscribe(CONNECTION_POOL, CmapLogSubscriber.new(options))
231
+ subscribe(SERVER_OPENING, ServerOpeningLogSubscriber.new(options))
232
+ subscribe(SERVER_CLOSED, ServerClosedLogSubscriber.new(options))
233
+ subscribe(SERVER_DESCRIPTION_CHANGED, ServerDescriptionChangedLogSubscriber.new(options))
234
+ subscribe(TOPOLOGY_OPENING, TopologyOpeningLogSubscriber.new(options))
235
+ subscribe(TOPOLOGY_CHANGED, TopologyChangedLogSubscriber.new(options))
236
+ subscribe(TOPOLOGY_CLOSED, TopologyClosedLogSubscriber.new(options))
239
237
  end
240
238
 
241
239
  # @api private
@@ -256,7 +254,7 @@ module Mongo
256
254
  #
257
255
  # @since 2.9.0
258
256
  def published(topic, event)
259
- subscribers_for(topic).each{ |subscriber| subscriber.published(event) }
257
+ subscribers_for(topic).each { |subscriber| subscriber.published(event) }
260
258
  end
261
259
 
262
260
  # Publish a started event.
@@ -272,7 +270,7 @@ module Mongo
272
270
  #
273
271
  # @since 2.1.0
274
272
  def started(topic, event)
275
- subscribers_for(topic).each{ |subscriber| subscriber.started(event) }
273
+ subscribers_for(topic).each { |subscriber| subscriber.started(event) }
276
274
  end
277
275
 
278
276
  # Publish a succeeded event.
@@ -288,7 +286,7 @@ module Mongo
288
286
  #
289
287
  # @since 2.1.0
290
288
  def succeeded(topic, event)
291
- subscribers_for(topic).each{ |subscriber| subscriber.succeeded(event) }
289
+ subscribers_for(topic).each { |subscriber| subscriber.succeeded(event) }
292
290
  end
293
291
 
294
292
  # Publish a failed event.
@@ -304,14 +302,15 @@ module Mongo
304
302
  #
305
303
  # @since 2.1.0
306
304
  def failed(topic, event)
307
- subscribers_for(topic).each{ |subscriber| subscriber.failed(event) }
305
+ subscribers_for(topic).each { |subscriber| subscriber.failed(event) }
308
306
  end
309
307
 
310
308
  # @api private
311
309
  def publish_heartbeat(server, awaited: false)
312
310
  if monitoring?
313
311
  started_event = Event::ServerHeartbeatStarted.new(
314
- server.address, awaited: awaited)
312
+ server.address, awaited: awaited
313
+ )
315
314
  started(SERVER_HEARTBEAT, started_event)
316
315
  end
317
316
 
@@ -328,14 +327,14 @@ module Mongo
328
327
 
329
328
  begin
330
329
  result = yield
331
- rescue => exc
330
+ rescue StandardError => e
332
331
  if monitoring?
333
332
  event = Event::ServerHeartbeatFailed.new(
334
333
  server.address,
335
334
  Utils.monotonic_time - start_time,
336
- exc,
335
+ e,
337
336
  awaited: awaited,
338
- started_event: started_event,
337
+ started_event: started_event
339
338
  )
340
339
  failed(SERVER_HEARTBEAT, event)
341
340
  end
@@ -346,7 +345,7 @@ module Mongo
346
345
  server.address,
347
346
  Utils.monotonic_time - start_time,
348
347
  awaited: awaited,
349
- started_event: started_event,
348
+ started_event: started_event
350
349
  )
351
350
  succeeded(SERVER_HEARTBEAT, event)
352
351
  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
  #
@@ -18,7 +17,6 @@
18
17
  module Mongo
19
18
  module Operation
20
19
  class Aggregate
21
-
22
20
  # A MongoDB aggregate operation sent as an op message.
23
21
  #
24
22
  # @api private