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) 2019-2020 MongoDB Inc.
5
4
  #
@@ -19,12 +18,10 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
21
  # Event published when a thread begins attempting to check a connection out of a pool.
24
22
  #
25
23
  # @since 2.9.0
26
24
  class ConnectionCheckOutStarted < Base
27
-
28
25
  # @return [ Mongo::Address ] address The address of the server that the connection will
29
26
  # connect to.
30
27
  #
@@ -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
  #
@@ -19,12 +18,10 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
21
  # Event published when a connection is returned to a connection pool.
24
22
  #
25
23
  # @since 2.9.0
26
24
  class ConnectionCheckedIn < Base
27
-
28
25
  # @return [ Address ] address The address of the server the connection was connected to.
29
26
  #
30
27
  # @since 2.9.0
@@ -65,7 +62,7 @@ module Mongo
65
62
  # @api experimental
66
63
  def summary
67
64
  "#<#{self.class.name.sub(/^Mongo::Monitoring::Event::Cmap::/, '')} " +
68
- "address=#{address} connection_id=#{connection_id} pool=0x#{pool.object_id}>"
65
+ "address=#{address} connection_id=#{connection_id} pool=0x#{pool.object_id}>"
69
66
  end
70
67
  end
71
68
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -19,12 +18,10 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
- # Event published when a connection is successfully checked out out of a pool.
21
+ # Event published when a connection is successfully checked out of a pool.
24
22
  #
25
23
  # @since 2.9.0
26
24
  class ConnectionCheckedOut < Base
27
-
28
25
  # @return [ Mongo::Address ] address The address of the server that the connection will
29
26
  # connect to.
30
27
  #
@@ -66,7 +63,7 @@ module Mongo
66
63
  # @api experimental
67
64
  def summary
68
65
  "#<#{self.class.name.sub(/^Mongo::Monitoring::Event::Cmap::/, '')} " +
69
- "address=#{address} connection_id=#{connection_id} pool=0x#{pool.object_id}>"
66
+ "address=#{address} connection_id=#{connection_id} pool=0x#{pool.object_id}>"
70
67
  end
71
68
  end
72
69
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -19,12 +18,10 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
21
  # Event published when a connection is closed.
24
22
  #
25
23
  # @since 2.9.0
26
24
  class ConnectionClosed < Base
27
-
28
25
  # @return [ Symbol ] STALE Indicates that the connection was closed due to it being stale.
29
26
  #
30
27
  # @since 2.9.0
@@ -97,7 +94,7 @@ module Mongo
97
94
  # @api experimental
98
95
  def summary
99
96
  "#<#{self.class.name.sub(/^Mongo::Monitoring::Event::Cmap::/, '')} " +
100
- "address=#{address} connection_id=#{connection_id} reason=#{reason}>"
97
+ "address=#{address} connection_id=#{connection_id} reason=#{reason}>"
101
98
  end
102
99
  end
103
100
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -19,12 +18,10 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
21
  # Event published when a connection is created.
24
22
  #
25
23
  # @since 2.9.0
26
24
  class ConnectionCreated < Base
27
-
28
25
  # @return [ Mongo::Address ] address The address of the server the connection will connect
29
26
  # to.
30
27
  #
@@ -58,7 +55,7 @@ module Mongo
58
55
  # @api experimental
59
56
  def summary
60
57
  "#<#{self.class.name.sub(/^Mongo::Monitoring::Event::Cmap::/, '')} " +
61
- "address=#{address} connection_id=#{connection_id}>"
58
+ "address=#{address} connection_id=#{connection_id}>"
62
59
  end
63
60
  end
64
61
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -19,12 +18,10 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
21
  # Event published when a connection is ready to be used for operations.
24
22
  #
25
23
  # @since 2.9.0
26
24
  class ConnectionReady < Base
27
-
28
25
  # @return [ Mongo::Address ] address The address of the server the connection is connected
29
26
  # to.
30
27
  #
@@ -58,7 +55,7 @@ module Mongo
58
55
  # @api experimental
59
56
  def summary
60
57
  "#<#{self.class.name.sub(/^Mongo::Monitoring::Event::Cmap::/, '')} " +
61
- "address=#{address} connection_id=#{connection_id}>"
58
+ "address=#{address} connection_id=#{connection_id}>"
62
59
  end
63
60
  end
64
61
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -19,12 +18,10 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
21
  # Event published when a connection pool is cleared.
24
22
  #
25
23
  # @since 2.9.0
26
24
  class PoolCleared < Base
27
-
28
25
  # @return [ Mongo::Address ] address The address of the server the pool's connections will
29
26
  # connect to.
30
27
  #
@@ -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
  #
@@ -19,12 +18,10 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
21
  # Event published when a connection pool is closed.
24
22
  #
