Class: Mongo::Server::Description::Features
- Inherits:
-
Object
- Object
- Mongo::Server::Description::Features
- Defined in:
- build/ruby-driver-v2.19/lib/mongo/server/description/features.rb
Overview
Defines behavior around what features a specific server supports.
Constant Summary collapse
- MAPPINGS =
List of features and the wire protocol version they appear in.
Wire protocol versions map to server releases as follows:
-
2 => 2.6
-
3 => 3.0
-
4 => 3.2
-
5 => 3.4
-
6 => 3.6
-
7 => 4.0
-
8 => 4.2
-
9 => 4.4
-
13 => 5.0
-
14 => 5.1
-
17 => 6.0
-
{ merge_out_on_secondary: 13, get_more_comment: 9, retryable_write_error_label: 9, commit_quorum: 9, # Server versions older than 4.2 do not reliably validate options # provided by the client during findAndModify operations, requiring the # driver to raise client-side errors when those options are provided. find_and_modify_option_validation: 8, transactions: 7, scram_sha_256: 7, array_filters: 6, op_msg: 6, sessions: 6, collation: 5, max_staleness: 5, # Server versions older than 3.4 do not reliably validate options # provided by the client during update/delete operations, requiring the # driver to raise client-side errors when those options are provided. update_delete_option_validation: 5, find_command: 4, list_collections: 3, list_indexes: 3, scram_sha_1: 3, write_command: 2, users_info: 2, }.freeze
- SERVER_TOO_OLD =
Error message if the server is too old for this version of the driver.
"Server at (%s) reports wire version (%s), but this version of the Ruby driver " + "requires at least (%s)."
- DRIVER_TOO_OLD =
Error message if the driver is too old for the version of the server.
"Server at (%s) requires wire version (%s), but this version of the Ruby driver " + "only supports up to (%s)."
- DRIVER_WIRE_VERSIONS =
The wire protocol versions that this version of the driver supports.
(6..21).freeze
Instance Attribute Summary collapse
-
#server_wire_versions ⇒ Range
readonly
Server_wire_versions The server’s supported wire versions.
Instance Method Summary collapse
-
#check_driver_support! ⇒ Object
Check that there is an overlap between the driver supported wire version range and the server wire version range.
-
#initialize(server_wire_versions, address = nil) ⇒ Features
constructor
Initialize the features.
Constructor Details
#initialize(server_wire_versions, address = nil) ⇒ Features
Initialize the features.
117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/description/features.rb', line 117 def initialize(server_wire_versions, address = nil) if server_wire_versions.min.nil? raise ArgumentError, "server_wire_versions's min is nil" end if server_wire_versions.max.nil? raise ArgumentError, "server_wire_versions's max is nil" end @server_wire_versions = server_wire_versions @address = address if Mongo::Lint.enabled? freeze end end |
Instance Attribute Details
#server_wire_versions ⇒ Range (readonly)
Returns server_wire_versions The server’s supported wire versions.
106 107 108 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/description/features.rb', line 106 def server_wire_versions @server_wire_versions end |
Instance Method Details
#check_driver_support! ⇒ Object
Check that there is an overlap between the driver supported wire
version range and the server wire version range.
142 143 144 145 146 147 148 149 150 151 152 |
# File 'build/ruby-driver-v2.19/lib/mongo/server/description/features.rb', line 142 def check_driver_support! if DRIVER_WIRE_VERSIONS.min > @server_wire_versions.max raise Error::UnsupportedFeatures.new(SERVER_TOO_OLD % [@address, @server_wire_versions.max, DRIVER_WIRE_VERSIONS.min]) elsif DRIVER_WIRE_VERSIONS.max < @server_wire_versions.min raise Error::UnsupportedFeatures.new(DRIVER_TOO_OLD % [@address, @server_wire_versions.min, DRIVER_WIRE_VERSIONS.max]) end end |