net.dataforte.cassandra.pool
Class PooledConnection

java.lang.Object
  extended by net.dataforte.cassandra.pool.PooledConnection

public class PooledConnection
extends Object

Represents a pooled connection and holds a reference to the Cassandra.Client and TTransport object Derived from org.apache.tomcat.jdbc.pool.PooledConnection by fhanik

Version:
1.0

Field Summary
protected static AtomicInteger counter
          Instance counter
protected  ConnectionPool parent
          The parent
protected  PoolConfiguration poolProperties
          The properties for the connection pool
static int VALIDATE_BORROW
          Validate when connection is borrowed flag
static int VALIDATE_IDLE
          Validate when connection is idle flag
static int VALIDATE_INIT
          Validate when connection is initialized flag
static int VALIDATE_RETURN
          Validate when connection is returned flag
 
Constructor Summary
PooledConnection(PoolConfiguration prop, ConnectionPool parent)
          Constructor
 
Method Summary
 void connect()
           
 long getAbandonTimeout()
          Returns abandon timeout in milliseconds
 HashMap<Object,Object> getAttributes()
           
 org.apache.cassandra.thrift.Cassandra.Client getConnection()
          Returns the underlying connection
 long getLastConnected()
          Returns the timestamp of when the connection was last connected to the database
 long getLastValidated()
          Returns the timestamp of the last successful validation query execution.
 PoolConfiguration getPoolProperties()
          Returns the configuration for this connection and pool
 long getReleaseTime()
          The time limit for how long the object can remain unused before it is released
 String getStackTrace()
          Returns the stack trace from when this connection was borrowed.
 long getTimestamp()
          Return the timestamps of last pool action.
 org.apache.thrift.transport.TTransport getTransport()
           
 boolean isDiscarded()
          Returns the discarded flag.
 boolean isInitialized()
           
 boolean isReleased()
          Returns true if this connection has been released and wont be reused.
 boolean isSuspect()
           
 void lock()
          Locks the connection only if either PoolConfiguration.isPoolSweeperEnabled() or PoolConfiguration.getUseLock() return true.
 void reconnect()
          Issues a call to disconnect(boolean) with the argument false followed by a call to connect()
 boolean release()
          This method is called if (Now - timeCheckedIn > getReleaseTime()) This method disconnects the connection, logs an error in debug mode if it happens then sets the released flag to false.
 void setDiscarded(boolean discarded)
          An interceptor can call this method with the value true, and the connection will be closed when it is returned to the pool.
 void setLastValidated(long lastValidated)
          Set the timestamp the connection was last validated.
 void setPoolProperties(PoolConfiguration poolProperties)
          Sets the pool configuration for this connection and connection pool.
 void setStackTrace(String trace)
          The pool will set the stack trace when it is check out and checked in
 void setSuspect(boolean suspect)
           
 void setTimestamp(long timestamp)
          Sets a timestamp on this connection.
 String toString()
           
 void unlock()
          Unlocks the connection only if the sweeper is enabled Otherwise this is a noop for performance
 boolean validate(int validateAction)
          Returns true if the object is still valid. if not the pool will call the getExpiredAction() and follow up with one of the four expired methods
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

counter

protected static AtomicInteger counter
Instance counter


VALIDATE_BORROW

public static final int VALIDATE_BORROW
Validate when connection is borrowed flag

See Also:
Constant Field Values

VALIDATE_RETURN

public static final int VALIDATE_RETURN
Validate when connection is returned flag

See Also:
Constant Field Values

VALIDATE_IDLE

public static final int VALIDATE_IDLE
Validate when connection is idle flag

See Also:
Constant Field Values

VALIDATE_INIT

public static final int VALIDATE_INIT
Validate when connection is initialized flag

See Also:
Constant Field Values

poolProperties

protected PoolConfiguration poolProperties
The properties for the connection pool


parent

protected ConnectionPool parent
The parent

Constructor Detail

PooledConnection

public PooledConnection(PoolConfiguration prop,
                        ConnectionPool parent)
Constructor

Parameters:
prop - - pool properties
parent - - the parent connection pool
Method Detail

connect

public void connect()
             throws org.apache.thrift.TException
Throws:
org.apache.thrift.TException

isInitialized

public boolean isInitialized()
Returns:
true if connect() was called successfully and disconnect has not yet been called

reconnect

public void reconnect()
               throws org.apache.thrift.TException,
                      org.apache.cassandra.thrift.AuthenticationException,
                      org.apache.cassandra.thrift.AuthorizationException,
                      org.apache.cassandra.thrift.InvalidRequestException
