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

haonan 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 4e778b5  [IOTDB-1691] Wrong way of calculating the vector's memory 
footprint (#3979)
4e778b5 is described below

commit 4e778b56900a177b35aa4c8fda8a175eb417313a
Author: Jackie Tien <[email protected]>
AuthorDate: Sat Sep 18 00:25:57 2021 +0800

    [IOTDB-1691] Wrong way of calculating the vector's memory footprint (#3979)
    
    Co-authored-by: Haonan <[email protected]>
---
 .../java/org/apache/iotdb/db/utils/MemUtils.java   | 36 +++++++++-------------
 1 file changed, 14 insertions(+), 22 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java 
b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
index 564c39d..f581b34 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
@@ -101,40 +101,32 @@ public class MemUtils {
       return 0L;
     }
     long memSize = 0;
-    int columnCount = 0;
+    boolean hasVector = false;
     for (int i = 0; i < insertTabletPlan.getMeasurementMNodes().length; i++) {
       if (insertTabletPlan.getMeasurementMNodes()[i] == null) {
-        columnCount++;
         continue;
       }
       IMeasurementSchema schema = 
insertTabletPlan.getMeasurementMNodes()[i].getSchema();
-      if (schema.getType() == TSDataType.VECTOR) {
-        // time and index column memSize
-        memSize += (end - start) * (8L + 4L);
+      TSDataType valueType;
+      if (insertTabletPlan.isAligned()) {
+        hasVector = true;
         // value columns memSize
-        for (TSDataType type : schema.getSubMeasurementsTSDataTypeList()) {
-          if (type == TSDataType.TEXT && addingTextDataSize) {
-            for (int j = start; j < end; j++) {
-              memSize += getBinarySize(((Binary[]) 
insertTabletPlan.getColumns()[columnCount])[j]);
-            }
-          } else {
-            memSize += (end - start) * type.getDataTypeSize();
-          }
-          columnCount++;
-        }
+        valueType = schema.getSubMeasurementsTSDataTypeList().get(i);
       } else {
         // time column memSize
         memSize += (end - start) * 8L;
-        if (insertTabletPlan.getDataTypes()[columnCount] == TSDataType.TEXT && 
addingTextDataSize) {
-          for (int j = start; j < end; j++) {
-            memSize += getBinarySize(((Binary[]) 
insertTabletPlan.getColumns()[columnCount])[j]);
-          }
-        } else {
-          memSize += (end - start) * 
insertTabletPlan.getDataTypes()[columnCount].getDataTypeSize();
+        valueType = insertTabletPlan.getDataTypes()[i];
+      }
+      if (valueType == TSDataType.TEXT && addingTextDataSize) {
+        for (int j = start; j < end; j++) {
+          memSize += getBinarySize(((Binary[]) 
insertTabletPlan.getColumns()[i])[j]);
         }
-        columnCount++;
+      } else {
+        memSize += (long) (end - start) * valueType.getDataTypeSize();
       }
     }
+    // time and index column memSize for vector
+    memSize += hasVector ? (end - start) * (8L + 4L) : 0L;
     return memSize;
   }
 

Reply via email to