This is an automated email from the ASF dual-hosted git repository.
korlov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 10d97f81d1 IGNITE-21887 Sql. Reuse caller thread if query already
prepared (#3525)
10d97f81d1 is described below
commit 10d97f81d157cd41d366750bce0c5e8246a26614
Author: korlov42 <[email protected]>
AuthorDate: Wed Apr 3 14:54:41 2024 +0300
IGNITE-21887 Sql. Reuse caller thread if query already prepared (#3525)
---
.../ignite/internal/benchmark/InsertBenchmark.java | 2 +-
.../internal/sql/engine/SqlQueryProcessor.java | 59 ++++-----
.../internal/sql/engine/sql/ParserServiceImpl.java | 27 ----
.../engine/benchmarks/TpchPrepareBenchmark.java | 3 +-
.../sql/engine/exec/ExecutionServiceImplTest.java | 2 +-
.../sql/engine/framework/TestBuilders.java | 2 +-
.../sql/engine/planner/PlannerTimeoutTest.java | 3 +-
.../sql/engine/prepare/PrepareServiceImplTest.java | 3 +-
.../sql/engine/sql/ParserServiceImplTest.java | 141 ++-------------------
.../sql/metrics/PlanningCacheMetricsTest.java | 3 +-
.../ignite/internal/worker/ThreadAssertions.java | 14 +-
11 files changed, 48 insertions(+), 211 deletions(-)
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/InsertBenchmark.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/InsertBenchmark.java
index b711c95aa3..5787c87c56 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/InsertBenchmark.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/InsertBenchmark.java
@@ -55,7 +55,7 @@ import org.openjdk.jmh.runner.options.OptionsBuilder;
* Benchmark for insertion operation, comparing KV, JDBC and SQL APIs.
*/
@State(Scope.Benchmark)
-@Fork(3)
+@Fork(1)
@Threads(1)
@Warmup(iterations = 10, time = 2)
@Measurement(iterations = 20, time = 2)
diff --git
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
index 6ba2c4f055..686c892bab 100644
---
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
+++
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
@@ -45,7 +45,6 @@ import java.util.Queue;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
@@ -116,6 +115,7 @@ import
org.apache.ignite.internal.sql.engine.tx.QueryTransactionWrapper;
import org.apache.ignite.internal.sql.engine.tx.ScriptTransactionContext;
import org.apache.ignite.internal.sql.engine.util.BaseQueryContext;
import org.apache.ignite.internal.sql.engine.util.TypeUtils;
+import org.apache.ignite.internal.sql.engine.util.cache.Cache;
import org.apache.ignite.internal.sql.engine.util.cache.CacheFactory;
import org.apache.ignite.internal.sql.engine.util.cache.CaffeineCacheFactory;
import org.apache.ignite.internal.sql.metrics.SqlClientMetricSource;
@@ -170,9 +170,8 @@ public class SqlQueryProcessor implements QueryProcessor {
private static final long EXECUTION_SERVICE_SHUTDOWN_TIMEOUT = 60_000;
- private final ParserService parserService = new ParserServiceImpl(
- PARSED_RESULT_CACHE_SIZE, CACHE_FACTORY
- );
+ private final ParserService parserService = new ParserServiceImpl();
+ private final Cache<String, ParsedResult> queryToParsedResultCache =
CACHE_FACTORY.create(PARSED_RESULT_CACHE_SIZE);
private static final ResultSetMetadata EMPTY_RESULT_SET_METADATA =
new ResultSetMetadataImpl(Collections.emptyList());
@@ -536,11 +535,13 @@ public class SqlQueryProcessor implements QueryProcessor {
QueryCancel queryCancel = new QueryCancel();
- CompletableFuture<Void> start = new CompletableFuture<>();
+ ParsedResult parsedResult = queryToParsedResultCache.get(sql);
- CompletableFuture<QueryMetadata> stage = start.thenCompose(ignored -> {
- ParsedResult result = parserService.parse(sql);
+ CompletableFuture<ParsedResult> start = parsedResult != null
+ ? completedFuture(parsedResult)
+ : CompletableFuture.supplyAsync(() -> parseAndCache(sql),
taskExecutor);
+ return start.thenCompose(result -> {
validateParsedStatement(properties0, result);
validateDynamicParameters(result.dynamicParamsCount(), params,
false);
@@ -549,17 +550,6 @@ public class SqlQueryProcessor implements QueryProcessor {
return prepareParsedStatement(schemaName, result, timestamp,
queryCancel, params)
.thenApply(plan -> new QueryMetadata(plan.metadata(),
plan.parameterMetadata()));
});
-
- // TODO IGNITE-20078 Improve (or remove) CancellationException
handling.
- stage.whenComplete((cur, ex) -> {
- if (ex instanceof CancellationException) {
- queryCancel.cancel();
- }
- });
-
- start.completeAsync(() -> null, taskExecutor);
-
- return stage;
}
private CompletableFuture<AsyncSqlCursor<InternalSqlRow>> querySingle0(
@@ -574,11 +564,13 @@ public class SqlQueryProcessor implements QueryProcessor {
QueryCancel queryCancel = new QueryCancel();
- CompletableFuture<Void> start = new CompletableFuture<>();
+ ParsedResult parsedResult = queryToParsedResultCache.get(sql);
- CompletableFuture<AsyncSqlCursor<InternalSqlRow>> stage =
start.thenCompose(ignored -> {
- ParsedResult result = parserService.parse(sql);
+ CompletableFuture<ParsedResult> start = parsedResult != null
+ ? completedFuture(parsedResult)
+ : CompletableFuture.supplyAsync(() -> parseAndCache(sql),
taskExecutor);
+ return start.thenCompose(result -> {
validateParsedStatement(properties0, result);
validateDynamicParameters(result.dynamicParamsCount(), params,
true);
@@ -606,17 +598,6 @@ public class SqlQueryProcessor implements QueryProcessor {
return executionResult;
});
});
-
- // TODO IGNITE-20078 Improve (or remove) CancellationException
handling.
- stage.whenComplete((cur, ex) -> {
- if (ex instanceof CancellationException) {
- queryCancel.cancel();
- }
- });
-
- start.completeAsync(() -> null, taskExecutor);
-
- return stage;
}
private CompletableFuture<AsyncSqlCursor<InternalSqlRow>> queryScript0(
@@ -812,6 +793,20 @@ public class SqlQueryProcessor implements QueryProcessor {
}
}
+ private static boolean shouldBeCached(SqlQueryType queryType) {
+ return queryType == SqlQueryType.QUERY || queryType ==
SqlQueryType.DML;
+ }
+
+ private ParsedResult parseAndCache(String sql) {
+ ParsedResult result = parserService.parse(sql);
+
+ if (shouldBeCached(result.queryType())) {
+ queryToParsedResultCache.put(sql, result);
+ }
+
+ return result;
+ }
+
/** Returns count of opened cursors. */
@TestOnly
public int openedCursors() {
diff --git
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/sql/ParserServiceImpl.java
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/sql/ParserServiceImpl.java
index dffc207e03..98ed99c9cb 100644
---
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/sql/ParserServiceImpl.java
+++
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/sql/ParserServiceImpl.java
@@ -26,8 +26,6 @@ import org.apache.calcite.sql.dialect.AnsiSqlDialect;
import org.apache.calcite.sql.pretty.SqlPrettyWriter;
import org.apache.ignite.internal.sql.engine.SqlQueryType;
import org.apache.ignite.internal.sql.engine.util.Commons;
-import org.apache.ignite.internal.sql.engine.util.cache.Cache;
-import org.apache.ignite.internal.sql.engine.util.cache.CacheFactory;
/**
* An implementation of {@link ParserService} that, apart of parsing,
introduces cache of parsed results.
@@ -42,26 +40,9 @@ public class ParserServiceImpl implements ParserService {
.withUpdateSetListNewline(false)
.withIndentation(0);
- private final Cache<String, ParsedResult> queryToParsedResultCache;
-
- /**
- * Constructs the object.
- *
- * @param cacheFactory A factory to create cache for parsed results.
- */
- public ParserServiceImpl(int cacheSize, CacheFactory cacheFactory) {
- this.queryToParsedResultCache = cacheFactory.create(cacheSize);
- }
-
/** {@inheritDoc} */
@Override
public ParsedResult parse(String query) {
- ParsedResult cachedResult = queryToParsedResultCache.get(query);
-
- if (cachedResult != null) {
- return cachedResult;
- }
-
StatementParseResult parsedStatement = IgniteSqlParser.parse(query,
StatementParseResult.MODE);
SqlNode parsedTree = parsedStatement.statement();
@@ -82,10 +63,6 @@ public class ParserServiceImpl implements ParserService {
() -> IgniteSqlParser.parse(query,
StatementParseResult.MODE).statement()
);
- if (shouldBeCached(queryType)) {
- queryToParsedResultCache.put(query, result);
- }
-
return result;
}
@@ -165,8 +142,4 @@ public class ParserServiceImpl implements ParserService {
return parsedTreeSupplier.get();
}
}
-
- private static boolean shouldBeCached(SqlQueryType queryType) {
- return queryType == SqlQueryType.QUERY || queryType ==
SqlQueryType.DML;
- }
}
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/benchmarks/TpchPrepareBenchmark.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/benchmarks/TpchPrepareBenchmark.java
index 756adcc9ca..9826800850 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/benchmarks/TpchPrepareBenchmark.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/benchmarks/TpchPrepareBenchmark.java
@@ -23,7 +23,6 @@ import
org.apache.ignite.internal.sql.engine.framework.TestCluster;
import org.apache.ignite.internal.sql.engine.framework.TestNode;
import org.apache.ignite.internal.sql.engine.sql.ParsedResult;
import org.apache.ignite.internal.sql.engine.sql.ParserServiceImpl;
-import org.apache.ignite.internal.sql.engine.util.EmptyCacheFactory;
import org.apache.ignite.internal.sql.engine.util.tpch.TpchHelper;
import org.apache.ignite.internal.sql.engine.util.tpch.TpchTables;
import org.openjdk.jmh.annotations.Benchmark;
@@ -83,7 +82,7 @@ public class TpchPrepareBenchmark {
}
String query = TpchHelper.getQuery(queryId);
- parsedResult = new ParserServiceImpl(0,
EmptyCacheFactory.INSTANCE).parse(query);
+ parsedResult = new ParserServiceImpl().parse(query);
}
/** Stops the cluster. */
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java
index 80c96a9992..de88550306 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java
@@ -193,7 +193,7 @@ public class ExecutionServiceImplTest extends
BaseIgniteAbstractTest {
executionServices =
nodeNames.stream().map(this::create).collect(Collectors.toList());
prepareService = new PrepareServiceImpl("test", 0,
CaffeineCacheFactory.INSTANCE, null, PLANNING_TIMEOUT, PLANNING_THREAD_COUNT,
new MetricManager());
- parserService = new ParserServiceImpl(0, EmptyCacheFactory.INSTANCE);
+ parserService = new ParserServiceImpl();
prepareService.start();
}
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java
index 984c1b4ee9..6c224e33f2 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java
@@ -619,7 +619,7 @@ public class TestBuilders {
HybridClock clock = new HybridClockImpl();
CatalogManager catalogManager =
CatalogTestUtils.createCatalogManagerWithTestUpdateLog(clusterName, clock);
- var parserService = new ParserServiceImpl(0,
EmptyCacheFactory.INSTANCE);
+ var parserService = new ParserServiceImpl();
var prepareService = new PrepareServiceImpl(clusterName, 0,
CaffeineCacheFactory.INSTANCE,
new DdlSqlToCommandConverter(Map.of(), () -> "aipersist"),
PLANNING_TIMEOUT, PLANNING_THREAD_COUNT,
mock(MetricManager.class));
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTimeoutTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTimeoutTest.java
index 294b8bb671..035fdb0a83 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTimeoutTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTimeoutTest.java
@@ -47,7 +47,6 @@ import org.apache.ignite.internal.sql.engine.sql.ParsedResult;
import org.apache.ignite.internal.sql.engine.sql.ParserService;
import org.apache.ignite.internal.sql.engine.sql.ParserServiceImpl;
import org.apache.ignite.internal.sql.engine.util.BaseQueryContext;
-import org.apache.ignite.internal.sql.engine.util.EmptyCacheFactory;
import org.apache.ignite.internal.sql.engine.util.SqlTestUtils;
import org.apache.ignite.internal.sql.engine.util.cache.CaffeineCacheFactory;
import org.apache.ignite.internal.type.NativeTypes;
@@ -69,7 +68,7 @@ public class PlannerTimeoutTest extends AbstractPlannerTest {
CaffeineCacheFactory.INSTANCE, null, plannerTimeout, 1, new
MetricManager());
prepareService.start();
try {
- ParserService parserService = new ParserServiceImpl(0,
EmptyCacheFactory.INSTANCE);
+ ParserService parserService = new ParserServiceImpl();
ParsedResult parsedResult = parserService.parse("SELECT * FROM T1
t, T1 t1, T1 t2, T1 t3");
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImplTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImplTest.java
index bd1760cdfc..0546995ff2 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImplTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/PrepareServiceImplTest.java
@@ -45,7 +45,6 @@ import org.apache.ignite.internal.sql.engine.sql.ParsedResult;
import org.apache.ignite.internal.sql.engine.sql.ParserServiceImpl;
import org.apache.ignite.internal.sql.engine.trait.IgniteDistributions;
import org.apache.ignite.internal.sql.engine.util.BaseQueryContext;
-import org.apache.ignite.internal.sql.engine.util.EmptyCacheFactory;
import org.apache.ignite.internal.sql.engine.util.SqlTestUtils;
import org.apache.ignite.internal.sql.engine.util.cache.CaffeineCacheFactory;
import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
@@ -246,7 +245,7 @@ public class PrepareServiceImplTest extends
BaseIgniteAbstractTest {
}
private static ParsedResult parse(String query) {
- return new ParserServiceImpl(0,
EmptyCacheFactory.INSTANCE).parse(query);
+ return new ParserServiceImpl().parse(query);
}
private static BaseQueryContext createContext(Object... params) {
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/sql/ParserServiceImplTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/sql/ParserServiceImplTest.java
index 44f207b1c7..38f9e0bb4c 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/sql/ParserServiceImplTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/sql/ParserServiceImplTest.java
@@ -24,22 +24,12 @@ import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.jupiter.api.Assertions.assertNotSame;
-import static org.junit.jupiter.api.Assertions.assertSame;
import java.util.List;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import java.util.function.Predicate;
import org.apache.calcite.sql.SqlNode;
import org.apache.ignite.internal.lang.IgniteStringBuilder;
import org.apache.ignite.internal.sql.engine.SqlQueryType;
-import org.apache.ignite.internal.sql.engine.util.EmptyCacheFactory;
-import org.apache.ignite.internal.sql.engine.util.cache.Cache;
-import org.apache.ignite.internal.sql.engine.util.cache.CacheFactory;
-import org.apache.ignite.internal.sql.engine.util.cache.CaffeineCacheFactory;
-import org.apache.ignite.internal.sql.engine.util.cache.StatsCounter;
import org.apache.ignite.lang.ErrorGroups.Sql;
-import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
@@ -49,54 +39,25 @@ import org.junit.jupiter.params.provider.EnumSource;
*/
public class ParserServiceImplTest {
enum Statement {
- QUERY("SELECT * FROM my_table", SqlQueryType.QUERY, true),
- DML("INSERT INTO my_table VALUES (1, 1)", SqlQueryType.DML, true),
- DDL("CREATE TABLE my_table (id INT PRIMARY KEY, avl INT)",
SqlQueryType.DDL, false),
- EXPLAIN_QUERY("EXPLAIN PLAN FOR SELECT * FROM my_table",
SqlQueryType.EXPLAIN, false),
- EXPLAIN_DML("EXPLAIN PLAN FOR INSERT INTO my_table VALUES (1, 1)",
SqlQueryType.EXPLAIN, false);
+ QUERY("SELECT * FROM my_table", SqlQueryType.QUERY),
+ DML("INSERT INTO my_table VALUES (1, 1)", SqlQueryType.DML),
+ DDL("CREATE TABLE my_table (id INT PRIMARY KEY, avl INT)",
SqlQueryType.DDL),
+ EXPLAIN_QUERY("EXPLAIN PLAN FOR SELECT * FROM my_table",
SqlQueryType.EXPLAIN),
+ EXPLAIN_DML("EXPLAIN PLAN FOR INSERT INTO my_table VALUES (1, 1)",
SqlQueryType.EXPLAIN);
private final String text;
private final SqlQueryType type;
- private final boolean cacheable;
- Statement(String text, SqlQueryType type, boolean cacheable) {
+ Statement(String text, SqlQueryType type) {
this.text = text;
this.type = type;
- this.cacheable = cacheable;
- }
- }
-
- @ParameterizedTest
- @EnumSource(Statement.class)
- void serviceAlwaysReturnsResultFromCacheIfPresent(Statement statement) {
- ParsedResult expected = new DummyParsedResults();
-
- ParsedResult actual = new ParserServiceImpl(0, new
SameObjectCacheFactory(expected)).parse(statement.text);
-
- assertSame(actual, expected);
- }
-
- @ParameterizedTest
- @EnumSource(Statement.class)
- void serviceCachesOnlyCertainStatements(Statement statement) {
- ParserServiceImpl service = new ParserServiceImpl(
- Statement.values().length, CaffeineCacheFactory.INSTANCE
- );
-
- ParsedResult firstResult = service.parse(statement.text);
- ParsedResult secondResult = service.parse(statement.text);
-
- if (statement.cacheable) {
- assertSame(firstResult, secondResult);
- } else {
- assertNotSame(firstResult, secondResult);
}
}
@ParameterizedTest
@EnumSource(Statement.class)
void serviceReturnsResultOfExpectedType(Statement statement) {
- ParserServiceImpl service = new ParserServiceImpl(0,
EmptyCacheFactory.INSTANCE);
+ ParserServiceImpl service = new ParserServiceImpl();
ParsedResult result = service.parse(statement.text);
@@ -106,7 +67,7 @@ public class ParserServiceImplTest {
@ParameterizedTest
@EnumSource(Statement.class)
void resultReturnedByServiceCreateNewInstanceOfTree(Statement statement) {
- ParserServiceImpl service = new ParserServiceImpl(0,
EmptyCacheFactory.INSTANCE);
+ ParserServiceImpl service = new ParserServiceImpl();
ParsedResult result = service.parse(statement.text);
@@ -128,7 +89,7 @@ public class ParserServiceImplTest {
*/
@Test
void parseMultiStatementQuery() {
- ParserService service = new ParserServiceImpl(0,
EmptyCacheFactory.INSTANCE);
+ ParserService service = new ParserServiceImpl();
List<Statement> statements = List.of(Statement.values());
IgniteStringBuilder buf = new IgniteStringBuilder();
@@ -160,88 +121,4 @@ public class ParserServiceImplTest {
assertThat(result.originalQuery(),
equalTo(singleStatementResult.normalizedQuery()));
}
}
-
- /**
- * Parsed result that throws {@link AssertionError} on every method call.
- *
- * <p>Used in cases where you need to verify referential equality.
- */
- private static class DummyParsedResults implements ParsedResult {
-
- @Override
- public SqlQueryType queryType() {
- throw new AssertionError();
- }
-
- @Override
- public String originalQuery() {
- throw new AssertionError();
- }
-
- @Override
- public String normalizedQuery() {
- throw new AssertionError();
- }
-
- @Override
- public int dynamicParamsCount() {
- throw new AssertionError();
- }
-
- @Override
- public SqlNode parsedTree() {
- throw new AssertionError();
- }
- }
-
- /**
- * A factory that creates a cache that always return value passed to the
constructor of factory.
- */
- private static class SameObjectCacheFactory implements CacheFactory {
- private final Object object;
-
- private SameObjectCacheFactory(Object object) {
- this.object = object;
- }
-
- @Override
- public <K, V> Cache<K, V> create(int size) {
- return new Cache<>() {
- @Override
- public @Nullable V get(K key) {
- return (V) object;
- }
-
- @Override
- public V get(K key, Function<? super K, ? extends V>
mappingFunction) {
- return (V) object;
- }
-
- @Override
- public void put(K key, V value) {
- // NO-OP
- }
-
- @Override
- public void clear() {
- // NO-OP
- }
-
- @Override
- public V compute(K key, BiFunction<? super K, ? super V, ?
extends V> remappingFunction) {
- return (V) object;
- }
-
- @Override
- public void removeIfValue(Predicate<? super V> valueFilter) {
- // NO-OP.
- }
- };
- }
-
- @Override
- public <K, V> Cache<K, V> create(int size, StatsCounter statCounter) {
- return create(size);
- }
- }
}
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/metrics/PlanningCacheMetricsTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/metrics/PlanningCacheMetricsTest.java
index c9f6ffd4c1..b57a2f9f20 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/metrics/PlanningCacheMetricsTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/metrics/PlanningCacheMetricsTest.java
@@ -34,7 +34,6 @@ import
org.apache.ignite.internal.sql.engine.sql.ParserService;
import org.apache.ignite.internal.sql.engine.sql.ParserServiceImpl;
import org.apache.ignite.internal.sql.engine.trait.IgniteDistributions;
import org.apache.ignite.internal.sql.engine.util.BaseQueryContext;
-import org.apache.ignite.internal.sql.engine.util.EmptyCacheFactory;
import org.apache.ignite.internal.sql.engine.util.cache.CacheFactory;
import org.apache.ignite.internal.sql.engine.util.cache.CaffeineCacheFactory;
import org.apache.ignite.internal.type.NativeTypes;
@@ -87,7 +86,7 @@ public class PlanningCacheMetricsTest extends
AbstractPlannerTest {
IgniteSchema schema = createSchema(table);
BaseQueryContext ctx =
baseQueryContext(Collections.singletonList(schema), null);
- ParserService parserService = new ParserServiceImpl(0,
EmptyCacheFactory.INSTANCE);
+ ParserService parserService = new ParserServiceImpl();
ParsedResult parsedResult = parserService.parse(qry);
await(prepareService.prepareAsync(parsedResult, ctx));
diff --git
a/modules/workers/src/main/java/org/apache/ignite/internal/worker/ThreadAssertions.java
b/modules/workers/src/main/java/org/apache/ignite/internal/worker/ThreadAssertions.java
index 0fda9ac55c..928d3445d3 100644
---
a/modules/workers/src/main/java/org/apache/ignite/internal/worker/ThreadAssertions.java
+++
b/modules/workers/src/main/java/org/apache/ignite/internal/worker/ThreadAssertions.java
@@ -19,7 +19,7 @@ package org.apache.ignite.internal.worker;
import static
org.apache.ignite.internal.lang.IgniteSystemProperties.THREAD_ASSERTIONS_ENABLED;
-import java.util.Set;
+import java.util.regex.Pattern;
import org.apache.ignite.internal.lang.IgniteSystemProperties;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
@@ -32,13 +32,9 @@ import org.apache.ignite.internal.thread.ThreadOperation;
public class ThreadAssertions {
private static final IgniteLogger LOG =
Loggers.forClass(ThreadAssertions.class);
- /** Names of theads on which the assertions are skipped. */
- private static final Set<String> BLACKLISTED_THREAD_NAMES = Set.of(
- "main",
- // JUnit worker thread name
- "Test worker",
- // Awaitility
- "awaitility-thread"
+ /** Names of threads on which the assertions are skipped. */
+ private static final Pattern BLACKLISTED_THREAD_NAMES = Pattern.compile(
+ "(^main$|^Test
worker$|^junit-timeout-thread.*|^awaitility-thread$)"
);
/**
@@ -68,7 +64,7 @@ public class ThreadAssertions {
public static void assertThreadAllowsTo(ThreadOperation
requestedOperation) {
Thread currentThread = Thread.currentThread();
- if (BLACKLISTED_THREAD_NAMES.contains(currentThread.getName())) {
+ if
(BLACKLISTED_THREAD_NAMES.matcher(currentThread.getName()).matches()) {
return;
}