List:Commits« Previous MessageNext Message »
From:eherman Date:June 21 2007 11:33am
Subject:Connector/MXJ commit: r99 - in trunk/connector-mxj: . commercial resources src src/com/mysql/management/driverlaunched
View as plain text  
Modified:
   trunk/connector-mxj/.classpath
   trunk/connector-mxj/CHANGES
   trunk/connector-mxj/commercial/platform-map.properties
   trunk/connector-mxj/resources/platform-map.properties
   trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java
  
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java
  
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java
Log:
added groundwork for URL re-connection optimization

Modified: trunk/connector-mxj/.classpath
===================================================================
--- trunk/connector-mxj/.classpath	2007-05-27 17:11:51 UTC (rev 98)
+++ trunk/connector-mxj/.classpath	2007-06-21 09:33:45 UTC (rev 99)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" excluding="**/.svn|**/.svn/*|.svn|**/*.aj" path="src"/>
 	<classpathentry kind="src" path="resources"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="var" path="JUNIT_HOME/junit.jar"
sourcepath="ECLIPSE_HOME/plugins/org.eclipse.jdt.source_3.0.0/src/org.junit_3.8.1/junitsrc.zip"/>

Modified: trunk/connector-mxj/CHANGES
===================================================================
--- trunk/connector-mxj/CHANGES	2007-05-27 17:11:51 UTC (rev 98)
+++ trunk/connector-mxj/CHANGES	2007-06-21 09:33:45 UTC (rev 99)
@@ -1,6 +1,8 @@
 # Changelog
 # $Id: CHANGES,v 1.14 2005/10/25 19:11:16 eherman Exp $
 
+2007-06-21 - added groundwork for URL re-connection optimization
+
 5-0-7-beta
 
 2007-05-27 - swapped out gpl binaries for v5.0.41

Modified: trunk/connector-mxj/commercial/platform-map.properties
===================================================================
--- trunk/connector-mxj/commercial/platform-map.properties	2007-05-27 17:11:51 UTC (rev
98)
+++ trunk/connector-mxj/commercial/platform-map.properties	2007-06-21 09:33:45 UTC (rev
99)
@@ -5,6 +5,7 @@
 Linux-x86=Linux-i386
 Linux-i686=Linux-i386
 Linux-x86_64=Linux-i386
+Linux-ia64=Linux-i386
 
 #Linux-ppc=Linux-ppc
 #Linux-ppc64=Linux-ppc

Modified: trunk/connector-mxj/resources/platform-map.properties
===================================================================
--- trunk/connector-mxj/resources/platform-map.properties	2007-05-27 17:11:51 UTC (rev 98)
+++ trunk/connector-mxj/resources/platform-map.properties	2007-06-21 09:33:45 UTC (rev 99)
@@ -5,6 +5,7 @@
 Linux-x86=Linux-i386
 Linux-i686=Linux-i386
 Linux-x86_64=Linux-i386
+Linux-ia64=Linux-i386
 
 #Linux-ppc=Linux-ppc
 #Linux-ppc64=Linux-ppc

Modified: trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java
===================================================================
--- trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java	2007-05-27 17:11:51 UTC (rev
98)
+++ trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java	2007-06-21 09:33:45 UTC (rev
99)
@@ -42,8 +42,8 @@
 
         System.out.println(url);
 
-        String userName = "root";
-        String password = "";
+        String userName = "alice";
+        String password = "q93uti0opwhkd";
 
         Class.forName(DRIVER);
         Connection conn = null;

Modified:
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java
===================================================================
---
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java	2007-05-27
17:11:51 UTC (rev 98)
+++
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java	2007-06-21
09:33:45 UTC (rev 99)
@@ -21,11 +21,16 @@
 import java.io.IOException;
 import java.net.Socket;
 import java.net.SocketException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
+import com.mysql.jdbc.Driver;
+import com.mysql.jdbc.MysqlErrorNumbers;
 import com.mysql.jdbc.NonRegisteringDriver;
 import com.mysql.jdbc.SocketFactory;
 import com.mysql.jdbc.StandardSocketFactory;
@@ -34,6 +39,8 @@
 import com.mysql.management.MysqldResourceI;
 import com.mysql.management.util.Exceptions;
 import com.mysql.management.util.Files;
