module Priam::Core::Get

Public Class Methods

get_column(client, column_family, super_column, key, options={}) click to toggle source
# File lib/priam/core/get.rb, line 3
def self.get_column(client, column_family, super_column, key, options={})
  raise_exception_flag = options[:raise_exception_flag]
  retry_max_count = options[:retry_max_count] || 5
  weight_second = options[:weight_second] || 1
  
  retry_count = 0
  begin
    if super_column
      record = client.get(column_family, super_column, key)
    else
      record = client.get(column_family, key)
    end
  rescue Exception => e
    if retry_max_count <= retry_count then
      if raise_exception_flag then
        raise e
      else
        Priam.logger.warn("(EXCEPTION)#{e.message}(#{e.class.name}): #{e.backtrace.map{|s| "  #{s}"}.join("\n")}")
        return {}
      end
    else
      retry_count += 1
      Priam.logger.warn("(EXCEPTION)#{e.message}(#{e.class.name}): #{e.backtrace.map{|s| "  #{s}"}.join("\n")}")
      Priam.logger.warn("retry(#{retry_count})")
      sleep(weight_second) if weight_second
      retry
    end
  end
  return record
end