You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/01/17 15:33:09 UTC
ignite git commit: ignite-7450 FileWriteAheadLogManager always uses
RandomAccessFileIOFactory now
Repository: ignite
Updated Branches:
refs/heads/master dcc1e15ff -> 2cbda7b05
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/2cbda7b0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/2cbda7b0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/2cbda7b0
Branch: refs/heads/master
Commit: 2cbda7b053097e771512d3bcf3ce4617765ea6fa
Parents: dcc1e15
Author: Andrey Gura <ag...@apache.org>
Authored: Wed Jan 17 15:42:41 2018 +0300
Committer: Andrey Gura <ag...@apache.org>
Committed: Wed Jan 17 18:32:38 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/2cbda7b0/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/2cbda7b0/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/2cbda7b0/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/2cbda7b0/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);