Repository: ignite
Updated Branches:
  refs/heads/ignite-2.4 db0cd1057 -> c214db879


ignite-7450 FileWriteAheadLogManager always uses RandomAccessFileIOFactory now


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c214db87
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c214db87
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c214db87

Branch: refs/heads/ignite-2.4
Commit: c214db879101aa5660e2a50b11cd20964c0bc114
Parents: db0cd10
Author: Andrey Gura <[email protected]>
Authored: Wed Jan 17 15:42:41 2018 +0300
Committer: Andrey Gura <[email protected]>
Committed: Wed Jan 17 18:34:04 2018 +0300

----------------------------------------------------------------------
 .../configuration/DataStorageConfiguration.java    |  2 +-
 .../persistence/wal/FileWriteAheadLogManager.java  | 10 ++++++++--
 .../db/wal/IgniteWalFlushFailoverTest.java         |  8 ++++----
 ...eWalFlushMultiNodeFailoverAbstractSelfTest.java | 17 ++++++++++++-----
 4 files changed, 25 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c214db87/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
index f1439d4..30507fe 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
@@ -226,7 +226,7 @@ public class DataStorageConfiguration implements 
Serializable {
 
     /** Factory to provide I/O interface for files */
     private FileIOFactory fileIOFactory =
-        
IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_USE_ASYNC_FILE_IO_FACTORY,
 false) ?
+        
IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_USE_ASYNC_FILE_IO_FACTORY,
 true) ?
             new AsyncFileIOFactory() : new RandomAccessFileIOFactory();
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/c214db87/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java
index d29774c..5ae0226 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java
@@ -85,6 +85,7 @@ import 
org.apache.ignite.internal.processors.cache.persistence.DataStorageMetric
 import 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
 import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
 import 
org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
+import 
org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory;
 import 
org.apache.ignite.internal.processors.cache.persistence.filename.PdsFolderSettings;
 import 
org.apache.ignite.internal.processors.cache.persistence.wal.crc.PureJavaCrc32;
 import 
org.apache.ignite.internal.processors.cache.persistence.wal.record.HeaderRecord;
@@ -267,7 +268,7 @@ public class FileWriteAheadLogManager extends 
GridCacheSharedManagerAdapter impl
     private volatile long lastTruncatedArchiveIdx = -1L;
 
     /** Factory to provide I/O interfaces for read/write operations with files 
*/
-    private final FileIOFactory ioFactory;
+    private FileIOFactory ioFactory;
 
     /** Next segment archived monitor. */
     private final Object nextSegmentArchivedMonitor = new Object();
@@ -338,11 +339,16 @@ public class FileWriteAheadLogManager extends 
GridCacheSharedManagerAdapter impl
         flushFreq = dsCfg.getWalFlushFrequency();
         fsyncDelay = dsCfg.getWalFsyncDelayNanos();
         alwaysWriteFullPages = dsCfg.isAlwaysWriteFullPages();
-        ioFactory = dsCfg.getFileIOFactory();
+        ioFactory = new RandomAccessFileIOFactory();
         walAutoArchiveAfterInactivity = 
dsCfg.getWalAutoArchiveAfterInactivity();
         evt = ctx.event();
     }
 
