You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2009/07/02 19:08:50 UTC

svn commit: r790684 - /tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java

Author: fhanik
Date: Thu Jul  2 17:08:50 2009
New Revision: 790684

URL: http://svn.apache.org/viewvc?rev=790684&view=rev
Log:
Add some doco, make shared variables volatile

Modified:
    tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java

Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=790684&r1=790683&r2=790684&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java (original)
+++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java Thu Jul  2 17:08:50 2009
@@ -48,17 +48,28 @@
  */
 
 public class ConnectionPool {
+    /**
+     * Prefix type for JMX registration
+     */
     public static final String POOL_JMX_TYPE_PREFIX = "tomcat.jdbc:type=";
     
-    //logger
+    /**
+     * Logger
+     */
     protected static Log log = LogFactory.getLog(ConnectionPool.class);
 
     //===============================================================================
     //         INSTANCE/QUICK ACCESS VARIABLE
     //===============================================================================
+    /**
+     * Carries the size of the pool, instead of relying on a queue implementation
+     * that usually iterates over to get an exact count
+     */
     private AtomicInteger size = new AtomicInteger(0);
+
     /**
      * All the information about the connection pool
+     * These are the properties the pool got instantiated with
      */
     private PoolProperties poolProperties;
 
@@ -76,12 +87,12 @@
     /**
      * The thread that is responsible for checking abandoned and idle threads
      */
-    private PoolCleaner poolCleaner;
+    private volatile PoolCleaner poolCleaner;
 
     /**
      * Pool closed flag
      */
-    private boolean closed = false;
+    private volatile boolean closed = false;
 
     /**
      * Since newProxyInstance performs the same operation, over and over
@@ -95,7 +106,7 @@
     private ThreadPoolExecutor cancellator = new ThreadPoolExecutor(0,1,1000,TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
     
     /**
-     * reference to mbean
+     * reference to the JMX mbean
      */
     protected org.apache.tomcat.jdbc.pool.jmx.ConnectionPool jmxPool = null;
     
@@ -119,6 +130,14 @@
     }
 
 
