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 2021/06/08 09:14:30 UTC

[iotdb] branch master updated: [IOTDB-1430] Ensure only one vector in one MetadataIndexTree (#3375)

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 82755b3  [IOTDB-1430] Ensure only one vector in one MetadataIndexTree (#3375)
82755b3 is described below

commit 82755b32c309351091f3cb9eae9dd826d1e43b75
Author: Zesong Sun <sz...@mails.tsinghua.edu.cn>
AuthorDate: Tue Jun 8 17:14:03 2021 +0800

    [IOTDB-1430] Ensure only one vector in one MetadataIndexTree (#3375)
    
    Ensure only one vector in one MetadataIndexTree
---
 .../iotdb/db/engine/cache/TimeSeriesMetadataCache.java  | 17 ++++++++++++++---
 .../tsfile/file/metadata/MetadataIndexConstructor.java  | 14 +++++---------
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java b/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
index 123fe97..605a341 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java
@@ -292,7 +292,9 @@ public class TimeSeriesMetadataCache {
                 metadata -> {
                   TimeSeriesMetadataCacheKey k =
                       new TimeSeriesMetadataCacheKey(
-                          key.filePath, key.device, metadata.getMeasurementId());
+                          key.filePath,
+                          key.device + IoTDBConstant.PATH_SEPARATOR + key.measurement,
+                          metadata.getMeasurementId());
                   if (!lruCache.containsKey(k)) {
                     lruCache.put(k, metadata);
                   }
@@ -329,12 +331,21 @@ public class TimeSeriesMetadataCache {
       TimeSeriesMetadataCacheKey key, List<String> subSensorList, List<TimeseriesMetadata> res) {
     lock.readLock().lock();
     try {
-      TimeseriesMetadata timeseriesMetadata = lruCache.get(key);
+      TimeseriesMetadata timeseriesMetadata =
+          lruCache.get(
+              new TimeSeriesMetadataCacheKey(
+                  key.filePath,
+                  key.device + IoTDBConstant.PATH_SEPARATOR + key.measurement,
+                  key.measurement));
       if (timeseriesMetadata != null) {
         res.add(timeseriesMetadata);
         for (String subSensor : subSensorList) {
           timeseriesMetadata =
-              lruCache.get(new TimeSeriesMetadataCacheKey(key.filePath, key.device, subSensor));
+              lruCache.get(
+                  new TimeSeriesMetadataCacheKey(
+                      key.filePath,
+                      key.device + IoTDBConstant.PATH_SEPARATOR + key.measurement,
+                      subSensor));
           if (timeseriesMetadata != null) {
             res.add(timeseriesMetadata);
           } else {
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexConstructor.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexConstructor.java
index 5944316..57a9b25 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexConstructor.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/MetadataIndexConstructor.java
@@ -75,19 +75,15 @@ public class MetadataIndexConstructor {
             }
           }
 
-          // only add time column of vector into LEAF_MEASUREMENT node
-          if (currentIndexNode.getChildren().isEmpty()
-              || serializedTimeseriesMetadataNum + numOfValueColumns + 1
-                  > config.getMaxDegreeOfIndexNode() * 1.5) {
-            currentIndexNode.addEntry(
-                new MetadataIndexEntry(timeseriesMetadata.getMeasurementId(), out.getPosition()));
-            serializedTimeseriesMetadataNum = 0;
-          }
+          // for each vector, add time column of vector into LEAF_MEASUREMENT node
+          currentIndexNode.addEntry(
+              new MetadataIndexEntry(timeseriesMetadata.getMeasurementId(), out.getPosition()));
+          serializedTimeseriesMetadataNum = 0;
 
           timeseriesMetadata.serializeTo(out.wrapAsStream());
           serializedTimeseriesMetadataNum++;
           for (int j = 0; j < numOfValueColumns; j++) {
-            i += 1;
+            i++;
             timeseriesMetadata = entry.getValue().get(i);
             // value columns of vector should not be added into LEAF_MEASUREMENT node
             timeseriesMetadata.serializeTo(out.wrapAsStream());