You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2024/06/19 03:21:46 UTC

(iotdb) 01/01: [IOTDB-6340] Clear Coordinator.queryExecutionMap while encountering MemoryNotEnough Exception

This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch ty/QueryMemoryLeak
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 70c2f7b96a71eb2cc03922b4a7aaa6cea91e1db8
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Wed Jun 19 11:21:30 2024 +0800

    [IOTDB-6340] Clear Coordinator.queryExecutionMap while encountering MemoryNotEnough Exception
---
 .../iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
index 78f7d03fd2f..650621cf30b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
@@ -323,6 +323,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
 
       if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()
           && result.status.code != TSStatusCode.REDIRECTION_RECOMMEND.getStatusCode()) {
+        finished = true;
         return RpcUtils.getTSExecuteStatementResp(result.status);
       }
 
@@ -348,6 +349,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
       return RpcUtils.getTSExecuteStatementResp(
           onQueryException(e, "\"" + statement + "\". " + OperationType.EXECUTE_STATEMENT));
     } catch (Error error) {
+      finished = true;
       t = error;
       throw error;
     } finally {
@@ -413,6 +415,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
               req.getTimeout());
 
       if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+        finished = true;
         throw new RuntimeException(ERROR_CODE + result.status);
       }
 
@@ -437,6 +440,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
       return RpcUtils.getTSExecuteStatementResp(
           onQueryException(e, "\"" + req + "\". " + OperationType.EXECUTE_RAW_DATA_QUERY));
     } catch (Error error) {
+      finished = true;
       t = error;
       throw error;
     } finally {
@@ -501,6 +505,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
               req.getTimeout());
 
       if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+        finished = true;
         throw new RuntimeException(ERROR_CODE + result.status);
       }
 
@@ -526,6 +531,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
       return RpcUtils.getTSExecuteStatementResp(
           onQueryException(e, "\"" + req + "\". " + OperationType.EXECUTE_LAST_DATA_QUERY));
     } catch (Error error) {
+      finished = true;
       t = error;
       throw error;
     } finally {
@@ -588,6 +594,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
               req.getTimeout());
 
       if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+        finished = true;
         throw new RuntimeException(ERROR_CODE + result.status);
       }
 
@@ -613,6 +620,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
       return RpcUtils.getTSExecuteStatementResp(
           onQueryException(e, "\"" + req + "\". " + OperationType.EXECUTE_LAST_DATA_QUERY));
     } catch (Error error) {
+      finished = true;
       t = error;
       throw error;
     } finally {
@@ -921,6 +929,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
               req.getTimeout());
 
       if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+        finished = true;
         throw new RuntimeException("error code: " + result.status);
       }
 
@@ -953,6 +962,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
       return RpcUtils.getTSExecuteStatementResp(
           onQueryException(e, "\"" + req + "\". " + OperationType.EXECUTE_LAST_DATA_QUERY));
     } catch (Error error) {
+      finished = true;
       t = error;
       throw error;
     } finally {
@@ -1073,6 +1083,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
     try {
       IClientSession clientSession = SESSION_MANAGER.getCurrSessionAndUpdateIdleTime();
       if (!SESSION_MANAGER.checkLogin(clientSession)) {
+        finished = true;
         return RpcUtils.getTSFetchResultsResp(getNotLoggedInStatus());
       }
       TSFetchResultsResp resp = RpcUtils.getTSFetchResultsResp(TSStatusCode.SUCCESS_STATUS);
@@ -1595,6 +1606,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
     try {
       IClientSession clientSession = SESSION_MANAGER.getCurrSessionAndUpdateIdleTime();
       if (!SESSION_MANAGER.checkLogin(clientSession)) {
+        finished = true;
         return RpcUtils.getTSFetchResultsResp(getNotLoggedInStatus());
       }
 
@@ -1626,6 +1638,7 @@ public class ClientRPCServiceImpl implements IClientRPCServiceWithHandler {
       return RpcUtils.getTSFetchResultsResp(
           onQueryException(e, getContentOfRequest(req, queryExecution)));
     } catch (Error error) {
+      finished = true;
       t = error;
       throw error;
     } finally {