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) 2014-2020 MongoDB Inc.
5
4
  #
@@ -18,16 +17,14 @@
18
17
  module Mongo
19
18
  class Collection
20
19
  class View
21
-
22
20
  # Defines write related behavior for collection view.
23
21
  #
24
22
  # @since 2.0.0
25
23
  module Writable
26
-
27
24
  # The array filters field constant.
28
25
  #
29
26
  # @since 2.5.0
30
- ARRAY_FILTERS = 'array_filters'.freeze
27
+ ARRAY_FILTERS = 'array_filters'
31
28
 
32
29
  # Finds a single document in the database via findAndModify and deletes
33
30
  # it, returning the original document.
@@ -64,10 +61,10 @@ module Mongo
64
61
  def find_one_and_delete(opts = {})
65
62
  with_session(opts) do |session|
66
63
  write_concern = if opts[:write_concern]
67
- WriteConcern.get(opts[:write_concern])
68
- else
69
- write_concern_with_session(session)
70
- end
64
+ WriteConcern.get(opts[:write_concern])
65
+ else
66
+ write_concern_with_session(session)
67
+ end
71
68
 
72
69
  QueryCache.clear_namespace(collection.namespace)
73
70
 
@@ -101,7 +98,7 @@ module Mongo
101
98
  db_name: database.name,
102
99
  write_concern: write_concern,
103
100
  session: session,
104
- txn_num: txn_num,
101
+ txn_num: txn_num
105
102
  ).execute_with_connection(connection, context: context)
106
103
  end
107
104
  end.first&.fetch('value', nil)
@@ -182,10 +179,10 @@ module Mongo
182
179
  def find_one_and_update(document, opts = {})
183
180
  value = with_session(opts) do |session|
184
181
  write_concern = if opts[:write_concern]
185
- WriteConcern.get(opts[:write_concern])
186
- else
187
- write_concern_with_session(session)
188
- end
182
+ WriteConcern.get(opts[:write_concern])
183
+ else
184
+ write_concern_with_session(session)
185
+ end
189
186
 
190
187
  QueryCache.clear_namespace(collection.namespace)
191
188
 
@@ -211,22 +208,25 @@ module Mongo
211
208
  session: session,
212
209
  operation_timeouts: operation_timeouts(opts)
213
210
  )
214
- write_with_retry(write_concern, context: context) do |connection, txn_num, context|
215
- gte_4_4 = connection.server.description.server_version_gte?('4.4')
216
- if !gte_4_4 && opts[:hint] && write_concern && !write_concern.acknowledged?
217
- raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
218
- end
211
+ operation = Operation::WriteCommand.new(
212
+ selector: cmd,
213
+ db_name: database.name,
214
+ write_concern: write_concern,
215
+ session: session
216
+ )
217
+ value = tracer.trace_operation(operation, context, op_name: 'findOneAndUpdate') do
218
+ write_with_retry(write_concern, context: context) do |connection, txn_num, context|
219
+ gte_4_4 = connection.server.description.server_version_gte?('4.4')
220
+ if !gte_4_4 && opts[:hint] && write_concern && !write_concern.acknowledged?
221
+ raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
222
+ end
219
223
 
220
- Operation::WriteCommand.new(
221
- selector: cmd,
222
- db_name: database.name,
223
- write_concern: write_concern,
224
- session: session,
225
- txn_num: txn_num,
226
- ).execute_with_connection(connection, context: context)
227
- end
228
- end.first&.fetch('value', nil)
229
- value unless value.nil? || value.empty?
224
+ operation.txn_num = txn_num
225
+ operation.execute_with_connection(connection, context: context)
226
+ end
227
+ end.first&.fetch('value', nil)
228
+ value unless value.nil? || value.empty?
229
+ end
230
230
  end
231
231
 
232
232
  # Remove documents from the collection.
@@ -257,10 +257,10 @@ module Mongo
257
257
  def delete_many(opts = {})
258
258
  with_session(opts) do |session|
259
259
  write_concern = if opts[:write_concern]
260
- WriteConcern.get(opts[:write_concern])
261
- else
262
- write_concern_with_session(session)
263
- end
260
+ WriteConcern.get(opts[:write_concern])
261
+ else
262
+ write_concern_with_session(session)
263
+ end
264
264
 
265
265
  QueryCache.clear_namespace(collection.namespace)
