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 {