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

tkalkirill pushed a commit to branch ignite-23774
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 144b63d865d8493b092363c774f1a0ccfb2b012d
Author: Kirill Tkalenko <[email protected]>
AuthorDate: Tue Nov 26 10:56:30 2024 +0300

    IGNITE-23774 wip
---
 .../replicator/ItReplicaLifecycleTest.java         |  3 ++-
 .../runner/app/ItIgniteNodeRestartTest.java        |  3 ++-
 .../org/apache/ignite/internal/app/IgniteImpl.java |  3 ++-
 .../ignite/internal/storage/DataStorageModule.java |  6 ++++-
 .../internal/storage/DataStorageModules.java       |  9 +++++--
 .../internal/storage/DataStorageModulesTest.java   |  6 +++--
 .../storage/impl/TestDataStorageModule.java        |  4 +++-
 .../PersistentPageMemoryDataStorageModule.java     |  4 +++-
 .../VolatilePageMemoryDataStorageModule.java       |  4 +++-
 .../storage/rocksdb/RocksDbDataStorageModule.java  |  6 +++--
 .../storage/rocksdb/RocksDbStorageEngine.java      | 28 ++++++++++++----------
 .../RocksDbMvPartitionStorageConcurrencyTest.java  | 10 ++++++--
 .../rocksdb/RocksDbMvPartitionStorageGcTest.java   | 10 ++++++--
 .../rocksdb/RocksDbMvPartitionStorageTest.java     | 10 ++++++--
 .../storage/rocksdb/RocksDbMvTableStorageTest.java | 10 ++++++--
 .../benchmarks/CommitManyWritesBenchmark.java      | 20 ++++++++++++----
 .../rocksdb/engine/RocksDbStorageEngineTest.java   | 10 +++++++-
 .../rocksdb/index/RocksDbHashIndexStorageTest.java |  8 +++++--
 .../index/RocksDbSortedIndexStorageTest.java       | 10 ++++++--
 .../instance/SharedRocksDbInstanceTest.java        | 10 ++++++--
 .../rebalance/ItRebalanceDistributedTest.java      |  3 ++-
 .../distributed/TableManagerRecoveryTest.java      | 14 +++++++----
 .../table/distributed/TableManagerTest.java        |  3 ++-
 .../distributed/gc/RocksDbGcUpdateHandlerTest.java | 10 +++++++-
 24 files changed, 151 insertions(+), 53 deletions(-)

diff --git 
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItReplicaLifecycleTest.java
 
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItReplicaLifecycleTest.java
index 9ed084a886..87f2cfe481 100644
--- 
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItReplicaLifecycleTest.java
+++ 
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItReplicaLifecycleTest.java
@@ -1207,7 +1207,8 @@ public class ItReplicaLifecycleTest extends 
BaseIgniteAbstractTest {
                             null,
                             failureManager,
                             partitionsLogStorageFactory,
-                            hybridClock
+                            hybridClock,
+                            scheduledExecutorService
                     ),
                     storageConfiguration
             );
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
index 12853efd04..c80654af90 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
@@ -650,7 +650,8 @@ public class ItIgniteNodeRestartTest extends 
BaseIgniteRestartTest {
                         null,
                         failureProcessor,
                         partitionsLogStorageFactory,
-                        hybridClock
+                        hybridClock,
+                        scheduledExecutorService
                 ),
                 storageConfiguration
         );
