Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
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;
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -128,7 +132,8 @@ private class Node {

partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
workingDir.raftLogPath()
workingDir.raftLogPath(),
logStorageConfiguration
);
this.eventsClientListener = new RaftGroupEventsClientListener();
this.failureManager = new NoOpFailureManager();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
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;
Expand Down Expand Up @@ -60,6 +61,9 @@ public abstract class BaseItClusterManagementTest extends IgniteAbstractTest {
@InjectConfiguration
private static StorageConfiguration storageConfiguration;

@InjectConfiguration
private static LogStorageConfiguration logStorageConfiguration;

private TestInfo testInfo;

@BeforeEach
Expand All @@ -83,6 +87,7 @@ protected List<MockNode> createNodes(int numNodes, BiConsumer<Integer, RaftGroup
workDir,
raftConfiguration,
systemLocalConfiguration,
logStorageConfiguration,
userNodeAttributes,
storageConfiguration,
config -> onConfigurationCommittedListener.accept(i, config)
Expand Down Expand Up @@ -110,6 +115,7 @@ protected MockNode createNode(int idx, int clusterSize, Consumer<RaftGroupConfig
workDir,
raftConfiguration,
systemLocalConfiguration,
logStorageConfiguration,
userNodeAttributes,
storageConfiguration,
onConfigurationCommittedListener
Expand All @@ -129,6 +135,7 @@ protected MockNode createNode(
workDir,
raftConfiguration,
systemLocalConfiguration,
logStorageConfiguration,
userNodeAttributes,
attributesProvider,
storageConfiguration,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
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;
Expand Down Expand Up @@ -91,6 +92,7 @@ public MockNode(
Path workDir,
RaftConfiguration raftConfiguration,
SystemLocalConfiguration systemLocalConfiguration,
LogStorageConfiguration logStorageConfiguration,
NodeAttributesConfiguration nodeAttributes,
StorageConfiguration storageProfilesConfiguration,
Consumer<RaftGroupConfiguration> onConfigurationCommittedListener
Expand All @@ -102,6 +104,7 @@ public MockNode(
workDir,
raftConfiguration,
systemLocalConfiguration,
logStorageConfiguration,
nodeAttributes,
() -> Map.of(COLOCATION_FEATURE_FLAG, Boolean.TRUE.toString()),
storageProfilesConfiguration,
Expand All @@ -119,6 +122,7 @@ public MockNode(
Path workDir,
RaftConfiguration raftConfiguration,
SystemLocalConfiguration systemLocalConfiguration,
LogStorageConfiguration logStorageConfiguration,
NodeAttributesConfiguration nodeAttributes,
NodeAttributesProvider attributesProvider,
StorageConfiguration storageProfilesConfiguration,
Expand All @@ -143,7 +147,8 @@ public MockNode(

LogStorageManager partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
this.workDir.resolve("partitions/log")
this.workDir.resolve("partitions/log"),
logStorageConfiguration
);

var eventsClientListener = new RaftGroupEventsClientListener();
Expand All @@ -164,7 +169,8 @@ public MockNode(
LogStorageManager cmgLogStorageManager =
SharedLogStorageManagerUtils.create(
clusterService.staticLocalNode().name(),
this.workDir.resolve("cmg/log")
this.workDir.resolve("cmg/log"),
logStorageConfiguration
);

RaftGroupOptionsConfigurer cmgRaftConfigurer =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -73,6 +76,11 @@ public static boolean colocationEnabled() {
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.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@
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;
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -1273,7 +1277,7 @@ private class Node {

String nodeName = clusterService.staticLocalNode().name();

logStorageManager = SharedLogStorageManagerUtils.create(nodeName, partitionsBasePath.raftLogPath());
logStorageManager = SharedLogStorageManagerUtils.create(nodeName, partitionsBasePath.raftLogPath(), logStorageConfiguration);

LogSyncer partitionsLogSyncer = logStorageManager.logSyncer();

Expand Down Expand Up @@ -1303,7 +1307,7 @@ private class Node {

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());
Expand Down Expand Up @@ -1347,7 +1351,7 @@ private class Node {

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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@
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;
Expand Down Expand Up @@ -157,6 +158,9 @@ class ItIdempotentCommandCacheTest extends IgniteAbstractTest {
@InjectConfiguration("mock.idleSafeTimeSyncIntervalMillis = 100")
private SystemDistributedConfiguration systemDistributedConfiguration;

@InjectConfiguration
private static LogStorageConfiguration logStorageConfiguration;

@InjectExecutorService
private ScheduledExecutorService scheduledExecutorService;

Expand Down Expand Up @@ -190,6 +194,7 @@ private static class Node implements ManuallyCloseable {
RaftConfiguration raftConfiguration,
SystemLocalConfiguration systemLocalConfiguration,
SystemDistributedConfiguration systemDistributedConfiguration,
LogStorageConfiguration logStorageConfiguration,
Path workDir,
int index,
ScheduledExecutorService scheduledExecutorService
Expand All @@ -214,7 +219,7 @@ private static class Node implements ManuallyCloseable {

String nodeName = clusterService.staticLocalNode().name();

partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), logStorageConfiguration);

raftManager = TestLozaFactory.create(
clusterService,
Expand All @@ -239,7 +244,7 @@ private static class Node implements ManuallyCloseable {

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());
Expand Down Expand Up @@ -647,6 +652,7 @@ private void startCluster() {
raftConfiguration,
systemLocalConfiguration,
systemDistributedConfiguration,
logStorageConfiguration,
workDir,
i,
scheduledExecutorService
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
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;
Expand Down Expand Up @@ -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
Expand All @@ -169,7 +173,8 @@ void setUp(

partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
nodeName,
workingDir.raftLogPath()
workingDir.raftLogPath(),
logStorageConfiguration
);

raftManager = TestLozaFactory.create(
Expand Down Expand Up @@ -199,7 +204,7 @@ void setUp(

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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,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.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;
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -159,7 +163,7 @@ class Node {

String nodeName = clusterService.staticLocalNode().name();

partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), logStorageConfiguration);

this.raftManager = TestLozaFactory.create(
clusterService,
Expand All @@ -181,7 +185,7 @@ class Node {

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());
Expand Down Expand Up @@ -212,7 +216,7 @@ class Node {

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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
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;
Expand Down Expand Up @@ -213,6 +214,7 @@ private static class Node {
ClusterService clusterService,
RaftConfiguration raftConfiguration,
SystemLocalConfiguration systemLocalConfiguration,
LogStorageConfiguration logStorageConfiguration,
Path dataPath
) {
this.clusterService = clusterService;
Expand All @@ -223,7 +225,7 @@ private static class Node {

String nodeName = clusterService.staticLocalNode().name();

partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), logStorageConfiguration);

partitionsRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(partitionsLogStorageManager, workingDir.metaPath());
Expand Down Expand Up @@ -336,6 +338,9 @@ void stop() throws Exception {
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;

@InjectConfiguration
private static LogStorageConfiguration logStorageConfiguration;

private final List<Node> nodes = new ArrayList<>();

@BeforeEach
Expand All @@ -351,7 +356,9 @@ private List<Node> prepareNodes(int amount) {

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;
}
Expand Down
Loading