Class Pool

java.lang.Object
org.mariadb.jdbc.pool.Pool
All Implemented Interfaces:
AutoCloseable, PoolMBean

public class Pool extends Object implements AutoCloseable, PoolMBean
MariaDB Pool
  • Field Details

  • Constructor Details

    • Pool

      public Pool(Configuration conf, int poolIndex, ScheduledThreadPoolExecutor poolExecutor)
      Create pool from configuration.
      Parameters:
      conf - configuration parser
      poolIndex - pool index to permit distinction of thread name
      poolExecutor - pools common executor
  • Method Details

    • addConnectionRequest

      private void addConnectionRequest()
      Add new connection if needed. Only one thread create new connection, so new connection request will wait to newly created connection or for a released connection.
    • removeIdleTimeoutConnection

      private void removeIdleTimeoutConnection()
      Removing idle connection. Close them and recreate connection to reach minimal number of connection.
    • addConnection

      private void addConnection() throws SQLException
      Create new connection.
      Throws:
      SQLException - if connection creation failed
    • getIdleConnection

      private MariaDbInnerPoolConnection getIdleConnection(long timeout, TimeUnit timeUnit) throws InterruptedException
      Get an existing idle connection in pool.
      Returns:
      an IDLE connection.
      Throws:
      InterruptedException
    • silentCloseConnection

      private void silentCloseConnection(Connection con)
    • silentAbortConnection

      private void silentAbortConnection(Connection con)
    • getPoolConnection

      public MariaDbInnerPoolConnection getPoolConnection() throws SQLException
      Retrieve new connection. If possible return idle connection, if not, stack connection query, ask for a connection creation, and loop until a connection become idle / a new connection is created.
      Returns:
      a connection object
      Throws:
      SQLException - if no connection is created when reaching timeout (connectTimeout option)
    • getPoolConnection

      public MariaDbInnerPoolConnection getPoolConnection(String username, String password) throws SQLException
      Get new connection from pool if user and password correspond to pool. If username and password are different from pool, will return a dedicated connection.
      Parameters:
      username - username
      password - password
      Returns:
      connection
      Throws:
      SQLException - if any error occur during connection
    • generatePoolTag

      private String generatePoolTag(int poolIndex)
    • getConf

      public Configuration getConf()
      Get current configuration
      Returns:
      configuration
    • close

      public void close()
      Close pool and underlying connections.
      Specified by:
      close in interface AutoCloseable
    • closeAll

      private void closeAll(Collection<MariaDbInnerPoolConnection> collection)
    • getPoolTag

      public String getPoolTag()
      return pool tag
      Returns:
      pool tag
    • getActiveConnections

      public long getActiveConnections()
      Description copied from interface: PoolMBean
      get pool active connection number
      Specified by:
      getActiveConnections in interface PoolMBean
      Returns:
      pool active connection number
    • getTotalConnections

      public long getTotalConnections()
      Description copied from interface: PoolMBean
      get pool total connection
      Specified by:
      getTotalConnections in interface PoolMBean
      Returns:
      pool total connection number
    • getIdleConnections

      public long getIdleConnections()
      Description copied from interface: PoolMBean
      get idle connection number
      Specified by:
      getIdleConnections in interface PoolMBean
      Returns:
      idle connection number
    • getConnectionRequests

      public long getConnectionRequests()
      Description copied from interface: PoolMBean
      get connection waiting request number
      Specified by:
      getConnectionRequests in interface PoolMBean
      Returns:
      request number
    • registerJmx

      private void registerJmx() throws Exception
      Throws:
      Exception
    • unRegisterJmx

      private void unRegisterJmx() throws Exception
      Throws:
      Exception
    • testGetConnectionIdleThreadIds

      public List<Long> testGetConnectionIdleThreadIds()
      For testing purpose only.
      Returns:
      current thread id's