This is an automated email from the ASF dual-hosted git repository.
ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new ca6afeaf637 IGNITE-28474 Use segstore log storage if property is
enabled (#7969)
ca6afeaf637 is described below
commit ca6afeaf637b8602187a7963a54bed1ade035b7e
Author: Phillippko <[email protected]>
AuthorDate: Tue Apr 14 15:35:04 2026 +0400
IGNITE-28474 Use segstore log storage if property is enabled (#7969)
---
.../management/raft/ItCmgRaftServiceTest.java | 7 +-
.../management/BaseItClusterManagementTest.java | 7 +
.../internal/cluster/management/MockNode.java | 10 +-
.../internal/lang/IgniteSystemProperties.java | 8 ++
.../rebalance/ItRebalanceDistributedTest.java | 10 +-
.../impl/ItIdempotentCommandCacheTest.java | 10 +-
.../impl/ItMetaStorageManagerImplTest.java | 9 +-
.../ItMetaStorageMultipleNodesAbstractTest.java | 10 +-
.../metastorage/impl/ItMetaStorageServiceTest.java | 11 +-
.../metastorage/impl/ItMetaStorageWatchTest.java | 13 +-
.../server/raft/ItMetaStorageRaftGroupTest.java | 13 +-
.../service/ItAbstractListenerSnapshotTest.java | 7 +-
.../replicator/ItAbstractColocationTest.java | 5 +
.../partition/replicator/fixtures/Node.java | 9 +-
.../ItZonePartitionRaftListenerRecoveryTest.java | 7 +-
.../MultiActorPlacementDriverTest.java | 10 +-
.../PlacementDriverManagerTest.java | 10 +-
.../LogStorageExtensionConfigurationSchema.java | 31 ++++
.../configuration/RaftConfigurationModule.java | 7 +-
.../ignite/internal/raft/ItLearnersTest.java | 7 +-
.../apache/ignite/internal/raft/ItLozaTest.java | 13 +-
.../internal/raft/ItRaftGroupServiceTest.java | 7 +-
.../ignite/raft/server/ItJraftHlcServerTest.java | 3 +-
.../raft/server/ItJraftServerLogPathTest.java | 3 +-
.../raft/server/ItSimpleCounterServerTest.java | 3 +-
.../ignite/raft/server/JraftAbstractTest.java | 3 +-
.../ignite/raft/server/RaftServerAbstractTest.java | 4 +
.../raft/storage/segstore/SegmentFile.java | 3 +-
.../storage/segstore/SegmentLogStorageManager.java | 67 ++++++---
.../storage/segstore/SegmentLogStorageOptions.java | 53 +++++++
.../raft/util/SharedLogStorageManagerUtils.java | 61 +++++---
.../org/apache/ignite/internal/raft/LozaTest.java | 7 +-
.../PhysicalTopologyAwareRaftGroupServiceTest.java | 7 +-
.../SegmentLogStorageManagerConvertNodeIdTest.java | 158 +++++++++++++++++++++
.../ItPlacementDriverReplicaSideTest.java | 7 +-
.../AbstractTopologyAwareGroupServiceTest.java | 7 +-
.../ItTruncateRaftLogAndRestartNodesTest.java | 11 +-
.../ItDistributedConfigurationPropertiesTest.java | 10 +-
.../ItDistributedConfigurationStorageTest.java | 10 +-
.../runner/app/ItIgniteNodeRestartTest.java | 13 +-
.../org/apache/ignite/internal/app/IgniteImpl.java | 30 +++-
.../metrics/logstorage/LogStorageMetricsTest.java | 17 ++-
.../apache/ignite/distributed/ItLockTableTest.java | 5 +
.../ItTxDistributedCleanupRecoveryTest.java | 8 ++
...xDistributedTestSingleNodeNoCleanupMessage.java | 5 +
.../ignite/distributed/ItTxStateLocalMapTest.java | 5 +
.../ReplicasSafeTimePropagationTest.java | 16 ++-
.../apache/ignite/distributed/ItTxTestCluster.java | 17 ++-
.../internal/table/TxInfrastructureTest.java | 5 +
49 files changed, 656 insertions(+), 103 deletions(-)
diff --git
a/modules/cluster-management/src/integrationTest/java/org/apache/ignite/internal/cluster/management/raft/ItCmgRaftServiceTest.java
b/modules/cluster-management/src/integrationTest/java/org/apache/ignite/internal/cluster/management/raft/ItCmgRaftServiceTest.java
index af715853343..2440cd7a7a9 100644
---
a/modules/cluster-management/src/integrationTest/java/org/apache/ignite/internal/cluster/management/raft/ItCmgRaftServiceTest.java
+++
b/modules/cluster-management/src/integrationTest/java/org/apache/ignite/internal/cluster/management/raft/ItCmgRaftServiceTest.java
@@ -73,6 +73,7 @@ import org.apache.ignite.internal.raft.RaftManager;
import org.apache.ignite.internal.raft.RaftNodeId;
import org.apache.ignite.internal.raft.StoppingExceptionFactories;
import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -101,6 +102,9 @@ public class ItCmgRaftServiceTest extends
BaseIgniteAbstractTest {
@InjectConfiguration
private static SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private final CmgMessagesFactory msgFactory = new CmgMessagesFactory();
private class Node {
@@ -128,7 +132,8 @@ public class ItCmgRaftServiceTest extends
BaseIgniteAbstractTest {
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- workingDir.raftLogPath()
+ workingDir.raftLogPath(),
+ logStorageConfiguration
);
this.eventsClientListener = new RaftGroupEventsClientListener();
this.failureManager = new NoOpFailureManager();
diff --git
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
index 37869d33775..3997b6e2e7a 100644
---
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
+++
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
@@ -33,6 +33,7 @@ import
org.apache.ignite.internal.configuration.testframework.InjectConfiguratio
import org.apache.ignite.internal.network.NodeFinder;
import org.apache.ignite.internal.network.StaticNodeFinder;
import org.apache.ignite.internal.raft.RaftGroupConfiguration;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.storage.configurations.StorageConfiguration;
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
@@ -60,6 +61,9 @@ public abstract class BaseItClusterManagementTest extends
IgniteAbstractTest {
@InjectConfiguration
private static StorageConfiguration storageConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private TestInfo testInfo;
@BeforeEach
@@ -83,6 +87,7 @@ public abstract class BaseItClusterManagementTest extends
IgniteAbstractTest {
workDir,
raftConfiguration,
systemLocalConfiguration,
+ logStorageConfiguration,
userNodeAttributes,
storageConfiguration,
config -> onConfigurationCommittedListener.accept(i,
config)
@@ -110,6 +115,7 @@ public abstract class BaseItClusterManagementTest extends
IgniteAbstractTest {
workDir,
raftConfiguration,
systemLocalConfiguration,
+ logStorageConfiguration,
userNodeAttributes,
storageConfiguration,
onConfigurationCommittedListener
@@ -129,6 +135,7 @@ public abstract class BaseItClusterManagementTest extends
IgniteAbstractTest {
workDir,
raftConfiguration,
systemLocalConfiguration,
+ logStorageConfiguration,
userNodeAttributes,
attributesProvider,
storageConfiguration,
diff --git
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
index c26fa7937b3..084cebc23ab 100644
---
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
+++
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
@@ -55,6 +55,7 @@ import
org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
import org.apache.ignite.internal.raft.RaftGroupConfiguration;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -91,6 +92,7 @@ public class MockNode {
Path workDir,
RaftConfiguration raftConfiguration,
SystemLocalConfiguration systemLocalConfiguration,
+ LogStorageConfiguration logStorageConfiguration,
NodeAttributesConfiguration nodeAttributes,
StorageConfiguration storageProfilesConfiguration,
Consumer<RaftGroupConfiguration> onConfigurationCommittedListener
@@ -102,6 +104,7 @@ public class MockNode {
workDir,
raftConfiguration,
systemLocalConfiguration,
+ logStorageConfiguration,
nodeAttributes,
() -> Map.of(COLOCATION_FEATURE_FLAG, Boolean.TRUE.toString()),
storageProfilesConfiguration,
@@ -119,6 +122,7 @@ public class MockNode {
Path workDir,
RaftConfiguration raftConfiguration,
SystemLocalConfiguration systemLocalConfiguration,
+ LogStorageConfiguration logStorageConfiguration,
NodeAttributesConfiguration nodeAttributes,
NodeAttributesProvider attributesProvider,
StorageConfiguration storageProfilesConfiguration,
@@ -143,7 +147,8 @@ public class MockNode {
LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- this.workDir.resolve("partitions/log")
+ this.workDir.resolve("partitions/log"),
+ logStorageConfiguration
);
var eventsClientListener = new RaftGroupEventsClientListener();
@@ -164,7 +169,8 @@ public class MockNode {
LogStorageManager cmgLogStorageManager =
SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- this.workDir.resolve("cmg/log")
+ this.workDir.resolve("cmg/log"),
+ logStorageConfiguration
);
RaftGroupOptionsConfigurer cmgRaftConfigurer =
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
b/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
index 55705791c98..ce4bc0b23ed 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
@@ -43,6 +43,9 @@ public final class IgniteSystemProperties {
/** Skip storage update in a benchmark. */
public static final String IGNITE_SKIP_STORAGE_UPDATE_IN_BENCHMARK =
"IGNITE_SKIP_STORAGE_UPDATE_IN_BENCHMARK";
+ /** Use segment storage for Raft log. */
+ public static final String SEGSTORE_ENABLED_PROPERTY = "SEGSTORE_ENABLED";
+
// TODO https://issues.apache.org/jira/browse/IGNITE-22522 Remove this
feature flag.
/**
* Enables zone based replication (aka colocation) feature.
@@ -73,6 +76,11 @@ public final class IgniteSystemProperties {
return getBoolean(COLOCATION_FEATURE_FLAG, true);
}
+ /** Feature flag for segment log storage. */
+ public static boolean segmentLogStorageEnabled() {
+ return getBoolean(SEGSTORE_ENABLED_PROPERTY, false);
+ }
+
/**
* Gets either system property or environment variable with given name and
convert to enum of given class.
*
diff --git
a/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
b/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
index 0d76e027685..8696887c30e 100644
---
a/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
+++
b/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
@@ -193,6 +193,7 @@ import org.apache.ignite.internal.raft.PeersAndLearners;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.RaftNodeId;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -329,6 +330,9 @@ public class ItRebalanceDistributedTest extends
BaseIgniteAbstractTest {
@InjectConfiguration
private ReplicationConfiguration replicationConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
private @interface UseTestTxStateStorage {
@@ -1273,7 +1277,7 @@ public class ItRebalanceDistributedTest extends
BaseIgniteAbstractTest {
String nodeName = clusterService.staticLocalNode().name();
- logStorageManager = SharedLogStorageManagerUtils.create(nodeName,
partitionsBasePath.raftLogPath());
+ logStorageManager = SharedLogStorageManagerUtils.create(nodeName,
partitionsBasePath.raftLogPath(), logStorageConfiguration);
LogSyncer partitionsLogSyncer = logStorageManager.logSyncer();
@@ -1303,7 +1307,7 @@ public class ItRebalanceDistributedTest extends
BaseIgniteAbstractTest {
ComponentWorkingDir cmgWorkDir = cmgPath(systemConfiguration, dir);
- cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+ cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(),
logStorageConfiguration);
RaftGroupOptionsConfigurer cmgRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager,
cmgWorkDir.metaPath());
@@ -1347,7 +1351,7 @@ public class ItRebalanceDistributedTest extends
BaseIgniteAbstractTest {
ComponentWorkingDir metastorageWorkDir =
metastoragePath(systemConfiguration, dir);
- msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+ msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(),
logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItIdempotentCommandCacheTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItIdempotentCommandCacheTest.java
index d6573930d1a..976ad2c0159 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItIdempotentCommandCacheTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItIdempotentCommandCacheTest.java
@@ -106,6 +106,7 @@ import org.apache.ignite.internal.raft.Peer;
import org.apache.ignite.internal.raft.PeersAndLearners;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.service.LeaderWithTerm;
import org.apache.ignite.internal.raft.service.RaftGroupService;
@@ -157,6 +158,9 @@ class ItIdempotentCommandCacheTest extends
IgniteAbstractTest {
@InjectConfiguration("mock.idleSafeTimeSyncIntervalMillis = 100")
private SystemDistributedConfiguration systemDistributedConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@InjectExecutorService
private ScheduledExecutorService scheduledExecutorService;
@@ -190,6 +194,7 @@ class ItIdempotentCommandCacheTest extends
IgniteAbstractTest {
RaftConfiguration raftConfiguration,
SystemLocalConfiguration systemLocalConfiguration,
SystemDistributedConfiguration systemDistributedConfiguration,
+ LogStorageConfiguration logStorageConfiguration,
Path workDir,
int index,
ScheduledExecutorService scheduledExecutorService
@@ -214,7 +219,7 @@ class ItIdempotentCommandCacheTest extends
IgniteAbstractTest {
String nodeName = clusterService.staticLocalNode().name();
- partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+ partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(),
logStorageConfiguration);
raftManager = TestLozaFactory.create(
clusterService,
@@ -239,7 +244,7 @@ class ItIdempotentCommandCacheTest extends
IgniteAbstractTest {
ComponentWorkingDir metastorageWorkDir = new
ComponentWorkingDir(workDir.resolve("metastorage" + index));
- msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+ msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(),
logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
@@ -647,6 +652,7 @@ class ItIdempotentCommandCacheTest extends
IgniteAbstractTest {
raftConfiguration,
systemLocalConfiguration,
systemDistributedConfiguration,
+ logStorageConfiguration,
workDir,
i,
scheduledExecutorService
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageManagerImplTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageManagerImplTest.java
index 6699e5413eb..fbe9264aa37 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageManagerImplTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageManagerImplTest.java
@@ -93,6 +93,7 @@ import org.apache.ignite.internal.raft.Loza;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
import org.apache.ignite.internal.raft.TimeAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -148,6 +149,9 @@ public class ItMetaStorageManagerImplTest extends
IgniteAbstractTest {
@InjectExecutorService
private ScheduledExecutorService scheduledExecutorService;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private final ReadOperationForCompactionTracker
readOperationForCompactionTracker = new ReadOperationForCompactionTracker();
@BeforeEach
@@ -169,7 +173,8 @@ public class ItMetaStorageManagerImplTest extends
IgniteAbstractTest {
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
nodeName,
- workingDir.raftLogPath()
+ workingDir.raftLogPath(),
+ logStorageConfiguration
);
raftManager = TestLozaFactory.create(
@@ -199,7 +204,7 @@ public class ItMetaStorageManagerImplTest extends
IgniteAbstractTest {
ComponentWorkingDir metastorageWorkDir = new
ComponentWorkingDir(workDir.resolve("metastorage"));
- msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName,
metastorageWorkDir.raftLogPath());
+ msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName,
metastorageWorkDir.raftLogPath(), logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
index 9591f5d3430..90212905850 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
@@ -66,6 +66,7 @@ import org.apache.ignite.internal.raft.Loza;
import org.apache.ignite.internal.raft.Peer;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -106,6 +107,9 @@ abstract class ItMetaStorageMultipleNodesAbstractTest
extends IgniteAbstractTest
@InjectConfiguration("mock.idleSafeTimeSyncIntervalMillis=1000000")
private SystemDistributedConfiguration systemDistributedConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private TestInfo testInfo;
KeyValueStorage createStorage(String nodeName, Path path,
ReadOperationForCompactionTracker readOperationForCompactionTracker) {
@@ -159,7 +163,7 @@ abstract class ItMetaStorageMultipleNodesAbstractTest
extends IgniteAbstractTest
String nodeName = clusterService.staticLocalNode().name();
- partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+ partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(),
logStorageConfiguration);
this.raftManager = TestLozaFactory.create(
clusterService,
@@ -181,7 +185,7 @@ abstract class ItMetaStorageMultipleNodesAbstractTest
extends IgniteAbstractTest
ComponentWorkingDir cmgWorkDir = new
ComponentWorkingDir(basePath.resolve("cmg"));
- cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+ cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(),
logStorageConfiguration);
RaftGroupOptionsConfigurer cmgRaftConfigurator =
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager,
cmgWorkDir.metaPath());
@@ -212,7 +216,7 @@ abstract class ItMetaStorageMultipleNodesAbstractTest
extends IgniteAbstractTest
ComponentWorkingDir metastorageWorkDir = new
ComponentWorkingDir(basePath.resolve("metastorage"));
- msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+ msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(),
logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurator =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
index cb2949c1752..130e0009e97 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
@@ -115,6 +115,7 @@ import org.apache.ignite.internal.raft.RaftManager;
import org.apache.ignite.internal.raft.RaftNodeId;
import org.apache.ignite.internal.raft.TestLozaFactory;
import
org.apache.ignite.internal.raft.client.PhysicalTopologyAwareRaftGroupService;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -213,6 +214,7 @@ public class ItMetaStorageServiceTest extends
BaseIgniteAbstractTest {
ClusterService clusterService,
RaftConfiguration raftConfiguration,
SystemLocalConfiguration systemLocalConfiguration,
+ LogStorageConfiguration logStorageConfiguration,
Path dataPath
) {
this.clusterService = clusterService;
@@ -223,7 +225,7 @@ public class ItMetaStorageServiceTest extends
BaseIgniteAbstractTest {
String nodeName = clusterService.staticLocalNode().name();
- partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+ partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(),
logStorageConfiguration);
partitionsRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(partitionsLogStorageManager,
workingDir.metaPath());
@@ -336,6 +338,9 @@ public class ItMetaStorageServiceTest extends
BaseIgniteAbstractTest {
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private final List<Node> nodes = new ArrayList<>();
@BeforeEach
@@ -351,7 +356,9 @@ public class ItMetaStorageServiceTest extends
BaseIgniteAbstractTest {
localAddresses.stream()
.map(addr -> ClusterServiceTestUtils.clusterService(testInfo,
addr.port(), nodeFinder))
- .forEach(clusterService -> nodes.add(new Node(clusterService,
raftConfiguration, systemLocalConfiguration, workDir)));
+ .forEach(clusterService -> nodes.add(
+ new Node(clusterService, raftConfiguration,
systemLocalConfiguration, logStorageConfiguration, workDir))
+ );
return nodes;
}
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
index 3b2b2cd435b..dc7059285ac 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
@@ -88,6 +88,7 @@ import org.apache.ignite.internal.network.StaticNodeFinder;
import org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -131,6 +132,9 @@ public class ItMetaStorageWatchTest extends
IgniteAbstractTest {
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private class Node {
private final List<IgniteComponent> components = new ArrayList<>();
@@ -159,7 +163,8 @@ public class ItMetaStorageWatchTest extends
IgniteAbstractTest {
String nodeName = clusterService.staticLocalNode().name();
- LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+ LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(),
+ logStorageConfiguration);
components.add(partitionsLogStorageManager);
@@ -191,7 +196,8 @@ public class ItMetaStorageWatchTest extends
IgniteAbstractTest {
ComponentWorkingDir cmgWorkDir = new
ComponentWorkingDir(basePath.resolve("cmg"));
- LogStorageManager cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+ LogStorageManager cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(),
+ logStorageConfiguration);
components.add(cmgLogStorageManager);
@@ -232,7 +238,8 @@ public class ItMetaStorageWatchTest extends
IgniteAbstractTest {
LogStorageManager msLogStorageManager =
SharedLogStorageManagerUtils.create(
nodeName,
- metastorageWorkDir.raftLogPath()
+ metastorageWorkDir.raftLogPath(),
+ logStorageConfiguration
);
components.add(msLogStorageManager);
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
index 6d28f99c3ef..3d4eac20197 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
@@ -70,6 +70,7 @@ import org.apache.ignite.internal.raft.PeersAndLearners;
import org.apache.ignite.internal.raft.RaftNodeId;
import org.apache.ignite.internal.raft.StoppingExceptionFactories;
import
org.apache.ignite.internal.raft.client.PhysicalTopologyAwareRaftGroupService;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftGroupOptions;
import org.apache.ignite.internal.raft.server.RaftServer;
@@ -168,6 +169,9 @@ public class ItMetaStorageRaftGroupTest extends
IgniteAbstractTest {
@InjectConfiguration
private SystemLocalConfiguration systemConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
/**
* Run {@code NODES} cluster nodes.
*/
@@ -374,7 +378,8 @@ public class ItMetaStorageRaftGroupTest extends
IgniteAbstractTest {
logStorageManager1 = SharedLogStorageManagerUtils.create(
cluster.get(0).staticLocalNode().name(),
- workingDir1.raftLogPath()
+ workingDir1.raftLogPath(),
+ logStorageConfiguration
);
var eventsClientListener1 = new RaftGroupEventsClientListener();
@@ -389,7 +394,8 @@ public class ItMetaStorageRaftGroupTest extends
IgniteAbstractTest {
logStorageManager2 = SharedLogStorageManagerUtils.create(
cluster.get(1).staticLocalNode().name(),
- workingDir2.raftLogPath()
+ workingDir2.raftLogPath(),
+ logStorageConfiguration
);
var eventsClientListener2 = new RaftGroupEventsClientListener();
@@ -404,7 +410,8 @@ public class ItMetaStorageRaftGroupTest extends
IgniteAbstractTest {
logStorageManager3 = SharedLogStorageManagerUtils.create(
cluster.get(2).staticLocalNode().name(),
- workingDir3.raftLogPath()
+ workingDir3.raftLogPath(),
+ logStorageConfiguration
);
var eventsClientListener3 = new RaftGroupEventsClientListener();
diff --git
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/raft/service/ItAbstractListenerSnapshotTest.java
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/raft/service/ItAbstractListenerSnapshotTest.java
index 8316612a38f..1f75bfd037c 100644
---
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/raft/service/ItAbstractListenerSnapshotTest.java
+++
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/raft/service/ItAbstractListenerSnapshotTest.java
@@ -57,6 +57,7 @@ import org.apache.ignite.internal.raft.Marshaller;
import org.apache.ignite.internal.raft.PeersAndLearners;
import org.apache.ignite.internal.raft.RaftNodeId;
import org.apache.ignite.internal.raft.client.RaftGroupServiceImpl;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftServer;
import org.apache.ignite.internal.raft.server.TestJraftServerFactory;
@@ -120,6 +121,9 @@ public abstract class ItAbstractListenerSnapshotTest<T
extends RaftGroupListener
@InjectConfiguration
protected SystemLocalConfiguration systemConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
/**
* Create executor for raft group services.
*/
@@ -437,7 +441,8 @@ public abstract class ItAbstractListenerSnapshotTest<T
extends RaftGroupListener
LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(
service.staticLocalNode().name(),
- componentWorkDir.raftLogPath()
+ componentWorkDir.raftLogPath(),
+ logStorageConfiguration
);
assertThat(partitionsLogStorageManager.startAsync(new
ComponentContext()), willCompleteSuccessfully());
diff --git
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
index b5d08f6f77d..5776182dbac 100644
---
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
+++
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
@@ -50,6 +50,7 @@ import
org.apache.ignite.internal.distributionzones.DistributionZonesTestUtil;
import org.apache.ignite.internal.network.NodeFinder;
import org.apache.ignite.internal.network.StaticNodeFinder;
import org.apache.ignite.internal.partition.replicator.fixtures.Node;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.internal.schema.configuration.GcConfiguration;
@@ -123,6 +124,9 @@ abstract class ItAbstractColocationTest extends
IgniteAbstractTest {
@InjectConfiguration
private SqlDistributedConfiguration sqlDistributedConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
final List<Node> cluster = new CopyOnWriteArrayList<>();
private NodeFinder nodeFinder;
@@ -238,6 +242,7 @@ abstract class ItAbstractColocationTest extends
IgniteAbstractTest {
replicationConfiguration,
txConfiguration,
scheduledExecutorService,
+ logStorageConfiguration,
invokeInterceptor,
gcConfiguration,
sqlLocalConfiguration,
diff --git
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
index bee4ceb5960..51a7a9ffeef 100644
---
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
+++
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
@@ -129,6 +129,7 @@ import
org.apache.ignite.internal.placementdriver.ReplicaMeta;
import org.apache.ignite.internal.raft.Loza;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
import
org.apache.ignite.internal.raft.storage.impl.VolatileLogStorageManagerCreator;
@@ -333,6 +334,7 @@ public class Node {
ReplicationConfiguration replicationConfiguration,
TransactionConfiguration transactionConfiguration,
ScheduledExecutorService scheduledExecutorService,
+ LogStorageConfiguration logStorageConfiguration,
@Nullable InvokeInterceptor invokeInterceptor,
GcConfiguration gcConfiguration,
SqlLocalConfiguration sqlLocalConfiguration,
@@ -395,7 +397,8 @@ public class Node {
String nodeName = clusterService.staticLocalNode().name();
- partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, partitionsWorkDir.raftLogPath());
+ partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, partitionsWorkDir.raftLogPath(),
+ logStorageConfiguration);
LogSyncer partitionsLogSyncer =
partitionsLogStorageManager.logSyncer();
@@ -427,7 +430,7 @@ public class Node {
ComponentWorkingDir cmgWorkDir = new
ComponentWorkingDir(dir.resolve("cmg"));
- cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName,
cmgWorkDir.raftLogPath());
+ cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName,
cmgWorkDir.raftLogPath(), logStorageConfiguration);
RaftGroupOptionsConfigurer cmgRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager,
cmgWorkDir.metaPath());
@@ -469,7 +472,7 @@ public class Node {
ComponentWorkingDir metastorageWorkDir = new
ComponentWorkingDir(dir.resolve("metastorage"));
- msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName,
metastorageWorkDir.raftLogPath());
+ msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName,
metastorageWorkDir.raftLogPath(), logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
diff --git
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java
index 5c687e3cb14..b6abedd366e 100644
---
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java
+++
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java
@@ -94,6 +94,7 @@ import
org.apache.ignite.internal.raft.RaftGroupConfigurationConverter;
import org.apache.ignite.internal.raft.RaftGroupEventsListener;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.RaftNodeId;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftGroupOptions;
import org.apache.ignite.internal.raft.service.RaftGroupService;
@@ -179,6 +180,9 @@ class ItZonePartitionRaftListenerRecoveryTest extends
IgniteAbstractTest {
@InjectExecutorService
private ExecutorService executor;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private final List<IgniteComponent> components = new ArrayList<>();
private final HybridClock clock = new HybridClockImpl();
@@ -295,10 +299,9 @@ class ItZonePartitionRaftListenerRecoveryTest extends
IgniteAbstractTest {
components.add(outgoingSnapshotsManager);
logStorageManager = SharedLogStorageManagerUtils.create(
- "table data log",
clusterService.staticLocalNode().name(),
componentWorkingDir.raftLogPath(),
- true
+ logStorageConfiguration
);
components.add(logStorageManager);
diff --git
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
index 6fcb399f610..03c646ae946 100644
---
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
+++
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
@@ -82,6 +82,7 @@ import org.apache.ignite.internal.raft.Peer;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.service.LeaderWithTerm;
import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
@@ -119,6 +120,9 @@ public class MultiActorPlacementDriverTest extends
BasePlacementDriverTest {
@InjectConfiguration
private ReplicationConfiguration replicationConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private List<String> placementDriverNodeNames;
private List<String> nodeNames;
@@ -277,7 +281,8 @@ public class MultiActorPlacementDriverTest extends
BasePlacementDriverTest {
LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- workingDir.raftLogPath()
+ workingDir.raftLogPath(),
+ logStorageConfiguration
);
var raftManager = TestLozaFactory.create(
@@ -297,7 +302,8 @@ public class MultiActorPlacementDriverTest extends
BasePlacementDriverTest {
ComponentWorkingDir metastorageWorkDir = new
ComponentWorkingDir(workDir.resolve(nodeName + "_metastorage"));
LogStorageManager msLogStorageManager =
-
SharedLogStorageManagerUtils.create(clusterService.staticLocalNode().name(),
metastorageWorkDir.raftLogPath());
+
SharedLogStorageManagerUtils.create(clusterService.staticLocalNode().name(),
metastorageWorkDir.raftLogPath(),
+ logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
diff --git
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
index a9e067d7c14..958866c7e6c 100644
---
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
+++
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
@@ -103,6 +103,7 @@ import org.apache.ignite.internal.raft.Loza;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -157,6 +158,9 @@ public class PlacementDriverManagerTest extends
BasePlacementDriverTest {
@InjectConfiguration(validate = false)
private ReplicationConfiguration replicationConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private MetaStorageManagerImpl metaStorageManager;
private PlacementDriverManager placementDriverManager;
@@ -219,7 +223,8 @@ public class PlacementDriverManagerTest extends
BasePlacementDriverTest {
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- workingDir.raftLogPath()
+ workingDir.raftLogPath(),
+ logStorageConfiguration
);
raftManager = TestLozaFactory.create(
@@ -239,7 +244,8 @@ public class PlacementDriverManagerTest extends
BasePlacementDriverTest {
ComponentWorkingDir metastorageWorkDir = new
ComponentWorkingDir(workDir.resolve("metastorage"));
msLogStorageManager =
-
SharedLogStorageManagerUtils.create(clusterService.staticLocalNode().name(),
metastorageWorkDir.raftLogPath());
+
SharedLogStorageManagerUtils.create(clusterService.staticLocalNode().name(),
metastorageWorkDir.raftLogPath(),
+ logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
diff --git
a/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/LogStorageExtensionConfigurationSchema.java
b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/LogStorageExtensionConfigurationSchema.java
new file mode 100644
index 00000000000..735b068bead
--- /dev/null
+++
b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/LogStorageExtensionConfigurationSchema.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.raft.configuration;
+
+import org.apache.ignite.configuration.annotation.ConfigValue;
+import org.apache.ignite.configuration.annotation.ConfigurationExtension;
+import org.apache.ignite.internal.configuration.NodeConfigurationSchema;
+
+// TODO: Remove when the new log storage is released, see
https://issues.apache.org/jira/browse/IGNITE-26300.
+/** Temporary extension to add log storage configuration only if property is
enabled. */
+@ConfigurationExtension
+public class LogStorageExtensionConfigurationSchema extends
NodeConfigurationSchema {
+ @ConfigValue
+ @ValidLogStorageConfiguration
+ public LogStorageConfigurationSchema logStorage;
+}
diff --git
a/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationModule.java
b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationModule.java
index 97598edd435..e23d3fbdf9e 100644
---
a/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationModule.java
+++
b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationModule.java
@@ -25,6 +25,7 @@ import org.apache.ignite.configuration.ConfigurationModule;
import org.apache.ignite.configuration.SuperRootChange;
import org.apache.ignite.configuration.annotation.ConfigurationType;
import org.apache.ignite.configuration.validation.Validator;
+import org.apache.ignite.internal.lang.IgniteSystemProperties;
/**
* {@link ConfigurationModule} for node-local configuration provided by
ignite-raft.
@@ -38,7 +39,11 @@ public class RaftConfigurationModule implements
ConfigurationModule {
@Override
public Collection<Class<?>> schemaExtensions() {
- return List.of(RaftExtensionConfigurationSchema.class);
+ if (IgniteSystemProperties.segmentLogStorageEnabled()) {
+ return List.of(RaftExtensionConfigurationSchema.class,
LogStorageExtensionConfigurationSchema.class);
+ } else {
+ return List.of(RaftExtensionConfigurationSchema.class);
+ }
}
@Override
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java
index b32dfbeeb24..cac43cfbd06 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java
@@ -60,6 +60,7 @@ import org.apache.ignite.internal.manager.ComponentContext;
import org.apache.ignite.internal.manager.IgniteComponent;
import org.apache.ignite.internal.network.ClusterService;
import org.apache.ignite.internal.network.StaticNodeFinder;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftGroupOptions;
import org.apache.ignite.internal.raft.service.CommandClosure;
@@ -111,6 +112,9 @@ public class ItLearnersTest extends IgniteAbstractTest {
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private final List<RaftNode> nodes = new ArrayList<>(ADDRS.size());
/** Mock Raft node. */
@@ -132,7 +136,8 @@ public class ItLearnersTest extends IgniteAbstractTest {
logStorageManager = SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- partitionsWorkDir.raftLogPath()
+ partitionsWorkDir.raftLogPath(),
+ logStorageConfiguration
);
loza = TestLozaFactory.create(clusterService, raftConfiguration,
systemLocalConfiguration, new HybridClockImpl());
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLozaTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLozaTest.java
index 4ecafc2f51d..97091040e00 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLozaTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLozaTest.java
@@ -60,6 +60,7 @@ import org.apache.ignite.internal.network.MessagingService;
import org.apache.ignite.internal.network.NetworkMessage;
import org.apache.ignite.internal.network.StaticNodeFinder;
import org.apache.ignite.internal.raft.configuration.LogStorageBudgetView;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftGroupOptions;
import org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
@@ -100,6 +101,9 @@ public class ItLozaTest extends IgniteAbstractTest {
private final List<IgniteComponent> allComponents = new ArrayList<>();
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@BeforeEach
void setUp(TestInfo testInfo) {
var addr = new NetworkAddress("127.0.0.1", PORT);
@@ -174,7 +178,8 @@ public class ItLozaTest extends IgniteAbstractTest {
LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(
spyService.staticLocalNode().name(),
- partitionsWorkDir.raftLogPath()
+ partitionsWorkDir.raftLogPath(),
+ logStorageConfiguration
);
RaftGroupOptionsConfigurer partitionsConfigurer =
@@ -229,7 +234,8 @@ public class ItLozaTest extends IgniteAbstractTest {
LogStorageManager logStorageManager =
SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- partitionsWorkDir.raftLogPath()
+ partitionsWorkDir.raftLogPath(),
+ logStorageConfiguration
);
allComponents.add(logStorageManager);
@@ -319,7 +325,8 @@ public class ItLozaTest extends IgniteAbstractTest {
LogStorageManager logStorageManager =
SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- partitionsWorkDir.raftLogPath()
+ partitionsWorkDir.raftLogPath(),
+ logStorageConfiguration
);
logStorageManager = spy(logStorageManager);
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItRaftGroupServiceTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItRaftGroupServiceTest.java
index 35aa5076e8a..08d510c8471 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItRaftGroupServiceTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItRaftGroupServiceTest.java
@@ -55,6 +55,7 @@ import
org.apache.ignite.internal.network.DefaultMessagingService;
import org.apache.ignite.internal.network.NodeFinder;
import org.apache.ignite.internal.network.StaticNodeFinder;
import org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftGroupOptions;
import org.apache.ignite.internal.raft.service.RaftGroupListener;
@@ -107,6 +108,9 @@ public class ItRaftGroupServiceTest extends
IgniteAbstractTest {
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@BeforeEach
public void setUp(TestInfo testInfo) {
for (int i = 0; i < NODES_CNT; i++) {
@@ -315,7 +319,8 @@ public class ItRaftGroupServiceTest extends
IgniteAbstractTest {
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- partitionsWorkDir.raftLogPath()
+ partitionsWorkDir.raftLogPath(),
+ logStorageConfiguration
);
this.loza = TestLozaFactory.create(
clusterService,
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftHlcServerTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftHlcServerTest.java
index 456ef7439ca..647335f179b 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftHlcServerTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftHlcServerTest.java
@@ -147,7 +147,8 @@ class ItJraftHlcServerTest extends RaftServerAbstractTest {
LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(
service.staticLocalNode().name(),
- workingDir.raftLogPath()
+ workingDir.raftLogPath(),
+ logStorageConfiguration
);
assertThat(partitionsLogStorageManager.startAsync(new
ComponentContext()), willCompleteSuccessfully());
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftServerLogPathTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftServerLogPathTest.java
index 4635143f7a4..3fd7647da1e 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftServerLogPathTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftServerLogPathTest.java
@@ -121,7 +121,8 @@ class ItJraftServerLogPathTest extends
RaftServerAbstractTest {
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
service.staticLocalNode().name(),
- workingDir.raftLogPath()
+ workingDir.raftLogPath(),
+ logStorageConfiguration
);
assertThat(partitionsLogStorageManager.startAsync(new
ComponentContext()), willCompleteSuccessfully());
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItSimpleCounterServerTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItSimpleCounterServerTest.java
index d93f26a3034..2adcb28b006 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItSimpleCounterServerTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItSimpleCounterServerTest.java
@@ -114,7 +114,8 @@ class ItSimpleCounterServerTest extends
RaftServerAbstractTest {
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
service.staticLocalNode().name(),
- workingDir.raftLogPath()
+ workingDir.raftLogPath(),
+ logStorageConfiguration
);
assertThat(partitionsLogStorageManager.startAsync(new
ComponentContext()), willCompleteSuccessfully());
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/JraftAbstractTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/JraftAbstractTest.java
index 18546aebeac..8d4f005b18b 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/JraftAbstractTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/JraftAbstractTest.java
@@ -210,7 +210,8 @@ public abstract class JraftAbstractTest extends
RaftServerAbstractTest {
LogStorageManager partitionsLogStorageManager =
spy(SharedLogStorageManagerUtils.create(
service.staticLocalNode().name(),
- workingDir.raftLogPath()
+ workingDir.raftLogPath(),
+ logStorageConfiguration
));
assertThat(partitionsLogStorageManager.startAsync(new
ComponentContext()), willCompleteSuccessfully());
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/RaftServerAbstractTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/RaftServerAbstractTest.java
index 2f2ce0ce60b..a461195a709 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/RaftServerAbstractTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/RaftServerAbstractTest.java
@@ -30,6 +30,7 @@ import org.apache.ignite.internal.manager.ComponentContext;
import org.apache.ignite.internal.network.ClusterService;
import org.apache.ignite.internal.network.StaticNodeFinder;
import org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
import org.apache.ignite.network.NetworkAddress;
@@ -58,6 +59,9 @@ abstract class RaftServerAbstractTest extends
IgniteAbstractTest {
@InjectConfiguration
protected SystemLocalConfiguration systemConfiguration;
+ @InjectConfiguration
+ protected static LogStorageConfiguration logStorageConfiguration;
+
/** Test info. */
TestInfo testInfo;
diff --git
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentFile.java
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentFile.java
index d008ddb4ac0..859a1f55c87 100644
---
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentFile.java
+++
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentFile.java
@@ -283,7 +283,8 @@ class SegmentFile implements ManuallyCloseable {
int nextPos = pos + size;
- if (nextPos > buffer.limit()) {
+ // nextPos < 0 detects integer overflow (pos >= 0 and size > 0).
+ if (nextPos < 0 || nextPos > buffer.limit()) {
return null;
}
diff --git
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManager.java
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManager.java
index ca663ce9037..97cf85b013a 100644
---
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManager.java
+++
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManager.java
@@ -37,6 +37,15 @@ import org.apache.ignite.raft.jraft.storage.LogStorage;
* Log storage manager for {@link SegstoreLogStorage} instances.
*/
public class SegmentLogStorageManager implements LogStorageManager {
+ /** Group ID for metastorage. */
+ public static final long METASTORAGE_GROUP_ID = 1;
+
+ /** Group ID for CMG. */
+ public static final long CMG_GROUP_ID = 2;
+
+ /** Offset so that (objectId=0, partitionId=0) maps to 3, avoiding
collision with metastorage (1) and cmg (2). */
+ public static final long SPECIAL_GROUP_ID_OFFSET = 3;
+
private static final Pattern PARTITION_GROUP_ID_PATTERN =
Pattern.compile("_part_");
private final SegmentFileManager fileManager;
@@ -63,17 +72,13 @@ public class SegmentLogStorageManager implements
LogStorageManager {
}
@Override
- public LogStorage createLogStorage(String groupId, RaftOptions
raftOptions) {
- return new SegstoreLogStorage(convertGroupId(groupId), fileManager);
+ public LogStorage createLogStorage(String raftNodeStorageId, RaftOptions
raftOptions) {
+ return new SegstoreLogStorage(convertNodeId(raftNodeStorageId),
fileManager);
}
@Override
- public void destroyLogStorage(String groupId) {
- try {
- fileManager.reset(convertGroupId(groupId), 1);
- } catch (IOException e) {
- throw new LogStorageException("Failed to destroy log storage for
group " + groupId, e);
- }
+ public void destroyLogStorage(String raftNodeStorageId) {
+ // TODO IGNITE-28527 Implement.
}
@Override
@@ -108,21 +113,47 @@ public class SegmentLogStorageManager implements
LogStorageManager {
}
}
- private static long convertGroupId(String groupId) {
- if ("metastorage_group".equals(groupId)) {
- return 1;
+ /**
+ * Converts a raft node storage ID string to a unique positive long, used
to identify a logical log within the segment file manager.
+ *
+ * <p>For partition groups ({@code
"{objectId}_part_{partitionId}-{peerIdx}"}):
+ * {@code result = (objectId << 32 | partitionId) +
SPECIAL_GROUP_ID_OFFSET}.
+ * {@code objectId} and {@code partitionId} are non-negative ints, so the
result is always positive and unique
+ * per {@code (objectId, partitionId)} pair.
+ *
+ * <p>{@code peerIdx} is not encoded because a single Ignite node
participates as exactly one peer per raft group,
+ * so {@code (objectId, partitionId)} is already unique within one {@link
SegmentLogStorageManager}.
+ */
+ // TODO IGNITE-26977 Revise after changing partition ID from int to long.
+ static long convertNodeId(String nodeId) {
+ // {groupId}-{peerIdx}. Peer index suffix is mandatory for all valid
raft node storage IDs.
+ int lastHyphen = nodeId.lastIndexOf('-');
+
+ if (lastHyphen <= 0) {
+ // TODO IGNITE-28525 Validate node IDs instead of allowing any
value.
+ return Integer.toUnsignedLong(nodeId.hashCode()) +
SPECIAL_GROUP_ID_OFFSET;
}
- if ("cmg_group".equals(groupId)) {
- return 2;
+ String groupName = nodeId.substring(0, lastHyphen);
+
+ if ("metastorage_group".equals(groupName)) {
+ return METASTORAGE_GROUP_ID;
+ }
+
+ if ("cmg_group".equals(groupName)) {
+ return CMG_GROUP_ID;
}
- String[] partitionGroupIdArray =
PARTITION_GROUP_ID_PATTERN.split(groupId);
+ String[] parts = PARTITION_GROUP_ID_PATTERN.split(groupName);
- if (partitionGroupIdArray.length == 2) {
- return Long.parseLong(partitionGroupIdArray[0]) << 32 |
Long.parseLong(partitionGroupIdArray[1]);
- } else {
- throw new IllegalArgumentException("Invalid groupId: " + groupId);
+ if (parts.length == 2) {
+ int objectId = Integer.parseInt(parts[0]);
+ int partitionId = Integer.parseInt(parts[1]);
+
+ return ((long) objectId << 32 |
Integer.toUnsignedLong(partitionId)) + SPECIAL_GROUP_ID_OFFSET;
}
+
+ // TODO IGNITE-28525 Validate node IDs instead of allowing any value.
+ return Integer.toUnsignedLong(nodeId.hashCode()) +
SPECIAL_GROUP_ID_OFFSET;
}
}
diff --git
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageOptions.java
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageOptions.java
new file mode 100644
index 00000000000..c7f276da900
--- /dev/null
+++
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageOptions.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.raft.storage.segstore;
+
+import org.apache.ignite.internal.failure.FailureProcessor;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
+import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
+
+/** Options to create {@link SegmentLogStorageManager} using {@link
SharedLogStorageManagerUtils}. */
+public class SegmentLogStorageOptions {
+ private final int stripes;
+
+ private final LogStorageConfiguration configuration;
+
+ private final FailureProcessor failureProcessor;
+
+ /** Constructor. */
+ public SegmentLogStorageOptions(int stripes, LogStorageConfiguration
configuration, FailureProcessor failureProcessor) {
+ this.stripes = stripes;
+ this.configuration = configuration;
+ this.failureProcessor = failureProcessor;
+ }
+
+ /** Number of log storage disruptor stripes. */
+ public int stripes() {
+ return stripes;
+ }
+
+ /** Log storage configuration. */
+ public LogStorageConfiguration configuration() {
+ return configuration;
+ }
+
+ /** Failure processor. */
+ public FailureProcessor failureProcessor() {
+ return failureProcessor;
+ }
+}
diff --git
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/util/SharedLogStorageManagerUtils.java
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/util/SharedLogStorageManagerUtils.java
index f8917fd16b1..1c770292ae9 100644
---
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/util/SharedLogStorageManagerUtils.java
+++
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/util/SharedLogStorageManagerUtils.java
@@ -17,13 +17,22 @@
package org.apache.ignite.internal.raft.util;
+import java.io.IOException;
import java.nio.file.Path;
+import org.apache.ignite.internal.failure.FailureManager;
+import org.apache.ignite.internal.failure.FailureProcessor;
+import org.apache.ignite.internal.failure.handlers.NoOpFailureHandler;
import org.apache.ignite.internal.lang.IgniteSystemProperties;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
import org.apache.ignite.internal.raft.storage.impl.DefaultLogStorageManager;
+import org.apache.ignite.internal.raft.storage.impl.LogStorageException;
import org.apache.ignite.internal.raft.storage.impl.RocksDbLogStorageOptions;
import org.apache.ignite.internal.raft.storage.logit.LogitLogStorageManager;
+import
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageManager;
+import
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageOptions;
import org.apache.ignite.raft.jraft.storage.logit.option.StoreOptions;
+import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
/** Utility methods for creating {@link LogStorageManager}is for the Shared
Log. */
@@ -41,36 +50,48 @@ public class SharedLogStorageManagerUtils {
* LOGIT_STORAGE_ENABLED_PROPERTY and fsync set to true.
*/
@TestOnly
- public static LogStorageManager create(String nodeName, Path
logStoragePath) {
- return create("test", nodeName, logStoragePath, true);
- }
+ public static LogStorageManager create(String nodeName, Path
logStoragePath, LogStorageConfiguration logStorageConfig) {
+ var segmentLogStorageOptions = new SegmentLogStorageOptions(1,
logStorageConfig, new FailureManager(new NoOpFailureHandler()));
- /**
- * Creates a LogStorageManager with {@link DefaultLogStorageManager} or
{@link LogitLogStorageManager} implementation depending on
- * LOGIT_STORAGE_ENABLED_PROPERTY.
- */
- public static LogStorageManager create(
- String factoryName,
- String nodeName,
- Path logStoragePath,
- boolean fsync
- ) {
- return create(factoryName, nodeName, logStoragePath, fsync,
RocksDbLogStorageOptions.defaults());
+ return create("test", nodeName, logStoragePath, true,
RocksDbLogStorageOptions.defaults(), segmentLogStorageOptions);
}
/**
- * Creates a LogStorageManager with {@link DefaultLogStorageManager} or
{@link LogitLogStorageManager} implementation depending on
- * LOGIT_STORAGE_ENABLED_PROPERTY.
+ * Creates a LogStorageManager with {@link SegmentLogStorageManager},
{@link DefaultLogStorageManager} or {@link LogitLogStorageManager}
+ * implementation depending on SEGSTORE_ENABLED_PROPERTY /
LOGIT_STORAGE_ENABLED_PROPERTY.
*/
public static LogStorageManager create(
String factoryName,
String nodeName,
Path logStoragePath,
boolean fsync,
- RocksDbLogStorageOptions specificOptions
+ RocksDbLogStorageOptions rocksDbStoreSpecificOptions,
+ @Nullable SegmentLogStorageOptions segmentStoreSpecificOptions
) {
- return
IgniteSystemProperties.getBoolean(LOGIT_STORAGE_ENABLED_PROPERTY,
LOGIT_STORAGE_ENABLED_PROPERTY_DEFAULT)
- ? new LogitLogStorageManager(nodeName, new StoreOptions(),
logStoragePath)
- : new DefaultLogStorageManager(factoryName, nodeName,
logStoragePath, fsync, specificOptions);
+ if (!IgniteSystemProperties.segmentLogStorageEnabled()) {
+ return
IgniteSystemProperties.getBoolean(LOGIT_STORAGE_ENABLED_PROPERTY,
LOGIT_STORAGE_ENABLED_PROPERTY_DEFAULT)
+ ? new LogitLogStorageManager(nodeName, new StoreOptions(),
logStoragePath)
+ : new DefaultLogStorageManager(factoryName, nodeName,
logStoragePath, fsync, rocksDbStoreSpecificOptions);
+ }
+
+ assert segmentStoreSpecificOptions != null;
+
+ int stripes = segmentStoreSpecificOptions.stripes();
+ LogStorageConfiguration storageConfiguration =
segmentStoreSpecificOptions.configuration();
+ FailureProcessor failureProcessor =
segmentStoreSpecificOptions.failureProcessor();
+
+ try {
+ return new SegmentLogStorageManager(
+ nodeName,
+ factoryName,
+ logStoragePath,
+ stripes,
+ failureProcessor,
+ fsync,
+ storageConfiguration
+ );
+ } catch (IOException e) {
+ throw new LogStorageException("Couldn't create
SegmentLogStorageManager", e);
+ }
}
}
diff --git
a/modules/raft/src/test/java/org/apache/ignite/internal/raft/LozaTest.java
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/LozaTest.java
index 769b6bcc732..bb30a475c9b 100644
--- a/modules/raft/src/test/java/org/apache/ignite/internal/raft/LozaTest.java
+++ b/modules/raft/src/test/java/org/apache/ignite/internal/raft/LozaTest.java
@@ -35,6 +35,7 @@ import org.apache.ignite.internal.network.ClusterService;
import org.apache.ignite.internal.network.InternalClusterNode;
import org.apache.ignite.internal.network.MessagingService;
import org.apache.ignite.internal.network.TopologyService;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftGroupOptions;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -65,6 +66,9 @@ public class LozaTest extends IgniteAbstractTest {
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
/**
* Checks that the all API methods throw the exception ({@link
NodeStoppingException})
* when Loza is closed.
@@ -79,7 +83,8 @@ public class LozaTest extends IgniteAbstractTest {
LogStorageManager logStorageManager =
SharedLogStorageManagerUtils.create(
clusterNetSvc.staticLocalNode().name(),
- workDir.resolve("partitions/log")
+ workDir.resolve("partitions/log"),
+ logStorageConfiguration
);
assertThat(logStorageManager.startAsync(new ComponentContext()),
willCompleteSuccessfully());
diff --git
a/modules/raft/src/test/java/org/apache/ignite/internal/raft/client/PhysicalTopologyAwareRaftGroupServiceTest.java
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/client/PhysicalTopologyAwareRaftGroupServiceTest.java
index cc57c406b21..22ffb11dcdc 100644
---
a/modules/raft/src/test/java/org/apache/ignite/internal/raft/client/PhysicalTopologyAwareRaftGroupServiceTest.java
+++
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/client/PhysicalTopologyAwareRaftGroupServiceTest.java
@@ -56,6 +56,7 @@ import org.apache.ignite.internal.raft.PeersAndLearners;
import org.apache.ignite.internal.raft.RaftNodeId;
import org.apache.ignite.internal.raft.StoppingExceptionFactories;
import org.apache.ignite.internal.raft.TestRaftGroupListener;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftGroupOptions;
import org.apache.ignite.internal.raft.server.TestJraftServerFactory;
@@ -109,6 +110,9 @@ public class PhysicalTopologyAwareRaftGroupServiceTest
extends IgniteAbstractTes
@InjectConfiguration
private RaftConfiguration raftConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@AfterEach
public void afterTest() throws Exception {
stopCluster();
@@ -420,7 +424,8 @@ public class PhysicalTopologyAwareRaftGroupServiceTest
extends IgniteAbstractTes
LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(
cluster.staticLocalNode().name(),
- workingDir.resolve("log")
+ workingDir.resolve("log"),
+ logStorageConfiguration
);
logStorageFactories.put(addr, partitionsLogStorageManager);
diff --git
a/modules/raft/src/test/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManagerConvertNodeIdTest.java
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManagerConvertNodeIdTest.java
new file mode 100644
index 00000000000..70a06cd9f4a
--- /dev/null
+++
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManagerConvertNodeIdTest.java
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.raft.storage.segstore;
+
+import static
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageManager.CMG_GROUP_ID;
+import static
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageManager.METASTORAGE_GROUP_ID;
+import static
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageManager.SPECIAL_GROUP_ID_OFFSET;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
+import org.junit.jupiter.api.Test;
+
+class SegmentLogStorageManagerConvertNodeIdTest extends BaseIgniteAbstractTest
{
+ private static final String METASTORAGE_GROUP = "metastorage_group";
+
+ private static final String CMG_GROUP = "cmg_group";
+
+ private static final String PART_SEPARATOR = "_part_";
+
+ private static final String PEER_SEPARATOR = "-";
+
+ private static String partitionNodeId(int objectId, int partitionId, int
peerIdx) {
+ return objectId + PART_SEPARATOR + partitionId + PEER_SEPARATOR +
peerIdx;
+ }
+
+ private static String metastorageNodeId(int peerIdx) {
+ return METASTORAGE_GROUP + PEER_SEPARATOR + peerIdx;
+ }
+
+ private static String cmgNodeId(int peerIdx) {
+ return CMG_GROUP + PEER_SEPARATOR + peerIdx;
+ }
+
+ @Test
+ void metastorageGroup() {
+ assertThat(convertNodeId(metastorageNodeId(0)),
equalTo(METASTORAGE_GROUP_ID));
+ assertThat(convertNodeId(metastorageNodeId(1)),
equalTo(METASTORAGE_GROUP_ID));
+ }
+
+ @Test
+ void cmgGroup() {
+ assertThat(convertNodeId(cmgNodeId(0)), equalTo(CMG_GROUP_ID));
+ assertThat(convertNodeId(cmgNodeId(1)), equalTo(CMG_GROUP_ID));
+ }
+
+ @Test
+ void zeroPartitionGroupId() {
+ assertThat(convertNodeId(partitionNodeId(0, 0, 0)),
equalTo(SPECIAL_GROUP_ID_OFFSET));
+ }
+
+ @Test
+ void partitionGroup() {
+ long result = convertNodeId(partitionNodeId(42, 7, 0));
+ assertThat(result, equalTo((42L << 32 | 7) + SPECIAL_GROUP_ID_OFFSET));
+ assertThat(result, greaterThan(0L));
+ }
+
+ @Test
+ void partitionGroupMaxObjectId() {
+ long result = convertNodeId(partitionNodeId(Integer.MAX_VALUE, 0, 0));
+ assertThat(result, equalTo(((long) Integer.MAX_VALUE << 32) +
SPECIAL_GROUP_ID_OFFSET));
+ assertThat(result, greaterThan(0L));
+ }
+
+ @Test
+ void partitionGroupMaxPartitionId() {
+ long result = convertNodeId(partitionNodeId(0, Integer.MAX_VALUE, 0));
+ assertThat(result, equalTo(Integer.toUnsignedLong(Integer.MAX_VALUE) +
SPECIAL_GROUP_ID_OFFSET));
+ assertThat(result, greaterThan(0L));
+ }
+
+ @Test
+ void partitionGroupMaxBothIds() {
+ long result = convertNodeId(partitionNodeId(Integer.MAX_VALUE,
Integer.MAX_VALUE, 0));
+ assertThat(result, equalTo(((long) Integer.MAX_VALUE << 32 |
Integer.toUnsignedLong(Integer.MAX_VALUE)) + SPECIAL_GROUP_ID_OFFSET));
+ assertThat(result, greaterThan(0L));
+ }
+
+ @Test
+ void peerIndexIgnoredForPartitionGroups() {
+ long result0 = convertNodeId(partitionNodeId(10, 5, 0));
+ long result1 = convertNodeId(partitionNodeId(10, 5, 1));
+ long result99 = convertNodeId(partitionNodeId(10, 5, 99));
+ assertThat(result0, equalTo(result1));
+ assertThat(result0, equalTo(result99));
+ assertThat(result0, greaterThan(0L));
+ }
+
+ @Test
+ void differentPartitionGroupsProduceUniqueIds() {
+ Set<Long> ids = new HashSet<>();
+ for (int objectId = 0; objectId < 1000; objectId++) {
+ for (int partId = 0; partId < 1000; partId++) {
+ long id = convertNodeId(partitionNodeId(objectId, partId, 0));
+ assertThat(ids.add(id), is(true));
+ }
+ }
+ }
+
+ @Test
+ void specialGroupsDoNotCollideWithPartitionGroups() {
+ long meta = convertNodeId(metastorageNodeId(0));
+ long cmg = convertNodeId(cmgNodeId(0));
+ long partition = convertNodeId(partitionNodeId(0, 0, 0));
+
+ assertThat(meta, not(equalTo(cmg)));
+ assertThat(meta, not(equalTo(partition)));
+ assertThat(cmg, not(equalTo(partition)));
+ }
+
+ @Test
+ void invalidIdsFallsThrough() {
+ // Missing peer index is a bug — IDs without it should not match any
known group.
+ long metaNoSuffix = convertNodeId(METASTORAGE_GROUP);
+ long cmgNoSuffix = convertNodeId(CMG_GROUP);
+ long partNoSuffix = convertNodeId("5" + PART_SEPARATOR + "3");
+ long noHyphen = convertNodeId("some_random_string");
+ long unknownWithPeer = convertNodeId("unknown_group" + PEER_SEPARATOR
+ 0);
+
+ assertThat(metaNoSuffix, not(equalTo(METASTORAGE_GROUP_ID)));
+ assertThat(cmgNoSuffix, not(equalTo(CMG_GROUP_ID)));
+ assertThat(partNoSuffix, not(equalTo((5L << 32 | 3) +
SPECIAL_GROUP_ID_OFFSET)));
+
+ // Must be unique and positive.
+ Set<Long> ids = Set.of(metaNoSuffix, cmgNoSuffix, partNoSuffix,
noHyphen, unknownWithPeer);
+
+ assertThat(ids, hasSize(5));
+ for (long id : ids) {
+ assertThat(id, greaterThan(0L));
+ }
+ }
+
+ private static long convertNodeId(String nodeId) {
+ return SegmentLogStorageManager.convertNodeId(nodeId);
+ }
+}
diff --git
a/modules/replicator/src/integrationTest/java/org/apache/ignite/internal/replicator/ItPlacementDriverReplicaSideTest.java
b/modules/replicator/src/integrationTest/java/org/apache/ignite/internal/replicator/ItPlacementDriverReplicaSideTest.java
index 92484f02a39..cf8542f7aba 100644
---
a/modules/replicator/src/integrationTest/java/org/apache/ignite/internal/replicator/ItPlacementDriverReplicaSideTest.java
+++
b/modules/replicator/src/integrationTest/java/org/apache/ignite/internal/replicator/ItPlacementDriverReplicaSideTest.java
@@ -91,6 +91,7 @@ import org.apache.ignite.internal.raft.TestLozaFactory;
import org.apache.ignite.internal.raft.TestRaftGroupListener;
import org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupService;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.service.RaftCommandRunner;
import org.apache.ignite.internal.raft.service.RaftGroupService;
@@ -139,6 +140,9 @@ public class ItPlacementDriverReplicaSideTest extends
IgniteAbstractTest {
@InjectConfiguration
private ReplicationConfiguration replicationConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
private final HybridClock clock = new HybridClockImpl();
private final ClockService testClockService = new TestClockService(clock);
@@ -196,7 +200,8 @@ public class ItPlacementDriverReplicaSideTest extends
IgniteAbstractTest {
LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
- partitionsWorkDir.raftLogPath()
+ partitionsWorkDir.raftLogPath(),
+ logStorageConfiguration
);
RaftGroupOptionsConfigurer partitionsConfigurer =
diff --git
a/modules/replicator/src/testFixtures/java/org/apache/ignite/internal/raft/client/AbstractTopologyAwareGroupServiceTest.java
b/modules/replicator/src/testFixtures/java/org/apache/ignite/internal/raft/client/AbstractTopologyAwareGroupServiceTest.java
index 6b95d509dbc..a934c7cebe5 100644
---
a/modules/replicator/src/testFixtures/java/org/apache/ignite/internal/raft/client/AbstractTopologyAwareGroupServiceTest.java
+++
b/modules/replicator/src/testFixtures/java/org/apache/ignite/internal/raft/client/AbstractTopologyAwareGroupServiceTest.java
@@ -58,6 +58,7 @@ import org.apache.ignite.internal.raft.PeersAndLearners;
import org.apache.ignite.internal.raft.RaftNodeId;
import org.apache.ignite.internal.raft.StoppingExceptionFactories;
import org.apache.ignite.internal.raft.TestRaftGroupListener;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftGroupOptions;
import org.apache.ignite.internal.raft.server.TestJraftServerFactory;
@@ -117,6 +118,9 @@ public abstract class AbstractTopologyAwareGroupServiceTest
extends IgniteAbstra
@InjectConfiguration
protected RaftConfiguration raftConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@AfterEach
protected void tearDown() throws Exception {
IgniteUtils.shutdownAndAwaitTermination(executor, 10,
TimeUnit.SECONDS);
@@ -477,7 +481,8 @@ public abstract class AbstractTopologyAwareGroupServiceTest
extends IgniteAbstra
LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(
cluster.staticLocalNode().name(),
- workingDir.resolve("log")
+ workingDir.resolve("log"),
+ logStorageConfiguration
);
logStorageFactories.put(addr, partitionsLogStorageManager);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItTruncateRaftLogAndRestartNodesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItTruncateRaftLogAndRestartNodesTest.java
index 83e14a4db01..a92e25f105e 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItTruncateRaftLogAndRestartNodesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItTruncateRaftLogAndRestartNodesTest.java
@@ -50,10 +50,13 @@ import java.util.stream.IntStream;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
import org.apache.ignite.internal.close.ManuallyCloseable;
+import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
+import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.manager.ComponentContext;
import org.apache.ignite.internal.network.InternalClusterNode;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
import org.apache.ignite.internal.raft.storage.impl.IgniteJraftServiceFactory;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -82,12 +85,14 @@ import org.apache.ignite.raft.jraft.storage.LogStorage;
import org.apache.ignite.tx.TransactionOptions;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
/**
* Class for testing various scenarios with raft log truncation and node
restarts that emulate the situation with fsync disabled for raft
* groups associated with tables.
*/
// TODO: IGNITE-25501 Fix partition state after snapshot
+@ExtendWith(ConfigurationExtension.class)
public class ItTruncateRaftLogAndRestartNodesTest extends
ClusterPerTestIntegrationTest {
private static final IgniteLogger LOG =
Loggers.forClass(ItTruncateRaftLogAndRestartNodesTest.class);
@@ -95,6 +100,9 @@ public class ItTruncateRaftLogAndRestartNodesTest extends
ClusterPerTestIntegrat
private static final String TABLE_NAME = "TEST_TABLE";
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@Override
protected int initialNodes() {
return 0;
@@ -216,7 +224,8 @@ public class ItTruncateRaftLogAndRestartNodesTest extends
ClusterPerTestIntegrat
LogStorageManager logStorageManager =
SharedLogStorageManagerUtils.create(
ignite.name(),
- ignite.partitionsWorkDir().raftLogPath()
+ ignite.partitionsWorkDir().raftLogPath(),
+ logStorageConfiguration
);
NodeImpl nodeImpl = raftNodeImpl(nodeIndex, replicationGroupId);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
index 3793d4f3ae1..4f0873c137d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
@@ -73,6 +73,7 @@ import
org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
import org.apache.ignite.internal.raft.Loza;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -107,6 +108,9 @@ public class ItDistributedConfigurationPropertiesTest
extends BaseIgniteAbstract
@InjectConfiguration
private static RaftConfiguration raftConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@InjectConfiguration
private static NodeAttributesConfiguration nodeAttributes;
@@ -178,7 +182,7 @@ public class ItDistributedConfigurationPropertiesTest
extends BaseIgniteAbstract
String nodeName = clusterService.staticLocalNode().name();
- partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+ partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(),
logStorageConfiguration);
raftManager = TestLozaFactory.create(
clusterService,
@@ -201,7 +205,7 @@ public class ItDistributedConfigurationPropertiesTest
extends BaseIgniteAbstract
ComponentWorkingDir cmgWorkDir = new
ComponentWorkingDir(workDir.resolve("cmg"));
- cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+ cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(),
logStorageConfiguration);
RaftGroupOptionsConfigurer cmgRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager,
cmgWorkDir.metaPath());
@@ -234,7 +238,7 @@ public class ItDistributedConfigurationPropertiesTest
extends BaseIgniteAbstract
ComponentWorkingDir metastorageWorkDir = new
ComponentWorkingDir(workDir.resolve("metastorage"));
- msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+ msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(),
logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
index 70c534ef163..d94f546ca81 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
@@ -67,6 +67,7 @@ import
org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
import org.apache.ignite.internal.raft.Loza;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -91,6 +92,9 @@ public class ItDistributedConfigurationStorageTest extends
BaseIgniteAbstractTes
@InjectConfiguration
private static RaftConfiguration raftConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@InjectConfiguration
private static NodeAttributesConfiguration nodeAttributes;
@@ -152,7 +156,7 @@ public class ItDistributedConfigurationStorageTest extends
BaseIgniteAbstractTes
String nodeName = clusterService.staticLocalNode().name();
- partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+ partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(),
logStorageConfiguration);
raftManager = TestLozaFactory.create(
clusterService,
@@ -175,7 +179,7 @@ public class ItDistributedConfigurationStorageTest extends
BaseIgniteAbstractTes
ComponentWorkingDir cmgWorkDir = new
ComponentWorkingDir(workDir.resolve("cmg"));
- cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+ cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(),
logStorageConfiguration);
RaftGroupOptionsConfigurer cmgRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager,
cmgWorkDir.metaPath());
@@ -208,7 +212,7 @@ public class ItDistributedConfigurationStorageTest extends
BaseIgniteAbstractTes
ComponentWorkingDir metastorageWorkDir = new
ComponentWorkingDir(workDir.resolve("metastorage"));
- msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+ msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(),
logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
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 249941496f1..b35f59aaae1 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
@@ -182,6 +182,7 @@ import
org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.RaftNodeId;
import org.apache.ignite.internal.raft.TestLozaFactory;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -289,6 +290,9 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
@InjectConfiguration("mock: " + RAFT_CFG)
private static RaftConfiguration raftConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@InjectConfiguration
private static SystemLocalConfiguration systemConfiguration;
@@ -425,7 +429,8 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
String nodeName = clusterSvc.staticLocalNode().name();
- LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, partitionsWorkDir.raftLogPath());
+ LogStorageManager partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, partitionsWorkDir.raftLogPath(),
+ logStorageConfiguration);
LogSyncer partitionsLogSyncer =
partitionsLogStorageManager.logSyncer();
@@ -450,7 +455,8 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
ComponentWorkingDir cmgWorkDir = new
ComponentWorkingDir(workDir.resolve("cmg"));
- LogStorageManager cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+ LogStorageManager cmgLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(),
+ logStorageConfiguration);
RaftGroupOptionsConfigurer cmgRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager,
cmgWorkDir.metaPath());
@@ -512,7 +518,8 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
ComponentWorkingDir metastorageWorkDir = new
ComponentWorkingDir(workDir.resolve("metastorage"));
- LogStorageManager msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+ LogStorageManager msLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(),
+ logStorageConfiguration);
RaftGroupOptionsConfigurer msRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager,
metastorageWorkDir.metaPath());
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 362f1b677ee..afe9e7d4cd0 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
@@ -155,6 +155,7 @@ import org.apache.ignite.internal.index.IndexManager;
import org.apache.ignite.internal.index.IndexNodeFinishedRwTransactionsChecker;
import org.apache.ignite.internal.lang.IgniteInternalException;
import org.apache.ignite.internal.lang.IgniteStringBuilder;
+import org.apache.ignite.internal.lang.IgniteSystemProperties;
import org.apache.ignite.internal.lang.NodeStoppingException;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
@@ -206,6 +207,7 @@ import org.apache.ignite.internal.raft.Loza;
import org.apache.ignite.internal.raft.Marshaller;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import
org.apache.ignite.internal.raft.configuration.LogStorageExtensionConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import
org.apache.ignite.internal.raft.configuration.RaftExtensionConfiguration;
import
org.apache.ignite.internal.raft.server.impl.GroupStoragesContextResolver;
@@ -214,6 +216,7 @@ import
org.apache.ignite.internal.raft.storage.LogStorageManager;
import org.apache.ignite.internal.raft.storage.impl.RocksDbLogStorageOptions;
import
org.apache.ignite.internal.raft.storage.impl.VaultGroupStoragesDestructionIntents;
import
org.apache.ignite.internal.raft.storage.impl.VolatileLogStorageManagerCreator;
+import
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageOptions;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
import org.apache.ignite.internal.replicator.PartitionGroupId;
import org.apache.ignite.internal.replicator.ReplicaManager;
@@ -669,6 +672,8 @@ public class IgniteImpl implements Ignite {
partitionsWorkDir = partitionsPath(systemConfiguration, workDir);
+ SegmentLogStorageOptions segstoreSpecificOptions =
getSegmentLogStorageOptions(raftConfiguration);
+
InternalClusterNode localNode = clusterSvc.staticLocalNode();
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
@@ -676,7 +681,8 @@ public class IgniteImpl implements Ignite {
localNode.name(),
partitionsWorkDir.raftLogPath(),
raftConfiguration.fsync().value(),
-
RocksDbLogStorageOptions.forPartitions(systemConfiguration.value())
+
RocksDbLogStorageOptions.forPartitions(systemConfiguration.value()),
+ segstoreSpecificOptions
);
LogSyncer partitionsLogSyncer =
partitionsLogStorageManager.logSyncer();
@@ -688,14 +694,18 @@ public class IgniteImpl implements Ignite {
localNode.name(),
metastorageWorkDir.raftLogPath(),
// If it changes, then it will be necessary to set LogSyncer
to RocksDbKeyValueStorage.
- true
+ true,
+ RocksDbLogStorageOptions.defaults(),
+ segstoreSpecificOptions
);
cmgLogStorageManager = SharedLogStorageManagerUtils.create(
"cluster-management-group log",
localNode.name(),
cmgWorkDir.raftLogPath(),
- true
+ true,
+ RocksDbLogStorageOptions.defaults(),
+ segstoreSpecificOptions
);
RaftGroupOptionsConfigurer cmgRaftConfigurer =
@@ -1385,6 +1395,20 @@ public class IgniteImpl implements Ignite {
publicCluster = new PublicApiThreadingIgniteCluster(new
IgniteClusterImpl(clusterSvc.topologyService(), clusterIdService));
}
+ private @Nullable SegmentLogStorageOptions
getSegmentLogStorageOptions(RaftConfiguration raftConfiguration) {
+ if (!IgniteSystemProperties.segmentLogStorageEnabled()) {
+ return null;
+ }
+
+ LogStorageExtensionConfiguration logStorageConfig =
nodeConfigRegistry.getConfiguration(LogStorageExtensionConfiguration.KEY);
+
+ return new SegmentLogStorageOptions(
+ raftConfiguration.disruptor().logManagerStripes().value(),
+ logStorageConfig.logStorage(),
+ failureManager
+ );
+ }
+
private JobScopedIgnite createJobScopedIgnite(HybridTimestampTracker
tracker) {
return new JobScopedIgnite(this, tracker, txManager, sql,
asyncContinuationExecutor);
}
diff --git
a/modules/runner/src/test/java/org/apache/ignite/internal/metrics/logstorage/LogStorageMetricsTest.java
b/modules/runner/src/test/java/org/apache/ignite/internal/metrics/logstorage/LogStorageMetricsTest.java
index ae4bf37db4f..6409e1d4b85 100644
---
a/modules/runner/src/test/java/org/apache/ignite/internal/metrics/logstorage/LogStorageMetricsTest.java
+++
b/modules/runner/src/test/java/org/apache/ignite/internal/metrics/logstorage/LogStorageMetricsTest.java
@@ -30,13 +30,17 @@ import java.nio.ByteBuffer;
import java.nio.file.Path;
import java.util.Random;
import java.util.concurrent.CompletableFuture;
+import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
+import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.manager.ComponentContext;
import org.apache.ignite.internal.metrics.LongGauge;
import org.apache.ignite.internal.metrics.TestMetricManager;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
import
org.apache.ignite.internal.raft.storage.impl.VolatileLogStorageManagerCreator;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
import org.apache.ignite.internal.replicator.ZonePartitionId;
+import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.raft.jraft.conf.ConfigurationManager;
@@ -54,7 +58,8 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(WorkDirectoryExtension.class)
-class LogStorageMetricsTest {
+@ExtendWith(ConfigurationExtension.class)
+class LogStorageMetricsTest extends BaseIgniteAbstractTest {
@WorkDirectory
private Path workDir;
@@ -72,6 +77,9 @@ class LogStorageMetricsTest {
private final LogStorageOptions logStorageOptions = new
LogStorageOptions();
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@BeforeEach
void setUp() {
logStorageOptions.setConfigurationManager(new ConfigurationManager());
@@ -79,9 +87,10 @@ class LogStorageMetricsTest {
String nodeName = "test";
- cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName,
workDir.resolve("cmg"));
- metastorageLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workDir.resolve("metastorage"));
- partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workDir.resolve("partitions"));
+ cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName,
workDir.resolve("cmg"), logStorageConfiguration);
+ metastorageLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workDir.resolve("metastorage"),
+ logStorageConfiguration);
+ partitionsLogStorageManager =
SharedLogStorageManagerUtils.create(nodeName, workDir.resolve("partitions"),
logStorageConfiguration);
volatileLogStorageManagerCreator = new
VolatileLogStorageManagerCreator(nodeName, workDir.resolve("spillout"));
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
index d144d5c037b..024a2d6aee9 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
@@ -37,6 +37,7 @@ import org.apache.ignite.internal.metrics.NoOpMetricManager;
import org.apache.ignite.internal.network.ClusterService;
import org.apache.ignite.internal.network.InternalClusterNode;
import org.apache.ignite.internal.placementdriver.PlacementDriver;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.replicator.ReplicaService;
import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
@@ -107,6 +108,9 @@ public class ItLockTableTest extends IgniteAbstractTest {
@InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
private static SystemDistributedConfiguration
systemDistributedConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@InjectExecutorService
protected ScheduledExecutorService commonExecutor;
@@ -128,6 +132,7 @@ public class ItLockTableTest extends IgniteAbstractTest {
txTestCluster = new ItTxTestCluster(
testInfo,
raftConfiguration,
+ logStorageConfiguration,
txConfiguration,
systemLocalConfiguration,
systemDistributedConfiguration,
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
index 687607680eb..3263f8697be 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
@@ -18,16 +18,23 @@
package org.apache.ignite.distributed;
import java.util.concurrent.atomic.AtomicInteger;
+import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
+import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.network.DefaultMessagingService;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.table.TxAbstractTest;
import org.apache.ignite.internal.tx.message.TxCleanupMessage;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInfo;
+import org.junit.jupiter.api.extension.ExtendWith;
/**
* Durable cleanup test with successful recovery after the failures.
*/
+@ExtendWith(ConfigurationExtension.class)
public class ItTxDistributedCleanupRecoveryTest extends TxAbstractTest {
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
private AtomicInteger defaultRetryCount;
@@ -52,6 +59,7 @@ public class ItTxDistributedCleanupRecoveryTest extends
TxAbstractTest {
txTestCluster = new ItTxTestCluster(
testInfo,
raftConfiguration,
+ logStorageConfiguration,
txConfiguration,
systemLocalConfiguration,
systemDistributedConfiguration,
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
index 2bf11c528c6..edbe8090dfa 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
@@ -50,6 +50,7 @@ import
org.apache.ignite.internal.partition.replicator.FuturesCleanupResult;
import org.apache.ignite.internal.partition.replicator.ReplicaPrimacy;
import
org.apache.ignite.internal.partition.replicator.schema.ValidationSchemasSource;
import org.apache.ignite.internal.placementdriver.PlacementDriver;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.service.RaftGroupService;
import org.apache.ignite.internal.replicator.ReplicaResult;
import org.apache.ignite.internal.replicator.ReplicaService;
@@ -100,6 +101,9 @@ public class ItTxDistributedTestSingleNodeNoCleanupMessage
extends TxAbstractTes
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
private SystemDistributedConfiguration systemDistributedConfiguration;
@@ -118,6 +122,7 @@ public class ItTxDistributedTestSingleNodeNoCleanupMessage
extends TxAbstractTes
txTestCluster = new ItTxTestCluster(
testInfo,
raftConfiguration,
+ logStorageConfiguration,
txConfiguration,
systemLocalConfiguration,
systemDistributedConfiguration,
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
index 4d6487a1bdf..8fe82d92820 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
@@ -36,6 +36,7 @@ import
org.apache.ignite.internal.configuration.testframework.InjectConfiguratio
import org.apache.ignite.internal.hlc.HybridTimestamp;
import org.apache.ignite.internal.hlc.HybridTimestampTracker;
import org.apache.ignite.internal.network.InternalClusterNode;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.internal.schema.Column;
@@ -67,6 +68,9 @@ public class ItTxStateLocalMapTest extends IgniteAbstractTest
{
@InjectConfiguration("mock: { fsync: false }")
private RaftConfiguration raftConfig;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@InjectConfiguration
private TransactionConfiguration txConfiguration;
@@ -105,6 +109,7 @@ public class ItTxStateLocalMapTest extends
IgniteAbstractTest {
testCluster = new ItTxTestCluster(
testInfo,
raftConfig,
+ logStorageConfiguration,
txConfiguration,
systemLocalConfiguration,
systemDistributedConfiguration,
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ReplicasSafeTimePropagationTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ReplicasSafeTimePropagationTest.java
index 2ba059e2b9c..c4676d924c3 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ReplicasSafeTimePropagationTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ReplicasSafeTimePropagationTest.java
@@ -49,7 +49,9 @@ import
org.apache.ignite.internal.configuration.ComponentWorkingDir;
import org.apache.ignite.internal.configuration.SystemLocalConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
+import org.apache.ignite.internal.failure.FailureManager;
import org.apache.ignite.internal.failure.NoOpFailureManager;
+import org.apache.ignite.internal.failure.handlers.NoOpFailureHandler;
import org.apache.ignite.internal.hlc.ClockService;
import org.apache.ignite.internal.hlc.HybridClock;
import org.apache.ignite.internal.hlc.HybridTimestamp;
@@ -70,12 +72,15 @@ import
org.apache.ignite.internal.raft.RaftGroupEventsListener;
import org.apache.ignite.internal.raft.RaftNodeId;
import org.apache.ignite.internal.raft.TestLozaFactory;
import org.apache.ignite.internal.raft.WriteCommand;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.RaftGroupOptions;
import org.apache.ignite.internal.raft.service.CommandClosure;
import org.apache.ignite.internal.raft.service.LeaderWithTerm;
import org.apache.ignite.internal.raft.service.RaftGroupService;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
+import org.apache.ignite.internal.raft.storage.impl.RocksDbLogStorageOptions;
+import
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageOptions;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
import org.apache.ignite.internal.replicator.ZonePartitionId;
import org.apache.ignite.internal.replicator.message.ReplicaMessagesFactory;
@@ -102,6 +107,9 @@ public class ReplicasSafeTimePropagationTest extends
IgniteAbstractTest {
@InjectConfiguration("mock: { fsync: false }")
private RaftConfiguration raftConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;
@@ -359,7 +367,13 @@ public class ReplicasSafeTimePropagationTest extends
IgniteAbstractTest {
"test",
clusterService.staticLocalNode().name(),
workingDir.raftLogPath(),
- raftConfiguration.fsync().value()
+ raftConfiguration.fsync().value(),
+ RocksDbLogStorageOptions.defaults(),
+ new SegmentLogStorageOptions(
+
raftConfiguration.disruptor().logManagerStripes().value(),
+ logStorageConfiguration,
+ new FailureManager(new NoOpFailureHandler())
+ )
);
assertThat(partitionsLogStorageManager.startAsync(new
ComponentContext()), willCompleteSuccessfully());
diff --git
a/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
b/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
index df1c99bbbee..c20ec69e845 100644
---
a/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
+++
b/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
@@ -80,7 +80,9 @@ import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopolog
import org.apache.ignite.internal.configuration.RaftGroupOptionsConfigHelper;
import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import org.apache.ignite.internal.configuration.SystemLocalConfiguration;
+import org.apache.ignite.internal.failure.FailureManager;
import org.apache.ignite.internal.failure.NoOpFailureManager;
+import org.apache.ignite.internal.failure.handlers.NoOpFailureHandler;
import org.apache.ignite.internal.hlc.ClockService;
import org.apache.ignite.internal.hlc.ClockWaiter;
import org.apache.ignite.internal.hlc.HybridClock;
@@ -120,11 +122,14 @@ import
org.apache.ignite.internal.raft.RaftGroupEventsListener;
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
import org.apache.ignite.internal.raft.TestLozaFactory;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.service.RaftGroupListener;
import org.apache.ignite.internal.raft.service.RaftGroupService;
import org.apache.ignite.internal.raft.storage.LogStorageManager;
+import org.apache.ignite.internal.raft.storage.impl.RocksDbLogStorageOptions;
import
org.apache.ignite.internal.raft.storage.impl.VolatileLogStorageManagerCreator;
+import
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageOptions;
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
import org.apache.ignite.internal.replicator.Replica;
import org.apache.ignite.internal.replicator.ReplicaManager;
@@ -215,6 +220,8 @@ public class ItTxTestCluster {
private final RaftConfiguration raftConfig;
+ private final LogStorageConfiguration logStorageConfiguration;
+
private final TransactionConfiguration txConfiguration;
private final SystemLocalConfiguration systemLocalConfig;
@@ -352,6 +359,7 @@ public class ItTxTestCluster {
public ItTxTestCluster(
TestInfo testInfo,
RaftConfiguration raftConfig,
+ LogStorageConfiguration logStorageConfiguration,
TransactionConfiguration txConfiguration,
SystemLocalConfiguration systemLocalConfig,
SystemDistributedConfiguration systemDistributedConfig,
@@ -363,6 +371,7 @@ public class ItTxTestCluster {
ReplicationConfiguration replicationConfiguration
) {
this.raftConfig = raftConfig;
+ this.logStorageConfiguration = logStorageConfiguration;
this.txConfiguration = txConfiguration;
this.systemLocalConfig = systemLocalConfig;
this.systemDistributedConfig = systemDistributedConfig;
@@ -458,7 +467,13 @@ public class ItTxTestCluster {
"test",
clusterService.staticLocalNode().name(),
partitionsWorkDir.resolve("log"),
- raftConfig.fsync().value()
+ raftConfig.fsync().value(),
+ RocksDbLogStorageOptions.defaults(),
+ new SegmentLogStorageOptions(
+ raftConfig.disruptor().logManagerStripes().value(),
+ logStorageConfiguration,
+ new FailureManager(new NoOpFailureHandler())
+ )
);
logStorageFactories.put(nodeName, partitionsLogStorageManager);
diff --git
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
index cb947cf4627..24f957f0d36 100644
---
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
+++
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
@@ -44,6 +44,7 @@ import org.apache.ignite.internal.placementdriver.ReplicaMeta;
import org.apache.ignite.internal.raft.Loza;
import org.apache.ignite.internal.raft.Peer;
import org.apache.ignite.internal.raft.RaftNodeId;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
import org.apache.ignite.internal.replicator.ReplicaService;
@@ -116,6 +117,9 @@ public abstract class TxInfrastructureTest extends
IgniteAbstractTest {
@InjectConfiguration("mock: { fsync: false }")
protected RaftConfiguration raftConfiguration;
+ @InjectConfiguration
+ private static LogStorageConfiguration logStorageConfiguration;
+
@InjectConfiguration
protected SystemLocalConfiguration systemLocalConfiguration;
@@ -177,6 +181,7 @@ public abstract class TxInfrastructureTest extends
IgniteAbstractTest {
txTestCluster = new ItTxTestCluster(
testInfo,
raftConfiguration,
+ logStorageConfiguration,
txConfiguration,
systemLocalConfiguration,
systemDistributedConfiguration,