266
266
 
@@ -275,22 +275,25 @@ module Mongo
275
275
  session: session,
276
276
  operation_timeouts: operation_timeouts(opts)
277
277
  )
278
- nro_write_with_retry(write_concern, context: context) do |connection, txn_num, context|
279
- gte_4_4 = connection.server.description.server_version_gte?('4.4')
280
- if !gte_4_4 && opts[:hint] && write_concern && !write_concern.acknowledged?
281
- raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
282
- end
278
+ operation = Operation::Delete.new(
279
+ deletes: [ delete_doc ],
280
+ db_name: collection.database.name,
281
+ coll_name: collection.name,
282
+ write_concern: write_concern,
283
+ bypass_document_validation: !!opts[:bypass_document_validation],
284
+ session: session,
285
+ let: opts[:let],
286
+ comment: opts[:comment]
287
+ )
288
+ tracer.trace_operation(operation, context, op_name: 'deleteMany') do
289
+ nro_write_with_retry(write_concern, context: context) do |connection, _txn_num, context|
290
+ gte_4_4 = connection.server.description.server_version_gte?('4.4')
291
+ if !gte_4_4 && opts[:hint] && write_concern && !write_concern.acknowledged?
292
+ raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
293
+ end
283
294
 
284
- Operation::Delete.new(
285
- deletes: [ delete_doc ],
286
- db_name: collection.database.name,
287
- coll_name: collection.name,
288
- write_concern: write_concern,
289
- bypass_document_validation: !!opts[:bypass_document_validation],
290
- session: session,
291
- let: opts[:let],
292
- comment: opts[:comment],
293
- ).execute_with_connection(connection, context: context)
295
+ operation.execute_with_connection(connection, context: context)
296
+ end
294
297
  end
295
298
  end
296
299
  end
@@ -323,10 +326,10 @@ module Mongo
323
326
  def delete_one(opts = {})
324
327
  with_session(opts) do |session|
325
328
  write_concern = if opts[:write_concern]
326
- WriteConcern.get(opts[:write_concern])
327
- else
328
- write_concern_with_session(session)
329
- end
329
+ WriteConcern.get(opts[:write_concern])
330
+ else
331
+ write_concern_with_session(session)
332
+ end
330
333
 
331
334
  QueryCache.clear_namespace(collection.namespace)
332
335
 
@@ -357,7 +360,7 @@ module Mongo
357
360
  session: session,
358
361
  txn_num: txn_num,
359
362
  let: opts[:let],
360
- comment: opts[:comment],
363
+ comment: opts[:comment]
361
364
  ).execute_with_connection(connection, context: context)
362
365
  end
363
366
  end
@@ -401,10 +404,10 @@ module Mongo
401
404
  def replace_one(replacement, opts = {})
402
405
  with_session(opts) do |session|
403
406
  write_concern = if opts[:write_concern]
404
- WriteConcern.get(opts[:write_concern])
405
- else
406
- write_concern_with_session(session)
407
- end
407
+ WriteConcern.get(opts[:write_concern])
408
+ else
409
+ write_concern_with_session(session)
410
+ end
408
411
  validate_replacement_documents!(replacement)
409
412
 
410
413
  QueryCache.clear_namespace(collection.namespace)
@@ -417,9 +420,7 @@ module Mongo
417
420
  collation: opts[:collation] || opts['collation'] || collation,
418
421
  sort: opts[:sort] || opts['sort'],
419
422
  }.compact
420
- if opts[:upsert]
421
- update_doc['upsert'] = true
422
- end
423
+ update_doc['upsert'] = true if opts[:upsert]
423
424
 
424
425
  context = Operation::Context.new(
425
426
  client: client,
@@ -441,7 +442,7 @@ module Mongo
441
442
  session: session,
442
443
  txn_num: txn_num,
443
444
  let: opts[:let],
444
- comment: opts[:comment],
445
+ comment: opts[:comment]
445
446
  ).execute_with_connection(connection, context: context)
446
447
  end
447
448
  end
@@ -482,10 +483,10 @@ module Mongo
482
483
  def update_many(spec, opts = {})
483
484
  with_session(opts) do |session|
484
485
  write_concern = if opts[:write_concern]
