List:Commits« Previous MessageNext Message »
From:mmatthews Date:November 21 2007 11:44pm
Subject:Connector/J commit: r6686 - in trunk: . src/com/mysql/jdbc src/testsuite/regression
View as plain text  
Modified:
   trunk/
   trunk/CHANGES
   trunk/src/com/mysql/jdbc/LoadBalancingConnectionProxy.java
   trunk/src/com/mysql/jdbc/NonRegisteringDriver.java
   trunk/src/testsuite/regression/ConnectionRegressionTest.java
Log:
Merged revisions 6585-6586,6593-6597,6599-6602,6605,6607-6609,6612,6614-6617,6619-6620,6623-6627,6632,6636-6638,6641,6649,6658-6659,6663,6665-6673,6676,6681-6682,6684-6685 via svnmerge from 
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1

.......
  r6685 | mmatthews | 2007-11-21 17:31:56 -0600 (Wed, 21 Nov 2007) | 3 lines
  
  More applicable fix for the "random" load balance strategy in the face
  
        of node non-responsive, it re-tries a *different* random node, rather 
  
        than waiting for the node to recover (for BUG#31053)
.......



Property changes on: trunk
___________________________________________________________________
Name: svnmerge-integrated
   - /branches/branch_5_0:1-6636,6638-6670 /branches/branch_5_1:1-6582,6584-6678,6680-6683
   + /branches/branch_5_0:1-6636,6638-6670 /branches/branch_5_1:1-6582,6584-6678,6680-6685

Modified: trunk/CHANGES
===================================================================
--- trunk/CHANGES	2007-11-21 23:31:56 UTC (rev 6685)
+++ trunk/CHANGES	2007-11-21 23:44:34 UTC (rev 6686)
@@ -48,6 +48,10 @@
       Statement.getGeneratedKeys() - it was returning null instead of
       "GENERATED_KEY" as in 5.0.x.
       
+    - More applicable fix for the "random" load balance strategy in the face
+      of node non-responsive, it re-tries a *different* random node, rather 
+      than waiting for the node to recover (for BUG#31053)
+      
 10-09-07 - Version 5.1.5
 
     - Released instead of 5.1.4 to pickup patch for BUG#31053

Modified: trunk/src/com/mysql/jdbc/LoadBalancingConnectionProxy.java
===================================================================
--- trunk/src/com/mysql/jdbc/LoadBalancingConnectionProxy.java	2007-11-21 23:31:56 UTC (rev 6685)
+++ trunk/src/com/mysql/jdbc/LoadBalancingConnectionProxy.java	2007-11-21 23:44:34 UTC (rev 6686)
@@ -181,17 +181,18 @@
 	class RandomBalanceStrategy implements BalanceStrategy {
 
 		public Connection pickConnection() throws SQLException {
-			int random = (int) (Math.random() * hostList.size());
+			
+			SQLException ex = null;
+			
+			for (int attempts = 0; attempts < 1200 /* 5 minutes */; attempts++) {
+				int random = (int) (Math.random() * hostList.size());
 
-			if (random == hostList.size()) {
-				random--;
-			}
+				if (random == hostList.size()) {
+					random--;
+				}
 
-			String hostPortSpec = (String) hostList.get(random);
+				String hostPortSpec = (String) hostList.get(random);
 
-			SQLException ex = null;
-			
-			for (int attempts = 0; attempts < 1200 /* 5 minutes */; attempts++) {
 				Connection conn = (Connection) liveConnections.get(hostPortSpec);
 				
 				if (conn == null) {

Modified: trunk/src/com/mysql/jdbc/NonRegisteringDriver.java
===================================================================
--- trunk/src/com/mysql/jdbc/NonRegisteringDriver.java	2007-11-21 23:31:56 UTC (rev 6685)
+++ trunk/src/com/mysql/jdbc/NonRegisteringDriver.java	2007-11-21 23:44:34 UTC (rev 6686)
@@ -301,6 +301,9 @@
 			throws SQLException {
 		Properties parsedProps = parseURL(url, info);
 
+		// People tend to drop this in, it doesn't make sense
+		parsedProps.remove("roundRobinLoadBalance");
+		
 		if (parsedProps == null) {
 			return null;
 		}

Modified: trunk/src/testsuite/regression/ConnectionRegressionTest.java
===================================================================
--- trunk/src/testsuite/regression/ConnectionRegressionTest.java	2007-11-21 23:31:56 UTC (rev 6685)
+++ trunk/src/testsuite/regression/ConnectionRegressionTest.java	2007-11-21 23:44:34 UTC (rev 6686)
@@ -2174,7 +2174,7 @@
     	lbConn.close();
     }
 
-	private Connection getLoadBalancedConnection() throws SQLException {
+	private Connection getLoadBalancedConnection(String secondHost, Properties props) throws SQLException {
 		int indexOfHostStart = dbUrl.indexOf("://") + 3;
     	int indexOfHostEnd = dbUrl.indexOf("/", indexOfHostStart);
     	
@@ -2186,10 +2186,24 @@
     	
     	String dbAndConfigs = dbUrl.substring(indexOfHostEnd);
     	
-    	Connection lbConn = DriverManager.getConnection("jdbc:mysql:loadbalance://" + backHalf + "," + backHalf + dbAndConfigs);
-		return lbConn;
+    	if (secondHost != null) {
+    		secondHost = secondHost + ",";
+    	}
+    	
+    	Connection lbConn = DriverManager.getConnection("jdbc:mysql:loadbalance://" + backHalf + "," + secondHost + backHalf + dbAndConfigs, props);
+		
+    	return lbConn;
 	}
 	
+	private Connection getLoadBalancedConnection() throws SQLException {
+		return getLoadBalancedConnection("", null);
+	}
+	
+	private Connection getLoadBalancedConnection(Properties props) throws SQLException {
+		return getLoadBalancedConnection("", props);
+	}
+	
+	
 	/**
 	 * Test of a new feature to fix BUG 22643, specifying a
 	 * "validation query" in your connection pool that starts
@@ -2256,4 +2270,18 @@
 			closeMemberJDBCResources();
 		}
 	}
+	
+	public void testBug31053() throws Exception {
+		Properties props = new Properties();
+		props.setProperty("connectTimeout", "2000");
+		props.setProperty("loadBalanceStrategy", "random");
+		
+		Connection lbConn = getLoadBalancedConnection("localhost:23", props);
+		
+		lbConn.setAutoCommit(false);
+		
+		for (int i = 0; i < 10; i++) {
+			lbConn.commit();
+		}
+	}
 }

Thread
Connector/J commit: r6686 - in trunk: . src/com/mysql/jdbc src/testsuite/regressionmmatthews22 Nov