class Cequel::Metal::Policy::CassandraError::ClearAndRetryPolicy
Attributes
clear_before_retry[R]
@return Boolean if this policy clears connections before retry
max_retries[R]
@return Integer maximum number of retries to reconnect to Cassandra
retry_delay[R]
@return Float delay between retries to reconnect to Cassandra
Public Class Methods
new(options = {})
click to toggle source
# File lib/cequel/metal/policy/cassandra_error.rb, line 33 def initialize(options = {}) @max_retries = options.fetch(:max_retries, 3) @retry_delay = options.fetch(:retry_delay, 0.5) @clear_before_retry = !!options.fetch(:clear_before_retry, true) if @retry_delay <= 0.0 raise ArgumentError, "The value for retry must be a positive number, not '#{@retry_delay}'" end end
Public Instance Methods
execute_stmt(keyspace) { || ... }
click to toggle source
# File lib/cequel/metal/policy/cassandra_error.rb, line 43 def execute_stmt(keyspace) retries_remaining = max_retries begin yield rescue Cassandra::Errors::NoHostsAvailable, Cassandra::Errors::ExecutionError, Cassandra::Errors::TimeoutError => error raise error if retries_remaining == 0 sleep(retry_delay) keyspace.clear_active_connections! if clear_before_retry retries_remaining -= 1 retry end end