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 <77398366+longtai...@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;