This is an automated email from the ASF dual-hosted git repository.
apolovtsev 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 dc26b50d402 IGNITE-22766 Separate LogSyncer interface from
LogStorageFactory (#7432)
dc26b50d402 is described below
commit dc26b50d4023af02766b106c70a876667dedf198
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Mon Jan 19 14:04:53 2026 +0200
IGNITE-22766 Separate LogSyncer interface from LogStorageFactory (#7432)
---
.../ignite/internal/rebalance/ItRebalanceDistributedTest.java | 9 ++++++---
.../persistence/throttling/PageMemoryThrottlingTest.java | 3 ++-
.../ignite/internal/partition/replicator/fixtures/Node.java | 9 ++++++---
.../ignite/internal/raft/ItTruncateSuffixAndRestartTest.java | 4 ----
.../ignite/internal/raft/storage/LogStorageFactory.java | 11 +++++++++--
.../internal/raft/storage/impl/DefaultLogStorageFactory.java | 8 ++++----
.../internal/raft/storage/impl/LocalLogStorageFactory.java | 5 -----
.../internal/raft/storage/impl/VolatileLogStorageFactory.java | 5 -----
.../internal/raft/storage/logit/LogitLogStorageFactory.java | 5 ++++-
.../ignite/internal/runner/app/ItIgniteNodeRestartTest.java | 9 ++++++---
.../main/java/org/apache/ignite/internal/app/IgniteImpl.java | 9 ++++++---
.../storage/rocksdb/benchmarks/CommitManyWritesBenchmark.java | 3 ++-
.../state/rocksdb/TxStateRocksDbSharedStorageTest.java | 3 ++-
13 files changed, 47 insertions(+), 36 deletions(-)
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 5d1170005a8..3e37ce61ac4 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
@@ -115,6 +115,7 @@ import
org.apache.ignite.internal.cluster.management.raft.TestClusterStateStorag
import
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
import
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyServiceImpl;
import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopologySnapshot;
+import org.apache.ignite.internal.components.LogSyncer;
import org.apache.ignite.internal.configuration.ClusterConfiguration;
import org.apache.ignite.internal.configuration.ComponentWorkingDir;
import org.apache.ignite.internal.configuration.ConfigurationManager;
@@ -1267,6 +1268,8 @@ public class ItRebalanceDistributedTest extends
BaseIgniteAbstractTest {
logStorageFactory =
SharedLogStorageFactoryUtils.create(clusterService.nodeName(),
partitionsBasePath.raftLogPath());
+ LogSyncer partitionsLogSyncer = logStorageFactory.logSyncer();
+
RaftGroupOptionsConfigurer partitionRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(logStorageFactory,
partitionsBasePath.metaPath());
@@ -1427,7 +1430,7 @@ public class ItRebalanceDistributedTest extends
BaseIgniteAbstractTest {
dir.resolve("storage"),
null,
failureManager,
- logStorageFactory,
+ partitionsLogSyncer,
hybridClock,
commonScheduledExecutorService
),
@@ -1523,7 +1526,7 @@ public class ItRebalanceDistributedTest extends
BaseIgniteAbstractTest {
storagePath.resolve("tx-state"),
threadPoolsManager.commonScheduler(),
threadPoolsManager.tableIoExecutor(),
- logStorageFactory,
+ partitionsLogSyncer,
failureManager
);
@@ -1586,7 +1589,7 @@ public class ItRebalanceDistributedTest extends
BaseIgniteAbstractTest {
lowWatermark,
transactionInflights,
indexMetaStorage,
- logStorageFactory,
+ partitionsLogSyncer,
partitionReplicaLifecycleManager,
minTimeCollectorService,
systemDistributedConfiguration,
diff --git
a/modules/page-memory/src/test/java/org/apache/ignite/internal/pagememory/persistence/throttling/PageMemoryThrottlingTest.java
b/modules/page-memory/src/test/java/org/apache/ignite/internal/pagememory/persistence/throttling/PageMemoryThrottlingTest.java
index 3da24990d7f..07de030767e 100644
---
a/modules/page-memory/src/test/java/org/apache/ignite/internal/pagememory/persistence/throttling/PageMemoryThrottlingTest.java
+++
b/modules/page-memory/src/test/java/org/apache/ignite/internal/pagememory/persistence/throttling/PageMemoryThrottlingTest.java
@@ -44,6 +44,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.IntStream;
+import org.apache.ignite.internal.components.NoOpLogSyncer;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import org.apache.ignite.internal.failure.FailureManager;
import org.apache.ignite.internal.fileio.FileIoFactory;
@@ -153,7 +154,7 @@ public class PageMemoryThrottlingTest extends
IgniteAbstractTest {
partitionMetaManager,
dataRegions,
ioRegistry,
- () -> {},
+ new NoOpLogSyncer(),
executorService,
new CheckpointMetricSource("test"),
PAGE_SIZE
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 5e02886fc02..a54bba32314 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
@@ -67,6 +67,7 @@ import
org.apache.ignite.internal.cluster.management.configuration.NodeAttribute
import
org.apache.ignite.internal.cluster.management.raft.TestClusterStateStorage;
import
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
import
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyServiceImpl;
+import org.apache.ignite.internal.components.LogSyncer;
import org.apache.ignite.internal.configuration.ClusterConfiguration;
import org.apache.ignite.internal.configuration.ComponentWorkingDir;
import org.apache.ignite.internal.configuration.ConfigurationManager;
@@ -389,6 +390,8 @@ public class Node {
partitionsLogStorageFactory =
SharedLogStorageFactoryUtils.create(clusterService.nodeName(),
partitionsWorkDir.raftLogPath());
+ LogSyncer partitionsLogSyncer =
partitionsLogStorageFactory.logSyncer();
+
RaftGroupOptionsConfigurer partitionRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(partitionsLogStorageFactory,
partitionsWorkDir.metaPath());
@@ -594,7 +597,7 @@ public class Node {
dir.resolve("storage"),
null,
failureManager,
- partitionsLogStorageFactory,
+ partitionsLogSyncer,
hybridClock,
scheduledExecutorService
),
@@ -712,7 +715,7 @@ public class Node {
storagePath.resolve("tx-state"),
threadPoolsManager.commonScheduler(),
threadPoolsManager.tableIoExecutor(),
- partitionsLogStorageFactory,
+ partitionsLogSyncer,
failureManager
);
@@ -787,7 +790,7 @@ public class Node {
lowWatermark,
transactionInflights,
indexMetaStorage,
- partitionsLogStorageFactory,
+ partitionsLogSyncer,
partitionReplicaLifecycleManager,
minTimeCollectorService,
systemDistributedConfiguration,
diff --git
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItTruncateSuffixAndRestartTest.java
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItTruncateSuffixAndRestartTest.java
index c39126c7aab..fab983dcc38 100644
---
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItTruncateSuffixAndRestartTest.java
+++
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItTruncateSuffixAndRestartTest.java
@@ -421,9 +421,5 @@ public class ItTruncateSuffixAndRestartTest extends
BaseIgniteAbstractTest {
public CompletableFuture<Void> stopAsync(ComponentContext
componentContext) {
return nullCompletedFuture();
}
-
- @Override
- public void sync(){
- }
}
}
diff --git
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/LogStorageFactory.java
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/LogStorageFactory.java
index 58721b98ba1..864ce6508d9 100644
---
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/LogStorageFactory.java
+++
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/LogStorageFactory.java
@@ -19,13 +19,13 @@ package org.apache.ignite.internal.raft.storage;
import java.util.Set;
import org.apache.ignite.internal.components.LogSyncer;
+import org.apache.ignite.internal.components.NoOpLogSyncer;
import org.apache.ignite.internal.manager.IgniteComponent;
import org.apache.ignite.raft.jraft.option.RaftOptions;
import org.apache.ignite.raft.jraft.storage.LogStorage;
/** Log storage factory interface. */
-// TODO https://issues.apache.org/jira/browse/IGNITE-22766
-public interface LogStorageFactory extends LogSyncer, IgniteComponent {
+public interface LogStorageFactory extends IgniteComponent {
/**
* Creates a log storage.
*
@@ -49,4 +49,11 @@ public interface LogStorageFactory extends LogSyncer,
IgniteComponent {
* in parallel with this call).
*/
Set<String> raftNodeStorageIdsOnDisk();
+
+ /**
+ * Returns an instance of {@link LogSyncer} for synchronizing the
write-ahead log shared between the storages created by this factory.
+ */
+ default LogSyncer logSyncer() {
+ return new NoOpLogSyncer();
+ }
}
diff --git
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/DefaultLogStorageFactory.java
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/DefaultLogStorageFactory.java
index 7293c531964..af4d1894a89 100644
---
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/DefaultLogStorageFactory.java
+++
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/DefaultLogStorageFactory.java
@@ -37,6 +37,8 @@ import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import org.apache.ignite.internal.components.LogSyncer;
+import org.apache.ignite.internal.components.NoOpLogSyncer;
import org.apache.ignite.internal.lang.IgniteInternalException;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
@@ -274,10 +276,8 @@ public class DefaultLogStorageFactory implements
LogStorageFactory {
}
@Override
- public void sync() throws RocksDBException {
- if (!dbOptions.useFsync()) {
- db.syncWal();
- }
+ public LogSyncer logSyncer() {
+ return fsync ? new NoOpLogSyncer() : () -> db.syncWal();
}
/**
diff --git
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/LocalLogStorageFactory.java
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/LocalLogStorageFactory.java
index ab47e6321c4..3e62c4f8241 100644
---
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/LocalLogStorageFactory.java
+++
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/LocalLogStorageFactory.java
@@ -56,9 +56,4 @@ public class LocalLogStorageFactory implements
LogStorageFactory {
// This creates on-heap storages, there is nothing on disk.
return Set.of();
}
-
- @Override
- public void sync() {
- // no-op
- }
}
diff --git
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/VolatileLogStorageFactory.java
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/VolatileLogStorageFactory.java
index 58838a3465d..796fbf68cac 100644
---
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/VolatileLogStorageFactory.java
+++
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/impl/VolatileLogStorageFactory.java
@@ -147,9 +147,4 @@ public class VolatileLogStorageFactory implements
LogStorageFactory {
return factory.create(logStorageBudgetConfig);
}
-
- @Override
- public void sync() {
- // No-op.
- }
}
diff --git
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/logit/LogitLogStorageFactory.java
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/logit/LogitLogStorageFactory.java
index d4e28c6ac1b..30434702502 100644
---
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/logit/LogitLogStorageFactory.java
+++
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/logit/LogitLogStorageFactory.java
@@ -24,6 +24,8 @@ import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
+import org.apache.ignite.internal.components.LogSyncer;
+import org.apache.ignite.internal.components.NoOpLogSyncer;
import org.apache.ignite.internal.lang.IgniteInternalException;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
@@ -120,8 +122,9 @@ public class LogitLogStorageFactory implements
LogStorageFactory {
}
@Override
- public void sync() {
+ public LogSyncer logSyncer() {
// TODO: https://issues.apache.org/jira/browse/IGNITE-21955
+ return new NoOpLogSyncer();
}
/** Returns path to log storage by group ID. */
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 36d948dceaa..363b146eeb7 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
@@ -105,6 +105,7 @@ import
org.apache.ignite.internal.cluster.management.raft.RocksDbClusterStateSto
import
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
import
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyServiceImpl;
import org.apache.ignite.internal.cluster.management.topology.api.LogicalNode;
+import org.apache.ignite.internal.components.LogSyncer;
import org.apache.ignite.internal.configuration.ComponentWorkingDir;
import org.apache.ignite.internal.configuration.ConfigurationManager;
import org.apache.ignite.internal.configuration.ConfigurationModules;
@@ -415,6 +416,8 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
LogStorageFactory partitionsLogStorageFactory =
SharedLogStorageFactoryUtils.create(clusterSvc.nodeName(),
partitionsWorkDir.raftLogPath());
+ LogSyncer partitionsLogSyncer =
partitionsLogStorageFactory.logSyncer();
+
RaftGroupOptionsConfigurer partitionRaftConfigurer =
RaftGroupOptionsConfigHelper.configureProperties(partitionsLogStorageFactory,
partitionsWorkDir.metaPath());
@@ -671,7 +674,7 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
storagePath,
null,
failureProcessor,
- partitionsLogStorageFactory,
+ partitionsLogSyncer,
hybridClock,
scheduledExecutorService
),
@@ -735,7 +738,7 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
storagePath.resolve("tx-state"),
threadPoolsManager.commonScheduler(),
threadPoolsManager.tableIoExecutor(),
- partitionsLogStorageFactory,
+ partitionsLogSyncer,
failureProcessor
);
@@ -798,7 +801,7 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
lowWatermark,
transactionInflights,
indexMetaStorage,
- partitionsLogStorageFactory,
+ partitionsLogSyncer,
partitionReplicaLifecycleListener,
minTimeCollectorService,
systemDistributedConfiguration,
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 30e3f827b5d..8daf265f263 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
@@ -90,6 +90,7 @@ import
org.apache.ignite.internal.cluster.management.topology.api.LogicalNode;
import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopologyEventListener;
import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopologyService;
import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopologySnapshot;
+import org.apache.ignite.internal.components.LogSyncer;
import org.apache.ignite.internal.components.LongJvmPauseDetector;
import org.apache.ignite.internal.components.NodeProperties;
import org.apache.ignite.internal.compute.AntiHijackIgniteCompute;
@@ -654,6 +655,8 @@ public class IgniteImpl implements Ignite {
raftConfiguration.fsync().value()
);
+ LogSyncer partitionsLogSyncer =
partitionsLogStorageFactory.logSyncer();
+
metastorageWorkDir = metastoragePath(systemConfiguration, workDir);
msLogStorageFactory = SharedLogStorageFactoryUtils.create(
@@ -951,7 +954,7 @@ public class IgniteImpl implements Ignite {
storagePath,
longJvmPauseDetector,
failureManager,
- partitionsLogStorageFactory,
+ partitionsLogSyncer,
clock,
threadPoolsManager.commonScheduler()
);
@@ -1068,7 +1071,7 @@ public class IgniteImpl implements Ignite {
storagePath.resolve(TX_STATE_DIR),
threadPoolsManager.commonScheduler(),
threadPoolsManager.tableIoExecutor(),
- partitionsLogStorageFactory,
+ partitionsLogSyncer,
failureManager
);
@@ -1146,7 +1149,7 @@ public class IgniteImpl implements Ignite {
lowWatermark,
transactionInflights,
indexMetaStorage,
- partitionsLogStorageFactory,
+ partitionsLogSyncer,
partitionReplicaLifecycleManager,
minTimeCollectorService,
systemDistributedConfiguration,
diff --git
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/benchmarks/CommitManyWritesBenchmark.java
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/benchmarks/CommitManyWritesBenchmark.java
index 6749997d87d..caaf870fdd1 100644
---
a/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/benchmarks/CommitManyWritesBenchmark.java
+++
b/modules/storage-rocksdb/src/test/java/org/apache/ignite/internal/storage/rocksdb/benchmarks/CommitManyWritesBenchmark.java
@@ -39,6 +39,7 @@ import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import org.apache.ignite.configuration.NamedConfigurationTree;
import org.apache.ignite.configuration.NamedListView;
+import org.apache.ignite.internal.components.NoOpLogSyncer;
import org.apache.ignite.internal.failure.FailureProcessor;
import org.apache.ignite.internal.hlc.HybridClock;
import org.apache.ignite.internal.hlc.HybridClockImpl;
@@ -100,7 +101,7 @@ public class CommitManyWritesBenchmark {
"test",
storageConfiguration(),
workDir,
- () -> {},
+ new NoOpLogSyncer(),
scheduledExecutor,
mock(FailureProcessor.class)
);
diff --git
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/storage/state/rocksdb/TxStateRocksDbSharedStorageTest.java
b/modules/transactions/src/test/java/org/apache/ignite/internal/tx/storage/state/rocksdb/TxStateRocksDbSharedStorageTest.java
index 3f995f60867..a81f61a4219 100644
---
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/storage/state/rocksdb/TxStateRocksDbSharedStorageTest.java
+++
b/modules/transactions/src/test/java/org/apache/ignite/internal/tx/storage/state/rocksdb/TxStateRocksDbSharedStorageTest.java
@@ -25,6 +25,7 @@ import static org.hamcrest.Matchers.containsInAnyOrder;
import java.nio.file.Path;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
+import org.apache.ignite.internal.components.NoOpLogSyncer;
import org.apache.ignite.internal.failure.FailureManager;
import org.apache.ignite.internal.failure.handlers.NoOpFailureHandler;
import org.apache.ignite.internal.manager.ComponentContext;
@@ -59,7 +60,7 @@ class TxStateRocksDbSharedStorageTest {
workDir,
scheduler,
executor,
- () -> {},
+ new NoOpLogSyncer(),
new FailureManager(new NoOpFailureHandler())
);