diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java index ce71b4c0..20769276 100644 --- a/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java +++ b/hikaricp-java6/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java @@ -233,30 +233,22 @@ public final class PoolUtilities */ public static boolean isJdbc40Compliant(final Connection connection) throws SQLException { - // See http://en.wikipedia.org/wiki/Double-checked_locking#Usage_in_Java - boolean checked = jdbc40checked; - if (!checked) { - synchronized (PoolUtilities.class) { - checked = jdbc40checked; - if (!checked) { - try { - connection.isValid(5); // This will throw AbstractMethodError or SQLException in the case of a non-JDBC 41 compliant driver - IS_JDBC40 = true; - } - catch (SQLFeatureNotSupportedException e) { - IS_JDBC40 = false; - } - catch (AbstractMethodError e) { - IS_JDBC40 = false; - } - catch (NoSuchMethodError e) { - IS_JDBC40 = false; - } - finally { - jdbc40checked = checked = true; - } - } + if (!jdbc40checked) { + try { + connection.isValid(5); // This will throw AbstractMethodError or SQLException in the case of a non-JDBC 41 compliant driver + IS_JDBC40 = true; } + catch (SQLFeatureNotSupportedException e) { + IS_JDBC40 = false; + } + catch (AbstractMethodError e) { + IS_JDBC40 = false; + } + catch (NoSuchMethodError e) { + IS_JDBC40 = false; + } + + jdbc40checked = true; } return IS_JDBC40; diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java b/hikaricp/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java index 21e7e28b..0ad379e1 100644 --- a/hikaricp/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java +++ b/hikaricp/src/main/java/com/zaxxer/hikari/util/PoolUtilities.java @@ -215,24 +215,16 @@ public final class PoolUtilities */ public static boolean isJdbc40Compliant(final Connection connection) throws SQLException { - // See http://en.wikipedia.org/wiki/Double-checked_locking#Usage_in_Java - boolean checked = jdbc40checked; - if (!checked) { - synchronized (PoolUtilities.class) { - checked = jdbc40checked; - if (!checked) { - try { - connection.isValid(5); // This will throw AbstractMethodError or SQLException in the case of a non-JDBC 41 compliant driver - IS_JDBC40 = true; - } - catch (NoSuchMethodError | AbstractMethodError | SQLFeatureNotSupportedException e) { - IS_JDBC40 = false; - } - finally { - jdbc40checked = checked = true; - } - } + if (!jdbc40checked) { + try { + connection.isValid(5); // This will throw AbstractMethodError or SQLException in the case of a non-JDBC 41 compliant driver + IS_JDBC40 = true; } + catch (NoSuchMethodError | AbstractMethodError | SQLFeatureNotSupportedException e) { + IS_JDBC40 = false; + } + + jdbc40checked = true; } return IS_JDBC40;