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