Skip to content

Commit

Permalink
refactor: reduce map lookups to reduce the number of locks required
Browse files Browse the repository at this point in the history
  • Loading branch information
karenc-bq committed Mar 16, 2023
1 parent 77a1cdf commit e324efb
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 19 deletions.
5 changes: 3 additions & 2 deletions src/main/core-api/java/com/mysql/cj/util/Util.java
Original file line number Diff line number Diff line change
Expand Up @@ -307,8 +307,9 @@ public static <T> List<T> loadClasses(String extensionClassNames, String errorMe
* @return boolean
*/
public static boolean isJdbcInterface(Class<?> clazz) {
if (Util.isJdbcInterfaceCache.containsKey(clazz)) {
return (Util.isJdbcInterfaceCache.get(clazz));
final Boolean isJdbcInterface = Util.isJdbcInterfaceCache.get(clazz);
if (isJdbcInterface != null) {
return isJdbcInterface;
}

if (clazz.isInterface()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,19 @@
import java.io.EOFException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Supplier;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
* A {@link IConnectionPlugin} implementation that provides cluster-aware failover
Expand All @@ -92,22 +95,22 @@ public class FailoverConnectionPlugin implements IConnectionPlugin {
static final String METHOD_CLOSE = "close";
static final String METHOD_IS_CLOSED = "isClosed";

private static final List<String> METHODS_REQUIRE_UPDATED_TOPOLOGY = new ArrayList<>(Arrays.asList(
METHOD_COMMIT,
"connect",
"isValid",
"rollback",
"setAutoCommit",
"setReadOnly",
"execute",
"executeBatch",
"executeLargeBatch",
"executeLargeUpdate",
"executeQuery",
"executeUpdate",
"executeWithFlags",
"getParameterMetaData"
));
private final static Set<String> METHODS_REQUIRE_UPDATED_TOPOLOGY = new ConcurrentHashMap<String, String>() {{
put(METHOD_COMMIT, METHOD_COMMIT);
put("connect", "connect");
put("isValid", "isValid");
put("rollback", "rollback");
put("setAutoCommit", "setAutoCommit");
put("setReadOnly", "setReadOnly");
put("execute", "execute");
put("executeBatch", "executeBatch");
put("executeLargeBatch", "executeLargeBatch");
put("executeLargeUpdate", "executeLargeUpdate");
put("executeQuery", "executeQuery");
put("executeUpdate", "executeUpdate");
put("executeWithFlags", "executeWithFlags");
put("getParameterMetaData", "getParameterMetaData");
}}.newKeySet();

private static final String METHOD_GET_TRANSACTION_ISOLATION =
"getTransactionIsolation";
Expand Down

0 comments on commit e324efb

Please sign in to comment.