485
- WriteConcern.get(opts[:write_concern])
486
- else
487
- write_concern_with_session(session)
488
- end
486
+ WriteConcern.get(opts[:write_concern])
487
+ else
488
+ write_concern_with_session(session)
489
+ end
489
490
  validate_update_documents!(spec)
490
491
 
491
492
  QueryCache.clear_namespace(collection.namespace)
@@ -498,16 +499,14 @@ module Mongo
498
499
  hint: opts[:hint],
499
500
  collation: opts[:collation] || opts['collation'] || collation,
500
501
  }.compact
501
- if opts[:upsert]
502
- update_doc['upsert'] = true
503
- end
502
+ update_doc['upsert'] = true if opts[:upsert]
504
503
 
505
504
  context = Operation::Context.new(
506
505
  client: client,
507
506
  session: session,
508
507
  operation_timeouts: operation_timeouts(opts)
509
508
  )
510
- nro_write_with_retry(write_concern, context: context) do |connection, txn_num, context|
509
+ nro_write_with_retry(write_concern, context: context) do |connection, _txn_num, context|
511
510
  gte_4_2 = connection.server.description.server_version_gte?('4.2')
512
511
  if !gte_4_2 && opts[:hint] && write_concern && !write_concern.acknowledged?
513
512
  raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
@@ -521,7 +520,7 @@ module Mongo
521
520
  bypass_document_validation: !!opts[:bypass_document_validation],
522
521
  session: session,
523
522
  let: opts[:let],
524
- comment: opts[:comment],
523
+ comment: opts[:comment]
525
524
  ).execute_with_connection(connection, context: context)
526
525
  end
527
526
  end
@@ -567,10 +566,10 @@ module Mongo
567
566
  def update_one(spec, opts = {})
568
567
  with_session(opts) do |session|
569
568
  write_concern = if opts[:write_concern]
570
- WriteConcern.get(opts[:write_concern])
571
- else
572
- write_concern_with_session(session)
573
- end
569
+ WriteConcern.get(opts[:write_concern])
570
+ else
571
+ write_concern_with_session(session)
572
+ end
574
573
  validate_update_documents!(spec)
575
574
 
576
575
  QueryCache.clear_namespace(collection.namespace)
@@ -583,32 +582,33 @@ module Mongo
583
582
  collation: opts[:collation] || opts['collation'] || collation,
584
583
  sort: opts[:sort] || opts['sort'],
585
584
  }.compact
586
- if opts[:upsert]
587
- update_doc['upsert'] = true
588
- end
585
+ update_doc['upsert'] = true if opts[:upsert]
589
586
 
590
587
  context = Operation::Context.new(
591
588
  client: client,
592
589
  session: session,
593
590
  operation_timeouts: operation_timeouts(opts)
594
591
  )
595
- write_with_retry(write_concern, context: context) do |connection, txn_num, context|
596
- gte_4_2 = connection.server.description.server_version_gte?('4.2')
597
- if !gte_4_2 && opts[:hint] && write_concern && !write_concern.acknowledged?
598
- raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
599
- end
592
+ operation = Operation::Update.new(
593
+ updates: [ update_doc ],
594
+ db_name: collection.database.name,
595
+ coll_name: collection.name,
596
+ write_concern: write_concern,
597
+ bypass_document_validation: !!opts[:bypass_document_validation],
598
+ session: session,
599
+ let: opts[:let],
600
+ comment: opts[:comment]
601
+ )
602
+ tracer.trace_operation(operation, context) do
603
+ write_with_retry(write_concern, context: context) do |connection, txn_num, context|
604
+ gte_4_2 = connection.server.description.server_version_gte?('4.2')
605
+ if !gte_4_2 && opts[:hint] && write_concern && !write_concern.acknowledged?
606
+ raise Error::UnsupportedOption.hint_error(unacknowledged_write: true)
607
+ end
600
608
 
601
- Operation::Update.new(
602
- updates: [ update_doc ],
603
- db_name: collection.database.name,
604
- coll_name: collection.name,
605
- write_concern: write_concern,
606
- bypass_document_validation: !!opts[:bypass_document_validation],
607
- session: session,
608
- txn_num: txn_num,
609
- let: opts[:let],
610
- comment: opts[:comment],
611
- ).execute_with_connection(connection, context: context)
609
+ operation.txn_num = txn_num
610
+ operation.execute_with_connection(connection, context: context)
611
+ end
612
612
  end
613
613
  end