diff --git 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
index 6f9b864f7b..5079068fb9 100644
--- 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
+++ 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
@@ -843,7 +843,8 @@ public class IgniteImpl implements Ignite {
                 longJvmPauseDetector,
                 failureManager,
                 partitionsLogStorageFactory,
-                clock
+                clock,
+                threadPoolsManager.commonScheduler()
         );
 
         dataStorageMgr = new DataStorageManager(
diff --git 
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModule.java
 
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModule.java
index eabb8c5831..703c720111 100644
--- 
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModule.java
+++ 
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModule.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.storage;
 
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import org.apache.ignite.internal.components.LongJvmPauseDetector;
 import org.apache.ignite.internal.configuration.ConfigurationRegistry;
@@ -48,6 +49,8 @@ public interface DataStorageModule {
      * @param failureManager Failure processor that is used to handle critical 
errors.
      * @param logSyncer Write-ahead log synchronizer.
      * @param clock Hybrid Logical Clock.
+     * @param commonScheduler Common scheduled thread pool. Needed only for 
asynchronous start of scheduled operations without performing
+     *      blocking, long or IO operations.
      * @throws StorageException If there is an error when creating the storage 
engine.
      */
     StorageEngine createEngine(
@@ -57,6 +60,7 @@ public interface DataStorageModule {
             @Nullable LongJvmPauseDetector longJvmPauseDetector,
             FailureManager failureManager,
             LogSyncer logSyncer,
-            HybridClock clock
+            HybridClock clock,
+            ScheduledExecutorService commonScheduler
     ) throws StorageException;
 }
diff --git 
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModules.java
 
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModules.java
index 566cc01534..20e8c1d2d7 100644
--- 
a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModules.java
+++ 
b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/DataStorageModules.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import org.apache.ignite.internal.components.LongJvmPauseDetector;
 import org.apache.ignite.internal.configuration.ConfigurationRegistry;
@@ -79,6 +80,8 @@ public class DataStorageModules {
      * @param failureManager Failure processor that is used to handle critical 
errors.
      * @param logSyncer Write-ahead log synchronizer.
      * @param clock Hybrid Logical Clock.
+     * @param commonScheduler Common scheduled thread pool. Needed only for 
asynchronous start of scheduled operations without performing
+     *      blocking, long or IO operations.
      * @throws StorageException If there is an error when creating the storage 
engines.
      */
     public Map<String, StorageEngine> createStorageEngines(
@@ -88,7 +91,8 @@ public class DataStorageModules {
             @Nullable LongJvmPauseDetector longJvmPauseDetector,
             FailureManager failureManager,
             LogSyncer logSyncer,
-            HybridClock clock
+            HybridClock clock,
+            ScheduledExecutorService commonScheduler
     ) {
         return modules.entrySet().stream().collect(toUnmodifiableMap(
                 Entry::getKey,
@@ -99,7 +103,8 @@ public class DataStorageModules {
                         longJvmPauseDetector,
                         failureManager,
                         logSyncer,
-                        clock
+                        clock,
+                        commonScheduler
                 )
         ));
     }
diff --git 
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/DataStorageModulesTest.java
 
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/DataStorageModulesTest.java
index 6843c2c7b0..9bbca98b54 100644
--- 
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/DataStorageModulesTest.java
+++ 
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/DataStorageModulesTest.java
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.when;
 import java.nio.file.Path;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import org.apache.ignite.internal.configuration.ConfigurationRegistry;
 import org.apache.ignite.internal.failure.FailureManager;
@@ -82,7 +83,8 @@ public class DataStorageModulesTest extends 
BaseIgniteAbstractTest {
                 null,
                 mock(FailureManager.class),
                 mock(LogSyncer.class),
-                mock(HybridClock.class)
+                mock(HybridClock.class),
+                mock(ScheduledExecutorService.class)
         );
 
         assertThat(engines, aMapWithSize(2));
@@ -98,7 +100,7 @@ public class DataStorageModulesTest extends 
BaseIgniteAbstractTest {
 
         when(mock.name()).thenReturn(name);
 
-        when(mock.createEngine(any(), any(), any(), any(), any(), any(), 
any())).thenReturn(mock(StorageEngine.class));
+        when(mock.createEngine(any(), any(), any(), any(), any(), any(), 
any(), any())).thenReturn(mock(StorageEngine.class));
 
         return mock;
     }
diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/impl/TestDataStorageModule.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/impl/TestDataStorageModule.java
index 929ff8a721..44900702c8 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/impl/TestDataStorageModule.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/impl/TestDataStorageModule.java
@@ -21,6 +21,7 @@ import static 
org.apache.ignite.internal.storage.impl.TestStorageEngine.ENGINE_N
 
 import com.google.auto.service.AutoService;
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import org.apache.ignite.internal.components.LongJvmPauseDetector;
 import org.apache.ignite.internal.configuration.ConfigurationRegistry;
@@ -49,7 +50,8 @@ public class TestDataStorageModule implements 
DataStorageModule {
             @Nullable LongJvmPauseDetector longJvmPauseDetector,
             FailureManager failureManager,
             LogSyncer logSyncer,
-            HybridClock clock
+            HybridClock clock,
+            ScheduledExecutorService commonScheduler
     ) throws StorageException {
         return new TestStorageEngine();
     }
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryDataStorageModule.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryDataStorageModule.java
index b1115505a5..0c46305a0a 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryDataStorageModule.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryDataStorageModule.java
@@ -21,6 +21,7 @@ import static 
org.apache.ignite.internal.storage.pagememory.PersistentPageMemory
 
 import com.google.auto.service.AutoService;
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import org.apache.ignite.internal.components.LongJvmPauseDetector;
 import org.apache.ignite.internal.configuration.ConfigurationRegistry;
@@ -54,7 +55,8 @@ public class PersistentPageMemoryDataStorageModule implements 
DataStorageModule
             @Nullable LongJvmPauseDetector longJvmPauseDetector,
             FailureManager failureManager,
             LogSyncer logSyncer,
-            HybridClock clock
+            HybridClock clock,
+            ScheduledExecutorService commonScheduler
     ) throws StorageException {
         StorageConfiguration storageConfig = 
configRegistry.getConfiguration(StorageExtensionConfiguration.KEY).storage();
 
diff --git 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataStorageModule.java
 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataStorageModule.java
index 09a04b9887..1bb178ccf4 100644
--- 
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataStorageModule.java
+++ 
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataStorageModule.java
@@ -21,6 +21,7 @@ import static 
org.apache.ignite.internal.storage.pagememory.VolatilePageMemorySt
 
 import com.google.auto.service.AutoService;
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import org.apache.ignite.internal.components.LongJvmPauseDetector;
 import org.apache.ignite.internal.configuration.ConfigurationRegistry;
@@ -54,7 +55,8 @@ public class VolatilePageMemoryDataStorageModule implements 
DataStorageModule {
             @Nullable LongJvmPauseDetector longJvmPauseDetector,
             FailureManager failureManager,
             LogSyncer logSyncer,
-            HybridClock clock
+            HybridClock clock,
+            ScheduledExecutorService commonScheduler
     ) throws StorageException {
         StorageConfiguration storageConfig = 
configRegistry.getConfiguration(StorageExtensionConfiguration.KEY).storage();
 
diff --git 
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbDataStorageModule.java
 
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbDataStorageModule.java
index abc6c5ca52..c6ffb00fb7 100644
--- 
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbDataStorageModule.java
+++ 
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbDataStorageModule.java
@@ -21,6 +21,7 @@ import static 
org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine.EN
 
 import com.google.auto.service.AutoService;
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import org.apache.ignite.internal.components.LongJvmPauseDetector;
 import org.apache.ignite.internal.configuration.ConfigurationRegistry;
@@ -53,13 +54,14 @@ public class RocksDbDataStorageModule implements 
DataStorageModule {
             @Nullable LongJvmPauseDetector longJvmPauseDetector,
             FailureManager failureManager,
             LogSyncer logSyncer,
-            HybridClock clock
+            HybridClock clock,
+            ScheduledExecutorService commonScheduler
     ) throws StorageException {
         StorageConfiguration storageConfig = 
configRegistry.getConfiguration(StorageExtensionConfiguration.KEY).storage();
         RocksDbStorageEngineConfiguration engineConfig = 
((RocksDbStorageEngineExtensionConfiguration) 
storageConfig.engines()).rocksdb();
 
         assert engineConfig != null;
 
-        return new RocksDbStorageEngine(igniteInstanceName, engineConfig, 
storageConfig, storagePath, logSyncer);
+        return new RocksDbStorageEngine(igniteInstanceName, engineConfig, 
storageConfig, storagePath, logSyncer, commonScheduler);
     }
 }
diff --git 
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
 
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
index 75003c9327..5b6aaafc4b 100644
--- 
a/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
+++ 
b/modules/storage-rocksdb/src/main/java/org/apache/ignite/internal/storage/rocksdb/RocksDbStorageEngine.java
@@ -17,6 +17,10 @@
 
 package org.apache.ignite.internal.storage.rocksdb;
 
+import static org.apache.ignite.internal.util.IgniteUtils.closeAll;
+import static org.apache.ignite.internal.util.IgniteUtils.closeAllManually;
+import static 
org.apache.ignite.internal.util.IgniteUtils.shutdownAndAwaitTermination;
+
 import java.nio.file.Path;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -39,7 +43,6 @@ import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbSt
 import 
org.apache.ignite.internal.storage.rocksdb.instance.SharedRocksDbInstance;
 import 
org.apache.ignite.internal.storage.rocksdb.instance.SharedRocksDbInstanceCreator;
 import org.apache.ignite.internal.thread.NamedThreadFactory;
-import org.apache.ignite.internal.util.IgniteUtils;
 import org.rocksdb.RocksDB;
 
 /**
@@ -63,7 +66,7 @@ public class RocksDbStorageEngine implements StorageEngine {
 
         @Override
         public void close() throws Exception {
-            IgniteUtils.closeAllManually(rocksDbInstance::stop, profile::stop);
+            closeAllManually(rocksDbInstance::stop, profile::stop);
         }
     }
 
@@ -96,27 +99,27 @@ public class RocksDbStorageEngine implements StorageEngine {
      * @param storageConfiguration Storage configuration.
      * @param storagePath Storage path.
      * @param logSyncer Write-ahead log synchronizer.
+     * @param scheduledPool Common scheduled thread pool. Needed only for 
asynchronous start of scheduled operations without performing
+     *      blocking, long or IO operations.
      */
     public RocksDbStorageEngine(
             String nodeName,
             RocksDbStorageEngineConfiguration engineConfig,
             StorageConfiguration storageConfiguration,
             Path storagePath,
-            LogSyncer logSyncer
+            LogSyncer logSyncer,
+            ScheduledExecutorService scheduledPool
     ) {
         this.engineConfig = engineConfig;
         this.storageConfiguration = storageConfiguration;
         this.storagePath = storagePath;
         this.logSyncer = logSyncer;
+        this.scheduledPool = scheduledPool;
 
         threadPool = Executors.newFixedThreadPool(
                 Runtime.getRuntime().availableProcessors(),
                 NamedThreadFactory.create(nodeName, 
"rocksdb-storage-engine-pool", LOG)
         );
-
-        scheduledPool = Executors.newSingleThreadScheduledExecutor(
-                NamedThreadFactory.create(nodeName, 
"rocksdb-storage-engine-scheduled-pool", LOG)
-        );
     }
 
     /**
@@ -134,7 +137,8 @@ public class RocksDbStorageEngine implements StorageEngine {
     }
 
     /**
-     * Returns a scheduled thread pool for async operations.
+     * Returns a common scheduled thread pool. Needed only for asynchronous 
start of scheduled operations without performing blocking, long
+     * or IO operations.
      */
     public ScheduledExecutorService scheduledPool() {
         return scheduledPool;
@@ -186,13 +190,13 @@ public class RocksDbStorageEngine implements 
StorageEngine {
     @Override
     public void stop() throws StorageException {
         try {
-            IgniteUtils.closeAllManually(storageByProfileName.values());
+            closeAll(
+                    () -> closeAllManually(storageByProfileName.values()),
+                    () -> shutdownAndAwaitTermination(threadPool, 10, 
TimeUnit.SECONDS)
+            );
         } catch (Exception e) {
             throw new StorageException("Error when stopping the rocksdb 
engine", e);
         }
-
-        IgniteUtils.shutdownAndAwaitTermination(threadPool, 10, 
TimeUnit.SECONDS);
-        IgniteUtils.shutdownAndAwaitTermination(scheduledPool, 10, 
TimeUnit.SECONDS);
     }
 
     @Override
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageConcurrencyTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageConcurrencyTest.java
index ef02510d71..666f689299 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageConcurrencyTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageConcurrencyTest.java
@@ -21,6 +21,7 @@ import static 
org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_P
 import static org.mockito.Mockito.mock;
 
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import 
org.apache.ignite.internal.storage.AbstractMvPartitionStorageConcurrencyTest;
@@ -28,6 +29,8 @@ import 
org.apache.ignite.internal.storage.configurations.StorageConfiguration;
 import org.apache.ignite.internal.storage.engine.StorageTableDescriptor;
 import org.apache.ignite.internal.storage.index.StorageIndexDescriptorSupplier;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
+import org.apache.ignite.internal.testframework.ExecutorServiceExtension;
+import org.apache.ignite.internal.testframework.InjectExecutorService;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.apache.ignite.internal.util.IgniteUtils;
@@ -38,6 +41,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 /**
  * Storage test implementation for {@link RocksDbMvPartitionStorage}.
  */
+@ExtendWith(ExecutorServiceExtension.class)
 @ExtendWith(WorkDirectoryExtension.class)
 public class RocksDbMvPartitionStorageConcurrencyTest extends 
AbstractMvPartitionStorageConcurrencyTest {
     private RocksDbStorageEngine engine;
@@ -51,9 +55,11 @@ public class RocksDbMvPartitionStorageConcurrencyTest 
extends AbstractMvPartitio
             RocksDbStorageEngineConfiguration engineConfig,
             // Explicit size, small enough for fast allocation, and big enough 
to fit some data without flushing it to disk constantly.
             @InjectConfiguration("mock.profiles.default = {engine = rocksdb, 
size = 16777216, writeBufferSize = 67108864}")
-            StorageConfiguration storageConfiguration
+            StorageConfiguration storageConfiguration,
+            @InjectExecutorService
+            ScheduledExecutorService scheduledExecutor
     ) {
-        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class));
+        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class), scheduledExecutor);
 
         engine.start();
 
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageGcTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageGcTest.java
index 67b5dd0c3b..c700b436a0 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageGcTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageGcTest.java
@@ -21,6 +21,7 @@ import static 
org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_P
 import static org.mockito.Mockito.mock;
 
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import org.apache.ignite.internal.storage.AbstractMvPartitionStorageGcTest;
@@ -28,6 +29,8 @@ import 
org.apache.ignite.internal.storage.configurations.StorageConfiguration;
 import org.apache.ignite.internal.storage.engine.StorageTableDescriptor;
 import org.apache.ignite.internal.storage.index.StorageIndexDescriptorSupplier;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
+import org.apache.ignite.internal.testframework.ExecutorServiceExtension;
+import org.apache.ignite.internal.testframework.InjectExecutorService;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.apache.ignite.internal.util.IgniteUtils;
@@ -38,6 +41,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 /**
  * Test implementation for {@link RocksDbStorageEngine}.
  */
+@ExtendWith(ExecutorServiceExtension.class)
 @ExtendWith(WorkDirectoryExtension.class)
 public class RocksDbMvPartitionStorageGcTest extends 
AbstractMvPartitionStorageGcTest {
     private RocksDbStorageEngine engine;
@@ -51,9 +55,11 @@ public class RocksDbMvPartitionStorageGcTest extends 
AbstractMvPartitionStorageG
             RocksDbStorageEngineConfiguration engineConfig,
             // Explicit size, small enough for fast allocation, and big enough 
to fit some data without flushing it to disk constantly.
             @InjectConfiguration("mock.profiles.default = {engine = rocksdb, 
size = 16777216, writeBufferSize = 67108864}")
-            StorageConfiguration storageConfiguration
+            StorageConfiguration storageConfiguration,
+            @InjectExecutorService
+            ScheduledExecutorService scheduledExecutor
     ) {
-        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class));
+        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class), scheduledExecutor);
 
         engine.start();
 
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
index 15127471ad..ba64eb5948 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvPartitionStorageTest.java
@@ -21,6 +21,7 @@ import static 
org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_P
 import static org.mockito.Mockito.mock;
 
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import org.apache.ignite.internal.storage.AbstractMvPartitionStorageTest;
@@ -28,6 +29,8 @@ import 
org.apache.ignite.internal.storage.configurations.StorageConfiguration;
 import org.apache.ignite.internal.storage.engine.StorageTableDescriptor;
 import org.apache.ignite.internal.storage.index.StorageIndexDescriptorSupplier;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
+import org.apache.ignite.internal.testframework.ExecutorServiceExtension;
+import org.apache.ignite.internal.testframework.InjectExecutorService;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.apache.ignite.internal.util.IgniteUtils;
@@ -38,6 +41,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 /**
  * Storage test implementation for {@link RocksDbMvPartitionStorage}.
  */
+@ExtendWith(ExecutorServiceExtension.class)
 @ExtendWith(WorkDirectoryExtension.class)
 public class RocksDbMvPartitionStorageTest extends 
AbstractMvPartitionStorageTest {
     private RocksDbStorageEngine engine;
@@ -51,9 +55,11 @@ public class RocksDbMvPartitionStorageTest extends 
AbstractMvPartitionStorageTes
             RocksDbStorageEngineConfiguration engineConfig,
             // Explicit size, small enough for fast allocation, and big enough 
to fit some data without flushing it to disk constantly.
             @InjectConfiguration("mock.profiles.default = {engine = rocksdb, 
size = 16777216, writeBufferSize = 67108864}")
-            StorageConfiguration storageConfiguration
+            StorageConfiguration storageConfiguration,
+            @InjectExecutorService
+            ScheduledExecutorService scheduledExecutor
     ) {
-        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class));
+        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class), scheduledExecutor);
 
         engine.start();
 
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
index 266c92cecf..d3df127336 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/RocksDbMvTableStorageTest.java
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.mock;
 
 import java.nio.file.Path;
 import java.util.UUID;
