IGNITE-10246 StandaloneWALRecordIterator must throw checkBounds exception - Fixes #5398.
Signed-off-by: Ivan Rakov <ira...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/43ebe7a5 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/43ebe7a5 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/43ebe7a5 Branch: refs/heads/ignite-10043 Commit: 43ebe7a5b3a4a19a1ef842b6d80417a4fc3580a0 Parents: a74d9c4 Author: Alexey Stelmak <spiderru5...@gmail.com> Authored: Thu Nov 15 16:33:07 2018 +0300 Committer: Ivan Rakov <ira...@apache.org> Committed: Thu Nov 15 16:33:07 2018 +0300 ---------------------------------------------------------------------- .../wal/reader/IgniteWalIteratorFactory.java | 3 ++- .../wal/reader/StandaloneWalRecordsIterator.java | 6 +++--- .../wal/reader/StrictBoundsCheckException.java | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/43ebe7a5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/IgniteWalIteratorFactory.java ---------------------------------------------------------------------- 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 f4ebec5..697dded 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 @@ -564,7 +564,8 @@ public class IgniteWalIteratorFactory { .marshallerMappingFileStoreDir(marshallerMappingFileStoreDir) .from(lowBound) .to(highBound) - .filter(filter); + .filter(filter) + .strictBoundsCheck(strictBoundsCheck); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/43ebe7a5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneWalRecordsIterator.java ---------------------------------------------------------------------- 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 e6191dd..21275d8 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 @@ -177,7 +177,7 @@ class StandaloneWalRecordsIterator extends AbstractWalRecordsIterator { } if (idx == walFiles.size()) - throw new IgniteCheckedException("Wal segments not in bounds. loBoundIndex=" + lowBound.index() + + throw new StrictBoundsCheckException("Wal segments not in bounds. loBoundIndex=" + lowBound.index() + ", indexes=" + printIndexes(walFiles)); long curWalSegmIdx = walFiles.get(idx).idx(); @@ -188,11 +188,11 @@ class StandaloneWalRecordsIterator extends AbstractWalRecordsIterator { assert desc != null; if (curWalSegmIdx != desc.idx()) - throw new IgniteCheckedException("Wal segment " + curWalSegmIdx + " not found in files " + printIndexes(walFiles)); + throw new StrictBoundsCheckException("Wal segment " + curWalSegmIdx + " not found in files " + printIndexes(walFiles)); } if (highBound.index() < Long.MAX_VALUE && curWalSegmIdx <= highBound.index()) - throw new IgniteCheckedException("Wal segments not in bounds. hiBoundIndex=" + highBound.index() + + throw new StrictBoundsCheckException("Wal segments not in bounds. hiBoundIndex=" + highBound.index() + ", indexes=" + printIndexes(walFiles)); } http://git-wip-us.apache.org/repos/asf/ignite/blob/43ebe7a5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StrictBoundsCheckException.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StrictBoundsCheckException.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StrictBoundsCheckException.java new file mode 100644 index 0000000..4a52e08 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StrictBoundsCheckException.java @@ -0,0 +1,18 @@ +package org.apache.ignite.internal.processors.cache.persistence.wal.reader; + +import org.apache.ignite.IgniteCheckedException; + +/** + * This exception is used in checking boundaries (StandaloneWalRecordsIterator). + */ +public class StrictBoundsCheckException extends IgniteCheckedException { + /** */ + private static final long serialVersionUID = 0L; + + /** + * @param mesg Message. + */ + public StrictBoundsCheckException(String mesg) { + super(mesg); + } +} \ No newline at end of file