25
23
  # @since 2.9.0
26
24
  class PoolClosed < Base
27
-
28
25
  # @return [ Mongo::Address ] address The address of the server the pool's connections will
29
26
  # connect to.
30
27
  #
@@ -59,7 +56,7 @@ module Mongo
59
56
  # @api experimental
60
57
  def summary
61
58
  "#<#{self.class.name.sub(/^Mongo::Monitoring::Event::Cmap::/, '')} " +
62
- "address=#{address} pool=0x#{pool.object_id}>"
59
+ "address=#{address} pool=0x#{pool.object_id}>"
63
60
  end
64
61
  end
65
62
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -19,12 +18,10 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
21
  # Event published when a connection pool is created.
24
22
  #
25
23
  # @since 2.9.0
26
24
  class PoolCreated < Base
27
-
28
25
  # @return [ Mongo::Address ] address The address of the server the pool's connections will
29
26
  # connect to.
30
27
  #
@@ -66,7 +63,7 @@ module Mongo
66
63
  # @api experimental
67
64
  def summary
68
65
  "#<#{self.class.name.sub(/^Mongo::Monitoring::Event::Cmap::/, '')} " +
69
- "address=#{address} options=#{options} pool=0x#{pool.object_id}>"
66
+ "address=#{address} options=#{options} pool=0x#{pool.object_id}>"
70
67
  end
71
68
  end
72
69
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-present MongoDB Inc.
5
4
  #
@@ -19,10 +18,8 @@ module Mongo
19
18
  class Monitoring
20
19
  module Event
21
20
  module Cmap
22
-
23
21
  # Event published when a connection pool is marked ready.
24
22
  class PoolReady < Base
25
-
26
23
  # @return [ Mongo::Address ] address The address of the server the pool's connections will
27
24
  # connect to.
28
25
  attr_reader :address
@@ -58,7 +55,7 @@ module Mongo
58
55
  # @api experimental
59
56
  def summary
60
57
  "#<#{self.class.name.sub(/^Mongo::Monitoring::Event::Cmap::/, '')} " +
61
- "address=#{address} options=#{options} pool=0x#{pool.object_id}>"
58
+ "address=#{address} options=#{options} pool=0x#{pool.object_id}>"
62
59
  end
63
60
  end
64
61
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2019-2020 MongoDB Inc.
5
4
  #
@@ -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
  #
@@ -18,7 +17,6 @@
18
17
  module Mongo
19
18
  class Monitoring
20
19
  module Event
21
-
22
20
  # Event that is fired when a command operation fails.
23
21
  #
24
22
  # @since 2.1.0
@@ -83,9 +81,8 @@ module Mongo
83
81
  #
84
82
  # @api private
85
83
  def initialize(command_name, database_name, address,
86
- request_id, operation_id, message, failure, duration,
87
- started_event:, server_connection_id: nil, service_id: nil
88
- )
84
+ request_id, operation_id, message, failure, duration,
85
+ started_event:, server_connection_id: nil, service_id: nil)
89
86
  @command_name = command_name.to_s
90
87
  @database_name = database_name
91
88
  @address = address
@@ -130,9 +127,8 @@ module Mongo
130
127
  # @since 2.1.0
131
128
  # @api private
132
129
  def self.generate(address, operation_id, payload, message,
133
- failure, duration, started_event:, server_connection_id: nil,
134
- service_id: nil
135
- )
130
+ failure, duration, started_event:, server_connection_id: nil,
131
+ service_id: nil)
136
132
  new(
137
133
  payload[:command_name],
138
134
  payload[:database_name],
@@ -144,7 +140,7 @@ module Mongo
144
140
  duration,
145
141
  started_event: started_event,
146
142
  server_connection_id: server_connection_id,
147
- service_id: service_id,
143
+ service_id: service_id
148
144
  )
149
145
  end
150
146
  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
  #
@@ -18,7 +17,6 @@
18
17
  module Mongo
19
18
  class Monitoring
20
19
  module Event
21
-
22
20
  # Event that is fired when a command operation starts.
23
21
  #
24
22
  # @since 2.1.0
@@ -83,10 +81,9 @@ module Mongo
83
81
  # @since 2.1.0
84
82
  # @api private
85
83
  def initialize(command_name, database_name, address, request_id,
86
- operation_id, command, socket_object_id: nil, connection_id: nil,
87
- connection_generation: nil, server_connection_id: nil,
88
- service_id: nil
89
- )
84
+ operation_id, command, socket_object_id: nil, connection_id: nil,
85
+ connection_generation: nil, server_connection_id: nil,
86
+ service_id: nil)
90
87
  @command_name = command_name.to_s
91
88
  @database_name = database_name
92
89
  @address = address
@@ -121,9 +118,9 @@ module Mongo
121
118
  # @return [ String ] The command summary.
