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

ppa 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 3f2abab425 IGNITE-21504 Sql. Fixed 
PlanningCacheMetricsTest.plannerCacheStatisticsTest flakiness (#3203)
3f2abab425 is described below

commit 3f2abab42558227053763db7bc3bbf4c4fe5e329
Author: Max Zhuravkov <shh...@gmail.com>
AuthorDate: Tue Feb 13 13:18:49 2024 +0200

    IGNITE-21504 Sql. Fixed PlanningCacheMetricsTest.plannerCacheStatisticsTest 
flakiness (#3203)
---
 .../sql/engine/util/cache/CaffeineCacheFactory.java  | 20 ++++++++++++++++++++
 .../sql/metrics/PlanningCacheMetricsTest.java        |  6 ++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/cache/CaffeineCacheFactory.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/cache/CaffeineCacheFactory.java
index 8376ff32b5..45c597ce64 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/cache/CaffeineCacheFactory.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/cache/CaffeineCacheFactory.java
@@ -20,11 +20,13 @@ package org.apache.ignite.internal.sql.engine.util.cache;
 import com.github.benmanes.caffeine.cache.Caffeine;
 import com.github.benmanes.caffeine.cache.RemovalCause;
 import com.github.benmanes.caffeine.cache.stats.CacheStats;
+import java.util.concurrent.Executor;
 import java.util.function.BiFunction;
 import java.util.function.Function;
 import java.util.function.Predicate;
 import org.checkerframework.checker.index.qual.NonNegative;
 import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.TestOnly;
 
 /**
  * Factory that creates caches backed by {@link Caffeine} cache.
@@ -32,7 +34,21 @@ import org.jetbrains.annotations.Nullable;
 public class CaffeineCacheFactory implements CacheFactory {
     public static final CacheFactory INSTANCE = new CaffeineCacheFactory();
 
+    @Nullable
+    private final Executor executor;
+
     private CaffeineCacheFactory() {
+        this(null);
+    }
+
+    private CaffeineCacheFactory(@Nullable Executor executor) {
+        this.executor = executor;
+    }
+
+    /** Creates a cache factory with the given executor for running auxiliary 
tasks. */
+    @TestOnly
+    public static CacheFactory create(Executor executor) {
+        return new CaffeineCacheFactory(executor);
     }
 
     /** {@inheritDoc} */
@@ -41,6 +57,10 @@ public class CaffeineCacheFactory implements CacheFactory {
         Caffeine<Object, Object> builder = Caffeine.newBuilder()
                 .maximumSize(size);
 
+        if (executor != null) {
+            builder.executor(executor);
+        }
+
         if (statCounter != null) {
             builder.recordStats(() -> new 
CaffeineStatsCounterAdapter(statCounter));
         }
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 95f5d0a51f..620a512b41 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
@@ -35,6 +35,7 @@ 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;
 import org.junit.jupiter.api.Test;
@@ -47,8 +48,9 @@ public class PlanningCacheMetricsTest extends 
AbstractPlannerTest {
     @Test
     public void plannerCacheStatisticsTest() throws Exception {
         MetricManager metricManager = new MetricManager();
-        PrepareService prepareService = new PrepareServiceImpl("test", 2, 
CaffeineCacheFactory.INSTANCE,
-                null, 15_000L, 2, metricManager);
+        // Run clean up tasks in the current thread, so no eviction event is 
delayed.
+        CacheFactory cacheFactory = CaffeineCacheFactory.create(Runnable::run);
+        PrepareService prepareService = new PrepareServiceImpl("test", 2, 
cacheFactory, null, 15_000L, 2, metricManager);
 
         prepareService.start();
 

Reply via email to