[Git][java-team/mariadb-connector-java][upstream] New upstream version 2.7.6

Tony Mancill (@tmancill) gitlab at salsa.debian.org
Fri Sep 2 04:38:24 BST 2022



Tony Mancill pushed to branch upstream at Debian Java Maintainers / mariadb-connector-java


Commits:
2bb2c0f1 by tony mancill at 2022-09-01T20:24:06-07:00
New upstream version 2.7.6
- - - - -


14 changed files:

- CHANGELOG.md
- pom.xml
- src/main/java/org/mariadb/jdbc/MariaDbFunctionStatement.java
- src/main/java/org/mariadb/jdbc/MariaDbProcedureStatement.java
- src/main/java/org/mariadb/jdbc/MariaDbStatement.java
- src/main/java/org/mariadb/jdbc/util/Options.java
- src/test/java/org/mariadb/jdbc/ConnectionTest.java
- src/test/java/org/mariadb/jdbc/DatatypeCompatibilityTest.java
- src/test/java/org/mariadb/jdbc/DriverTest.java
- src/test/java/org/mariadb/jdbc/ScalarFunctionsTest.java
- src/test/java/org/mariadb/jdbc/Sha256AuthenticationTest.java
- src/test/java/org/mariadb/jdbc/SslTest.java
- src/test/java/org/mariadb/jdbc/TimezoneDaylightSavingTimeTest.java
- src/test/resources/conf.properties


Changes:

=====================================
CHANGELOG.md
=====================================
@@ -1,6 +1,10 @@
 # Change Log
+## [2.7.6](https://github.com/mariadb-corporation/mariadb-connector-j/tree/2.7.6) (Jun 2022)
+[Full Changelog](https://github.com/mariadb-corporation/mariadb-connector-j/compare/2.7.5...2.7.6)
 
-## [2.7.5](https://github.com/mariadb-corporation/mariadb-connector-j/tree/2.7.5) (Jan 2021)
+* CONJ-983  avoid race condition provoking locking issue
+
+## [2.7.5](https://github.com/mariadb-corporation/mariadb-connector-j/tree/2.7.5) (Jan 2022)
 [Full Changelog](https://github.com/mariadb-corporation/mariadb-connector-j/compare/2.7.4...2.7.5)
 
 * CONJ-914  remove enabling session_track_schema on connection creation


=====================================
pom.xml
=====================================
@@ -60,7 +60,7 @@
   <artifactId>mariadb-java-client</artifactId>
   <packaging>jar</packaging>
   <name>mariadb-java-client</name>
-  <version>2.7.5</version>
+  <version>2.7.6</version>
   <description>JDBC driver for MariaDB and MySQL</description>
   <url>https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/</url>
 


=====================================
src/main/java/org/mariadb/jdbc/MariaDbFunctionStatement.java
=====================================
@@ -130,7 +130,7 @@ public class MariaDbFunctionStatement extends CallableFunctionStatement
    */
   @Override
   public int executeUpdate() throws SQLException {
-    connection.lock.lock();
+    lock.lock();
     try {
       super.execute();
       retrieveOutputResult();
@@ -139,7 +139,7 @@ public class MariaDbFunctionStatement extends CallableFunctionStatement
       }
       return getUpdateCount();
     } finally {
-      connection.lock.unlock();
+      lock.unlock();
     }
   }
 
@@ -157,7 +157,7 @@ public class MariaDbFunctionStatement extends CallableFunctionStatement
 
   @Override
   public ResultSet executeQuery() throws SQLException {
-    connection.lock.lock();
+    lock.lock();
     try {
       super.execute();
       retrieveOutputResult();
@@ -166,19 +166,19 @@ public class MariaDbFunctionStatement extends CallableFunctionStatement
       }
       return SelectResultSet.createEmptyResultSet();
     } finally {
-      connection.lock.unlock();
+      lock.unlock();
     }
   }
 
   @Override
   public boolean execute() throws SQLException {
-    connection.lock.lock();
+    lock.lock();
     try {
       super.execute();
       retrieveOutputResult();
       return results != null && results.getResultSet() == null;
     } finally {
-      connection.lock.unlock();
+      lock.unlock();
     }
   }
 }


=====================================
src/main/java/org/mariadb/jdbc/MariaDbProcedureStatement.java
=====================================
@@ -164,14 +164,14 @@ public class MariaDbProcedureStatement extends CallableProcedureStatement
 
   @Override
   public boolean execute() throws SQLException {
-    connection.lock.lock();
+    lock.lock();
     try {
       validAllParameters();
       super.executeInternal(fetchSize);
       retrieveOutputResult();
       return results != null && results.getResultSet() != null;
     } finally {
-      connection.lock.unlock();
+      lock.unlock();
     }
   }
 


