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) {