You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/06/16 18:00:42 UTC

svn commit: r1602910 - /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java

Author: hashutosh
Date: Mon Jun 16 16:00:42 2014
New Revision: 1602910

URL: http://svn.apache.org/r1602910
Log:
HIVE-7182 : ResultSet is not closed in JDBCStatsPublisher#init() (Steve, Oh via Ashutosh Chauhan)

Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java?rev=1602910&r1=1602909&r2=1602910&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsPublisher.java Mon Jun 16 16:00:42 2014
@@ -259,6 +259,8 @@ public class JDBCStatsPublisher implemen
    */
   @Override
   public boolean init(Configuration hconf) {
+    Statement stmt = null;
+    ResultSet rs = null;
     try {
       this.hiveconf = hconf;
       connectionString = HiveConf.getVar(hconf, HiveConf.ConfVars.HIVESTATSDBCONNECTIONSTRING);
@@ -268,23 +270,37 @@ public class JDBCStatsPublisher implemen
         DriverManager.setLoginTimeout(timeout);
         conn = DriverManager.getConnection(connectionString);
 
-        Statement stmt = conn.createStatement();
+        stmt = conn.createStatement();
         stmt.setQueryTimeout(timeout);
 
         // Check if the table exists
         DatabaseMetaData dbm = conn.getMetaData();
-        ResultSet rs = dbm.getTables(null, null, JDBCStatsUtils.getStatTableName(), null);
+        rs = dbm.getTables(null, null, JDBCStatsUtils.getStatTableName(), null);
         boolean tblExists = rs.next();
         if (!tblExists) { // Table does not exist, create it
           String createTable = JDBCStatsUtils.getCreate("");
-          stmt.executeUpdate(createTable);
-          stmt.close();
-        }
-        closeConnection();
+          stmt.executeUpdate(createTable);          
+        }      
       }
     } catch (Exception e) {
       LOG.error("Error during JDBC initialization. ", e);
       return false;
+    } finally {
+      if(rs != null) {
+        try {
+          rs.close();
+        } catch (SQLException e) {
+          // do nothing
+        }
+      }
+      if(stmt != null) {
+        try {
+          stmt.close();
+        } catch (SQLException e) {
+          // do nothing
+        }
+      }
+      closeConnection();
     }
     return true;
   }