122
119
  private def command_summary
123
120
  command = self.command
124
- remove_keys = %w($clusterTime lsid signature)
121
+ remove_keys = %w[$clusterTime lsid signature]
125
122
  if remove_keys.any? { |k| command.key?(k) }
126
- command = Hash[command.reject { |k, v| remove_keys.include?(k) }]
123
+ command = Hash[command.reject { |k, _v| remove_keys.include?(k) }]
127
124
  suffix = ' ...'
128
125
  else
129
126
  suffix = ''
@@ -148,9 +145,8 @@ module Mongo
148
145
  # @since 2.1.0
149
146
  # @api private
150
147
  def self.generate(address, operation_id, payload,
151
- socket_object_id: nil, connection_id: nil, connection_generation: nil,
152
- server_connection_id: nil, service_id: nil
153
- )
148
+ socket_object_id: nil, connection_id: nil, connection_generation: nil,
149
+ server_connection_id: nil, service_id: nil)
154
150
  new(
155
151
  payload[:command_name],
156
152
  payload[:database_name],
@@ -167,7 +163,7 @@ module Mongo
167
163
  connection_id: connection_id,
168
164
  connection_generation: connection_generation,
169
165
  server_connection_id: server_connection_id,
170
- service_id: service_id,
166
+ service_id: service_id
171
167
  )
172
168
  end
173
169
 
@@ -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
  #
@@ -18,7 +17,6 @@
18
17
  module Mongo
19
18
  class Monitoring
20
19
  module Event
21
-
22
20
  # Event that is fired when a command operation succeeds.
23
21
  #
24
22
  # @since 2.1.0
@@ -76,9 +74,8 @@ module Mongo
76
74
  # @since 2.1.0
77
75
  # @api private
78
76
  def initialize(command_name, database_name, address, request_id,
79
- operation_id, reply, duration, started_event:,
80
- server_connection_id: nil, service_id: nil
81
- )
77
+ operation_id, reply, duration, started_event:,
78
+ server_connection_id: nil, service_id: nil)
82
79
  @command_name = command_name.to_s
83
80
  @database_name = database_name
84
81
  @address = address
@@ -121,9 +118,8 @@ module Mongo
121
118
  # @since 2.1.0
122
119
  # @api private
123
120
  def self.generate(address, operation_id, command_payload,
124
- reply_payload, duration, started_event:, server_connection_id: nil,
125
- service_id: nil
126
- )
121
+ reply_payload, duration, started_event:, server_connection_id: nil,
122
+ service_id: nil)
127
123
  new(
128
124
  command_payload[:command_name],
129
125
  command_payload[:database_name],
@@ -134,19 +130,15 @@ module Mongo
134
130
  duration,
135
131
  started_event: started_event,
136
132
  server_connection_id: server_connection_id,
137
- service_id: service_id,
133
+ service_id: service_id
138
134
  )
139
135
  end
140
136
 
141
- private
142
-
143
137
  def self.generate_reply(command_payload, reply_payload)
144
138
  if reply_payload
145
139
  reply = reply_payload[:reply]
146
- if cursor = reply[:cursor]
147
- if !cursor.key?(Collection::NS)
148
- cursor.merge!(Collection::NS => namespace(command_payload))
149
- end
140
+ if (cursor = reply[:cursor]) && !cursor.key?(Collection::NS)
141
+ cursor.merge!(Collection::NS => namespace(command_payload))
150
142
  end
151
143
  reply
152
144
  else
@@ -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
  #
@@ -18,26 +17,24 @@
18
17
  module Mongo
19
18
  class Monitoring
20
19
  module Event
21
-
22
20
  # Provides behavior to redact sensitive information from commands and
23
21
  # replies.
24
22
  #
25
23
  # @since 2.1.0
26
24
  module Secure
27
-
28
25
  # The list of commands that has the data redacted for security.
29
26
  #
30
27
  # @since 2.1.0
