class Cassandra::Retry::Policies::DowngradingConsistency
Public Instance Methods
read_timeout(statement, consistency, required, received, retrieved, retries)
click to toggle source
# File lib/cassandra/retry/policies/downgrading_consistency.rb 25 def read_timeout(statement, consistency, required, received, retrieved, retries) 26 return reraise if retries > 0 || SERIAL_CONSISTENCIES.include?(consistency) 27 return max_likely_to_work(consistency, required, received) if received < required 28 29 retrieved ? reraise : try_again(consistency) 30 end
write_timeout(statement, consistency, type, required, received, retries)
click to toggle source
# File lib/cassandra/retry/policies/downgrading_consistency.rb 32 def write_timeout(statement, consistency, type, required, received, retries) 33 return reraise if retries > 0 34 35 case type 36 when :simple, :batch 37 ignore 38 when :unlogged_batch 39 max_likely_to_work(consistency, required, received) 40 when :batch_log 41 try_again(consistency) 42 else 43 reraise 44 end 45 end
Private Instance Methods
max_likely_to_work(consistency, required, received)
click to toggle source
# File lib/cassandra/retry/policies/downgrading_consistency.rb 55 def max_likely_to_work(consistency, required, received) 56 if consistency == :all && 57 required > 1 && 58 received >= (required.to_f / 2).floor + 1 59 try_again(:quorum) 60 elsif received >= 3 61 try_again(:three) 62 elsif received >= 2 63 try_again(:two) 64 elsif received >= 1 65 try_again(:one) 66 else 67 reraise 68 end 69 end