+import com.mysql.management.util.SQLRuntimeException;
+import com.mysql.management.util.Str;
 
 /**
  * This class is final simply as a hint to the compiler, it may be un-finalized
@@ -50,10 +57,13 @@
     private MysqldFactory resourceFactory;
 
     private SocketFactory socketFactory;
+    
+    private boolean throwOnBadPassword;
 
     public ServerLauncherSocketFactory() {
         setResourceFactory(new MysqldFactory.Default());
         setSocketFactory(new StandardSocketFactory());
+        throwOnBadPassword = true;
     }
 
     public Socket connect(String host, int portNumber, Properties props)
@@ -64,6 +74,18 @@
     }
 
     private void ensureMysqlStarted(int port, Properties props) {
+        String user = props.getProperty(NonRegisteringDriver.USER_PROPERTY_KEY);
+        String pass = props
+                .getProperty(NonRegisteringDriver.PASSWORD_PROPERTY_KEY);
+
+        /*
+         * StandardSocketFactory prints a stacktrace to the screen which is too
+         * ugly, so this optimization must wait.
+         */
+        if (false && alreadyStarted(port, user, pass)) {
+            return;
+        }
+
         Map serverOpts = new HashMap();
         for (Enumeration enums = props.propertyNames(); enums.hasMoreElements();) {
             String key = enums.nextElement().toString();
@@ -74,11 +96,10 @@
                 serverOpts.put(key.substring(SERVER_DOT.length()), val);
             }
         }
-        serverOpts.put(MysqldResourceI.INITIALIZE_USER_NAME, props
-                .getProperty(NonRegisteringDriver.USER_PROPERTY_KEY));
-        serverOpts.put(MysqldResourceI.INITIALIZE_PASSWORD, props
-                .getProperty(NonRegisteringDriver.PASSWORD_PROPERTY_KEY));
 
+        serverOpts.put(MysqldResourceI.INITIALIZE_USER_NAME, user);
+        serverOpts.put(MysqldResourceI.INITIALIZE_PASSWORD, pass);
+
         serverOpts.put(MysqldResourceI.PORT, Integer.toString(port));
         Object baseDirStr = serverOpts.get(MysqldResourceI.BASEDIR);
         File baseDir = new Files().newFile(baseDirStr);
@@ -125,6 +146,34 @@
         mysqld.start(threadName, serverOpts);
     }
 
+    private boolean alreadyStarted(int port, String user, String pass) {
+        new Str().classForName(Driver.class.getName());
+        Connection conn = null;
+        String url = "jdbc:mysql://127.0.0.1:" + port + "/"
+                + "?connectTimeout=150";
+
+        try {
+            conn = DriverManager.getConnection(url, user, pass);
+            return true;
+        } catch (SQLException e) {
+            if (e.getErrorCode() == MysqlErrorNumbers.ER_ACCESS_DENIED_ERROR
+                    && throwOnBadPassword) {
+                throw new SQLRuntimeException(e);
+            }
+            return false;
+        } catch (Exception e) {
+            return false;
+        } finally {
+            try {
+                if (conn != null) {
+                    conn.close();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
     String replaceNullStringWithNull(String str) {
         return String.valueOf((Object) null).equals(str) ? null : str;
     }
@@ -148,6 +197,10 @@
     void setSocketFactory(SocketFactory socketFactory) {
         this.socketFactory = socketFactory;
     }
+    
+    void throwOnBadPassword(boolean val){
+        throwOnBadPassword = val;
+    }
 
     SocketFactory getSocketFactory() {
         return socketFactory;

Modified:
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java
===================================================================
---
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java	2007-05-27
17:11:51 UTC (rev 98)
+++
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java	2007-06-21
09:33:45 UTC (rev 99)
@@ -108,6 +108,7 @@
         ServerLauncherSocketFactory sf = new ServerLauncherSocketFactory();
         FakeSocketFactory fake = new FakeSocketFactory();
         sf.setSocketFactory(fake);
+        sf.throwOnBadPassword(false);
         sf.setResourceFactory(new FakeMysqldFactory());
 
         assertEquals(0, fake.connectCalled);
@@ -138,6 +139,7 @@
         FakeMysqldFactory factory = new FakeMysqldFactory();
         sf.setResourceFactory(factory);
         sf.setSocketFactory(new FakeSocketFactory());
+        sf.throwOnBadPassword(false);
 
         assertEquals(0, factory.fakeRunningMysqlds.size());
         String host = "localhost";
@@ -188,6 +190,7 @@
         FakeSocketFactory fakeSf = new FakeSocketFactory();
         sf.setResourceFactory(factory);
         sf.setSocketFactory(fakeSf);
+        sf.throwOnBadPassword(false);
 
         Properties props = new Properties();
         int port = 3306;

Thread
Connector/MXJ commit: r99 - in trunk/connector-mxj: . commercial resources src src/com/mysql/management/driverlaunchedeherman21 Jun