Class: Mongo::Server::Description::Features
- Inherits:
-
Object
- Object
- Mongo::Server::Description::Features
- Defined in:
- 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
-
{ :retryable_write_error_label => 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.
(2..9).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.
108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/mongo/server/description/features.rb', line 108 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.
97 98 99 |
# File 'lib/mongo/server/description/features.rb', line 97 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.
133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/mongo/server/description/features.rb', line 133 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 |