+import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import org.apache.ignite.internal.components.LogSyncer;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
@@ -39,6 +40,8 @@ import 
org.apache.ignite.internal.storage.configurations.StorageConfiguration;
 import org.apache.ignite.internal.storage.engine.MvTableStorage;
 import org.apache.ignite.internal.storage.engine.StorageTableDescriptor;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
+import org.apache.ignite.internal.testframework.ExecutorServiceExtension;
+import org.apache.ignite.internal.testframework.InjectExecutorService;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.apache.ignite.internal.util.IgniteUtils;
@@ -50,6 +53,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 /**
  * Tests for the {@link RocksDbTableStorage}.
  */
+@ExtendWith(ExecutorServiceExtension.class)
 @ExtendWith(WorkDirectoryExtension.class)
 public class RocksDbMvTableStorageTest extends AbstractMvTableStorageTest {
     private RocksDbStorageEngine engine;
@@ -61,9 +65,11 @@ public class RocksDbMvTableStorageTest extends 
AbstractMvTableStorageTest {
             RocksDbStorageEngineConfiguration engineConfig,
             // Explicit size, small enough for fast allocation, and big enough 
to fit some data without flushing it to disk constantly.
             @InjectConfiguration("mock.profiles.default {engine = rocksdb, 
size = 16777216, writeBufferSize = 67108864}")
-            StorageConfiguration storageConfiguration
+            StorageConfiguration storageConfiguration,
+            @InjectExecutorService
+            ScheduledExecutorService scheduledExecutor
     ) {
-        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class));
+        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class), scheduledExecutor);
 
         engine.start();
 
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/benchmarks/CommitManyWritesBenchmark.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/benchmarks/CommitManyWritesBenchmark.java
index b6dc18dfbd..8ff8183161 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/benchmarks/CommitManyWritesBenchmark.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/benchmarks/CommitManyWritesBenchmark.java
@@ -17,7 +17,10 @@
 
 package org.apache.ignite.internal.storage.rocksdb.benchmarks;
 