+    /**
+     * Retrieves a Connection future. If a connection is not available, one can block using future.get()
+     * until a connection has become available.
+     * If a connection is not retrieved, the Future must be cancelled in order for the connection to be returned
+     * to the pool.
+     * @return
+     * @throws SQLException
+     */
     public Future<Connection> getConnectionAsync() throws SQLException {
         if (idle instanceof FairBlockingQueue) {
             Future<PooledConnection> pcf = ((FairBlockingQueue<PooledConnection>)idle).pollAsync();
@@ -130,7 +149,7 @@
     
     /**
      * Borrows a connection from the pool
-     * @return Connection - a java.sql.Connection reflection proxy, wrapping the underlying object.
+     * @return Connection - a java.sql.Connection/javax.sql.PooledConnection reflection proxy, wrapping the underlying object.
      * @throws SQLException
      */
     public Connection getConnection() throws SQLException {
@@ -180,6 +199,10 @@
         return busy.size();
     }
 
+    /**
+     * Returns the number of idle connections
+     * @return
+     */
     public int getIdle() {
         return idle.size();
     }
@@ -197,7 +220,11 @@
     //===============================================================================
     
     
+    /**
+     * configures a pooled connection as a proxy
+     */
     protected Connection setupConnection(PooledConnection con) throws SQLException {
+        //fetch previous interceptor proxy
         JdbcInterceptor handler = con.getHandler();
         if (handler==null) {
             //build the proxy handler
@@ -252,6 +279,10 @@
         return proxyClassConstructor;
     }
 
+    /**
+     * If the connection pool gets garbage collected, lets make sure we clean up
+     * and close all the connections
+     */
     @Override
     protected void finalize() throws Throwable {
         close(true);



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r790684 - /tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java

Posted by Filip Hanik - Dev Lists <de...@hanik.com>.
On 07/02/2009 05:10 PM, sebb wrote:
> On 02/07/2009, fhanik@apache.org<fh...@apache.org>  wrote:
>    
>> Author: fhanik
>>   Date: Thu Jul  2 17:08:50 2009
>>   New Revision: 790684
>>
>>   URL: http://svn.apache.org/viewvc?rev=790684&view=rev
>>   Log:
>>   Add some doco, make shared variables volatile
>>
>>   Modified:
>>      tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
>>
>>   Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
>>   URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=790684&r1=790683&r2=790684&view=diff
>>   ==============================================================================
>>   --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java (original)
>>   +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java Thu Jul  2 17:08:50 2009
>>   @@ -48,17 +48,28 @@
>>    */
>>
>>    public class ConnectionPool {
>>   +    /**
>>   +     * Prefix type for JMX registration
>>   +     */
>>       public static final String POOL_JMX_TYPE_PREFIX = "tomcat.jdbc:type=";
>>
>>   -    //logger
>>   +    /**
>>   +     * Logger
>>   +     */
>>       protected static Log log = LogFactory.getLog(ConnectionPool.class);
>>
>>       //===============================================================================
>>       //         INSTANCE/QUICK ACCESS VARIABLE
>>       //===============================================================================
>>   +    /**
>>   +     * Carries the size of the pool, instead of relying on a queue implementation
>>   +     * that usually iterates over to get an exact count
>>   +     */
>>       private AtomicInteger size = new AtomicInteger(0);
>>   +
>>       /**
>>        * All the information about the connection pool
>>   +     * These are the properties the pool got instantiated with
>>        */
>>       private PoolProperties poolProperties;
>>
>>   @@ -76,12 +87,12 @@
>>       /**
>>        * The thread that is responsible for checking abandoned and idle threads
>>        */
>>   -    private PoolCleaner poolCleaner;
>>   +    private volatile PoolCleaner poolCleaner;
>>
>>       /**
>>        * Pool closed flag
>>        */
>>   -    private boolean closed = false;
>>   +    private volatile boolean closed = false;
>>
>>       /**
>>        * Since newProxyInstance performs the same operation, over and over
>>   @@ -95,7 +106,7 @@
>>       private ThreadPoolExecutor cancellator = new ThreadPoolExecutor(0,1,1000,TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
>>
>>       /**
>>   -     * reference to mbean
>>   +     * reference to the JMX mbean
>>        */
>>       protected org.apache.tomcat.jdbc.pool.jmx.ConnectionPool jmxPool = null;
>>
>>   @@ -119,6 +130,14 @@
>>       }
>>
>>
>>   +    /**
>>   +     * Retrieves a Connection future. If a connection is not available, one can block using future.get()
>>   +     * until a connection has become available.
>>   +     * If a connection is not retrieved, the Future must be cancelled in order for the connection to be returned
>>   +     * to the pool.
>>   +     * @return
>>      
>
> What does it return?
>    
it returns a chocolate chip cookie for patch submissions
>    
>>   +     * @throws SQLException
>>   +     */
>>       public Future<Connection>  getConnectionAsync() throws SQLException {
>>           if (idle instanceof FairBlockingQueue) {
>>               Future<PooledConnection>  pcf = ((FairBlockingQueue<PooledConnection>)idle).pollAsync();
>>   @@ -130,7 +149,7 @@
>>
>>       /**
>>        * Borrows a connection from the pool
>>   -     * @return Connection - a java.sql.Connection reflection proxy, wrapping the underlying object.
>>   +     * @return Connection - a java.sql.Connection/javax.sql.PooledConnection reflection proxy, wrapping the underlying object.
>>        * @throws SQLException
>>        */
>>       public Connection getConnection() throws SQLException {
>>   @@ -180,6 +199,10 @@
>>           return busy.size();
>>       }
>>
>>   +    /**
>>   +     * Returns the number of idle connections
>>   +     * @return
>>      
>
> Ditto
>
>    
>>   +     */
>>       public int getIdle() {
>>           return idle.size();
>>       }
>>   @@ -197,7 +220,11 @@
>>       //===============================================================================
>>
>>
>>   +    /**
>>   +     * configures a pooled connection as a proxy
>>   +     */
>>       protected Connection setupConnection(PooledConnection con) throws SQLException {
>>   +        //fetch previous interceptor proxy
>>           JdbcInterceptor handler = con.getHandler();
>>           if (handler==null) {
>>               //build the proxy handler
>>   @@ -252,6 +279,10 @@
>>           return proxyClassConstructor;
>>       }
>>
>>   +    /**
>>   +     * If the connection pool gets garbage collected, lets make sure we clean up
>>   +     * and close all the connections
>>   +     */
>>       @Override
>>       protected void finalize() throws Throwable {
>>           close(true);
>>
>>
>>
>>   ---------------------------------------------------------------------
>>   To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
>>   For additional commands, e-mail: dev-help@tomcat.apache.org
>>
>>
>>      
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
>    


Re: svn commit: r790684 - /tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java

Posted by sebb <se...@gmail.com>.
On 02/07/2009, fhanik@apache.org <fh...@apache.org> wrote:
> Author: fhanik
>  Date: Thu Jul  2 17:08:50 2009
>  New Revision: 790684
>
>  URL: http://svn.apache.org/viewvc?rev=790684&view=rev
>  Log:
>  Add some doco, make shared variables volatile
>
>  Modified:
>     tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
>
>  Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
>  URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=790684&r1=790683&r2=790684&view=diff
>  ==============================================================================
>  --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java (original)
>  +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java Thu Jul  2 17:08:50 2009
>  @@ -48,17 +48,28 @@
>   */
>
>   public class ConnectionPool {
>  +    /**
>  +     * Prefix type for JMX registration
>  +     */
>      public static final String POOL_JMX_TYPE_PREFIX = "tomcat.jdbc:type=";
>
>  -    //logger
>  +    /**
>  +     * Logger
>  +     */
>      protected static Log log = LogFactory.getLog(ConnectionPool.class);
>
>      //===============================================================================
>      //         INSTANCE/QUICK ACCESS VARIABLE
>      //===============================================================================
>  +    /**
>  +     * Carries the size of the pool, instead of relying on a queue implementation
>  +     * that usually iterates over to get an exact count
>  +     */
>      private AtomicInteger size = new AtomicInteger(0);
>  +
>      /**
>       * All the information about the connection pool
>  +     * These are the properties the pool got instantiated with
>       */
>      private PoolProperties poolProperties;
>
>  @@ -76,12 +87,12 @@
>      /**
>       * The thread that is responsible for checking abandoned and idle threads
>       */
>  -    private PoolCleaner poolCleaner;
>  +    private volatile PoolCleaner poolCleaner;
>
>      /**
>       * Pool closed flag
>       */
>  -    private boolean closed = false;
>  +    private volatile boolean closed = false;
>
>      /**
>       * Since newProxyInstance performs the same operation, over and over
>  @@ -95,7 +106,7 @@
>      private ThreadPoolExecutor cancellator = new ThreadPoolExecutor(0,1,1000,TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
>
>      /**
>  -     * reference to mbean
>  +     * reference to the JMX mbean
>       */
>      protected org.apache.tomcat.jdbc.pool.jmx.ConnectionPool jmxPool = null;
>
>  @@ -119,6 +130,14 @@
>      }
>
>
>  +    /**
>  +     * Retrieves a Connection future. If a connection is not available, one can block using future.get()
>  +     * until a connection has become available.
>  +     * If a connection is not retrieved, the Future must be cancelled in order for the connection to be returned
>  +     * to the pool.
>  +     * @return

What does it return?

>  +     * @throws SQLException
>  +     */
>      public Future<Connection> getConnectionAsync() throws SQLException {
>          if (idle instanceof FairBlockingQueue) {
>              Future<PooledConnection> pcf = ((FairBlockingQueue<PooledConnection>)idle).pollAsync();
>  @@ -130,7 +149,7 @@
>
>      /**
>       * Borrows a connection from the pool
>  -     * @return Connection - a java.sql.Connection reflection proxy, wrapping the underlying object.
>  +     * @return Connection - a java.sql.Connection/javax.sql.PooledConnection reflection proxy, wrapping the underlying object.
>       * @throws SQLException
>       */
>      public Connection getConnection() throws SQLException {
>  @@ -180,6 +199,10 @@
>          return busy.size();
>      }
>
>  +    /**
>  +     * Returns the number of idle connections
>  +     * @return

Ditto

>  +     */
>      public int getIdle() {
>          return idle.size();
>      }
>  @@ -197,7 +220,11 @@
>      //===============================================================================
>
>
>  +    /**
>  +     * configures a pooled connection as a proxy
>  +     */
>      protected Connection setupConnection(PooledConnection con) throws SQLException {
>  +        //fetch previous interceptor proxy
>          JdbcInterceptor handler = con.getHandler();
>          if (handler==null) {
>              //build the proxy handler
>  @@ -252,6 +279,10 @@
>          return proxyClassConstructor;
>      }
>
>  +    /**
>  +     * If the connection pool gets garbage collected, lets make sure we clean up
>  +     * and close all the connections
>  +     */
>      @Override
>      protected void finalize() throws Throwable {
>          close(true);
>
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
>  For additional commands, e-mail: dev-help@tomcat.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org