Issues a call to disconnect(boolean) with the argument false followed by a call to connect()

Throws:
org.apache.thrift.TException - if the call to connect() fails.
org.apache.cassandra.thrift.InvalidRequestException
org.apache.cassandra.thrift.AuthorizationException
org.apache.cassandra.thrift.AuthenticationException

getAbandonTimeout

public long getAbandonTimeout()
Returns abandon timeout in milliseconds

Returns:
abandon timeout in milliseconds

validate

public boolean validate(int validateAction)
Returns true if the object is still valid. if not the pool will call the getExpiredAction() and follow up with one of the four expired methods


getReleaseTime

public long getReleaseTime()
The time limit for how long the object can remain unused before it is released

Returns:
PoolConfiguration.getMinEvictableIdleTimeMillis()

release

public boolean release()
This method is called if (Now - timeCheckedIn > getReleaseTime()) This method disconnects the connection, logs an error in debug mode if it happens then sets the released flag to false. Any attempts to connect this cached object again will fail per connect() The connection pool uses the atomic return value to decrement the pool size counter.

Returns:
true if this is the first time this method has been called. false if this method has been called before.

setStackTrace

public void setStackTrace(String trace)
The pool will set the stack trace when it is check out and checked in

Parameters:
trace - the stack trace for this connection

getStackTrace

public String getStackTrace()
Returns the stack trace from when this connection was borrowed. Can return null if no stack trace was set.

Returns:
the stack trace or null of no trace was set

setTimestamp

public void setTimestamp(long timestamp)
Sets a timestamp on this connection. A timestamp usually means that some operation performed successfully.

Parameters:
timestamp - the timestamp as defined by System.currentTimeMillis()

isSuspect

public boolean isSuspect()

setSuspect

public void setSuspect(boolean suspect)

setDiscarded

public void setDiscarded(boolean discarded)
An interceptor can call this method with the value true, and the connection will be closed when it is returned to the pool.

Parameters:
discarded - - only valid value is true
Throws:
IllegalStateException - if this method is called with the value false and the value true has already been set.

setLastValidated

public void setLastValidated(long lastValidated)
Set the timestamp the connection was last validated. This flag is used to keep track when we are using a validation-interval.

Parameters:
lastValidated - a timestamp as defined by System.currentTimeMillis()

setPoolProperties

public void setPoolProperties(PoolConfiguration poolProperties)
Sets the pool configuration for this connection and connection pool. Object is shared with the ConnectionPool

Parameters:
poolProperties -

getTimestamp

public long getTimestamp()
Return the timestamps of last pool action. Timestamps are typically set when connections are borrowed from the pool. It is used to keep track of abandon-timeouts.

Returns:
the timestamp of the last pool action as defined by System.currentTimeMillis()

isDiscarded

public boolean isDiscarded()
Returns the discarded flag.

Returns:
the discarded flag. If the value is true, either disconnect(boolean) has been called or it will be called when the connection is returned to the pool.

getLastValidated

public long getLastValidated()
Returns the timestamp of the last successful validation query execution.

Returns:
the timestamp of the last successful validation query execution as defined by System.currentTimeMillis()

getPoolProperties

public PoolConfiguration getPoolProperties()
Returns the configuration for this connection and pool

Returns:
the configuration for this connection and pool

lock

public void lock()
Locks the connection only if either PoolConfiguration.isPoolSweeperEnabled() or PoolConfiguration.getUseLock() return true. The per connection lock ensures thread safety is multiple threads are performing operations on the connection. Otherwise this is a noop for performance


unlock

public void unlock()
Unlocks the connection only if the sweeper is enabled Otherwise this is a noop for performance


getConnection

public org.apache.cassandra.thrift.Cassandra.Client getConnection()
Returns the underlying connection

Returns:
the underlying Thrift connection

getTransport

public org.apache.thrift.transport.TTransport getTransport()

getLastConnected

public long getLastConnected()
Returns the timestamp of when the connection was last connected to the database. *

Returns:
the timestamp when this connection was created as defined by System.currentTimeMillis()

toString

public String toString()
Overrides:
toString in class Object

isReleased

public boolean isReleased()
Returns true if this connection has been released and wont be reused.

Returns:
true if the method release() has been called

getAttributes

public HashMap<Object,Object> getAttributes()


Copyright © 2011. All Rights Reserved.