This is an automated email from the ASF dual-hosted git repository. sergeychugunov pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push: new fb5032e IGNITE-13823 WAL iterator WRITE permission requirement removed. - Fixes #8549. fb5032e is described below commit fb5032ea5b3929f8de66e4d1cd5953e928c1702c Author: ibessonov <bessonov...@gmail.com> AuthorDate: Thu Dec 10 13:28:42 2020 +0300 IGNITE-13823 WAL iterator WRITE permission requirement removed. - Fixes #8549. Signed-off-by: Sergey Chugunov <sergey.chugu...@gmail.com> --- .../cache/persistence/wal/AbstractWalRecordsIterator.java | 4 ++-- .../internal/processors/cache/persistence/wal/FileDescriptor.java | 6 ++++-- .../processors/cache/persistence/wal/FileWriteAheadLogManager.java | 2 +- .../cache/persistence/wal/io/LockedSegmentFileInputFactory.java | 2 +- .../cache/persistence/wal/reader/IgniteWalIteratorFactory.java | 2 +- .../cache/persistence/wal/reader/StandaloneWalRecordsIterator.java | 2 +- .../persistence/wal/reader/StandaloneWalRecordsIteratorTest.java | 5 +++++ 7 files changed, 15 insertions(+), 8 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalRecordsIterator.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalRecordsIterator.java index 8730c1f..5bf7d39 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalRecordsIterator.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/AbstractWalRecordsIterator.java @@ -401,7 +401,7 @@ public abstract class AbstractWalRecordsIterator SegmentIO fileIO = null; try { - fileIO = desc.toIO(ioFactory); + fileIO = desc.toReadOnlyIO(ioFactory); SegmentHeader segmentHeader; @@ -513,6 +513,6 @@ public abstract class AbstractWalRecordsIterator * @return One of implementation of {@link FileIO}. * @throws IOException if creation of fileIo was not success. */ - SegmentIO toIO(FileIOFactory fileIOFactory) throws IOException; + SegmentIO toReadOnlyIO(FileIOFactory fileIOFactory) throws IOException; } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileDescriptor.java index 2f088d1..f654c32 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileDescriptor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileDescriptor.java @@ -27,6 +27,8 @@ import org.apache.ignite.internal.processors.cache.persistence.wal.io.SegmentIO; import org.apache.ignite.internal.util.typedef.internal.SB; import org.jetbrains.annotations.Nullable; +import static java.nio.file.StandardOpenOption.READ; + /** * WAL file descriptor. */ @@ -144,8 +146,8 @@ public class FileDescriptor implements Comparable<FileDescriptor>, AbstractWalRe } /** {@inheritDoc} */ - @Override public SegmentIO toIO(FileIOFactory fileIOFactory) throws IOException { - FileIO fileIO = isCompressed() ? new UnzipFileIO(file()) : fileIOFactory.create(file()); + @Override public SegmentIO toReadOnlyIO(FileIOFactory fileIOFactory) throws IOException { + FileIO fileIO = isCompressed() ? new UnzipFileIO(file()) : fileIOFactory.create(file(), READ); return new SegmentIO(idx, fileIO); } 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 ff64f5b..34db1dee 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 @@ -1191,7 +1191,7 @@ public class FileWriteAheadLogManager extends GridCacheSharedManagerAdapter impl @Nullable private FileDescriptor readFileDescriptor(File file, FileIOFactory ioFactory) { FileDescriptor ds = new FileDescriptor(file); - try (SegmentIO fileIO = ds.toIO(ioFactory)) { + try (SegmentIO fileIO = ds.toReadOnlyIO(ioFactory)) { // File may be empty when LOG_ONLY mode is enabled and mmap is disabled. if (fileIO.size() == 0) return null; diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/io/LockedSegmentFileInputFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/io/LockedSegmentFileInputFactory.java index 909f912..6e38b70 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/io/LockedSegmentFileInputFactory.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/io/LockedSegmentFileInputFactory.java @@ -63,7 +63,7 @@ public class LockedSegmentFileInputFactory implements SegmentFileInputFactory { id -> { FileDescriptor segment = segmentRouter.findSegment(id); - return segment.toIO(fileIOFactory); + return segment.toReadOnlyIO(fileIOFactory); } ); } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/IgniteWalIteratorFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/IgniteWalIteratorFactory.java index dd06244..68fc4324 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/IgniteWalIteratorFactory.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/IgniteWalIteratorFactory.java @@ -332,7 +332,7 @@ public class IgniteWalIteratorFactory { FileDescriptor ds = new FileDescriptor(file); try ( - SegmentIO fileIO = ds.toIO(ioFactory); + SegmentIO fileIO = ds.toReadOnlyIO(ioFactory); ByteBufferExpander buf = new ByteBufferExpander(HEADER_RECORD_SIZE, ByteOrder.nativeOrder()) ) { final DataInput in = segmentFileInputFactory.createFileInput(fileIO, buf); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java index 912aecd..b2f9975 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java @@ -326,7 +326,7 @@ class StandaloneWalRecordsIterator extends AbstractWalRecordsIterator { SegmentHeader segmentHeader; while (true) { try { - fileIO = fd.toIO(ioFactory); + fileIO = fd.toReadOnlyIO(ioFactory); segmentHeader = readSegmentHeader(fileIO, FILE_INPUT_FACTORY); diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIteratorTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIteratorTest.java index 26ff5a7..630d643 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIteratorTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIteratorTest.java @@ -20,6 +20,9 @@ package org.apache.ignite.internal.processors.cache.persistence.wal.reader; import java.io.File; import java.io.IOException; import java.nio.file.OpenOption; +import java.nio.file.StandardOpenOption; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; @@ -261,6 +264,8 @@ public class StandaloneWalRecordsIteratorTest extends GridCommonAbstractTest { private static class CountedFileIOFactory extends RandomAccessFileIOFactory { /** {@inheritDoc} */ @Override public FileIO create(File file, OpenOption... modes) throws IOException { + assertEquals(Collections.singletonList(StandardOpenOption.READ), Arrays.asList(modes)); + return new CountedFileIO(file, modes); } }