[ 
https://issues.apache.org/jira/browse/HIVE-25246?focusedWorklogId=617977&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-617977
 ]

ASF GitHub Bot logged work on HIVE-25246:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 02/Jul/21 05:16
            Start Date: 02/Jul/21 05:16
    Worklog Time Spent: 10m 
      Work Description: pkumarsinha commented on a change in pull request #2396:
URL: https://github.com/apache/hive/pull/2396#discussion_r662736099



##########
File path: 
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
##########
@@ -1122,12 +1154,76 @@ public void abortTxns(AbortTxnsRequest rqst) throws 
MetaException {
     }
   }
 
+  private long getDatabaseId(Connection dbConn, String database, String 
catalog) throws SQLException {
+    ResultSet rs = null;
+    PreparedStatement pst = null;
+    try {
+      String query = "select \"DB_ID\" from \"DBS\" where \"NAME\" = ?  and 
\"CTLG_NAME\" = ?";
+      pst = sqlGenerator.prepareStmtWithParameters(dbConn, query, 
Arrays.asList(database, catalog));
+      LOG.debug("Going to execute query <" + query.replaceAll("\\?", "{}") + 
">",
+              quoteString(database), quoteString(catalog));
+      rs = pst.executeQuery();
+      if (!rs.next()) {
+        LOG.error("Database: " + database + " does not exist in catalog " + 
catalog);
+        return -1;
+      }
+      return rs.getLong(1);
+    } finally {
+      close(rs);
+      closeStmt(pst);
+    }
+  }
+
+  private void updateDatabaseProp(Connection dbConn, Statement stmt,
+                                  long dbId, String prop, String propValue) 
throws SQLException {
+    ResultSet rs = null;
+    PreparedStatement pst = null;
+    String query;
+    try {
+      rs = stmt.executeQuery("SELECT \"PARAM_VALUE\" FROM \"DATABASE_PARAMS\" 
WHERE \"PARAM_KEY\" = " +
+              "'" + prop + "' AND \"DB_ID\" = " + dbId);
+      if (!rs.next()) {
+        query = "INSERT INTO \"DATABASE_PARAMS\" VALUES ( " + dbId + " , '" + 
prop + "' , ? )";
+      } else {
+        query = "UPDATE \"DATABASE_PARAMS\" SET \"PARAM_VALUE\" = ? WHERE 
\"DB_ID\" = " + dbId +
+                " AND \"PARAM_KEY\" = '" + prop + "'";
+      }
+      close(rs);
+      pst = sqlGenerator.prepareStmtWithParameters(dbConn, query, 
Arrays.asList(propValue));
+      LOG.debug("Updating " + prop + " for db <" + query.replaceAll("\\?", 
"{}") + ">", propValue);
+      if (pst.executeUpdate() != 1) {
+        //only one row insert or update should happen
+        throw new RuntimeException("DATABASE_PARAMS is corrupted for 
databaseID: " + dbId);
+      }
+    } finally {
+      close(rs);
+      closeStmt(pst);
+    }
+  }
+
+  private void markDbAsReplIncompatible(Connection dbConn, String database) 
throws SQLException {
+    Statement stmt = dbConn.createStatement();
+    String catalog = MetaStoreUtils.getDefaultCatalog(conf);
+    String s = sqlGenerator.getDbProduct().getPrepareTxnStmt();
+    if (s != null) {
+      stmt.execute(s);
+    }
+    long dbId = getDatabaseId(dbConn, database, catalog);
+    if (dbId == -1) {
+      return;
+    }
+    updateDatabaseProp(dbConn, stmt, dbId, ReplConst.REPL_INCOMPATIBLE, 
ReplConst.TRUE);
+    closeStmt(stmt);

Review comment:
       This is still prone to statement object leak.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 617977)
    Time Spent: 3h  (was: 2h 50m)

> Fix the clean up of open repl created transactions
> --------------------------------------------------
>
>                 Key: HIVE-25246
>                 URL: https://issues.apache.org/jira/browse/HIVE-25246
>             Project: Hive
>          Issue Type: Improvement
>            Reporter: Haymant Mangla
>            Assignee: Haymant Mangla
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 3h
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to