class Cassandra::Retry::Policies::Backoff
This is a version of the default retry policy (github.com/datastax/ruby-driver/blob/v2.1.5/lib/cassandra/retry/policies/default.rb) with backoff retry configuration options
Public Class Methods
new(opts)
click to toggle source
# File lib/logstash/outputs/cassandra/backoff_retry_policy.rb, line 12 def initialize(opts) @logger = opts['logger'] @backoff_type = opts['backoff_type'] @backoff_size = opts['backoff_size'] @retry_limit = opts['retry_limit'] end
Public Instance Methods
read_timeout(statement, consistency, required, received, retrieved, retries)
click to toggle source
# File lib/logstash/outputs/cassandra/backoff_retry_policy.rb, line 19 def read_timeout(statement, consistency, required, received, retrieved, retries) retry_with_backoff({ :statement => statement, :consistency => consistency, :required => required, :received => received, :retrieved => retrieved, :retries => retries }) end
retry_with_backoff(opts)
click to toggle source
# File lib/logstash/outputs/cassandra/backoff_retry_policy.rb, line 34 def retry_with_backoff(opts) if @retry_limit > -1 && opts[:retries] > @retry_limit @logger.error('backoff retries exhausted', :opts => opts) return reraise end @logger.error('activating backoff wait', :opts => opts) backoff_wait_before_next_retry(opts[:retries]) try_again(opts[:consistency]) end
write_timeout(statement, consistency, type, required, received, retries)
click to toggle source
# File lib/logstash/outputs/cassandra/backoff_retry_policy.rb, line 24 def write_timeout(statement, consistency, type, required, received, retries) retry_with_backoff({ :statement => statement, :consistency => consistency, :type => type, :required => required, :received => received, :retries => retries }) end
Private Instance Methods
backoff_wait_before_next_retry(retries)
click to toggle source
# File lib/logstash/outputs/cassandra/backoff_retry_policy.rb, line 47 def backoff_wait_before_next_retry(retries) backoff_wait_time = calculate_backoff_wait_time(retries) Kernel::sleep(backoff_wait_time) end
calculate_backoff_wait_time(retries)
click to toggle source
# File lib/logstash/outputs/cassandra/backoff_retry_policy.rb, line 52 def calculate_backoff_wait_time(retries) case @backoff_type when '**' return @backoff_size ** retries when '*' return @backoff_size * retries else raise ArgumentError, "unknown backoff type #{@backoff_type}" end end