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

Reply via email to