You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/05/17 03:33:27 UTC
[shardingsphere] branch master updated: Use caffeine instead of guava cache (#17712)
This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 6b67aedb35f Use caffeine instead of guava cache (#17712)
6b67aedb35f is described below
commit 6b67aedb35fab5f37c85e77c76d6b74955eee748
Author: 龙台 Long Tai <77...@users.noreply.github.com>
AuthorDate: Tue May 17 11:33:16 2022 +0800
Use caffeine instead of guava cache (#17712)
---
pom.xml | 7 +++++++
shardingsphere-infra/shardingsphere-infra-parser/pom.xml | 4 ++++
.../infra/parser/cache/SQLStatementCacheBuilder.java | 8 ++++----
.../infra/parser/cache/SQLStatementCacheLoader.java | 4 ++--
.../infra/parser/sql/SQLStatementParserEngine.java | 4 ++--
.../infra/parser/cache/SQLStatementCacheBuilderTest.java | 2 +-
.../shardingsphere-sql-parser-engine/pom.xml | 5 ++++-
.../shardingsphere/sql/parser/api/SQLParserEngine.java | 4 ++--
.../parser/core/database/cache/ParseTreeCacheBuilder.java | 9 ++++-----
.../parser/core/database/cache/ParseTreeCacheLoader.java | 4 ++--
.../shardingsphere/sql/parser/api/SQLParserEngineTest.java | 10 +++++-----
.../sql/parser/core/SQLParserEngineTest.java | 14 +++++++-------
.../core/database/cache/ParseTreeCacheBuilderTest.java | 2 +-
13 files changed, 45 insertions(+), 32 deletions(-)
diff --git a/pom.xml b/pom.xml
index 595214ab68d..ef56c21ac50 100644
--- a/pom.xml
+++ b/pom.xml
@@ -159,6 +159,7 @@
<apache-rat-plugin.version>0.12</apache-rat-plugin.version>
<freemarker.version>2.3.31</freemarker.version>
<spotless-maven-plugin.version>2.22.1</spotless-maven-plugin.version>
+ <caffeine.version>2.9.2</caffeine.version>
</properties>
<dependencyManagement>
@@ -735,6 +736,12 @@
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>com.github.ben-manes.caffeine</groupId>
+ <artifactId>caffeine</artifactId>
+ <version>${caffeine.version}</version>
+ </dependency>
</dependencies>
</dependencyManagement>
diff --git a/shardingsphere-infra/shardingsphere-infra-parser/pom.xml b/shardingsphere-infra/shardingsphere-infra-parser/pom.xml
index 1554e5f0f7a..9766fe05bb0 100644
--- a/shardingsphere-infra/shardingsphere-infra-parser/pom.xml
+++ b/shardingsphere-infra/shardingsphere-infra-parser/pom.xml
@@ -38,5 +38,9 @@
<artifactId>shardingsphere-infra-common</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.github.ben-manes.caffeine</groupId>
+ <artifactId>caffeine</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilder.java b/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilder.java
index 3d61dc74c57..2c7c6e17545 100644
--- a/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilder.java
+++ b/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilder.java
@@ -17,8 +17,8 @@
package org.apache.shardingsphere.infra.parser.cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.LoadingCache;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
@@ -41,7 +41,7 @@ public final class SQLStatementCacheBuilder {
*/
public static LoadingCache<String, SQLStatement> build(final String databaseType,
final CacheOption sqlStatementCacheOption, final CacheOption parseTreeCacheOption, final boolean isParseComment) {
- return CacheBuilder.newBuilder().softValues().initialCapacity(sqlStatementCacheOption.getInitialCapacity()).maximumSize(sqlStatementCacheOption.getMaximumSize())
- .concurrencyLevel(sqlStatementCacheOption.getConcurrencyLevel()).build(new SQLStatementCacheLoader(databaseType, parseTreeCacheOption, isParseComment));
+ return Caffeine.newBuilder().softValues().initialCapacity(sqlStatementCacheOption.getInitialCapacity()).maximumSize(sqlStatementCacheOption.getMaximumSize())
+ .build(new SQLStatementCacheLoader(databaseType, parseTreeCacheOption, isParseComment));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoader.java b/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoader.java
index a161f50b380..d8eb73731e5 100644
--- a/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoader.java
+++ b/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheLoader.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.parser.cache;
-import com.google.common.cache.CacheLoader;
+import com.github.benmanes.caffeine.cache.CacheLoader;
import org.apache.shardingsphere.infra.parser.sql.SQLStatementParserExecutor;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -27,7 +27,7 @@ import javax.annotation.ParametersAreNonnullByDefault;
/**
* SQL statement cache loader.
*/
-public final class SQLStatementCacheLoader extends CacheLoader<String, SQLStatement> {
+public final class SQLStatementCacheLoader implements CacheLoader<String, SQLStatement> {
private final SQLStatementParserExecutor sqlStatementParserExecutor;
diff --git a/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngine.java b/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngine.java
index fbba2b8219a..1449105de25 100644
--- a/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngine.java
+++ b/shardingsphere-infra/shardingsphere-infra-parser/src/main/java/org/apache/shardingsphere/infra/parser/sql/SQLStatementParserEngine.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.parser.sql;
-import com.google.common.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.LoadingCache;
import org.apache.shardingsphere.infra.parser.cache.SQLStatementCacheBuilder;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -44,6 +44,6 @@ public final class SQLStatementParserEngine {
* @return SQL statement
*/
public SQLStatement parse(final String sql, final boolean useCache) {
- return useCache ? sqlStatementCache.getUnchecked(sql) : sqlStatementParserExecutor.parse(sql);
+ return useCache ? sqlStatementCache.get(sql) : sqlStatementParserExecutor.parse(sql);
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilderTest.java b/shardingsphere-infra/shardingsphere-infra-parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilderTest.java
index 3ec9fc1f7a8..085fb55936e 100644
--- a/shardingsphere-infra/shardingsphere-infra-parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilderTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-parser/src/test/java/org/apache/shardingsphere/infra/parser/cache/SQLStatementCacheBuilderTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.parser.cache;
-import com.google.common.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.LoadingCache;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.junit.Test;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/pom.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/pom.xml
index 38e3c17f7cf..90a2bef67f9 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/pom.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/pom.xml
@@ -38,10 +38,13 @@
<artifactId>shardingsphere-sql-parser-statement</artifactId>
<version>${project.version}</version>
</dependency>
-
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.github.ben-manes.caffeine</groupId>
+ <artifactId>caffeine</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngine.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngine.java
index 067f6bf675a..afcaa1ef218 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngine.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngine.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.sql.parser.api;
-import com.google.common.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.LoadingCache;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
import org.apache.shardingsphere.sql.parser.core.database.cache.ParseTreeCacheBuilder;
import org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor;
@@ -44,6 +44,6 @@ public final class SQLParserEngine {
* @return parse AST node
*/
public ParseASTNode parse(final String sql, final boolean useCache) {
- return useCache ? parseTreeCache.getUnchecked(sql) : sqlParserExecutor.parse(sql);
+ return useCache ? parseTreeCache.get(sql) : sqlParserExecutor.parse(sql);
}
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheBuilder.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheBuilder.java
index c90c7b01c23..4a7281bc4e0 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheBuilder.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheBuilder.java
@@ -17,8 +17,8 @@
package org.apache.shardingsphere.sql.parser.core.database.cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.LoadingCache;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
@@ -32,14 +32,13 @@ public final class ParseTreeCacheBuilder {
/**
* Build parse tree cache.
- *
+ *
* @param option cache option
* @param databaseType database type
* @return built parse tree cache
*/
public static LoadingCache<String, ParseASTNode> build(final CacheOption option, final String databaseType) {
- return CacheBuilder.newBuilder().softValues()
- .initialCapacity(option.getInitialCapacity()).maximumSize(option.getMaximumSize()).concurrencyLevel(option.getConcurrencyLevel())
+ return Caffeine.newBuilder().softValues().initialCapacity(option.getInitialCapacity()).maximumSize(option.getMaximumSize())
.build(new ParseTreeCacheLoader(databaseType));
}
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoader.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoader.java
index c02804b16b0..2725c3ac3ba 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoader.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoader.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.sql.parser.core.database.cache;
-import com.google.common.cache.CacheLoader;
+import com.github.benmanes.caffeine.cache.CacheLoader;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
import org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor;
@@ -26,7 +26,7 @@ import javax.annotation.ParametersAreNonnullByDefault;
/**
* Parse context cache loader.
*/
-public final class ParseTreeCacheLoader extends CacheLoader<String, ParseASTNode> {
+public final class ParseTreeCacheLoader implements CacheLoader<String, ParseASTNode> {
private final SQLParserExecutor sqlParserExecutor;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java
index dcfb3033a6d..a56817ba257 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java
@@ -17,9 +17,9 @@
package org.apache.shardingsphere.sql.parser.api;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.CacheLoader;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.LoadingCache;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
import org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor;
import org.junit.Test;
@@ -47,8 +47,8 @@ public final class SQLParserEngineTest {
sqlParserExecutorFiled.setAccessible(true);
parseTreeCacheField.setAccessible(true);
sqlParserExecutorFiled.set(sqlParserEngine, sqlParserExecutor);
- LoadingCache<String, ParseASTNode> parseTreeCache = CacheBuilder.newBuilder().softValues().initialCapacity(128)
- .maximumSize(1024).concurrencyLevel(4).build(new CacheLoader<String, ParseASTNode>() {
+ LoadingCache<String, ParseASTNode> parseTreeCache = Caffeine.newBuilder().softValues().initialCapacity(128)
+ .maximumSize(1024).build(new CacheLoader<String, ParseASTNode>() {
@ParametersAreNonnullByDefault
@Override
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/SQLParserEngineTest.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/SQLParserEngineTest.java
index 28cc14e039a..fffd0b5b1b0 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/SQLParserEngineTest.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/SQLParserEngineTest.java
@@ -17,9 +17,9 @@
package org.apache.shardingsphere.sql.parser.core;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.CacheLoader;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.LoadingCache;
import org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor;
import org.junit.Test;
@@ -36,8 +36,8 @@ public final class SQLParserEngineTest {
public void assertParse() {
SQLParserExecutor sqlParserExecutor = mock(SQLParserExecutor.class);
when(sqlParserExecutor.parse("")).thenReturn(mock(ParseASTNode.class));
- LoadingCache<String, ParseASTNode> parseTreeCache = CacheBuilder.newBuilder().softValues()
- .initialCapacity(128).maximumSize(1024).concurrencyLevel(4).build(new CacheLoader<String, ParseASTNode>() {
+ LoadingCache<String, ParseASTNode> parseTreeCache = Caffeine.newBuilder().softValues()
+ .initialCapacity(128).maximumSize(1024).build(new CacheLoader<String, ParseASTNode>() {
@ParametersAreNonnullByDefault
@Override
@@ -45,9 +45,9 @@ public final class SQLParserEngineTest {
return sqlParserExecutor.parse(sql);
}
});
- parseTreeCache.getUnchecked("");
+ parseTreeCache.get("");
verify(sqlParserExecutor, times(1)).parse("");
- parseTreeCache.getUnchecked("");
+ parseTreeCache.get("");
verify(sqlParserExecutor, times(1)).parse("");
sqlParserExecutor.parse("");
verify(sqlParserExecutor, times(2)).parse("");
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheBuilderTest.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheBuilderTest.java
index 02e07d8afc0..596ef16dc4f 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheBuilderTest.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheBuilderTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.sql.parser.core.database.cache;
-import com.google.common.cache.LoadingCache;
+import com.github.benmanes.caffeine.cache.LoadingCache;
import org.apache.shardingsphere.sql.parser.api.CacheOption;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
import org.junit.Test;