You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/07/06 14:09:37 UTC

[iotdb] 01/01: Use cachedDevicePool to reduce TsFileResource memory size

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

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

commit d4880c71cd0e73462f066ba2a2dd9aeccadc9d9c
Author: HTHou <hh...@outlook.com>
AuthorDate: Tue Jul 6 22:09:01 2021 +0800

    Use cachedDevicePool to reduce TsFileResource memory size
---
 .../db/engine/storagegroup/timeindex/DeviceTimeIndex.java    |  3 ++-
 .../db/engine/storagegroup/timeindex/FileTimeIndex.java      | 12 ++++++++----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/DeviceTimeIndex.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/DeviceTimeIndex.java
index 381d4b3..25f09f4 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/DeviceTimeIndex.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/DeviceTimeIndex.java
@@ -190,7 +190,8 @@ public class DeviceTimeIndex implements ITimeIndex {
       index = deviceToIndex.get(deviceId);
     } else {
       index = deviceToIndex.size();
-      deviceToIndex.put(deviceId, index);
+      String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k);
+      deviceToIndex.put(cachedDeviceId, index);
       if (startTimes.length <= index) {
         startTimes = enLargeArray(startTimes, Long.MAX_VALUE);
         endTimes = enLargeArray(endTimes, Long.MIN_VALUE);
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/FileTimeIndex.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/FileTimeIndex.java
index e1e5251..8c6a156 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/FileTimeIndex.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/timeindex/FileTimeIndex.java
@@ -173,7 +173,8 @@ public class FileTimeIndex implements ITimeIndex {
 
   @Override
   public void updateStartTime(String deviceId, long time) {
-    devices.add(deviceId);
+    String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k);
+    devices.add(cachedDeviceId);
     if (this.startTime > time) {
       this.startTime = time;
     }
@@ -181,7 +182,8 @@ public class FileTimeIndex implements ITimeIndex {
 
   @Override
   public void updateEndTime(String deviceId, long time) {
-    devices.add(deviceId);
+    String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k);
+    devices.add(cachedDeviceId);
     if (this.endTime < time) {
       this.endTime = time;
     }
@@ -189,13 +191,15 @@ public class FileTimeIndex implements ITimeIndex {
 
   @Override
   public void putStartTime(String deviceId, long time) {
-    devices.add(deviceId);
+    String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k);
+    devices.add(cachedDeviceId);
     this.startTime = time;
   }
 
   @Override
   public void putEndTime(String deviceId, long time) {
-    devices.add(deviceId);
+    String cachedDeviceId = cachedDevicePool.computeIfAbsent(deviceId, k -> k);
+    devices.add(cachedDeviceId);
     this.endTime = time;
   }