类:Mongo::Retryable::RetryPolicy Private

继承:
对象
  • 对象
显示全部
定义于:
lib/ Mongo/retryable/retry_policy.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

使用指数退避和抖动封装客户端反压的重试策略。

为每个客户端创建一个实例,并在该客户端上的所有操作之间共享。

由于:

  • 2.1.0

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize(max_retries: Backpressure::DEFAULT_MAX_RETRIES) ⇒ RetryPolicy

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

创建新的重试策略。

参数:

  • max_retries 整数 (默认为: Back压::DEFAULT_MAX_RETRIES

    过载重试的最大次数。默认为 Back压::DEFAULT_MAX_RETRIES。

由于:

  • 2.1.0



20
21
22
# File 'lib/ Mongo/retryable/retry_policy.rb', line 20

def 初始化(max_retries: 背压::DEFAULT_MAX_RETRIES)
  @max_retries = max_retries
end

实例属性详细信息

# max_retries整数 (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 重载重试的最大次数。

返回:

  • ( Integer )

    最大过载重试次数。

由于:

  • 2.1.0



14
15
16
# File 'lib/ Mongo/retryable/retry_policy.rb', line 14

def max_retries
  @max_retries
end

实例方法详细信息

#backoff_delay(attempt, jitter:rand) ⇒ Float

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

计算给定重试尝试的退避延迟。

参数:

  • 尝试 ( Integer )

    重试次数(以 1 为索引)。

  • 抖动 浮点 (默认为:rand

    一个随机浮点数,位于 [0.0、1.0)。

返回:

  • (浮点)

    退避延迟(以秒为单位)。

由于:

  • 2.1.0



30
31
32
# File 'lib/ Mongo/retryable/retry_policy.rb', line 30

def backoff_delay(尝试, 抖动: 兰特)
  背压.backoff_delay(尝试, 抖动: 抖动)
end

# should_retry_overload?(尝试、延迟、上下文:nil) ⇒ true | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

确定是否应尝试过载重试。

参数:

  • 尝试 ( Integer )

    重试次数(以 1 为索引)。

  • 延迟 (浮点)

    退避延迟(以秒为单位)。

  • 上下文 ( Mongo::Operation::Context | nil ) (默认为: nil

    操作上下文(用于 CSOT 截止时间检查)。

返回:

  • ( true | false )

    是否应继续重试。

由于:

  • 2.1.0



42
43
44
45
46
47
# File 'lib/ Mongo/retryable/retry_policy.rb', line 42

def should_retry_overload?(尝试, 延迟, 上下文: nil)
  return false if 尝试 > @max_retries
  return false if exists_deadline?(延迟, 上下文)

  true
end