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();
