class EbisuConnection::ConnectionManager

Public Class Methods

new(spec_name = nil) click to toggle source
Calls superclass method
# File lib/ebisu_connection/connection_manager.rb, line 8
def initialize(spec_name = nil)
  super

  @replicas = replica_conf.map do |conf|
    Replica.new(conf, spec_name)
  end
end

Public Instance Methods

clear_all_connections!() click to toggle source
# File lib/ebisu_connection/connection_manager.rb, line 25
def clear_all_connections!
  @replicas.each(&:disconnect!)
end
put_aside!() click to toggle source
# File lib/ebisu_connection/connection_manager.rb, line 21
def put_aside!
  @replicas.each(&:put_aside!)
end
recovery?() click to toggle source
# File lib/ebisu_connection/connection_manager.rb, line 29
def recovery?
  dead_replicas = @replicas.select do |replica|
    c = replica.connection rescue nil
    !c || !c.active?
  end

  return false if dead_replicas.empty?

  dead_replicas.each do |replica|
    replica.disconnect!
    @replicas.delete(replica)
  end

  raise AllReplicaHasGoneError if @replicas.empty?

  @load_balancer = nil
  true
end
replica_connection() click to toggle source
# File lib/ebisu_connection/connection_manager.rb, line 16
def replica_connection
  raise AllReplicaHasGoneError if @replicas.empty?
  load_balancer.replica.connection
end

Private Instance Methods

load_balancer() click to toggle source
# File lib/ebisu_connection/connection_manager.rb, line 50
def load_balancer
  @load_balancer ||= LoadBalancer.new(@replicas)
end
replica_conf() click to toggle source
# File lib/ebisu_connection/connection_manager.rb, line 54
def replica_conf
  @replica_conf ||= Config.new(spec_name)
end