Skip to content

Commit ca6afea

Browse files
authored
IGNITE-28474 Use segstore log storage if property is enabled (#7969)
1 parent 4419ceb commit ca6afea

49 files changed

Lines changed: 656 additions & 103 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

modules/cluster-management/src/integrationTest/java/org/apache/ignite/internal/cluster/management/raft/ItCmgRaftServiceTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import org.apache.ignite.internal.raft.RaftNodeId;
7474
import org.apache.ignite.internal.raft.StoppingExceptionFactories;
7575
import org.apache.ignite.internal.raft.TestLozaFactory;
76+
import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
7677
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
7778
import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
7879
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -101,6 +102,9 @@ public class ItCmgRaftServiceTest extends BaseIgniteAbstractTest {
101102
@InjectConfiguration
102103
private static SystemLocalConfiguration systemLocalConfiguration;
103104

105+
@InjectConfiguration
106+
private static LogStorageConfiguration logStorageConfiguration;
107+
104108
private final CmgMessagesFactory msgFactory = new CmgMessagesFactory();
105109

106110
private class Node {
@@ -128,7 +132,8 @@ private class Node {
128132

129133
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
130134
clusterService.staticLocalNode().name(),
131-
workingDir.raftLogPath()
135+
workingDir.raftLogPath(),
136+
logStorageConfiguration
132137
);
133138
this.eventsClientListener = new RaftGroupEventsClientListener();
134139
this.failureManager = new NoOpFailureManager();

modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.apache.ignite.internal.network.NodeFinder;
3434
import org.apache.ignite.internal.network.StaticNodeFinder;
3535
import org.apache.ignite.internal.raft.RaftGroupConfiguration;
36+
import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
3637
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
3738
import org.apache.ignite.internal.storage.configurations.StorageConfiguration;
3839
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
@@ -60,6 +61,9 @@ public abstract class BaseItClusterManagementTest extends IgniteAbstractTest {
6061
@InjectConfiguration
6162
private static StorageConfiguration storageConfiguration;
6263

64+
@InjectConfiguration
65+
private static LogStorageConfiguration logStorageConfiguration;
66+
6367
private TestInfo testInfo;
6468

6569
@BeforeEach
@@ -83,6 +87,7 @@ protected List<MockNode> createNodes(int numNodes, BiConsumer<Integer, RaftGroup
8387
workDir,
8488
raftConfiguration,
8589
systemLocalConfiguration,
90+
logStorageConfiguration,
8691
userNodeAttributes,
8792
storageConfiguration,
8893
config -> onConfigurationCommittedListener.accept(i, config)
@@ -110,6 +115,7 @@ protected MockNode createNode(int idx, int clusterSize, Consumer<RaftGroupConfig
110115
workDir,
111116
raftConfiguration,
112117
systemLocalConfiguration,
118+
logStorageConfiguration,
113119
userNodeAttributes,
114120
storageConfiguration,
115121
onConfigurationCommittedListener
@@ -129,6 +135,7 @@ protected MockNode createNode(
129135
workDir,
130136
raftConfiguration,
131137
systemLocalConfiguration,
138+
logStorageConfiguration,
132139
userNodeAttributes,
133140
attributesProvider,
134141
storageConfiguration,

modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import org.apache.ignite.internal.raft.RaftGroupConfiguration;
5656
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
5757
import org.apache.ignite.internal.raft.TestLozaFactory;
58+
import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
5859
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
5960
import org.apache.ignite.internal.raft.storage.LogStorageManager;
6061
import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -91,6 +92,7 @@ public MockNode(
9192
Path workDir,
9293
RaftConfiguration raftConfiguration,
9394
SystemLocalConfiguration systemLocalConfiguration,
95+
LogStorageConfiguration logStorageConfiguration,
9496
NodeAttributesConfiguration nodeAttributes,
9597
StorageConfiguration storageProfilesConfiguration,
9698
Consumer<RaftGroupConfiguration> onConfigurationCommittedListener
@@ -102,6 +104,7 @@ public MockNode(
102104
workDir,
103105
raftConfiguration,
104106
systemLocalConfiguration,
107+
logStorageConfiguration,
105108
nodeAttributes,
106109
() -> Map.of(COLOCATION_FEATURE_FLAG, Boolean.TRUE.toString()),
107110
storageProfilesConfiguration,
@@ -119,6 +122,7 @@ public MockNode(
119122
Path workDir,
120123
RaftConfiguration raftConfiguration,
121124
SystemLocalConfiguration systemLocalConfiguration,
125+
LogStorageConfiguration logStorageConfiguration,
122126
NodeAttributesConfiguration nodeAttributes,
123127
NodeAttributesProvider attributesProvider,
124128
StorageConfiguration storageProfilesConfiguration,
@@ -143,7 +147,8 @@ public MockNode(
143147

144148
LogStorageManager partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
145149
clusterService.staticLocalNode().name(),
146-
this.workDir.resolve("partitions/log")
150+
this.workDir.resolve("partitions/log"),
151+
logStorageConfiguration
147152
);
148153

149154
var eventsClientListener = new RaftGroupEventsClientListener();
@@ -164,7 +169,8 @@ public MockNode(
164169
LogStorageManager cmgLogStorageManager =
165170
SharedLogStorageManagerUtils.create(
166171
clusterService.staticLocalNode().name(),
167-
this.workDir.resolve("cmg/log")
172+
this.workDir.resolve("cmg/log"),
173+
logStorageConfiguration
168174
);
169175

170176
RaftGroupOptionsConfigurer cmgRaftConfigurer =

modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ public final class IgniteSystemProperties {
4343
/** Skip storage update in a benchmark. */
4444
public static final String IGNITE_SKIP_STORAGE_UPDATE_IN_BENCHMARK = "IGNITE_SKIP_STORAGE_UPDATE_IN_BENCHMARK";
4545

46+
/** Use segment storage for Raft log. */
47+
public static final String SEGSTORE_ENABLED_PROPERTY = "SEGSTORE_ENABLED";
48+
4649
// TODO https://issues.apache.org/jira/browse/IGNITE-22522 Remove this feature flag.
4750
/**
4851
* Enables zone based replication (aka colocation) feature.
@@ -73,6 +76,11 @@ public static boolean colocationEnabled() {
7376
return getBoolean(COLOCATION_FEATURE_FLAG, true);
7477
}
7578

79+
/** Feature flag for segment log storage. */
80+
public static boolean segmentLogStorageEnabled() {
81+
return getBoolean(SEGSTORE_ENABLED_PROPERTY, false);
82+
}
83+
7684
/**
7785
* Gets either system property or environment variable with given name and convert to enum of given class.
7886
*

modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@
193193
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
194194
import org.apache.ignite.internal.raft.RaftNodeId;
195195
import org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
196+
import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
196197
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
197198
import org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
198199
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -329,6 +330,9 @@ public class ItRebalanceDistributedTest extends BaseIgniteAbstractTest {
329330
@InjectConfiguration
330331
private ReplicationConfiguration replicationConfiguration;
331332

333+
@InjectConfiguration
334+
private static LogStorageConfiguration logStorageConfiguration;
335+
332336
@Target(ElementType.METHOD)
333337
@Retention(RetentionPolicy.RUNTIME)
334338
private @interface UseTestTxStateStorage {
@@ -1273,7 +1277,7 @@ private class Node {
12731277

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

1276-
logStorageManager = SharedLogStorageManagerUtils.create(nodeName, partitionsBasePath.raftLogPath());
1280+
logStorageManager = SharedLogStorageManagerUtils.create(nodeName, partitionsBasePath.raftLogPath(), logStorageConfiguration);
12771281

12781282
LogSyncer partitionsLogSyncer = logStorageManager.logSyncer();
12791283

@@ -1303,7 +1307,7 @@ private class Node {
13031307

13041308
ComponentWorkingDir cmgWorkDir = cmgPath(systemConfiguration, dir);
13051309

1306-
cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
1310+
cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(), logStorageConfiguration);
13071311

13081312
RaftGroupOptionsConfigurer cmgRaftConfigurer =
13091313
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager, cmgWorkDir.metaPath());
@@ -1347,7 +1351,7 @@ private class Node {
13471351

13481352
ComponentWorkingDir metastorageWorkDir = metastoragePath(systemConfiguration, dir);
13491353

1350-
msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
1354+
msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(), logStorageConfiguration);
13511355

13521356
RaftGroupOptionsConfigurer msRaftConfigurer =
13531357
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, metastorageWorkDir.metaPath());

modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItIdempotentCommandCacheTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
import org.apache.ignite.internal.raft.PeersAndLearners;
107107
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
108108
import org.apache.ignite.internal.raft.TestLozaFactory;
109+
import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
109110
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
110111
import org.apache.ignite.internal.raft.service.LeaderWithTerm;
111112
import org.apache.ignite.internal.raft.service.RaftGroupService;
@@ -157,6 +158,9 @@ class ItIdempotentCommandCacheTest extends IgniteAbstractTest {
157158
@InjectConfiguration("mock.idleSafeTimeSyncIntervalMillis = 100")
158159
private SystemDistributedConfiguration systemDistributedConfiguration;
159160

161+
@InjectConfiguration
162+
private static LogStorageConfiguration logStorageConfiguration;
163+
160164
@InjectExecutorService
161165
private ScheduledExecutorService scheduledExecutorService;
162166

@@ -190,6 +194,7 @@ private static class Node implements ManuallyCloseable {
190194
RaftConfiguration raftConfiguration,
191195
SystemLocalConfiguration systemLocalConfiguration,
192196
SystemDistributedConfiguration systemDistributedConfiguration,
197+
LogStorageConfiguration logStorageConfiguration,
193198
Path workDir,
194199
int index,
195200
ScheduledExecutorService scheduledExecutorService
@@ -214,7 +219,7 @@ private static class Node implements ManuallyCloseable {
214219

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

217-
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
222+
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), logStorageConfiguration);
218223

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

240245
ComponentWorkingDir metastorageWorkDir = new ComponentWorkingDir(workDir.resolve("metastorage" + index));
241246

242-
msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
247+
msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(), logStorageConfiguration);
243248

244249
RaftGroupOptionsConfigurer msRaftConfigurer =
245250
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, metastorageWorkDir.metaPath());
@@ -647,6 +652,7 @@ private void startCluster() {
647652
raftConfiguration,
648653
systemLocalConfiguration,
649654
systemDistributedConfiguration,
655+
logStorageConfiguration,
650656
workDir,
651657
i,
652658
scheduledExecutorService

modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageManagerImplTest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
9494
import org.apache.ignite.internal.raft.TestLozaFactory;
9595
import org.apache.ignite.internal.raft.TimeAwareRaftGroupServiceFactory;
96+
import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
9697
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
9798
import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
9899
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -148,6 +149,9 @@ public class ItMetaStorageManagerImplTest extends IgniteAbstractTest {
148149
@InjectExecutorService
149150
private ScheduledExecutorService scheduledExecutorService;
150151

152+
@InjectConfiguration
153+
private static LogStorageConfiguration logStorageConfiguration;
154+
151155
private final ReadOperationForCompactionTracker readOperationForCompactionTracker = new ReadOperationForCompactionTracker();
152156

153157
@BeforeEach
@@ -169,7 +173,8 @@ void setUp(
169173

170174
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
171175
nodeName,
172-
workingDir.raftLogPath()
176+
workingDir.raftLogPath(),
177+
logStorageConfiguration
173178
);
174179

175180
raftManager = TestLozaFactory.create(
@@ -199,7 +204,7 @@ void setUp(
199204

200205
ComponentWorkingDir metastorageWorkDir = new ComponentWorkingDir(workDir.resolve("metastorage"));
201206

202-
msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
207+
msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(), logStorageConfiguration);
203208

204209
RaftGroupOptionsConfigurer msRaftConfigurer =
205210
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, metastorageWorkDir.metaPath());

modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import org.apache.ignite.internal.raft.Peer;
6767
import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
6868
import org.apache.ignite.internal.raft.TestLozaFactory;
69+
import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
6970
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
7071
import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
7172
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -106,6 +107,9 @@ abstract class ItMetaStorageMultipleNodesAbstractTest extends IgniteAbstractTest
106107
@InjectConfiguration("mock.idleSafeTimeSyncIntervalMillis=1000000")
107108
private SystemDistributedConfiguration systemDistributedConfiguration;
108109

110+
@InjectConfiguration
111+
private static LogStorageConfiguration logStorageConfiguration;
112+
109113
private TestInfo testInfo;
110114

111115
KeyValueStorage createStorage(String nodeName, Path path, ReadOperationForCompactionTracker readOperationForCompactionTracker) {
@@ -159,7 +163,7 @@ class Node {
159163

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

162-
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
166+
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), logStorageConfiguration);
163167

164168
this.raftManager = TestLozaFactory.create(
165169
clusterService,
@@ -181,7 +185,7 @@ class Node {
181185

182186
ComponentWorkingDir cmgWorkDir = new ComponentWorkingDir(basePath.resolve("cmg"));
183187

184-
cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
188+
cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(), logStorageConfiguration);
185189

186190
RaftGroupOptionsConfigurer cmgRaftConfigurator =
187191
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager, cmgWorkDir.metaPath());
@@ -212,7 +216,7 @@ class Node {
212216

213217
ComponentWorkingDir metastorageWorkDir = new ComponentWorkingDir(basePath.resolve("metastorage"));
214218

215-
msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
219+
msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(), logStorageConfiguration);
216220

217221
RaftGroupOptionsConfigurer msRaftConfigurator =
218222
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, metastorageWorkDir.metaPath());

modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@
115115
import org.apache.ignite.internal.raft.RaftNodeId;
116116
import org.apache.ignite.internal.raft.TestLozaFactory;
117117
import org.apache.ignite.internal.raft.client.PhysicalTopologyAwareRaftGroupService;
118+
import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
118119
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
119120
import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
120121
import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -213,6 +214,7 @@ private static class Node {
213214
ClusterService clusterService,
214215
RaftConfiguration raftConfiguration,
215216
SystemLocalConfiguration systemLocalConfiguration,
217+
LogStorageConfiguration logStorageConfiguration,
216218
Path dataPath
217219
) {
218220
this.clusterService = clusterService;
@@ -223,7 +225,7 @@ private static class Node {
223225

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

226-
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
228+
partitionsLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), logStorageConfiguration);
227229

228230
partitionsRaftConfigurer =
229231
RaftGroupOptionsConfigHelper.configureProperties(partitionsLogStorageManager, workingDir.metaPath());
@@ -336,6 +338,9 @@ void stop() throws Exception {
336338
@InjectConfiguration
337339
private SystemLocalConfiguration systemLocalConfiguration;
338340

341+
@InjectConfiguration
342+
private static LogStorageConfiguration logStorageConfiguration;
343+
339344
private final List<Node> nodes = new ArrayList<>();
340345

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

352357
localAddresses.stream()
353358
.map(addr -> ClusterServiceTestUtils.clusterService(testInfo, addr.port(), nodeFinder))
354-
.forEach(clusterService -> nodes.add(new Node(clusterService, raftConfiguration, systemLocalConfiguration, workDir)));
359+
.forEach(clusterService -> nodes.add(
360+
new Node(clusterService, raftConfiguration, systemLocalConfiguration, logStorageConfiguration, workDir))
361+
);
355362

356363
return nodes;
357364
}

0 commit comments

Comments
 (0)