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

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


The following commit(s) were added to refs/heads/master by this push:
     new 7008fea4ef3 Fix potential NPE when 
deRegisterFragmentInstanceFromQueryMemoryMap
7008fea4ef3 is described below

commit 7008fea4ef3bb27f7199eba084ff3ab53381e2f1
Author: Liao Lanyu <[email protected]>
AuthorDate: Wed May 24 19:15:32 2023 +0800

    Fix potential NPE when deRegisterFragmentInstanceFromQueryMemoryMap
---
 .../org/apache/iotdb/db/mpp/execution/memory/MemoryPool.java | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/memory/MemoryPool.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/memory/MemoryPool.java
index 52fa331e44a..25b8ffb07e6 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/memory/MemoryPool.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/memory/MemoryPool.java
@@ -191,10 +191,14 @@ public class MemoryPool {
     Map<String, Map<String, Long>> queryRelatedMemory = 
queryMemoryReservations.get(queryId);
     if (queryRelatedMemory != null) {
       Map<String, Long> fragmentRelatedMemory = 
queryRelatedMemory.get(fragmentInstanceId);
-      for (Long memoryReserved : fragmentRelatedMemory.values()) {
-        if (memoryReserved != 0) {
-          throw new MemoryLeakException(
-              "PlanNode related memory is not zero when deregister fragment 
instance from query memory pool.");
+      // fragmentRelatedMemory could be null if the FI has not reserved any 
memory(For example,
+      // next() of root operator returns no data)
+      if (fragmentRelatedMemory != null) {
+        for (Long memoryReserved : fragmentRelatedMemory.values()) {
+          if (memoryReserved != 0) {
+            throw new MemoryLeakException(
+                "PlanNode related memory is not zero when deregister fragment 
instance from query memory pool.");
+          }
         }
       }
       synchronized (queryMemoryReservations) {

Reply via email to