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
unavailable(statement, consistency, required, alive, retries) click to toggle source
   # File lib/cassandra/retry/policies/downgrading_consistency.rb
47 def unavailable(statement, consistency, required, alive, retries)
48   return reraise if retries > 0
49 
50   max_likely_to_work(consistency, required, alive)
51 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