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());