[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