614
614
  end
@@ -624,17 +624,12 @@ module Mongo
624
624
  # @raise [ Error::InvalidUpdateDocument ] if the first key in the
625
625
  # document does not start with a $.
626
626
  def validate_update_documents!(spec)
627
- if update = spec.is_a?(Array) ? spec&.first : spec
628
- if key = update.keys&.first
629
- unless key.to_s.start_with?("$")
630
- if Mongo.validate_update_replace
631
- raise Error::InvalidUpdateDocument.new(key: key)
632
- else
633
- Error::InvalidUpdateDocument.warn(Logger.logger, key)
634
- end
635
- end
636
- end
637
- end
627
+ return unless update = spec.is_a?(Array) ? spec&.first : spec
628
+ return unless key = update.keys&.first
629
+ return if key.to_s.start_with?('$')
630
+ raise Error::InvalidUpdateDocument.new(key: key) if Mongo.validate_update_replace
631
+
632
+ Error::InvalidUpdateDocument.warn(Logger.logger, key)
638
633
  end
639
634
 
640
635
  # Check the replacement documents to make sure they don't have atomic
@@ -646,17 +641,12 @@ module Mongo
646
641
  # @raise [ Error::InvalidUpdateDocument ] if the first key in the
647
642
  # document does not start with a $.
648
643
  def validate_replacement_documents!(spec)
649
- if replace = spec.is_a?(Array) ? spec&.first : spec
650
- if key = replace.keys&.first
651
- if key.to_s.start_with?("$")
652
- if Mongo.validate_update_replace
653
- raise Error::InvalidReplacementDocument.new(key: key)
654
- else
655
- Error::InvalidReplacementDocument.warn(Logger.logger, key)
656
- end
657
- end
658
- end
659
- end
644
+ return unless replace = spec.is_a?(Array) ? spec&.first : spec
645
+ return unless key = replace.keys&.first
646
+ return unless key.to_s.start_with?('$')
647
+ raise Error::InvalidReplacementDocument.new(key: key) if Mongo.validate_update_replace
648
+
649
+ Error::InvalidReplacementDocument.warn(Logger.logger, key)
660
650
  end
661
651
  end
662
652
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
3
  # Copyright (C) 2014-2020 MongoDB Inc.
5
4
  #
@@ -27,7 +26,6 @@ require 'mongo/collection/view/writable'
27
26
 
28
27
  module Mongo
29
28
  class Collection
30
-
31
29
  # Representation of a query and options producing a result set of documents.
32
30
  #
33
31
  # A +View+ can be modified using helpers. Helpers can be chained,
@@ -72,7 +70,9 @@ module Mongo
72
70
  # Delegate to the cluster for the next primary.
73
71
  def_delegators :cluster, :next_primary
74
72
 
75
- alias :selector :filter
73
+ def_delegators :client, :tracer
74
+
75
+ alias selector filter
76
76
 
77
77
  # @return [ Integer | nil | The timeout_ms value that was passed as an
78
78
  # option to the view.
@@ -91,11 +91,12 @@ module Mongo
91
91
  # @since 2.0.0
92
92
  def ==(other)
93
93
  return false unless other.is_a?(View)
94
+
94
95
  collection == other.collection &&
95
- filter == other.filter &&
96
- options == other.options
96
+ filter == other.filter &&
97
+ options == other.options
97
98
  end
98
- alias_method :eql?, :==
99
+ alias eql? ==
99
100
 
100
101
  # A hash value for the +View+ composed of the collection namespace,
101
102
  # hash of the options and hash of the filter.
@@ -206,7 +207,7 @@ module Mongo
206
207
  # @since 2.0.0
207
208
  def inspect
208
209
  "#<Mongo::Collection::View:0x#{object_id} namespace='#{collection.namespace}'" +
209
- " @filter=#{filter.to_s} @options=#{options.to_s}>"
210
+ " @filter=#{filter} @options=#{options}>"
210
211
  end
211
212
 
212
213
  # Get the write concern on this +View+.
@@ -248,7 +249,9 @@ module Mongo
248
249
  View.new(collection, filter, options)
249
250
  end
250
251
 
251
- def view; self; end
252
+ def view
253
+ self
254
+ end
252
255
 
253
256
  def with_session(opts = {}, &block)
254
257
  client.with_session(@options.merge(opts), &block)