diff --git a/java/jdbc/src/main/java/com/flipkart/vitess/jdbc/VitessConnection.java b/java/jdbc/src/main/java/com/flipkart/vitess/jdbc/VitessConnection.java index 9f2814f11a7..c4729d8e0d3 100644 --- a/java/jdbc/src/main/java/com/flipkart/vitess/jdbc/VitessConnection.java +++ b/java/jdbc/src/main/java/com/flipkart/vitess/jdbc/VitessConnection.java @@ -215,11 +215,11 @@ public boolean isClosed() throws SQLException { public DatabaseMetaData getMetaData() throws SQLException { checkOpen(); - if (null != databaseMetaData) { + if (!metadataNullOrClosed()) { return databaseMetaData; } else { synchronized (VitessConnection.class) { - if (null == databaseMetaData) { + if (metadataNullOrClosed()) { String dbEngine = initializeDBProperties(); if (dbEngine.equals("mariadb")) { databaseMetaData = new VitessMariaDBDatabaseMetadata(this); @@ -232,6 +232,10 @@ public DatabaseMetaData getMetaData() throws SQLException { } } + private boolean metadataNullOrClosed() throws SQLException { + return null == databaseMetaData || null == databaseMetaData.getConnection() || databaseMetaData.getConnection().isClosed(); + } + public boolean isReadOnly() throws SQLException { checkOpen(); return readOnly; @@ -786,7 +790,7 @@ private String initializeDBProperties() throws SQLException { HashMap dbVariables = new HashMap<>(); String dbEngine = null; - if (null == databaseMetaData) { + if (metadataNullOrClosed()) { String versionValue; ResultSet resultSet = null; VitessStatement vitessStatement = new VitessStatement(this);