+import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
 import static org.apache.ignite.internal.util.IgniteUtils.capacity;
+import static org.apache.ignite.internal.util.IgniteUtils.closeAll;
+import static 
org.apache.ignite.internal.util.IgniteUtils.shutdownAndAwaitTermination;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -30,7 +33,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.IntStream;
 import org.apache.ignite.configuration.ConfigurationValue;
 import org.apache.ignite.configuration.NamedConfigurationTree;
@@ -85,6 +90,8 @@ public class CommitManyWritesBenchmark {
 
     private RocksDbTableStorage tableStorage;
 
+    private final ScheduledExecutorService scheduledExecutor = 
newSingleThreadScheduledExecutor();
+
     /** Setup method. */
     @Setup
     public void setUp() throws IOException {
@@ -95,7 +102,8 @@ public class CommitManyWritesBenchmark {
                 engineConfiguration(),
                 storageConfiguration(),
                 workDir,
-                () -> {}
+                () -> {},
+                scheduledExecutor
         );
 
         storageEngine.start();
@@ -113,10 +121,12 @@ public class CommitManyWritesBenchmark {
 
     /** Tear down method. */
     @TearDown
-    public void tearDown() {
-        tableStorage.destroy().join();
-
-        storageEngine.stop();
+    public void tearDown() throws Exception {
+        closeAll(
+                () -> tableStorage.destroy().join(),
+                () -> storageEngine.stop(),
+                () -> shutdownAndAwaitTermination(scheduledExecutor, 10, 
TimeUnit.SECONDS)
+        );
     }
 
     private static int randomPartitionId() {
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/engine/RocksDbStorageEngineTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/engine/RocksDbStorageEngineTest.java
index 77904b0f15..999d6b8cee 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/engine/RocksDbStorageEngineTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/engine/RocksDbStorageEngineTest.java
@@ -18,12 +18,15 @@
 package org.apache.ignite.internal.storage.rocksdb.engine;
 
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import org.apache.ignite.internal.storage.configurations.StorageConfiguration;
 import org.apache.ignite.internal.storage.engine.AbstractStorageEngineTest;
 import org.apache.ignite.internal.storage.engine.StorageEngine;
 import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
+import org.apache.ignite.internal.testframework.ExecutorServiceExtension;
+import org.apache.ignite.internal.testframework.InjectExecutorService;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -31,6 +34,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 /**
  * Implementation of the {@link AbstractStorageEngineTest} for the {@link 
RocksDbStorageEngine#ENGINE_NAME} engine.
  */
+@ExtendWith(ExecutorServiceExtension.class)
 @ExtendWith(WorkDirectoryExtension.class)
 public class RocksDbStorageEngineTest extends AbstractStorageEngineTest {
     @InjectConfiguration("mock.flushDelayMillis = 0")
@@ -42,6 +46,9 @@ public class RocksDbStorageEngineTest extends 
AbstractStorageEngineTest {
     @WorkDirectory
     private Path workDir;
 
+    @InjectExecutorService
+    private ScheduledExecutorService scheduledExecutor;
+
     @Override
     protected StorageEngine createEngine() {
         return new RocksDbStorageEngine(
@@ -49,7 +56,8 @@ public class RocksDbStorageEngineTest extends 
AbstractStorageEngineTest {
                 engineConfiguration,
                 storageConfiguration,
                 workDir,
-                logSyncer
+                logSyncer,
+                scheduledExecutor
         );
     }
 }
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbHashIndexStorageTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbHashIndexStorageTest.java
index 4cc281117c..5724dee978 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbHashIndexStorageTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbHashIndexStorageTest.java
@@ -22,6 +22,7 @@ import static 
org.apache.ignite.internal.util.IgniteUtils.closeAll;
 import static org.mockito.Mockito.mock;
 
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import 
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
@@ -31,6 +32,7 @@ import 
org.apache.ignite.internal.storage.index.AbstractHashIndexStorageTest;
 import org.apache.ignite.internal.storage.index.StorageIndexDescriptorSupplier;
 import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
+import org.apache.ignite.internal.testframework.InjectExecutorService;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.junit.jupiter.api.AfterEach;
@@ -52,9 +54,11 @@ public class RocksDbHashIndexStorageTest extends 
AbstractHashIndexStorageTest {
             RocksDbStorageEngineConfiguration engineConfig,
             // Explicit size, small enough for fast allocation, and big enough 
to fit some data without flushing it to disk constantly.
             @InjectConfiguration("mock.profiles.default = {engine = rocksdb, 
size = 16777216, writeBufferSize = 67108864}")
-            StorageConfiguration storageConfiguration
+            StorageConfiguration storageConfiguration,
+            @InjectExecutorService
+            ScheduledExecutorService scheduledExecutor
     ) {
-        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class));
+        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class), scheduledExecutor);
 
         engine.start();
 
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbSortedIndexStorageTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbSortedIndexStorageTest.java
index 6e7408b76c..136d35badd 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbSortedIndexStorageTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/index/RocksDbSortedIndexStorageTest.java
@@ -22,6 +22,7 @@ import static 
org.apache.ignite.internal.util.IgniteUtils.closeAll;
 import static org.mockito.Mockito.mock;
 
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import 
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
@@ -31,6 +32,8 @@ import 
org.apache.ignite.internal.storage.index.AbstractSortedIndexStorageTest;
 import org.apache.ignite.internal.storage.index.StorageIndexDescriptorSupplier;
 import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
+import org.apache.ignite.internal.testframework.ExecutorServiceExtension;
+import org.apache.ignite.internal.testframework.InjectExecutorService;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.junit.jupiter.api.AfterEach;
@@ -40,6 +43,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 /**
  * Tests for the {@link RocksDbSortedIndexStorage} class.
  */
+@ExtendWith(ExecutorServiceExtension.class)
 @ExtendWith(WorkDirectoryExtension.class)
 @ExtendWith(ConfigurationExtension.class)
 public class RocksDbSortedIndexStorageTest extends 
AbstractSortedIndexStorageTest {
@@ -52,9 +56,11 @@ public class RocksDbSortedIndexStorageTest extends 
AbstractSortedIndexStorageTes
             RocksDbStorageEngineConfiguration engineConfig,
             // Explicit size, small enough for fast allocation, and big enough 
to fit some data without flushing it to disk constantly.
             @InjectConfiguration("mock.profiles.default = {engine = rocksdb, 
size = 16777216, writeBufferSize = 67108864}")
-            StorageConfiguration storageConfiguration
+            StorageConfiguration storageConfiguration,
+            @InjectExecutorService
+            ScheduledExecutorService scheduledExecutor
     ) {
-        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class));
+        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class), scheduledExecutor);
 
         engine.start();
 
diff --git 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceTest.java
 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceTest.java
index 2cbb5ca288..54b3f1740c 100644
--- 
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceTest.java
+++ 
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/instance/SharedRocksDbInstanceTest.java
@@ -41,6 +41,7 @@ import java.util.concurrent.BrokenBarrierException;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionException;
 import java.util.concurrent.CyclicBarrier;
+import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import org.apache.ignite.internal.components.LogSyncer;
@@ -53,7 +54,9 @@ import 
org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine;
 import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageProfile;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbProfileView;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
+import org.apache.ignite.internal.testframework.ExecutorServiceExtension;
 import org.apache.ignite.internal.testframework.IgniteAbstractTest;
+import org.apache.ignite.internal.testframework.InjectExecutorService;
 import org.apache.ignite.internal.type.NativeTypes;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.junit.jupiter.api.AfterEach;
@@ -66,6 +69,7 @@ import org.rocksdb.ColumnFamilyHandle;
 import org.rocksdb.RocksDBException;
 
 /** Contains tests for {@link SharedRocksDbInstance}. */
+@ExtendWith(ExecutorServiceExtension.class)
 @ExtendWith(ConfigurationExtension.class)
 class SharedRocksDbInstanceTest extends IgniteAbstractTest {
     private RocksDbStorageEngine engine;
@@ -79,9 +83,11 @@ class SharedRocksDbInstanceTest extends IgniteAbstractTest {
             // Explicit size, small enough for fast allocation, and big enough 
to fit some data without flushing it to disk constantly.
             @InjectConfiguration("mock.profiles.default {engine = rocksdb, 
size = 16777216, writeBufferSize = 67108864}")
             StorageConfiguration storageConfiguration,
-            @InjectConfiguration RocksDbStorageEngineConfiguration engineConfig
+            @InjectConfiguration RocksDbStorageEngineConfiguration 
engineConfig,
+            @InjectExecutorService
+            ScheduledExecutorService scheduledExecutor
     ) throws Exception {
-        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class));
+        engine = new RocksDbStorageEngine("test", engineConfig, 
storageConfiguration, workDir, mock(LogSyncer.class), scheduledExecutor);
 
         engine.start();
 
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
index 613da6537e..f47bd9ab4c 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
@@ -1324,7 +1324,8 @@ public class ItRebalanceDistributedTest extends 
BaseIgniteAbstractTest {
                             null,
                             failureManager,
                             logStorageFactory,
-                            hybridClock
+                            hybridClock,
+                            commonScheduledExecutorService
                     ),
                     storageConfiguration
             );
