lvyankui created HIVE-25402:
-------------------------------

             Summary: When Hive client has multiple statements without close. 
queryIdOperation in OperationManager class will exist object that cannot be 
released
                 Key: HIVE-25402
                 URL: https://issues.apache.org/jira/browse/HIVE-25402
             Project: Hive
          Issue Type: Bug
          Components: HiveServer2
    Affects Versions: All Versions
            Reporter: lvyankui


Hive client code has multiple statements without close

connect = DriverManager.getConnection(jdbcUrl, user, password);
PrintWriter pw = new PrintWriter("/tmp/hive.result" );
Statement stmt = connect.createStatement();
Statement stmt1 = connect.createStatement();
Statement stmt2 = connect.createStatement();
String sql = "select * from test";
runSQL(stmt, sql, pw);
runSQL(stmt1, sql, pw);
runSQL(stmt2, sql, pw);

 

OperationManager  removeOperation  method

private Operation removeOperation(OperationHandle opHandle) {
 Operation operation = handleToOperation.remove(opHandle);
 if (operation == null) {
 throw new RuntimeException("Operation does not exist: " + opHandle);
 }
 String queryId = getQueryId(operation);
 *queryIdOperation.remove(queryId);*

 

The key of queryIdOperation is queryIdOperation is queryId, queryId is  getted 
from HiveConf. A new queryId will be generated when a new queryPlan is 
generated and set it into HiveConf.  If Hive client code has multiple 
statements without close, when sqls execute complete, queryIdOperation can only 
release the object whose queryId is last generated,other object cannot be 
released.



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

Reply via email to