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/05/28 08:04:37 UTC

[iotdb] 01/01: Use Caffeine Cache

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

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

commit 503cd7fb006091bb27a45be7c720047098566789
Author: JackieTien97 <Ja...@foxmail.com>
AuthorDate: Fri May 28 16:03:50 2021 +0800

    Use Caffeine Cache
---
 server/pom.xml                                      |  7 +++----
 .../apache/iotdb/db/engine/cache/ChunkCache.java    | 21 +++++++--------------
 .../db/engine/cache/TimeSeriesMetadataCache.java    | 12 ++++++------
 3 files changed, 16 insertions(+), 24 deletions(-)

diff --git a/server/pom.xml b/server/pom.xml
index 0597e03..8ad3ea8 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -214,10 +214,9 @@
             <scope>compile</scope>
         </dependency>
         <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>29.0-jre</version>
-            <scope>compile</scope>
+            <groupId>com.github.ben-manes.caffeine</groupId>
+            <artifactId>caffeine</artifactId>
+            <version>3.0.2</version>
         </dependency>
     </dependencies>
     <build>
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkCache.java b/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkCache.java
index bb7b095..3c0f36f 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkCache.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/cache/ChunkCache.java
@@ -28,15 +28,14 @@ import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
 import org.apache.iotdb.tsfile.read.common.Chunk;
 import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
 
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.cache.Weigher;
+import com.github.benmanes.caffeine.cache.CacheLoader;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.Weigher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicLong;
 
 /**
@@ -61,7 +60,7 @@ public class ChunkCache {
       logger.info("ChunkCache size = " + MEMORY_THRESHOLD_IN_CHUNK_CACHE);
     }
     lruCache =
-        CacheBuilder.newBuilder()
+        Caffeine.newBuilder()
             .maximumWeight(MEMORY_THRESHOLD_IN_CHUNK_CACHE)
             .weigher(
                 new Weigher<ChunkMetadata, Chunk>() {
@@ -128,13 +127,7 @@ public class ChunkCache {
           chunkMetaData.getStatistics());
     }
 
-    Chunk chunk;
-    try {
-      chunk = lruCache.get(chunkMetaData);
-    } catch (ExecutionException e) {
-      logger.error("something wrong happened while loading {}", chunkMetaData);
-      throw new IOException(e);
-    }
+    Chunk chunk = lruCache.get(chunkMetaData);
 
     if (debug) {
       DEBUG_LOGGER.info("get chunk from cache whose meta data is: " + chunkMetaData);
@@ -178,7 +171,7 @@ public class ChunkCache {
 
   @TestOnly
   public boolean isEmpty() {
-    return lruCache.size() == 0;
+    return lruCache.estimatedSize() == 0;
   }
 
   /** singleton pattern. */
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 f5ff011..8417709 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
@@ -31,10 +31,10 @@ import org.apache.iotdb.tsfile.read.common.Path;
 import org.apache.iotdb.tsfile.utils.BloomFilter;
 import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
 
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.cache.Weigher;
+import com.github.benmanes.caffeine.cache.CacheLoader;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.Weigher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -77,7 +77,7 @@ public class TimeSeriesMetadataCache {
           "TimeseriesMetadataCache size = " + MEMORY_THRESHOLD_IN_TIME_SERIES_METADATA_CACHE);
     }
     lruCache =
-        CacheBuilder.newBuilder()
+        Caffeine.newBuilder()
             .maximumWeight(MEMORY_THRESHOLD_IN_TIME_SERIES_METADATA_CACHE)
             .weigher(
                 new Weigher<TimeSeriesMetadataCacheKey, TimeseriesMetadata>() {
@@ -383,7 +383,7 @@ public class TimeSeriesMetadataCache {
 
   @TestOnly
   public boolean isEmpty() {
-    return lruCache.size() == 0;
+    return lruCache.estimatedSize() == 0;
   }
 
   public static class TimeSeriesMetadataCacheKey {