Skip to content

Commit 3c5948f

Browse files
RUBY-3628 Deprecate hedged reads option
Hedged reads are deprecated in MongoDB Server 8.0 and will be removed in a future version. Per the server-selection spec, drivers without static deprecation annotations must emit a runtime warning when the hedge parameter is specified. - Mark the :hedge option, the hedge attr_reader, hedge_allowed? methods, and the NO_HEDGE_SUPPORT error message as @deprecated in YARD docs. - Emit a one-time Mongo::Deprecations warning when a server selector is constructed with a non-nil :hedge option.
1 parent 55a7526 commit 3c5948f

7 files changed

Lines changed: 31 additions & 0 deletions

File tree

lib/mongo/error/invalid_server_preference.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ class InvalidServerPreference < Error
3333
# Error message when hedge is specified for a read preference that does not support it.
3434
#
3535
# @api private
36+
#
37+
# @deprecated Hedged reads are deprecated in MongoDB Server 8.0 and will
38+
# be removed in a future version.
3639
NO_HEDGE_SUPPORT = 'The hedge option cannot be set for this read preference'
3740

3841
# Error message for when the max staleness is not at least twice the heartbeat frequency.

lib/mongo/server_selector/base.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ class Base
3737
# reads on the server. Hedged reads are not enabled by default. When
3838
# specifying this option, it must be in the format: { enabled: true },
3939
# where the value of the :enabled key is a boolean value.
40+
# @deprecated Hedged reads are deprecated in MongoDB Server 8.0 and will
41+
# be removed in a future version.
4042
#
4143
# @raise [ Error::InvalidServerPreference ] If tag sets are specified
4244
# but not allowed.
@@ -51,6 +53,14 @@ def initialize(options = nil)
5153
@hedge = options[:hedge]
5254

5355
validate!
56+
57+
return if @hedge.nil?
58+
59+
Mongo::Deprecations.warn(
60+
:hedge_read_preference,
61+
'The hedge read preference option is deprecated. Hedged reads are ' \
62+
'deprecated in MongoDB Server 8.0 and will be removed in a future version.'
63+
)
5464
end
5565

5666
# @return [ Hash ] options The options.
@@ -67,6 +77,9 @@ def initialize(options = nil)
6777

6878
# @return [ Hash | nil ] hedge The document specifying whether to enable
6979
# hedged reads.
80+
#
81+
# @deprecated Hedged reads are deprecated in MongoDB Server 8.0 and will
82+
# be removed in a future version.
7083
attr_reader :hedge
7184

7285
# Get the timeout for server selection.

lib/mongo/server_selector/nearest.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ def tags_allowed?
5959
# Whether the hedge option is allowed to be defined for this server preference.
6060
#
6161
# @return [ true ] true
62+
#
63+
# @deprecated Hedged reads are deprecated in MongoDB Server 8.0 and will
64+
# be removed in a future version.
6265
def hedge_allowed?
6366
true
6467
end

lib/mongo/server_selector/primary.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ def tags_allowed?
5959
# Whether the hedge option is allowed to be defined for this server preference.
6060
#
6161
# @return [ false ] false
62+
#
63+
# @deprecated Hedged reads are deprecated in MongoDB Server 8.0 and will
64+
# be removed in a future version.
6265
def hedge_allowed?
6366
false
6467
end

lib/mongo/server_selector/primary_preferred.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ def tags_allowed?
5959
# Whether the hedge option is allowed to be defined for this server preference.
6060
#
6161
# @return [ true ] true
62+
#
63+
# @deprecated Hedged reads are deprecated in MongoDB Server 8.0 and will
64+
# be removed in a future version.
6265
def hedge_allowed?
6366
true
6467
end

lib/mongo/server_selector/secondary.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ def tags_allowed?
5959
# Whether the hedge option is allowed to be defined for this server preference.
6060
#
6161
# @return [ true ] true
62+
#
63+
# @deprecated Hedged reads are deprecated in MongoDB Server 8.0 and will
64+
# be removed in a future version.
6265
def hedge_allowed?
6366
true
6467
end

lib/mongo/server_selector/secondary_preferred.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ def tags_allowed?
5959
# Whether the hedge option is allowed to be defined for this server preference.
6060
#
6161
# @return [ true ] true
62+
#
63+
# @deprecated Hedged reads are deprecated in MongoDB Server 8.0 and will
64+
# be removed in a future version.
6265
def hedge_allowed?
6366
true
6467
end

0 commit comments

Comments
 (0)