=====================================
src/main/java/org/mariadb/jdbc/MariaDbStatement.java
=====================================
@@ -56,10 +56,7 @@ import java.io.InputStream;
 import java.nio.charset.Charset;
 import java.sql.*;
 import java.util.*;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.*;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -180,14 +177,16 @@ public class MariaDbStatement implements Statement, Cloneable {
     timerTaskFuture =
         timeoutScheduler.schedule(
             () -> {
-              try {
-                isTimedout = true;
-                if (!isBatch) {
-                  protocol.cancelCurrentQuery();
+              if (protocol != null) {
+                try {
+                  isTimedout = true;
+                  if (!isBatch) {
+                    protocol.cancelCurrentQuery();
+                  }
+                  protocol.interrupt();
+                } catch (Throwable e) {
+                  // eat
                 }
-                protocol.interrupt();
-              } catch (Throwable e) {
-                // eat
               }
             },
             queryTimeout,
@@ -222,13 +221,10 @@ public class MariaDbStatement implements Statement, Cloneable {
     if (timerTaskFuture != null) {
       if (!timerTaskFuture.cancel(true)) {
         // could not cancel, task either started or already finished
-        // we must now wait for task to finish to ensure state modifications are done
+        // we must now wait for task to finish ensuring state modifications are done
         try {
           timerTaskFuture.get();
-        } catch (InterruptedException e) {
-          // reset interrupt status
-          Thread.currentThread().interrupt();
-        } catch (ExecutionException e) {
+        } catch (InterruptedException | ExecutionException | CancellationException e) {
           // ignore error, likely due to interrupting during cancel
         }
         // we don't catch the exception if already canceled, that would indicate we tried
@@ -801,6 +797,14 @@ public class MariaDbStatement implements Statement, Cloneable {
         return;
       }
       connection.pooledConnection.fireStatementClosed(this);
+
+      if (timeoutScheduler != null) {
+        try {
+          timeoutScheduler.shutdown();
+        } catch (Throwable t) {
+          // eat
+        }
+      }
     } finally {
       protocol = null;
       connection = null;


=====================================
src/main/java/org/mariadb/jdbc/util/Options.java
=====================================
@@ -446,9 +446,6 @@ public class Options implements Cloneable {
     if (!Objects.equals(credentialType, opt.credentialType)) {
       return false;
     }
-    if (!Objects.equals(nonMappedOptions, opt.nonMappedOptions)) {
-      return false;
-    }
     if (!Objects.equals(tlsSocketType, opt.tlsSocketType)) {
       return false;
     }


=====================================
src/test/java/org/mariadb/jdbc/ConnectionTest.java
=====================================
@@ -817,7 +817,9 @@ public class ConnectionTest extends BaseTest {
   @Test
   public void ensureSocketTimeoutState() throws Throwable {
     Assume.assumeTrue(
-        !"maxscale".equals(System.getenv("srv")) && !"skysql-ha".equals(System.getenv("srv")));
+        !"maxscale".equals(System.getenv("srv"))
+            && !"skysql-ha".equals(System.getenv("srv"))
+            && !"skysql".equals(System.getenv("srv")));
 
     Statement stmt = sharedConnection.createStatement();
     stmt.execute("DROP TABLE IF EXISTS ensureSocketTimeoutState");


=====================================
src/test/java/org/mariadb/jdbc/DatatypeCompatibilityTest.java
=====================================
@@ -234,6 +234,7 @@ public class DatatypeCompatibilityTest extends BaseTest {
     String columnName =
         columnType.replace(" ", "_").replace("(", "_").replace(")", "").replace(",", "_");
     try (Statement stmt = sharedConnection.createStatement()) {
+      stmt.execute("DROP TABLE IF EXISTS my_table_" + columnName);
       stmt.execute("CREATE TABLE my_table_" + columnName + "(my_col " + columnType + ")");
       stmt.execute("FLUSH TABLES");
       stmt.execute("INSERT INTO my_table_" + columnName + "(my_col) VALUES (" + strValue + ")");


=====================================
src/test/java/org/mariadb/jdbc/DriverTest.java
=====================================
@@ -1705,6 +1705,8 @@ public class DriverTest extends BaseTest {
 
   @Test
   public void testAutoCommit() throws SQLException {
+    Assume.assumeTrue(
+        !"maxscale".equals(System.getenv("srv")) && !"skysql-ha".equals(System.getenv("srv")));
     try (Connection connection = setConnection()) {
       assertTrue(connection.getAutoCommit());
       Statement stmt = connection.createStatement();


=====================================
src/test/java/org/mariadb/jdbc/ScalarFunctionsTest.java
=====================================
@@ -168,10 +168,11 @@ public class ScalarFunctionsTest extends BaseTest {
     if (!isMariadbServer()) {
       cancelForVersion(5, 5);
     }
+    cancelForVersion(8, 0, 28);
     queryScalar("SELECT {fn convert(?, SQL_BIGINT)}", 2147483648L, 2147483648L);
     queryScalar("SELECT {fn convert(?, SQL_BIGINT)}", BigInteger.valueOf(2147483648L), 2147483648L);
     queryScalar("SELECT {fn convert(?, SQL_BIGINT)}", 20, new Object[] {20, 20L});
-    if (!isMariadbServer() && minVersion(8, 0, 27)) {
+    if (!isMariadbServer() && minVersion(8, 0, 27) && !minVersion(8, 0, 29)) {
       queryScalar(
           "SELECT {fn convert(?, SQL_BOOLEAN)}",
           true,


=====================================
src/test/java/org/mariadb/jdbc/Sha256AuthenticationTest.java
=====================================
@@ -58,7 +58,7 @@ public class Sha256AuthenticationTest extends BaseTest {
           "CREATE USER 'cachingSha256User'@'%'  IDENTIFIED WITH caching_sha2_password BY 'password'");
       stmt.execute("GRANT SELECT ON *.* TO 'cachingSha256User'@'%'");
     } else {
-      forceTls = "&enabledSslProtocolSuites=TLSv1.1";
+      forceTls = "&enabledSslProtocolSuites=TLSv1.1,TLSv1.2";
     }
   }
 


=====================================
src/test/java/org/mariadb/jdbc/SslTest.java
=====================================
@@ -56,8 +56,10 @@ import static org.junit.Assert.*;
 
 import java.io.*;
 import java.nio.file.Paths;
+import java.security.NoSuchAlgorithmException;
 import java.sql.*;
 import java.util.*;
+import javax.net.ssl.SSLContext;
 import org.junit.*;
 import org.mariadb.jdbc.failover.TcpProxy;
 
@@ -163,6 +165,13 @@ public class SslTest extends BaseTest {
 
   @Test
   public void enabledSslProtocolSuites() throws SQLException {
+    try {
+      List<String> protocols =
+          Arrays.asList(SSLContext.getDefault().getSupportedSSLParameters().getProtocols());
+      Assume.assumeTrue(protocols.contains("TLSv1.3") && protocols.contains("TLSv1.2"));
+    } catch (NoSuchAlgorithmException e) {
+      // eat
+    }
     Assume.assumeTrue(
         !"maxscale".equals(System.getenv("srv")) && !"skysql-ha".equals(System.getenv("srv")));
     try (Connection con =
@@ -201,7 +210,7 @@ public class SslTest extends BaseTest {
     try (Connection con =
         setConnection(
             baseOptions
-                + "&useSsl&trustServerCertificate=true&enabledSslCipherSuites=TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
+                + "&useSsl&trustServerCertificate=true&enabledSslCipherSuites=TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
             database,
             sslPort)) {
       assertNotNull(getSslVersion(con));


=====================================
src/test/java/org/mariadb/jdbc/TimezoneDaylightSavingTimeTest.java
=====================================
@@ -219,6 +219,7 @@ public class TimezoneDaylightSavingTimeTest extends BaseTest {
   @Test
   public void testTimeStamp() throws SQLException {
     Assume.assumeTrue(System.getenv("AURORA") == null && !"skysql-ha".equals(System.getenv("srv")));
+    cancelForVersion(8, 0, 28);
     TimeZone.setDefault(parisTimeZone);
     try (Connection connection =
         setConnection("&serverTimezone=Europe/Paris&useServerPrepStmts=true")) {
@@ -235,7 +236,7 @@ public class TimezoneDaylightSavingTimeTest extends BaseTest {
 
   @Test
   public void testTimeStampUtc() throws SQLException {
-
+    cancelForVersion(8, 0, 28);
     TimeZone.setDefault(parisTimeZone);
     try (Connection connection = setConnection("&serverTimezone=UTC&useServerPrepStmts=true")) {
       setSessionTimeZone(connection, "+00:00");


=====================================
src/test/resources/conf.properties
=====================================
@@ -3,4 +3,4 @@ DB_PORT=3306
 DB_DATABASE=testj
 DB_USER=root
 DB_PASSWORD=
-DB_OTHER=
\ No newline at end of file
+DB_OTHER=



View it on GitLab: https://salsa.debian.org/java-team/mariadb-connector-java/-/commit/2bb2c0f10551fe8ffc49eaa56f7dc2e40b22e99b

-- 
View it on GitLab: https://salsa.debian.org/java-team/mariadb-connector-java/-/commit/2bb2c0f10551fe8ffc49eaa56f7dc2e40b22e99b
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20220902/7c52033b/attachment.htm>


More information about the pkg-java-commits mailing list