31
- REDACTED_COMMANDS = [
32
- 'authenticate',
33
- 'saslStart',
34
- 'saslContinue',
35
- 'getnonce',
36
- 'createUser',
37
- 'updateUser',
38
- 'copydbgetnonce',
39
- 'copydbsaslstart',
40
- 'copydb'
28
+ REDACTED_COMMANDS = %w[
29
+ authenticate
30
+ saslStart
31
+ saslContinue
32
+ getnonce
33
+ createUser
34
+ updateUser
35
+ copydbgetnonce
36
+ copydbsaslstart
37
+ copydb
41
38
  ].freeze
42
39
 
43
40
  # Check whether the command is sensitive in terms of command monitoring
@@ -52,10 +49,9 @@ module Mongo
52
49
  def sensitive?(command_name:, document:)
53
50
  if REDACTED_COMMANDS.include?(command_name.to_s)
54
51
  true
55
- elsif %w(hello ismaster isMaster).include?(command_name.to_s) &&
56
- document['speculativeAuthenticate']
57
- then
58
- # According to Command Monitoring spec,for hello/legacy hello commands
52
+ elsif %w[hello ismaster isMaster].include?(command_name.to_s) &&
53
+ document['speculativeAuthenticate']
54
+ # According to Command Monitoring spec, for hello/legacy hello commands
59
55
  # when speculativeAuthenticate is present, their commands AND replies
60
56
  # MUST be redacted from the events.
61
57
  # See https://github.com/mongodb/specifications/blob/master/source/command-logging-and-monitoring/command-logging-and-monitoring.md#security
@@ -81,10 +77,10 @@ module Mongo
81
77
  #
82
78
  # @since 2.1.0
83
79
  def redacted(command_name, document)
84
- if %w(1 true yes).include?(ENV['MONGO_RUBY_DRIVER_UNREDACT_EVENTS']&.downcase)
80
+ if %w[1 true yes].include?(ENV['MONGO_RUBY_DRIVER_UNREDACT_EVENTS']&.downcase)
85
81
  document
86
82
  elsif respond_to?(:started_event) && started_event.sensitive
87
- return BSON::Document.new
83
+ BSON::Document.new
88
84
  elsif sensitive?(command_name: command_name, document: document)
89
85
  BSON::Document.new
90
86
  else
@@ -92,7 +88,6 @@ module Mongo
92
88
  end
93
89
  end
94
90
 
95
-
96
91
  # Is compression allowed for a given command message.
97
92
  #
98
93
  # @example Determine if compression is allowed for a given command.
@@ -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 closed.
23
21
  #
24
22
  # @since 2.4.0
25
23
  class ServerClosed < 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 a server's description changes.
23
21
  #
24
22
  # @since 2.4.0
25
23
  class ServerDescriptionChanged < Mongo::Event::Base
26
-
27
24
  # @return [ Address ] address The server address.
28
25
  attr_reader :address
29
26
 
@@ -60,8 +57,7 @@ module Mongo
60
57
  # @since 2.4.0
61
58
  # @api private
62
59
  def initialize(address, topology, previous_description, new_description,
63
- awaited: false
64
- )
60
+ awaited: false)
65
61
  @address = address
66
62
  @topology = topology
67
63
  @previous_description = previous_description
@@ -79,9 +75,9 @@ module Mongo
79
75
  # @api experimental
80
76
  def summary
81
77
  "#<#{short_class_name}" +
82
- " address=#{address}" +
83
- # TODO Add summaries to descriptions and use them here
84
- " prev=#{previous_description.server_type.upcase} new=#{new_description.server_type.upcase}#{awaited_indicator}>"
78
+ " address=#{address}" +
79
+ # TODO: Add summaries to descriptions and use them here
80
+ " prev=#{previous_description.server_type.upcase} new=#{new_description.server_type.upcase}#{awaited_indicator}>"
85
81
  end
86
82
 
87
83
  private
@@ -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 ServerHeartbeatFailed < 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, error, awaited: false,
41
- started_event:
42
- )
37
+ def initialize(address, round_trip_time, error, started_event:, awaited: false)
43
38
  @address = address
44
39
  @round_trip_time = round_trip_time
45
40
  @error = error
@@ -54,13 +49,13 @@ module Mongo
54
49
  attr_reader :round_trip_time
55
50
 
56
51
  # Alias of round_trip_time.
57
- alias :duration :round_trip_time
52
+ alias duration round_trip_time
58
53
 
59
54
  # @return [ Exception ] error The exception that occurred in hello call.
60
55
  attr_reader :error
61
56
 
62
57
  # Alias of error for SDAM spec compliance.
63
- alias :failure :error
58
+ alias failure error
64
59
 
65
60
  # @return [ true | false ] Whether the heartbeat was awaited.
66
61
  def awaited?
@@ -83,8 +78,8 @@ module Mongo
83
78
  # @api experimental
84
79
  def summary
85
80
  "#<#{short_class_name}" +
86
- " address=#{address}" +
87
- " error=#{error.inspect}>"
81
+ " address=#{address}" +
82
+ " error=#{error.inspect}>"
88
83
  end
89
84
  end
90
85
  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,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 ServerHeartbeatStarted < Mongo::Event::Base
26
-
27
24
  # @return [ Address ] address The server address.
28
25
  attr_reader :address
29
26
 
@@ -57,7 +54,7 @@ module Mongo
57
54
  # @api experimental
58
55
  def summary
59
56
  "#<#{short_class_name}" +
60
- " address=#{address}>"
57
+ " address=#{address}>"
61
58
  end
62
59
  end
63
60
  end