+    /** For test purposes only. */
+    public void setFileIOFactory(FileIOFactory ioFactory) {
+        this.ioFactory = ioFactory;
+    }
+
     /** {@inheritDoc} */
     @Override public void start0() throws IgniteCheckedException {
         if (!cctx.kernalContext().clientNode()) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/c214db87/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushFailoverTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushFailoverTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushFailoverTest.java
index 2a3fc1f..386b83c 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushFailoverTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushFailoverTest.java
@@ -33,11 +33,11 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.configuration.WALMode;
 import org.apache.ignite.internal.GridKernalState;
 import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
 import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
 import 
org.apache.ignite.internal.processors.cache.persistence.file.FileIODecorator;
 import 
org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
 import 
org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory;
+import 
org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager;
 import org.apache.ignite.internal.util.lang.GridAbsPredicate;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.testframework.GridTestUtils;
@@ -93,7 +93,6 @@ public class IgniteWalFlushFailoverTest extends 
GridCommonAbstractTest {
         DataStorageConfiguration memCfg = new DataStorageConfiguration()
                 .setDefaultDataRegionConfiguration(
                  new DataRegionConfiguration().setMaxSize(2048L * 1024 * 
1024).setPersistenceEnabled(true))
-                .setFileIOFactory(new FailingFileIOFactory(canFail))
                 .setWalMode(WALMode.BACKGROUND)
                 .setWalBufferSize(128 * 1024)// Setting WAL Segment size to 
high values forces flushing by timeout.
                 .setWalSegmentSize(flushByTimeout ? 500_000 : 50_000);
@@ -129,13 +128,15 @@ public class IgniteWalFlushFailoverTest extends 
GridCommonAbstractTest {
     private void flushingErrorTest() throws Exception {
         final IgniteEx grid = startGrid(0);
 
-        IgniteWriteAheadLogManager wal = 
grid.context().cache().context().wal();
+        FileWriteAheadLogManager wal = 
(FileWriteAheadLogManager)grid.context().cache().context().wal();
 
         boolean mmap = GridTestUtils.getFieldValue(wal, "mmap");
 
         if (mmap)
             return;
 
+        wal.setFileIOFactory(new FailingFileIOFactory(canFail));
+
         try {
             grid.active(true);
 
@@ -217,7 +218,6 @@ public class IgniteWalFlushFailoverTest extends 
GridCommonAbstractTest {
                 @Override public MappedByteBuffer map(int maxWalSegmentSize) 
throws IOException {
                     return delegate.map(maxWalSegmentSize);
                 }
-
             };
         }
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/c214db87/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushMultiNodeFailoverAbstractSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushMultiNodeFailoverAbstractSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushMultiNodeFailoverAbstractSelfTest.java
index 76c7851..9b110df 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushMultiNodeFailoverAbstractSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalFlushMultiNodeFailoverAbstractSelfTest.java
@@ -37,6 +37,7 @@ import 
org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
 import 
org.apache.ignite.internal.processors.cache.persistence.file.FileIODecorator;
 import 
org.apache.ignite.internal.processors.cache.persistence.file.FileIOFactory;
 import 
org.apache.ignite.internal.processors.cache.persistence.file.RandomAccessFileIOFactory;
+import 
org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager;
 import org.apache.ignite.internal.util.lang.GridAbsPredicate;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.testframework.GridTestUtils;
@@ -107,10 +108,8 @@ public abstract class 
IgniteWalFlushMultiNodeFailoverAbstractSelfTest extends Gr
                 .setDefaultDataRegionConfiguration(
                         new DataRegionConfiguration().setMaxSize(2048L * 1024 
* 1024).setPersistenceEnabled(true))
                 .setWalMode(this.walMode())
-                .setWalSegmentSize(50_000);
-
-        if (gridName.endsWith(String.valueOf(gridCount())))
-            memCfg.setFileIOFactory(new FailingFileIOFactory(canFail));
+                .setWalSegmentSize(50_000)
+                .setWalBufferSize(50_000);
 
         cfg.setDataStorageConfiguration(memCfg);
 
@@ -174,6 +173,10 @@ public abstract class 
IgniteWalFlushMultiNodeFailoverAbstractSelfTest extends Gr
 
                     startGrid(gridCount());
 
+                    FileWriteAheadLogManager wal0 = 
(FileWriteAheadLogManager)grid(gridCount()).context().cache().context().wal();
+
+                    wal0.setFileIOFactory(new FailingFileIOFactory(canFail));
+
                     
grid.cluster().setBaselineTopology(grid.cluster().topologyVersion());
 
                     waitForRebalancing();
@@ -200,6 +203,10 @@ public abstract class 
IgniteWalFlushMultiNodeFailoverAbstractSelfTest extends Gr
 
         Ignite grid0 = startGrids(gridCount() + 1);
 
+        FileWriteAheadLogManager wal0 = 
(FileWriteAheadLogManager)grid(gridCount()).context().cache().context().wal();
+
+        wal0.setFileIOFactory(new FailingFileIOFactory(canFail));
+
         grid0.active(true);
 
         cache = grid0.cache(TEST_CACHE);
@@ -247,7 +254,7 @@ public abstract class 
IgniteWalFlushMultiNodeFailoverAbstractSelfTest extends Gr
                 int writeAttempts = 2;
 
                 @Override public int write(ByteBuffer srcBuf) throws 
IOException {
-                    if (--writeAttempts <= 0 && fail!= null && fail.get())
+                    if (--writeAttempts <= 0 && fail != null && fail.get())
                         throw new IOException("No space left on device");
 
                     return super.write(srcBuf);

Reply via email to