[teiid-commits] teiid SVN: r964 - in trunk/engine/src: main/java/org/teiid/dqp/internal/pooling/connector and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Sun May 17 21:36:20 EDT 2009


Author: vhalbert at redhat.com
Date: 2009-05-17 21:36:17 -0400 (Sun, 17 May 2009)
New Revision: 964

Modified:
   trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java
   trunk/engine/src/main/java/org/teiid/dqp/internal/pooling/connector/ConnectionPool.java
   trunk/engine/src/main/java/org/teiid/dqp/internal/pooling/connector/PooledConnector.java
   trunk/engine/src/test/java/org/teiid/dqp/internal/pooling/connector/TestPooledConnector.java
Log:
Teiid-580 - adding support for monitoring connector connection pools - expose the stats out the ConnectionMgr

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java	2009-05-18 00:46:55 UTC (rev 963)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/datamgr/impl/ConnectorManager.java	2009-05-18 01:36:17 UTC (rev 964)
@@ -66,6 +66,7 @@
 import com.metamatrix.common.queue.WorkerPool;
 import com.metamatrix.common.queue.WorkerPoolFactory;
 import com.metamatrix.common.queue.WorkerPoolStats;
+import com.metamatrix.common.stats.ConnectionPoolStats;
 import com.metamatrix.common.util.PropertiesUtils;
 import com.metamatrix.core.MetaMatrixCoreException;
 import com.metamatrix.core.util.Assertion;
@@ -678,4 +679,15 @@
 			return StringUtil.valueOf(value, method.getReturnType());
 		}
 	}
+
+	public Collection<ConnectionPoolStats> getConnectionPoolStats() {
+	     if (connector.getActualConnector() instanceof  PooledConnector) {
+	    	 	PooledConnector pc = (PooledConnector) connector;
+	    	 	
+	    	 	return pc.getConnectionPoolStats();
+
+	     }
+	     return Collections.EMPTY_LIST;
+	    		 	
+	}
 }

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/pooling/connector/ConnectionPool.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/pooling/connector/ConnectionPool.java	2009-05-18 00:46:55 UTC (rev 963)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/pooling/connector/ConnectionPool.java	2009-05-18 01:36:17 UTC (rev 964)
@@ -312,8 +312,7 @@
         synchronized (this.lock) {
             this.reverseIdConnections.put(connection, id);
             this.totalConnectionCount++;
-            this.totalCreatedConnections++;
-            
+             
             if (this.totalConnectionCount > this.maxConnections) {
                 ids = new ArrayList(this.idConnections.values());
             }
@@ -355,6 +354,8 @@
         		connection = this.connectionFactory.getActualConnector().getConnection(id);
         	}
         	sourceConnection = new ConnectionWrapper(connection, this, testConnectInterval);
+            this.totalCreatedConnections++;
+
         	LogManager.logTrace(CTX_CONNECTOR, new Object[] {"Connection pool created a connection for", id}); //$NON-NLS-1$
         } catch (ConnectorException e) {
             throw new ConnectionPoolException(e);

Modified: trunk/engine/src/main/java/org/teiid/dqp/internal/pooling/connector/PooledConnector.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/dqp/internal/pooling/connector/PooledConnector.java	2009-05-18 00:46:55 UTC (rev 963)
+++ trunk/engine/src/main/java/org/teiid/dqp/internal/pooling/connector/PooledConnector.java	2009-05-18 01:36:17 UTC (rev 964)
@@ -22,6 +22,8 @@
 
 package org.teiid.dqp.internal.pooling.connector;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -40,7 +42,9 @@
 import org.teiid.connector.xa.api.XAConnector;
 import org.teiid.dqp.internal.datamgr.impl.ConnectorWrapper;
 
+import com.metamatrix.common.stats.ConnectionPoolStats;
 
+
 /**
  * Implements Pooling around a Connector or XAConnector.
  * 
@@ -85,15 +89,21 @@
 
 	private ConnectionPool pool;
 	private ConnectionPool xaPool;
+	
+	private ConnectionPoolStats poolStats=null;
+	private ConnectionPoolStats xaPoolStats=null;
+	
 	private Map<String, ConnectionWrapper> idToConnections = Collections.synchronizedMap(new HashMap<String, ConnectionWrapper>());
 	private ConnectorEnvironment environment;
 	
 	public PooledConnector(Connector actualConnector) {
 		super(actualConnector);
 		pool = new ConnectionPool(this);
+		poolStats = new ConnectionPoolStats(ConnectionPoolStats.NON_XA_POOL_TYPE);
 		
 		if (actualConnector instanceof XAConnector) {
 			xaPool = new ConnectionPool(this);
+			xaPoolStats = new ConnectionPoolStats(ConnectionPoolStats.XA_POOL_TYPE);
 		}
 	}
 
@@ -165,4 +175,29 @@
         return conn;
 	}
 
+	public Collection <ConnectionPoolStats>getConnectionPoolStats() {
+		Collection<ConnectionPoolStats> pools = new ArrayList<ConnectionPoolStats>(2);
+
+		setStats(pool, poolStats);
+		pools.add(poolStats);
+		
+		if (xaPool != null) {
+			setStats(xaPool, xaPoolStats);
+			pools.add(xaPoolStats);
+		}
+		
+		return pools;
+	}
+	
+	private void setStats(ConnectionPool connpool, ConnectionPoolStats stats) {
+
+		stats.setConnectionsWaiting(connpool.getNumberOfConnectinsWaiting());
+		stats.setConnectionsCreated(connpool.getTotalCreatedConnectionCount());
+		stats.setConnectionsDestroyed(connpool.getTotalDestroyedConnectionCount());
+		stats.setConnectionsInUse(connpool.getNumberOfConnectionsInUse());
+		stats.setTotalConnections(connpool.getTotalConnectionCount());
+		
+	
+	}
+
 }

Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/pooling/connector/TestPooledConnector.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/dqp/internal/pooling/connector/TestPooledConnector.java	2009-05-18 00:46:55 UTC (rev 963)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/pooling/connector/TestPooledConnector.java	2009-05-18 01:36:17 UTC (rev 964)
@@ -22,6 +22,7 @@
 
 package org.teiid.dqp.internal.pooling.connector;
 
+import java.util.Collection;
 import java.util.Properties;
 
 import javax.transaction.Transaction;
@@ -52,6 +53,9 @@
 		conn.close();
 		XAConnection conn1 = pc.getXAConnection(Mockito.mock(ExecutionContext.class), tc);
 		assertSame(conn, conn1);
+		
+		Collection stats = pc.getConnectionPoolStats();
+		assertEquals(2, stats.size());
 		pc.stop();
 	}
 




More information about the teiid-commits mailing list