diff --git 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerRecoveryTest.java
 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerRecoveryTest.java
index ecaac08d2a..707164f916 100644
--- 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerRecoveryTest.java
+++ 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerRecoveryTest.java
@@ -431,7 +431,7 @@ public class TableManagerRecoveryTest extends 
IgniteAbstractTest {
         );
     }
 
-    private static DataStorageManager createDataStorageManager(
+    private DataStorageManager createDataStorageManager(
             ConfigurationRegistry mockedRegistry,
             Path storagePath,
             StorageConfiguration config,
@@ -452,7 +452,8 @@ public class TableManagerRecoveryTest extends 
IgniteAbstractTest {
                         null,
                         mock(FailureManager.class),
                         mock(LogSyncer.class),
-                        clock
+                        clock,
+                        scheduledExecutor
                 ),
                 config
         );
@@ -502,15 +503,18 @@ public class TableManagerRecoveryTest extends 
IgniteAbstractTest {
                     @Nullable LongJvmPauseDetector longJvmPauseDetector,
                     FailureManager failureManager,
                     LogSyncer logSyncer,
-                    HybridClock clock
+                    HybridClock clock,
+                    ScheduledExecutorService commonScheduler
             ) throws StorageException {
-                return spy(super.createEngine(igniteInstanceName,
+                return spy(super.createEngine(
+                        igniteInstanceName,
                         configRegistry,
                         storagePath,
                         longJvmPauseDetector,
                         failureManager,
                         logSyncer,
-                        clock
+                        clock,
+                        commonScheduler
                 ));
             }
         };
diff --git 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerTest.java
 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerTest.java
index af827a1564..a983ace0dd 100644
--- 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerTest.java
+++ 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerTest.java
@@ -899,7 +899,8 @@ public class TableManagerTest extends IgniteAbstractTest {
                         null,
                         mock(FailureManager.class),
                         mock(LogSyncer.class),
-                        clock
+                        clock,
+                        scheduledExecutor
                 ),
                 storageConfiguration
         );
diff --git 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/gc/RocksDbGcUpdateHandlerTest.java
 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/gc/RocksDbGcUpdateHandlerTest.java
index e56d3daa8d..a7389160a7 100644
--- 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/gc/RocksDbGcUpdateHandlerTest.java
+++ 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/gc/RocksDbGcUpdateHandlerTest.java
@@ -23,6 +23,7 @@ import static 
org.apache.ignite.internal.testframework.IgniteTestUtils.testNodeN
 import static org.mockito.Mockito.mock;
 
 import java.nio.file.Path;
+import java.util.concurrent.ScheduledExecutorService;
 import org.apache.ignite.internal.components.LogSyncer;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import org.apache.ignite.internal.storage.configurations.StorageConfiguration;
@@ -31,6 +32,8 @@ import 
org.apache.ignite.internal.storage.index.StorageIndexDescriptorSupplier;
 import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine;
 import org.apache.ignite.internal.storage.rocksdb.RocksDbTableStorage;
 import 
org.apache.ignite.internal.storage.rocksdb.configuration.schema.RocksDbStorageEngineConfiguration;
+import org.apache.ignite.internal.testframework.ExecutorServiceExtension;
+import org.apache.ignite.internal.testframework.InjectExecutorService;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.apache.ignite.internal.util.IgniteUtils;
@@ -39,11 +42,15 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.extension.ExtendWith;
 
+@ExtendWith(ExecutorServiceExtension.class)
 @ExtendWith(WorkDirectoryExtension.class)
 class RocksDbGcUpdateHandlerTest extends AbstractGcUpdateHandlerTest {
     @WorkDirectory
     private Path workDir;
 
+    @InjectExecutorService
+    private ScheduledExecutorService scheduledExecutor;
+
     private RocksDbStorageEngine engine;
 
     private RocksDbTableStorage table;
@@ -60,7 +67,8 @@ class RocksDbGcUpdateHandlerTest extends 
AbstractGcUpdateHandlerTest {
                 engineConfig,
                 storageConfiguration,
                 workDir,
-                mock(LogSyncer.class)
+                mock(LogSyncer.class),
+                scheduledExecutor
         );
 
         engine.start();

Reply via email to