Modifier and Type | Field and Description |
---|---|
private java.util.concurrent.ThreadPoolExecutor |
connectionAppender |
private java.util.concurrent.BlockingQueue<java.lang.Runnable> |
connectionAppenderQueue |
private long |
connectionTime |
private GlobalStateInfo |
globalInfo |
private java.util.concurrent.LinkedBlockingDeque<MariaDbPooledConnection> |
idleConnections |
private static Logger |
logger |
private int |
maxIdleTime |
private Options |
options |
private java.util.concurrent.atomic.AtomicInteger |
pendingRequestNumber |
private static int |
POOL_STATE_CLOSING |
private static int |
POOL_STATE_OK |
private java.util.concurrent.ScheduledThreadPoolExecutor |
poolExecutor |
private java.util.concurrent.atomic.AtomicInteger |
poolState |
private java.lang.String |
poolTag |
private java.util.concurrent.ScheduledFuture |
scheduledFuture |
private long |
timeToConnectNanos |
private java.util.concurrent.atomic.AtomicInteger |
totalConnection |
private UrlParser |
urlParser |
Constructor and Description |
---|
Pool(UrlParser urlParser,
int poolIndex,
java.util.concurrent.ScheduledThreadPoolExecutor poolExecutor)
Create pool from configuration.
|
Modifier and Type | Method and Description |
---|---|
private void |
addConnection()
Create new connection.
|
private void |
addConnectionRequest()
Add new connection if needed.
|
void |
close()
Close pool and underlying connections.
|
private void |
closeAll(java.util.concurrent.ExecutorService connectionRemover,
java.util.Collection<MariaDbPooledConnection> collection) |
private MariaDbPooledConnection |
createPoolConnection(MariaDbConnection connection) |
boolean |
equals(java.lang.Object obj) |
private java.lang.String |
generatePoolTag(int poolIndex) |
long |
getActiveConnections() |
MariaDbConnection |
getConnection()
Retrieve new connection.
|
MariaDbConnection |
getConnection(java.lang.String username,
java.lang.String password)
Get new connection from pool if user and password correspond to pool.
|
long |
getConnectionRequests() |
GlobalStateInfo |
getGlobalInfo() |
private MariaDbPooledConnection |
getIdleConnection() |
private MariaDbPooledConnection |
getIdleConnection(long timeout,
java.util.concurrent.TimeUnit timeUnit)
Get an existing idle connection in pool.
|
long |
getIdleConnections() |
java.lang.String |
getPoolTag() |
long |
getTotalConnections() |
UrlParser |
getUrlParser() |
int |
hashCode() |
private void |
initializePoolGlobalState(MariaDbConnection connection) |
private void |
registerJmx() |
private void |
removeIdleTimeoutConnection()
Removing idle connection.
|
void |
resetStaticGlobal()
JMX method to remove state (will be reinitialized on next connection creation).
|
private void |
silentAbortConnection(MariaDbPooledConnection item) |
private void |
silentCloseConnection(MariaDbPooledConnection item) |
java.util.List<java.lang.Long> |
testGetConnectionIdleThreadIds()
For testing purpose only.
|
private void |
unRegisterJmx() |
private static final Logger logger
private static final int POOL_STATE_OK
private static final int POOL_STATE_CLOSING
private final java.util.concurrent.atomic.AtomicInteger poolState
private final UrlParser urlParser
private final Options options
private final java.util.concurrent.atomic.AtomicInteger pendingRequestNumber
private final java.util.concurrent.atomic.AtomicInteger totalConnection
private final java.util.concurrent.LinkedBlockingDeque<MariaDbPooledConnection> idleConnections
private final java.util.concurrent.ThreadPoolExecutor connectionAppender
private final java.util.concurrent.BlockingQueue<java.lang.Runnable> connectionAppenderQueue
private final java.lang.String poolTag
private final java.util.concurrent.ScheduledThreadPoolExecutor poolExecutor
private final java.util.concurrent.ScheduledFuture scheduledFuture
private GlobalStateInfo globalInfo
private int maxIdleTime
private long timeToConnectNanos
private long connectionTime
public Pool(UrlParser urlParser, int poolIndex, java.util.concurrent.ScheduledThreadPoolExecutor poolExecutor)
urlParser
- configuration parserpoolIndex
- pool index to permit distinction of thread namepoolExecutor
- pools common executorprivate void addConnectionRequest()
private void removeIdleTimeoutConnection()
private void addConnection() throws java.sql.SQLException
java.sql.SQLException
- if connection creation failedprivate MariaDbPooledConnection getIdleConnection() throws java.lang.InterruptedException
java.lang.InterruptedException
private MariaDbPooledConnection getIdleConnection(long timeout, java.util.concurrent.TimeUnit timeUnit) throws java.lang.InterruptedException
java.lang.InterruptedException
private void silentCloseConnection(MariaDbPooledConnection item)
private void silentAbortConnection(MariaDbPooledConnection item)
private MariaDbPooledConnection createPoolConnection(MariaDbConnection connection)
public MariaDbConnection getConnection() throws java.sql.SQLException
java.sql.SQLException
- if no connection is created when reaching timeout (connectTimeout option)public MariaDbConnection getConnection(java.lang.String username, java.lang.String password) throws java.sql.SQLException
username
- usernamepassword
- passwordjava.sql.SQLException
- if any error occur during connectionprivate java.lang.String generatePoolTag(int poolIndex)
public UrlParser getUrlParser()
public void close() throws java.lang.InterruptedException
close
in interface java.lang.AutoCloseable
java.lang.InterruptedException
- if interruptedprivate void closeAll(java.util.concurrent.ExecutorService connectionRemover, java.util.Collection<MariaDbPooledConnection> collection)
private void initializePoolGlobalState(MariaDbConnection connection) throws java.sql.SQLException
java.sql.SQLException
public java.lang.String getPoolTag()
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public GlobalStateInfo getGlobalInfo()
public long getActiveConnections()
getActiveConnections
in interface PoolMBean
public long getTotalConnections()
getTotalConnections
in interface PoolMBean
public long getIdleConnections()
getIdleConnections
in interface PoolMBean
public long getConnectionRequests()
getConnectionRequests
in interface PoolMBean
private void registerJmx() throws java.lang.Exception
java.lang.Exception
private void unRegisterJmx() throws java.lang.Exception
java.lang.Exception
public java.util.List<java.lang.Long> testGetConnectionIdleThreadIds()
public void resetStaticGlobal()
resetStaticGlobal
in interface PoolMBean