This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch TimeSeriesMetadataCache in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 6699d55579d9bcdb81e29f8e74e0052a2fd00767 Author: JackieTien97 <[email protected]> AuthorDate: Sun Dec 20 14:18:29 2020 +0800 my --- .../src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java | 2 +- .../apache/iotdb/db/engine/cache/TimeSeriesMetadataCache.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java index 05c2c73..ddd925d 100644 --- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java +++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java @@ -297,7 +297,7 @@ public class IoTDBConfig { /** * whether to cache meta data(ChunkMetaData and TsFileMetaData) or not. */ - private boolean metaDataCacheEnable = true; + private boolean metaDataCacheEnable = false; /** * Memory allocated for timeSeriesMetaData cache in read process 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 d305fc8..ec4a0ae 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 @@ -20,9 +20,13 @@ package org.apache.iotdb.db.engine.cache; import java.io.IOException; +import java.lang.ref.WeakReference; +import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.WeakHashMap; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -59,6 +63,10 @@ public class TimeSeriesMetadataCache { private final ReadWriteLock lock = new ReentrantReadWriteLock(); + private final Map<String, WeakReference<String>> devices = Collections + .synchronizedMap(new WeakHashMap<>()); + private static final String SEPARATOR = "$"; + private TimeSeriesMetadataCache() { if (CACHE_ENABLE) { @@ -126,7 +134,8 @@ public class TimeSeriesMetadataCache { printCacheLog(true); } else { // allow for the parallelism of different devices - synchronized (key.device.intern()) { + synchronized (devices + .computeIfAbsent(key.device + SEPARATOR + key.filePath, WeakReference::new)) { // double check lock.readLock().lock(); try {
