class CassandraRecord::Database::Adapters::Cassandra

Constants

MAX_RETRIES

Attributes

keyspace[R]

Public Instance Methods

cluster() click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 30
def cluster
  cluster_connection.connect
end
configuration() { |connection_configuration| ... } click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 38
def configuration(&block)
  yield(connection_configuration) if block_given?
  connection_configuration
end
execute(cql, *args) click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 24
def execute(cql, *args)
  rescue_with_reset_and_retry do
    session.execute(cql, arguments: args)
  end
end
prepare(cql) click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 18
def prepare(cql)
  rescue_with_reset_and_retry do
    session.prepare(cql)
  end
end
session() click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 34
def session
  @session ||= cluster_connection.connect(@keyspace)
end
use(keyspace_name) click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 13
def use(keyspace_name)
  @session = nil
  @keyspace = keyspace_name
end

Private Instance Methods

cluster_connection() click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 66
def cluster_connection
  ::Cassandra.cluster(connection_configuration.symbolize_keys)
end
connection_configuration() click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 70
def connection_configuration
  @connection_configuration ||= {}
end
rescue_with_reset_and_retry() { || ... } click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 47
def rescue_with_reset_and_retry
  retry_count = 0
  begin
    yield
  rescue ::Cassandra::Error
    if (retry_count += 1) < MAX_RETRIES
      reset_session
      sleep(0.5)
      retry
    else
      raise
    end
  end
end
reset_session() click to toggle source
# File lib/cassandra_record/database/adapters/cassandra.rb, line 62
def reset_session
  @session = nil
end