You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2019/01/23 16:42:08 UTC

[ignite] branch ignite-11030-test updated: IGNITE-11030 Additional protection from different paritions in init new page record

This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch ignite-11030-test
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/ignite-11030-test by this push:
     new 6db1c50  IGNITE-11030 Additional protection from different paritions in init new page record
6db1c50 is described below

commit 6db1c5054599c85cab18b61e8bcdd8e15aa3476a
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Wed Jan 23 19:42:03 2019 +0300

    IGNITE-11030 Additional protection from different paritions in init new page record
---
 .../internal/pagemem/wal/record/delta/InitNewPageRecord.java |  7 +++++++
 .../cache/persistence/db/IgniteTcBotSandboxTest.java         | 12 +++++++++---
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InitNewPageRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InitNewPageRecord.java
index d0ba2aa..c062b76 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InitNewPageRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InitNewPageRecord.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.pagemem.wal.record.delta;
 
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageIdUtils;
 import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@ -51,6 +52,12 @@ public class InitNewPageRecord extends PageDeltaRecord {
         this.ioType = ioType;
         this.ioVer = ioVer;
         this.newPageId = newPageId;
+
+        if (PageIdUtils.partId(newPageId()) != PageIdUtils.partId(pageId())) {
+            throw new AssertionError("Partition consistency failure: " +
+                "newPageId=" + Long.toHexString(newPageId) + " " +
+                "pageId=" + Long.toHexString(pageId));
+        }
     }
 
     /** {@inheritDoc} */
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteTcBotSandboxTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteTcBotSandboxTest.java
index 991bd0b..8962fdf 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteTcBotSandboxTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgniteTcBotSandboxTest.java
@@ -30,6 +30,7 @@ import org.apache.ignite.configuration.DataStorageConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.configuration.WALMode;
 import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.pagemem.PageIdUtils;
 import org.apache.ignite.internal.pagemem.wal.WALIterator;
 import org.apache.ignite.internal.pagemem.wal.WALPointer;
 import org.apache.ignite.internal.pagemem.wal.record.PageSnapshot;
@@ -115,11 +116,16 @@ public class IgniteTcBotSandboxTest extends GridCommonAbstractTest {
                 InitNewPageRecord initRec = (InitNewPageRecord)rec;
 
                 if (initRec.groupId() == grpId
-                    && initRec.pageId() == pageId) {
+                    && (initRec.pageId() == pageId || initRec.newPageId() == pageId)) {
                     System.out.println("InitNewPageRecord:: pos=" + pos
-                        + ", rec=" + initRec.toString());
+                        + ", rec=" + initRec.toString() + ", ioType=" + initRec.ioType()
+                        + ", ioVersion=" + initRec.ioVersion());
+
+                    assertEquals(PageIdUtils.partId(initRec.newPageId()),
+                        PageIdUtils.partId(initRec.pageId()));
                 }
-            } else if (rec instanceof PageSnapshot) {
+            }
+            else if (rec instanceof PageSnapshot) {
                 PageSnapshot snapshot = (PageSnapshot)rec;
 
                 if (snapshot.fullPageId().groupId() == grpId