You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2012/09/18 00:32:03 UTC

[16/20] git commit: fix simulator compilation

fix simulator compilation


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/e903f838
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/e903f838
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/e903f838

Branch: refs/heads/javelin
Commit: e903f838720d1378062d2c625b56090bd054edcc
Parents: b060bb0
Author: Edison Su <su...@gmail.com>
Authored: Fri Sep 14 13:37:27 2012 -0700
Committer: Edison Su <su...@gmail.com>
Committed: Fri Sep 14 13:38:08 2012 -0700

----------------------------------------------------------------------
 utils/src/com/cloud/utils/db/Transaction.java |   53 +++++++++++++++++++-
 1 files changed, 52 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e903f838/utils/src/com/cloud/utils/db/Transaction.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/Transaction.java b/utils/src/com/cloud/utils/db/Transaction.java
index 755de8b..bcf7ae1 100755
--- a/utils/src/com/cloud/utils/db/Transaction.java
+++ b/utils/src/com/cloud/utils/db/Transaction.java
@@ -80,6 +80,7 @@ public class Transaction {
     public static final short CLOUD_DB = 0;
     public static final short USAGE_DB = 1;
     public static final short AWSAPI_DB = 2;
+    public static final short SIMULATOR_DB = 3;
     public static final short CONNECTED_DB = -1;
 
     private static AtomicLong s_id = new AtomicLong();
@@ -224,6 +225,7 @@ public class Transaction {
             return null;
         }
     }
+
     public static Connection getStandaloneAwsapiConnection() {
         try {
             Connection conn = s_awsapiDS.getConnection();
@@ -235,7 +237,21 @@ public class Transaction {
             s_logger.warn("Unexpected exception: ", e);
             return null;
         }
-}
+    }
+    
+    public static Connection getStandaloneSimulatorConnection() {
+    	try {
+    		Connection conn = s_simulatorDS.getConnection();
+    		if (s_connLogger.isTraceEnabled()) {
+                s_connLogger.trace("Retrieving a standalone connection for simulator: dbconn" + System.identityHashCode(conn));
+            }
+            return conn;
+        } catch (SQLException e) {
+            s_logger.warn("Unexpected exception: ", e);
+            return null;
+        }
+    }
+
     protected void attach(TransactionAttachment value) {
         _stack.push(new StackElement(ATTACHMENT, value));
     }
@@ -546,6 +562,14 @@ public class Transaction {
         	}
                 break;
 
+            case SIMULATOR_DB:
+                if(s_simulatorDS != null) {
+                    _conn = s_simulatorDS.getConnection();
+                } else {
+                    s_logger.warn("A static-initialized variable becomes null, process is dying?");
+                    throw new CloudRuntimeException("Database is not initialized, process is dying?");
+                }
+                break;
             default:
 
         	throw new CloudRuntimeException("No database selected for the transaction");
@@ -976,6 +1000,7 @@ public class Transaction {
     private static DataSource s_ds;
     private static DataSource s_usageDS;
     private static DataSource s_awsapiDS;
+    private static DataSource s_simulatorDS;
     static {
         try {
             final File dbPropsFile = PropertiesUtil.findConfigFile("db.properties");
@@ -1069,6 +1094,27 @@ public class Transaction {
             new StackKeyedObjectPoolFactory(), null, false, false);
             s_awsapiDS = new PoolingDataSource(awsapiPoolableConnectionFactory.getPool());
             
+            try{
+            	// configure the simulator db
+            	final int simulatorMaxActive = Integer.parseInt(dbProps.getProperty("db.simulator.maxActive"));
+            	final int simulatorMaxIdle = Integer.parseInt(dbProps.getProperty("db.simulator.maxIdle"));
+            	final long simulatorMaxWait = Long.parseLong(dbProps.getProperty("db.simulator.maxWait"));
+            	final String simulatorUsername = dbProps.getProperty("db.simulator.username");
+            	final String simulatorPassword = dbProps.getProperty("db.simulator.password");
+            	final String simulatorHost = dbProps.getProperty("db.simulator.host");
+            	final int simulatorPort = Integer.parseInt(dbProps.getProperty("db.simulator.port"));
+            	final String simulatorDbName = dbProps.getProperty("db.simulator.name");
+            	final boolean simulatorAutoReconnect = Boolean.parseBoolean(dbProps.getProperty("db.simulator.autoReconnect"));
+            	final GenericObjectPool simulatorConnectionPool = new GenericObjectPool(null, simulatorMaxActive, GenericObjectPool.DEFAULT_WHEN_EXHAUSTED_ACTION,
+            			simulatorMaxWait, simulatorMaxIdle);
+            	final ConnectionFactory simulatorConnectionFactory = new DriverManagerConnectionFactory("jdbc:mysql://"+simulatorHost + ":" + simulatorPort + "/" + simulatorDbName +
+            			"?autoReconnect="+simulatorAutoReconnect, simulatorUsername, simulatorPassword);
+            	final PoolableConnectionFactory simulatorPoolableConnectionFactory = new PoolableConnectionFactory(simulatorConnectionFactory, simulatorConnectionPool,
+            			new StackKeyedObjectPoolFactory(), null, false, false);
+            	s_simulatorDS = new PoolingDataSource(simulatorPoolableConnectionFactory.getPool());
+            } catch (Exception e){
+            	s_logger.debug("Simulator DB properties are not available. Not initializing simulator DS");
+            }
         } catch (final Exception e) {
             final GenericObjectPool connectionPool = new GenericObjectPool(null, 5);
             final ConnectionFactory connectionFactory = new DriverManagerConnectionFactory("jdbc:mysql://localhost:3306/cloud", "cloud", "cloud");
@@ -1079,6 +1125,11 @@ public class Transaction {
             final ConnectionFactory connectionFactoryUsage = new DriverManagerConnectionFactory("jdbc:mysql://localhost:3306/cloud_usage", "cloud", "cloud");
             final PoolableConnectionFactory poolableConnectionFactoryUsage = new PoolableConnectionFactory(connectionFactoryUsage, connectionPoolUsage, null, null, false, true);
             s_usageDS = new PoolingDataSource(poolableConnectionFactoryUsage.getPool());
+            
+            final GenericObjectPool connectionPoolsimulator = new GenericObjectPool(null, 5);
+            final ConnectionFactory connectionFactorysimulator = new DriverManagerConnectionFactory("jdbc:mysql://localhost:3306/cloud_simulator", "cloud", "cloud");
+            final PoolableConnectionFactory poolableConnectionFactorysimulator = new PoolableConnectionFactory(connectionFactorysimulator, connectionPoolsimulator, null, null, false, true);
+            s_simulatorDS = new PoolingDataSource(poolableConnectionFactorysimulator.getPool());
             s_logger.warn("Unable to load db configuration, using defaults with 5 connections.  Please check your configuration", e);
         }
     }