You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/12/23 12:06:45 UTC
[2/4] ignite git commit: ignite-gg-11810
ignite-gg-11810
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/664ceac5
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/664ceac5
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/664ceac5
Branch: refs/heads/ignite-11810
Commit: 664ceac5ddf2aaeb6c4848592948cf430dc5c75e
Parents: 94f22a0
Author: sboikov <sb...@gridgain.com>
Authored: Fri Dec 23 13:28:01 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri Dec 23 14:20:05 2016 +0300
----------------------------------------------------------------------
.../apache/ignite/internal/pagemem/Page.java | 4 +
.../ignite/internal/pagemem/PageUtils.java | 28 ++-
.../internal/pagemem/impl/PageNoStoreImpl.java | 12 +-
.../delta/DataPageInsertFragmentRecord.java | 4 +-
.../wal/record/delta/DataPageInsertRecord.java | 4 +-
.../wal/record/delta/DataPageRemoveRecord.java | 4 +-
.../delta/DataPageSetFreeListPageRecord.java | 2 +-
.../wal/record/delta/FixCountRecord.java | 2 +-
.../record/delta/FixLeftmostChildRecord.java | 2 +-
.../pagemem/wal/record/delta/FixRemoveId.java | 2 +-
.../wal/record/delta/InitNewPageRecord.java | 4 +-
.../wal/record/delta/InnerReplaceRecord.java | 2 +-
.../pagemem/wal/record/delta/InsertRecord.java | 2 +-
.../pagemem/wal/record/delta/MergeRecord.java | 2 +-
.../wal/record/delta/MetaPageAddRootRecord.java | 3 +-
.../wal/record/delta/MetaPageCutRootRecord.java | 2 +-
.../wal/record/delta/MetaPageInitRecord.java | 5 +-
.../record/delta/MetaPageInitRootRecord.java | 4 +-
.../MetaPageUpdateCandidateAllocatedIndex.java | 4 +-
.../delta/MetaPageUpdateLastAllocatedIndex.java | 2 +-
.../MetaPageUpdateLastSuccessfulBackupId.java | 3 +-
...etaPageUpdateLastSuccessfulFullBackupId.java | 3 +-
.../delta/MetaPageUpdateNextBackupId.java | 3 +-
.../MetaPageUpdatePartitionDataRecord.java | 3 +-
.../wal/record/delta/NewRootInitRecord.java | 5 +-
.../wal/record/delta/PageDeltaRecord.java | 2 +-
.../record/delta/PagesListAddPageRecord.java | 5 +-
.../delta/PagesListInitNewPageRecord.java | 7 +-
.../record/delta/PagesListRemovePageRecord.java | 3 +-
.../record/delta/PagesListSetNextRecord.java | 3 +-
.../delta/PagesListSetPreviousRecord.java | 3 +-
.../pagemem/wal/record/delta/RecycleRecord.java | 3 +-
.../pagemem/wal/record/delta/RemoveRecord.java | 3 +-
.../pagemem/wal/record/delta/ReplaceRecord.java | 2 +-
.../record/delta/SplitExistingPageRecord.java | 3 +-
.../record/delta/SplitForwardPageRecord.java | 2 +-
.../record/delta/TrackingPageDeltaRecord.java | 4 +-
.../processors/cache/CacheObjectAdapter.java | 10 +-
.../processors/cache/IncompleteObject.java | 13 ++
.../cache/database/CacheDataRowAdapter.java | 64 +++++-
.../cache/database/DataStructure.java | 7 +
.../cache/database/MetadataStorage.java | 115 ++++------
.../cache/database/freelist/FreeListImpl.java | 23 +-
.../cache/database/freelist/PagesList.java | 12 +-
.../database/freelist/io/PagesListMetaIO.java | 4 +-
.../database/freelist/io/PagesListNodeIO.java | 7 +-
.../cache/database/tree/BPlusTree.java | 18 +-
.../cache/database/tree/io/BPlusIO.java | 18 +-
.../cache/database/tree/io/BPlusInnerIO.java | 7 +-
.../cache/database/tree/io/BPlusLeafIO.java | 2 +-
.../cache/database/tree/io/CacheVersionIO.java | 71 ++++++
.../cache/database/tree/io/DataPageIO.java | 227 +++++++++++--------
.../cache/database/tree/io/DataPagePayload.java | 50 ++++
.../cache/database/tree/io/PageIO.java | 2 +-
.../cache/database/tree/io/PageMetaIO.java | 4 +-
.../database/tree/io/PagePartitionMetaIO.java | 4 +-
.../cache/database/tree/io/TrackingPageIO.java | 2 +-
.../cache/database/tree/util/PageHandler.java | 2 +-
.../pagemem/impl/PageMemoryNoLoadSelfTest.java | 11 +-
.../database/tree/io/TrackingPageIOTest.java | 47 ++--
.../database/BPlusTreeReuseSelfTest.java | 11 +-
.../processors/database/BPlusTreeSelfTest.java | 50 ++--
62 files changed, 573 insertions(+), 359 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/Page.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/Page.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/Page.java
index 89848cc..5f9d424 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/Page.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/Page.java
@@ -95,6 +95,10 @@ public interface Page extends AutoCloseable {
*/
public Boolean fullPageWalRecordPolicy();
+ public int size();
+
+ public ByteBuffer pageBuffer();
+
/**
* Release page.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
index 69719e1..b6faeb1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
@@ -29,19 +29,31 @@ public class PageUtils {
private static final Unsafe unsafe = GridUnsafe.UNSAFE;
public static byte getByte(long buf, int off) {
- return unsafe.getByte(buf, off);
+ return unsafe.getByte(buf + off);
+ }
+
+ public static byte[] getBytes(long buf, int off, int len) {
+ byte[] bytes = new byte[len];
+
+ unsafe.copyMemory(null, buf + off, bytes, GridUnsafe.BYTE_ARR_OFF, len);
+
+ return bytes;
+ }
+
+ public static void getBytes(long src, int srcOff, byte[] dst, int dstOff, int len) {
+ unsafe.copyMemory(null, src + srcOff, dst, GridUnsafe.BYTE_ARR_OFF + dstOff, len);
}
public static short getShort(long buf, int off) {
- return unsafe.getShort(buf, off);
+ return unsafe.getShort(buf + off);
}
public static int getInt(long buf, int off) {
- return unsafe.getInt(buf, off);
+ return unsafe.getInt(buf + off);
}
public static long getLong(long buf, int off) {
- return unsafe.getLong(buf, off);
+ return unsafe.getLong(buf + off);
}
public static void putBytes(long buf, int off, byte[] bytes) {
@@ -49,18 +61,18 @@ public class PageUtils {
}
public static void putByte(long buf, int off, byte v) {
- unsafe.putByte(buf, off, v);
+ unsafe.putByte(buf + off, v);
}
public static void putShort(long buf, int off, short v) {
- unsafe.putShort(buf, off, v);
+ unsafe.putShort(buf + off, v);
}
public static void putInt(long buf, int off, int v) {
- unsafe.putInt(buf, off, v);
+ unsafe.putInt(buf + off, v);
}
public static void putLong(long buf, int off, long v) {
- unsafe.putLong(buf, off, v);
+ unsafe.putLong(buf + off, v);
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java
index 0ad206b..fd59b52 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageNoStoreImpl.java
@@ -71,6 +71,11 @@ public class PageNoStoreImpl implements Page {
buf = pageMem.wrapPointer(absPtr + PageMemoryNoStoreImpl.PAGE_OVERHEAD, pageMem.pageSize());
}
+ /** {@inheritDoc} */
+ @Override public ByteBuffer pageBuffer() {
+ return pageMem.wrapPointer(absPtr + PageMemoryNoStoreImpl.PAGE_OVERHEAD, pageMem.pageSize());
+ }
+
private long pointer() {
return absPtr + PageMemoryNoStoreImpl.PAGE_OVERHEAD;
}
@@ -121,7 +126,7 @@ public class PageNoStoreImpl implements Page {
/** {@inheritDoc} */
@Override public long getForWritePointer() {
- int tag = noTagCheck ? OffheapReadWriteLock.TAG_LOCK_ALWAYS : PageIdUtils.tag(pageId);
+ int tag = noTagCheck ? OffheapReadWriteLock.TAG_LOCK_ALWAYS : PageIdUtils.tag(pageId);
boolean locked = pageMem.writeLockPage(absPtr, tag);
if (!locked && !noTagCheck)
@@ -175,6 +180,11 @@ public class PageNoStoreImpl implements Page {
}
/** {@inheritDoc} */
+ @Override public int size() {
+ return pageMem.pageSize();
+ }
+
+ /** {@inheritDoc} */
@Override public void close() {
pageMem.releasePage(this);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertFragmentRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertFragmentRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertFragmentRecord.java
index 49b2626..96bf4ba 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertFragmentRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertFragmentRecord.java
@@ -50,10 +50,10 @@ public class DataPageInsertFragmentRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
DataPageIO io = DataPageIO.VERSIONS.forPage(buf);
- io.addRowFragment(buf, payload, lastLink);
+ io.addRowFragment(buf, payload, lastLink, pageSize);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertRecord.java
index ceb06c7..66b07bb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageInsertRecord.java
@@ -51,12 +51,12 @@ public class DataPageInsertRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
assert payload != null;
DataPageIO io = DataPageIO.VERSIONS.forPage(buf);
- io.addRow(buf, payload);
+ io.addRow(buf, payload, pageSize);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageRemoveRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageRemoveRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageRemoveRecord.java
index 511094f..3a6023e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageRemoveRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageRemoveRecord.java
@@ -48,11 +48,11 @@ public class DataPageRemoveRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf)
+ @Override public void applyDelta(long buf, int pageSize)
throws IgniteCheckedException {
DataPageIO io = DataPageIO.VERSIONS.forPage(buf);
- io.removeRow(buf, itemId);
+ io.removeRow(buf, itemId, pageSize);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageSetFreeListPageRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageSetFreeListPageRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageSetFreeListPageRecord.java
index 6463989..09d1442 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageSetFreeListPageRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/DataPageSetFreeListPageRecord.java
@@ -49,7 +49,7 @@ public class DataPageSetFreeListPageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
DataPageIO io = DataPageIO.VERSIONS.forPage(buf);
io.setFreeListPageId(buf, freeListPage);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixCountRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixCountRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixCountRecord.java
index 5089c76..e95fdf1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixCountRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixCountRecord.java
@@ -40,7 +40,7 @@ public class FixCountRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
BPlusIO<?> io = PageIO.getBPlusIO(buf);
io.setCount(buf, cnt);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixLeftmostChildRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixLeftmostChildRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixLeftmostChildRecord.java
index fe09dd1..c8a68d4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixLeftmostChildRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixLeftmostChildRecord.java
@@ -41,7 +41,7 @@ public class FixLeftmostChildRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
BPlusInnerIO<?> io = PageIO.getBPlusIO(buf);
io.setLeft(buf, 0, rightId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixRemoveId.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixRemoveId.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixRemoveId.java
index 5147854..b9febc9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixRemoveId.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/FixRemoveId.java
@@ -41,7 +41,7 @@ public class FixRemoveId extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf)
+ @Override public void applyDelta(long buf, int pageSize)
throws IgniteCheckedException {
BPlusIO<?> io = PageIO.getBPlusIO(buf);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InitNewPageRecord.java
----------------------------------------------------------------------
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 5ffc193..ac4dda0 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
@@ -54,10 +54,10 @@ public class InitNewPageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PageIO io = PageIO.getPageIO(ioType, ioVer);
- io.initNewPage(buf, newPageId);
+ io.initNewPage(buf, newPageId, pageSize);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InnerReplaceRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InnerReplaceRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InnerReplaceRecord.java
index ccc3449..a9140ef 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InnerReplaceRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InnerReplaceRecord.java
@@ -57,7 +57,7 @@ public class InnerReplaceRecord<L> extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer dstBuf) throws IgniteCheckedException {
+ @Override public void applyDelta(long dstBuf, int pageSize) throws IgniteCheckedException {
throw new IgniteCheckedException("Inner replace record should not be logged.");
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InsertRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InsertRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InsertRecord.java
index f439bf3..948f829 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InsertRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/InsertRecord.java
@@ -72,7 +72,7 @@ public class InsertRecord<L> extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
io.insert(buf, idx, row, rowBytes, rightId);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MergeRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MergeRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MergeRecord.java
index d8113fe..c3b5934 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MergeRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MergeRecord.java
@@ -63,7 +63,7 @@ public class MergeRecord<L> extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer leftBuf) throws IgniteCheckedException {
+ @Override public void applyDelta(long leftBuf, int pageSize) throws IgniteCheckedException {
throw new IgniteCheckedException("Merge record should not be logged.");
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageAddRootRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageAddRootRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageAddRootRecord.java
index a84933c..19d8140 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageAddRootRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageAddRootRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusMetaIO;
@@ -40,7 +39,7 @@ public class MetaPageAddRootRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
BPlusMetaIO io = BPlusMetaIO.VERSIONS.forPage(buf);
io.addRoot(0, buf, rootId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageCutRootRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageCutRootRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageCutRootRecord.java
index 1145736..a2957e5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageCutRootRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageCutRootRecord.java
@@ -34,7 +34,7 @@ public class MetaPageCutRootRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
BPlusMetaIO io = BPlusMetaIO.VERSIONS.forPage(buf);
io.cutRoot(0, buf);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRecord.java
index df671f3..fecf80d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
@@ -75,12 +74,12 @@ public class MetaPageInitRecord extends InitNewPageRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PageMetaIO io = ioType == PageIO.T_META ?
PageMetaIO.VERSIONS.forPage(buf) :
PagePartitionMetaIO.VERSIONS.forPage(buf);
- io.initNewPage(buf, newPageId);
+ io.initNewPage(buf, newPageId, pageSize);
io.setTreeRoot(buf, treeRoot);
io.setReuseListRoot(buf, reuseListRoot);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRootRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRootRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRootRecord.java
index 96bc949..e67e974 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRootRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageInitRootRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusMetaIO;
@@ -40,8 +39,7 @@ public class MetaPageInitRootRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf)
- throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
BPlusMetaIO io = BPlusMetaIO.VERSIONS.forPage(buf);
io.initRoot(0, buf, rootId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateCandidateAllocatedIndex.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateCandidateAllocatedIndex.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateCandidateAllocatedIndex.java
index 32286dc..e9e1792 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateCandidateAllocatedIndex.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateCandidateAllocatedIndex.java
@@ -21,8 +21,6 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
-import java.nio.ByteBuffer;
-
/**
*
*/
@@ -40,7 +38,7 @@ public class MetaPageUpdateCandidateAllocatedIndex extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
assert PageIO.getType(buf) == PageIO.T_META || PageIO.getType(buf) == PageIO.T_PART_META;
PageMetaIO io = PageMetaIO.VERSIONS.forVersion(PageIO.getVersion(buf));
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastAllocatedIndex.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastAllocatedIndex.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastAllocatedIndex.java
index 836a4eb..727ed23 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastAllocatedIndex.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastAllocatedIndex.java
@@ -39,7 +39,7 @@ public class MetaPageUpdateLastAllocatedIndex extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
assert PageIO.getType(buf) == PageIO.T_META || PageIO.getType(buf) == PageIO.T_PART_META;
PageMetaIO io = PageMetaIO.VERSIONS.forVersion(PageIO.getVersion(buf));
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulBackupId.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulBackupId.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulBackupId.java
index ada247e..f9b9e8d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulBackupId.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulBackupId.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
@@ -38,7 +37,7 @@ public class MetaPageUpdateLastSuccessfulBackupId extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PageMetaIO io = PageMetaIO.VERSIONS.forPage(buf);
io.setLastSuccessfulBackupId(buf, lastSuccessfulBackupId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullBackupId.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullBackupId.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullBackupId.java
index bea90c3..c63788d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullBackupId.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullBackupId.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
@@ -38,7 +37,7 @@ public class MetaPageUpdateLastSuccessfulFullBackupId extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PageMetaIO io = PageMetaIO.VERSIONS.forPage(buf);
io.setLastSuccessfulFullBackupId(buf, lastSuccessfulFullBackupId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextBackupId.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextBackupId.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextBackupId.java
index f33afc0..6cdf974 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextBackupId.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextBackupId.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
@@ -38,7 +37,7 @@ public class MetaPageUpdateNextBackupId extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PageMetaIO io = PageMetaIO.VERSIONS.forPage(buf);
io.setNextBackupId(buf, nextBackupId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdatePartitionDataRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdatePartitionDataRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdatePartitionDataRecord.java
index 494c0ad..f959761 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdatePartitionDataRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdatePartitionDataRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.PagePartitionMetaIO;
@@ -79,7 +78,7 @@ public class MetaPageUpdatePartitionDataRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PagePartitionMetaIO io = PagePartitionMetaIO.VERSIONS.forPage(buf);
io.setUpdateCounter(buf, updateCntr);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/NewRootInitRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/NewRootInitRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/NewRootInitRecord.java
index e0284f7..756ad93 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/NewRootInitRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/NewRootInitRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusInnerIO;
@@ -74,8 +73,8 @@ public class NewRootInitRecord<L> extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- io.initNewRoot(buf, newRootId, leftChildId, row, rowBytes, rightChildId);
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
+ io.initNewRoot(buf, newRootId, leftChildId, row, rowBytes, rightChildId, pageSize);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageDeltaRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageDeltaRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageDeltaRecord.java
index 9acdd08..80668a1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageDeltaRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageDeltaRecord.java
@@ -65,7 +65,7 @@ public abstract class PageDeltaRecord extends WALRecord {
* @param buf Page buffer.
* @throws IgniteCheckedException If failed.
*/
- public abstract void applyDelta(ByteBuffer buf) throws IgniteCheckedException;
+ public abstract void applyDelta(long buf, int pageSize) throws IgniteCheckedException;
/** {@inheritDoc} */
@Override public String toString() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListAddPageRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListAddPageRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListAddPageRecord.java
index 7ea16b8..208de66 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListAddPageRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListAddPageRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@ -51,10 +50,10 @@ public class PagesListAddPageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(buf);
- int cnt = io.addPage(buf, dataPageId);
+ int cnt = io.addPage(buf, dataPageId, pageSize);
assert cnt >= 0 : cnt;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListInitNewPageRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListInitNewPageRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListInitNewPageRecord.java
index 922f212..c3ac7ea 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListInitNewPageRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListInitNewPageRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
@@ -73,14 +72,14 @@ public class PagesListInitNewPageRecord extends InitNewPageRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PagesListNodeIO io = PageIO.getPageIO(PageIO.T_PAGE_LIST_NODE, ioVer);
- io.initNewPage(buf, pageId());
+ io.initNewPage(buf, pageId(), pageSize);
io.setPreviousId(buf, prevPageId);
if (addDataPageId != 0L) {
- int cnt = io.addPage(buf, addDataPageId);
+ int cnt = io.addPage(buf, addDataPageId, pageSize);
assert cnt == 0 : cnt;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListRemovePageRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListRemovePageRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListRemovePageRecord.java
index 128e396..95c0d47 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListRemovePageRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListRemovePageRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@ -51,7 +50,7 @@ public class PagesListRemovePageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(buf);
boolean rmvd = io.removePage(buf, rmvdPageId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetNextRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetNextRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetNextRecord.java
index 07ce6d2..801d679 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetNextRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetNextRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
@@ -47,7 +46,7 @@ public class PagesListSetNextRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(buf);
io.setNextId(buf, nextPageId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetPreviousRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetPreviousRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetPreviousRecord.java
index bb3a877..bfac436 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetPreviousRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PagesListSetPreviousRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
@@ -47,7 +46,7 @@ public class PagesListSetPreviousRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(buf);
io.setPreviousId(buf, prevPageId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RecycleRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RecycleRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RecycleRecord.java
index 470f441..c40f014 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RecycleRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RecycleRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
@@ -40,7 +39,7 @@ public class RecycleRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
PageIO.setPageId(buf, newPageId);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RemoveRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RemoveRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RemoveRecord.java
index 453525c..c9c8ea3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RemoveRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/RemoveRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
@@ -47,7 +46,7 @@ public class RemoveRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
BPlusIO<?> io = PageIO.getBPlusIO(buf);
if (io.getCount(buf) != cnt)
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/ReplaceRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/ReplaceRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/ReplaceRecord.java
index 8a9e4e3..4d65121 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/ReplaceRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/ReplaceRecord.java
@@ -55,7 +55,7 @@ public class ReplaceRecord<L> extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf)
+ @Override public void applyDelta(long buf, int pageSize)
throws IgniteCheckedException {
if (io.getCount(buf) < idx)
throw new DeltaApplicationException("Index is greater than count: " + idx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitExistingPageRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitExistingPageRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitExistingPageRecord.java
index 8ec5f8f..f9dfd37 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitExistingPageRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitExistingPageRecord.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
@@ -50,7 +49,7 @@ public class SplitExistingPageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
BPlusIO<?> io = PageIO.getBPlusIO(buf);
io.splitExistingPage(buf, mid, fwdId);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitForwardPageRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitForwardPageRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitForwardPageRecord.java
index b4487fa..f67e8d5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitForwardPageRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/SplitForwardPageRecord.java
@@ -79,7 +79,7 @@ public class SplitForwardPageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer fwdBuf) throws IgniteCheckedException {
+ @Override public void applyDelta(long fwdBuf, int pageSize) throws IgniteCheckedException {
throw new IgniteCheckedException("Split forward page record should not be logged.");
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/TrackingPageDeltaRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/TrackingPageDeltaRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/TrackingPageDeltaRecord.java
index 03953df..e95afbb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/TrackingPageDeltaRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/TrackingPageDeltaRecord.java
@@ -70,8 +70,8 @@ public class TrackingPageDeltaRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- TrackingPageIO.VERSIONS.forPage(buf).markChanged(buf, pageIdToMark, nextBackupId, lastSuccessfulBackupId, buf.capacity());
+ @Override public void applyDelta(long buf, int pageSize) throws IgniteCheckedException {
+ TrackingPageIO.VERSIONS.forPage(buf).markChanged(buf, pageIdToMark, nextBackupId, lastSuccessfulBackupId, pageSize);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
index a34e98d..1394fc2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectAdapter.java
@@ -164,8 +164,14 @@ public abstract class CacheObjectAdapter implements CacheObject, Externalizable
* @return {@code True} if data were successfully written.
* @throws IgniteCheckedException If failed.
*/
- public static boolean putValue(byte cacheObjType, final ByteBuffer buf, int off, int len,
- byte[] valBytes, final int start) throws IgniteCheckedException {
+ public static boolean putValue(byte cacheObjType,
+ final ByteBuffer buf,
+ int off,
+ int len,
+ byte[] valBytes,
+ final int start)
+ throws IgniteCheckedException
+ {
int dataLen = valBytes.length;
if (buf.remaining() < len)
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IncompleteObject.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IncompleteObject.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IncompleteObject.java
index 666fc27..ce0e306 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IncompleteObject.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IncompleteObject.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.processors.cache;
import java.nio.ByteBuffer;
+import org.apache.ignite.internal.pagemem.PageUtils;
/**
* Incomplete object.
@@ -86,4 +87,16 @@ public class IncompleteObject<T> {
off += len;
}
+
+ public int readData(long buf, int remaining) {
+ assert data != null;
+
+ final int len = Math.min(data.length - off, remaining);
+
+ PageUtils.getBytes(buf, 0, data, off, len);
+
+ off += len;
+
+ return len;
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java
index b5babc4..59e2fc4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java
@@ -21,6 +21,7 @@ import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.pagemem.Page;
import org.apache.ignite.internal.pagemem.PageIdUtils;
+import org.apache.ignite.internal.pagemem.PageUtils;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
@@ -29,6 +30,7 @@ import org.apache.ignite.internal.processors.cache.IncompleteObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.database.tree.io.DataPageIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.CacheVersionIO;
+import org.apache.ignite.internal.processors.cache.database.tree.io.DataPagePayload;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
@@ -68,7 +70,6 @@ public class CacheDataRowAdapter implements CacheDataRow {
// Link can be 0 here.
this.link = link;
}
-
/**
* Read row from data pages.
*
@@ -89,19 +90,21 @@ public class CacheDataRowAdapter implements CacheDataRow {
do {
try (Page page = page(pageId(nextLink), cctx)) {
- ByteBuffer buf = page.getForRead(); // Non-empty data page must not be recycled.
+ long buf = page.getForReadPointer(); // Non-empty data page must not be recycled.
- assert buf != null: nextLink;
+ assert buf != 0L : nextLink;
try {
DataPageIO io = DataPageIO.VERSIONS.forPage(buf);
- nextLink = io.setPositionAndLimitOnPayload(buf, itemId(nextLink));
+ DataPagePayload data = io.readPayload(buf, itemId(nextLink), page.size());
+
+ nextLink = data.nextLink();
if (first) {
if (nextLink == 0) {
// Fast path for a single page row.
- readFullRow(coctx, buf, keyOnly);
+ readFullRow(coctx, data.offset(), keyOnly);
return;
}
@@ -109,7 +112,12 @@ public class CacheDataRowAdapter implements CacheDataRow {
first = false;
}
- incomplete = readFragment(coctx, buf, keyOnly, incomplete);
+ ByteBuffer buf0 = page.pageBuffer();
+
+ buf0.position(data.offset());
+ buf0.limit(data.offset() + data.payloadSize());
+
+ incomplete = readFragment(coctx, buf0, keyOnly, incomplete);
if (keyOnly && key != null)
return;
@@ -121,7 +129,7 @@ public class CacheDataRowAdapter implements CacheDataRow {
}
while(nextLink != 0);
- assert isReady(): "ready";
+ assert isReady() : "ready";
}
/**
@@ -179,8 +187,23 @@ public class CacheDataRowAdapter implements CacheDataRow {
* @param keyOnly {@code true} If need to read only key object.
* @throws IgniteCheckedException If failed.
*/
- private void readFullRow(CacheObjectContext coctx, ByteBuffer buf, boolean keyOnly) throws IgniteCheckedException {
- key = coctx.processor().toKeyCacheObject(coctx, buf);
+ private void readFullRow(CacheObjectContext coctx, long buf, boolean keyOnly) throws IgniteCheckedException {
+ int off = 0;
+
+ int len = PageUtils.getInt(buf, off);
+ off += 4;
+
+ if (len == 0)
+ key = null;
+ else {
+ byte[] bytes = PageUtils.getBytes(buf, off, len);
+ off += len;
+
+ byte type = PageUtils.getByte(buf, off);
+ off++;
+
+ key = coctx.processor().toKeyCacheObject(coctx, type, bytes);
+ }
if (keyOnly) {
assert key != null: "key";
@@ -188,9 +211,26 @@ public class CacheDataRowAdapter implements CacheDataRow {
return;
}
- val = coctx.processor().toCacheObject(coctx, buf);
- ver = CacheVersionIO.read(buf, false);
- expireTime = buf.getLong();
+ len = PageUtils.getInt(buf, off);
+ off += 4;
+
+ if (len == 0)
+ val = null;
+ else {
+ byte[] bytes = PageUtils.getBytes(buf, off, len);
+ off += len;
+
+ byte type = PageUtils.getByte(buf, off);
+ off++;
+
+ val = coctx.processor().toCacheObject(coctx, type, bytes);
+ }
+
+ ver = CacheVersionIO.read(buf + off, false);
+
+ off += CacheVersionIO.size(ver, false);
+
+ expireTime = PageUtils.getLong(buf, off);
assert isReady(): "ready";
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/DataStructure.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/DataStructure.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/DataStructure.java
index 26df029..ce5422f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/DataStructure.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/DataStructure.java
@@ -171,6 +171,13 @@ public abstract class DataStructure implements PageLockListener {
PageHandler.readUnlock(page, buf, this);
}
+ /**
+ * @return Page size.
+ */
+ protected final int pageSize() {
+ return pageMem.pageSize();
+ }
+
/** {@inheritDoc} */
@Override public void onBeforeWriteLock(Page page) {
// No-op.
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MetadataStorage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MetadataStorage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MetadataStorage.java
index 26151ac..b19d03d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MetadataStorage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MetadataStorage.java
@@ -17,13 +17,13 @@
package org.apache.ignite.internal.processors.cache.database;
-import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.pagemem.FullPageId;
import org.apache.ignite.internal.pagemem.PageMemory;
+import org.apache.ignite.internal.pagemem.PageUtils;
import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
import org.apache.ignite.internal.processors.cache.database.tree.BPlusTree;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusIO;
@@ -31,6 +31,7 @@ import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusInnerIO
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusLeafIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.IOVersions;
import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseList;
+import org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler;
import org.apache.ignite.internal.util.typedef.internal.U;
/**
@@ -190,19 +191,19 @@ public class MetadataStorage implements MetaStore {
}
/** {@inheritDoc} */
- @Override protected int compare(final BPlusIO<IndexItem> io, final ByteBuffer buf, final int idx,
+ @Override protected int compare(final BPlusIO<IndexItem> io, final long buf, final int idx,
final IndexItem row) throws IgniteCheckedException {
final int off = ((IndexIO)io).getOffset(idx);
int shift = 0;
// Compare index names.
- final byte len = buf.get(off + shift);
+ final byte len = PageUtils.getByte(off, shift);
shift += BYTE_LEN;
for (int i = 0; i < len && i < row.idxName.length; i++) {
- final int cmp = Byte.compare(buf.get(off + i + shift), row.idxName[i]);
+ final int cmp = Byte.compare(PageUtils.getByte(off, i + shift), row.idxName[i]);
if (cmp != 0)
return cmp;
@@ -212,7 +213,7 @@ public class MetadataStorage implements MetaStore {
}
/** {@inheritDoc} */
- @Override protected IndexItem getRow(final BPlusIO<IndexItem> io, final ByteBuffer buf,
+ @Override protected IndexItem getRow(final BPlusIO<IndexItem> io, final long buf,
final int idx) throws IgniteCheckedException {
return readRow(buf, ((IndexIO)io).getOffset(idx));
}
@@ -251,27 +252,18 @@ public class MetadataStorage implements MetaStore {
* @param row Row to store.
*/
private static void storeRow(
- final ByteBuffer buf,
+ final long buf,
final int off,
final IndexItem row
) {
- int origPos = buf.position();
+ // Index name length.
+ PageUtils.putByte(buf, off, (byte)row.idxName.length);
- try {
- buf.position(off);
-
- // Index name length.
- buf.put((byte)row.idxName.length);
-
- // Index name.
- buf.put(row.idxName);
+ // Index name.
+ PageUtils.putBytes(buf, off + 1, row.idxName);
- // Page ID.
- buf.putLong(row.pageId);
- }
- finally {
- buf.position(origPos);
- }
+ // Page ID.
+ PageUtils.putLong(buf, off + 1 + row.idxName.length, row.pageId);
}
/**
@@ -283,39 +275,20 @@ public class MetadataStorage implements MetaStore {
* @param srcOff Src buf offset.
*/
private static void storeRow(
- final ByteBuffer dst,
+ final long dst,
final int dstOff,
- final ByteBuffer src,
+ final long src,
final int srcOff
) {
- int srcOrigPos = src.position();
- int dstOrigPos = dst.position();
-
- try {
- src.position(srcOff);
- dst.position(dstOff);
-
- // Index name length.
- final byte len = src.get();
-
- dst.put(len);
-
- int lim = src.limit();
+ // Index name length.
+ final byte len = PageUtils.getByte(src, srcOff);
- src.limit(src.position() + len);
+ PageUtils.putByte(dst, dstOff, len);
- // Index name.
- dst.put(src);
+ PageHandler.copyMemory(src, srcOff + 1, dst, dstOff + 1, len);
- src.limit(lim);
-
- // Page ID.
- dst.putLong(src.getLong());
- }
- finally {
- src.position(srcOrigPos);
- dst.position(dstOrigPos);
- }
+ // Page ID.
+ PageUtils.putLong(dst, dstOff + 1 + len, PageUtils.getLong(src, srcOff + 1 + len));
}
/**
@@ -325,28 +298,17 @@ public class MetadataStorage implements MetaStore {
* @param off Offset in buf.
* @return Read row.
*/
- private static IndexItem readRow(final ByteBuffer buf, final int off) {
- int origOff = buf.position();
-
- try {
- buf.position(off);
+ private static IndexItem readRow(final long buf, final int off) {
+ // Index name length.
+ final int len = PageUtils.getByte(buf, 0) & 0xFF;
- // Index name length.
- final int len = buf.get() & 0xFF;
+ // Index name.
+ final byte[] idxName = PageUtils.getBytes(buf, 1, len);
- // Index name.
- final byte[] idxName = new byte[len];
+ // Page ID.
+ final long pageId = PageUtils.getLong(buf, off + 1 + len);
- buf.get(idxName);
-
- // Page ID.
- final long pageId = buf.getLong();
-
- return new IndexItem(idxName, pageId);
- }
- finally {
- buf.position(origOff);
- }
+ return new IndexItem(idxName, pageId);
}
/**
@@ -378,19 +340,19 @@ public class MetadataStorage implements MetaStore {
}
/** {@inheritDoc} */
- @Override public void storeByOffset(ByteBuffer buf, int off, IndexItem row) throws IgniteCheckedException {
+ @Override public void storeByOffset(long buf, int off, IndexItem row) throws IgniteCheckedException {
storeRow(buf, off, row);
}
/** {@inheritDoc} */
- @Override public void store(final ByteBuffer dst, final int dstIdx, final BPlusIO<IndexItem> srcIo,
- final ByteBuffer src,
+ @Override public void store(final long dst, final int dstIdx, final BPlusIO<IndexItem> srcIo,
+ final long src,
final int srcIdx) throws IgniteCheckedException {
storeRow(dst, offset(dstIdx), src, ((IndexIO)srcIo).getOffset(srcIdx));
}
/** {@inheritDoc} */
- @Override public IndexItem getLookupRow(final BPlusTree<IndexItem, ?> tree, final ByteBuffer buf,
+ @Override public IndexItem getLookupRow(final BPlusTree<IndexItem, ?> tree, final long buf,
final int idx) throws IgniteCheckedException {
return readRow(buf, offset(idx));
}
@@ -419,19 +381,22 @@ public class MetadataStorage implements MetaStore {
}
/** {@inheritDoc} */
- @Override public void storeByOffset(ByteBuffer buf, int off, IndexItem row) throws IgniteCheckedException {
+ @Override public void storeByOffset(long buf, int off, IndexItem row) throws IgniteCheckedException {
storeRow(buf, off, row);
}
/** {@inheritDoc} */
- @Override public void store(final ByteBuffer dst, final int dstIdx, final BPlusIO<IndexItem> srcIo,
- final ByteBuffer src,
+ @Override public void store(final long dst,
+ final int dstIdx,
+ final BPlusIO<IndexItem> srcIo,
+ final long src,
final int srcIdx) throws IgniteCheckedException {
storeRow(dst, offset(dstIdx), src, ((IndexIO)srcIo).getOffset(srcIdx));
}
/** {@inheritDoc} */
- @Override public IndexItem getLookupRow(final BPlusTree<IndexItem, ?> tree, final ByteBuffer buf,
+ @Override public IndexItem getLookupRow(final BPlusTree<IndexItem, ?> tree,
+ final long buf,
final int idx) throws IgniteCheckedException {
return readRow(buf, offset(idx));
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
index 1d2524d..c40656e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
@@ -17,13 +17,13 @@
package org.apache.ignite.internal.processors.cache.database.freelist;
-import java.nio.ByteBuffer;
import java.util.concurrent.atomic.AtomicReferenceArray;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.pagemem.Page;
import org.apache.ignite.internal.pagemem.PageIdAllocator;
import org.apache.ignite.internal.pagemem.PageIdUtils;
import org.apache.ignite.internal.pagemem.PageMemory;
+import org.apache.ignite.internal.pagemem.PageUtils;
import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
import org.apache.ignite.internal.pagemem.wal.record.delta.DataPageInsertFragmentRecord;
import org.apache.ignite.internal.pagemem.wal.record.delta.DataPageInsertRecord;
@@ -31,6 +31,7 @@ import org.apache.ignite.internal.pagemem.wal.record.delta.DataPageRemoveRecord;
import org.apache.ignite.internal.processors.cache.database.CacheDataRow;
import org.apache.ignite.internal.processors.cache.database.tree.io.CacheVersionIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.DataPageIO;
+import org.apache.ignite.internal.processors.cache.database.tree.io.DataPagePayload;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseBag;
import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseList;
@@ -114,19 +115,17 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
CacheDataRow row,
int rowSize
) throws IgniteCheckedException {
- // TODO: context parameter.
- io.addRow(buf, row, rowSize);
+ io.addRow(buf, row, rowSize, pageSize());
if (isWalDeltaRecordNeeded(wal, page)) {
// TODO This record must contain only a reference to a logical WAL record with the actual data.
byte[] payload = new byte[rowSize];
- io.setPositionAndLimitOnPayload(buf, PageIdUtils.itemId(row.link()));
+ DataPagePayload data = io.readPayload(buf, PageIdUtils.itemId(row.link()), pageSize());
- assert buf.remaining() == rowSize;
+ assert data.payloadSize() == rowSize;
- buf.get(payload);
- buf.position(0);
+ PageUtils.getBytes(buf, data.offset(), payload, 0, rowSize);
wal.log(new DataPageInsertRecord(
cacheId,
@@ -158,7 +157,7 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
// Read last link before the fragment write, because it will be updated there.
long lastLink = row.link();
- int payloadSize = io.addRowFragment(buf, row, written, rowSize);
+ int payloadSize = io.addRowFragment(buf, row, written, rowSize, pageSize());
assert payloadSize > 0: payloadSize;
@@ -166,9 +165,9 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
// TODO This record must contain only a reference to a logical WAL record with the actual data.
byte[] payload = new byte[payloadSize];
- io.setPositionAndLimitOnPayload(buf, PageIdUtils.itemId(row.link()));
- buf.get(payload);
- buf.position(0);
+ DataPagePayload data = io.readPayload(buf, PageIdUtils.itemId(row.link()), pageSize());
+
+ PageUtils.getBytes(buf, data.offset(), payload, 0, payloadSize);
wal.log(new DataPageInsertFragmentRecord(cacheId, page.id(), payload, lastLink));
}
@@ -187,7 +186,7 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
assert oldFreeSpace >= 0: oldFreeSpace;
- long nextLink = io.removeRow(buf, itemId);
+ long nextLink = io.removeRow(buf, itemId, pageSize());
if (isWalDeltaRecordNeeded(wal, page))
wal.log(new DataPageRemoveRecord(cacheId, page.id(), itemId));
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
index 8311b65..91f2ba5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
@@ -229,7 +229,7 @@ public abstract class PagesList extends DataStructure {
curIo = PagesListMetaIO.VERSIONS.latest();
- curIo.initNewPage(curBuf, nextPageId);
+ curIo.initNewPage(curBuf, nextPageId, pageSize());
}
else {
releaseAndClose(curPage, curBuf);
@@ -321,7 +321,7 @@ public abstract class PagesList extends DataStructure {
private void setupNextPage(PagesListNodeIO io, long prevId, long prev, long nextId, long next) {
assert io.getNextId(prev) == 0L;
- io.initNewPage(next, nextId);
+ io.initNewPage(next, nextId, pageSize());
io.setPreviousId(next, prevId);
io.setNextId(prev, nextId);
@@ -558,7 +558,7 @@ public abstract class PagesList extends DataStructure {
long dataPageId = dataPage.id();
- int idx = io.addPage(pageMem.pageSize(), buf, dataPageId);
+ int idx = io.addPage(buf, dataPageId, pageSize());
if (idx == -1)
handlePageFull(pageId, page, buf, io, dataPage, dataPageBuf, bucket);
@@ -637,7 +637,7 @@ public abstract class PagesList extends DataStructure {
if (isWalDeltaRecordNeeded(wal, page))
wal.log(new PagesListSetNextRecord(cacheId, pageId, nextId));
- int idx = io.addPage(pageMem.pageSize(), nextBuf, dataPageId);
+ int idx = io.addPage(nextBuf, dataPageId, pageSize());
// Here we should never write full page, because it is known to be new.
next.fullPageWalRecordPolicy(FALSE);
@@ -700,7 +700,7 @@ public abstract class PagesList extends DataStructure {
try {
while ((nextId = bag.pollFreePage()) != 0L) {
- int idx = io.addPage(pageMem.pageSize(), prevBuf, nextId);
+ int idx = io.addPage(prevBuf, nextId, pageSize());
if (idx == -1) { // Attempt to add page failed: the node page is full.
try (Page next = page(nextId)) {
@@ -884,7 +884,7 @@ public abstract class PagesList extends DataStructure {
PageIO initIo = initIoVers.latest();
- initIo.initNewPage(tailBuf, tailId);
+ initIo.initNewPage(tailBuf, tailId, pageSize());
if (isWalDeltaRecordNeeded(wal, tail)) {
wal.log(new InitNewPageRecord(cacheId, tail.id(), initIo.getType(),
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListMetaIO.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListMetaIO.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListMetaIO.java
index 6ac8cde..67e2667 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListMetaIO.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListMetaIO.java
@@ -53,8 +53,8 @@ public class PagesListMetaIO extends PageIO {
}
/** {@inheritDoc} */
- @Override public void initNewPage(long buf, long pageId) {
- super.initNewPage(buf, pageId);
+ @Override public void initNewPage(long buf, long pageId, int pageSize) {
+ super.initNewPage(buf, pageId, pageSize);
setCount(buf, 0);
setNextMetaPageId(buf, 0L);
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListNodeIO.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListNodeIO.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListNodeIO.java
index c92e4a9..ad48bc1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListNodeIO.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/io/PagesListNodeIO.java
@@ -52,8 +52,8 @@ public class PagesListNodeIO extends PageIO {
}
/** {@inheritDoc} */
- @Override public void initNewPage(long buf, long pageId) {
- super.initNewPage(buf, pageId);
+ @Override public void initNewPage(long buf, long pageId, int pageSize) {
+ super.initNewPage(buf, pageId, pageSize);
setEmpty(buf);
@@ -163,9 +163,10 @@ public class PagesListNodeIO extends PageIO {
*
* @param buf Page buffer.
* @param pageId Page ID.
+ * @param pageSize Page size.
* @return Total number of items in this page.
*/
- public int addPage(int pageSize, long buf, long pageId) {
+ public int addPage(long buf, long pageId, int pageSize) {
int cnt = getCount(buf);
if (cnt == getCapacity(pageSize))
http://git-wip-us.apache.org/repos/asf/ignite/blob/664ceac5/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index b8a1004..6eb7fe1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -408,7 +408,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
// We may need to replace inner key or want to merge this leaf with sibling after the remove -> keep lock.
if (needReplaceInner ||
// We need to make sure that we have back or forward to be able to merge.
- ((r.fwdId != 0 || r.backId != 0) && mayMerge(cnt - 1, io.getMaxCount(pageMem.pageSize(), buf)))) {
+ ((r.fwdId != 0 || r.backId != 0) && mayMerge(cnt - 1, io.getMaxCount(buf, pageSize())))) {
// If we have backId then we've already locked back page, nothing to do here.
if (r.fwdId != 0 && r.backId == 0) {
Result res = r.lockForward(0);
@@ -527,7 +527,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
assert lvl == io.getRootLevel(buf); // Can drop only root.
- io.cutRoot(pageMem.pageSize(), buf);
+ io.cutRoot(pageSize(), buf);
if (needWalDeltaRecord(meta))
wal.log(new MetaPageCutRootRecord(cacheId, meta.id()));
@@ -547,7 +547,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
assert lvl == io.getLevelsCount(buf);
- io.addRoot(pageMem.pageSize(), buf, rootPageId);
+ io.addRoot(pageSize(), buf, rootPageId);
if (needWalDeltaRecord(meta))
wal.log(new MetaPageAddRootRecord(cacheId, meta.id(), rootPageId));
@@ -565,7 +565,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
// Safe cast because we should never recycle meta page until the tree is destroyed.
BPlusMetaIO io = (BPlusMetaIO)iox;
- io.initRoot(pageMem.pageSize(), buf, rootId);
+ io.initRoot(pageSize(), buf, rootId);
if (needWalDeltaRecord(meta))
wal.log(new MetaPageInitRootRecord(cacheId, meta.id(), rootId));
@@ -1721,7 +1721,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
}
// Update forward page.
- io.splitForwardPage(buf, fwdId, fwdBuf, mid, cnt);
+ io.splitForwardPage(buf, fwdId, fwdBuf, mid, cnt, pageSize());
// TODO GG-11640 log a correct forward page record.
fwd.fullPageWalRecordPolicy(Boolean.TRUE);
@@ -2184,7 +2184,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
*/
private L insert(Page page, BPlusIO<L> io, long buf, int idx, int lvl)
throws IgniteCheckedException {
- int maxCnt = io.getMaxCount(pageMem.pageSize(), buf);
+ int maxCnt = io.getMaxCount(buf, pageSize());
int cnt = io.getCount(buf);
if (cnt == maxCnt) // Need to split page.
@@ -2284,7 +2284,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
long pageId = PageIO.getPageId(buf);
- inner(io).initNewRoot(newRootBuf, newRootId, pageId, moveUpRow, null, fwdId);
+ inner(io).initNewRoot(newRootBuf, newRootId, pageId, moveUpRow, null, fwdId, pageSize());
if (needWalDeltaRecord(newRoot))
wal.log(new NewRootInitRecord<>(cacheId, newRoot.id(), newRootId,
@@ -2624,7 +2624,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
// Exit: we are done.
}
else if (tail.sibling != null &&
- tail.getCount() + tail.sibling.getCount() < tail.io.getMaxCount(pageMem.pageSize(), tail.buf)) {
+ tail.getCount() + tail.sibling.getCount() < tail.io.getMaxCount(tail.buf, pageSize())) {
// Release everything lower than tail, we've already merged this path.
doReleaseTail(tail.down);
tail.down = null;
@@ -2939,7 +2939,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
boolean emptyBranch = needMergeEmptyBranch == TRUE || needMergeEmptyBranch == READY;
- if (!left.io.merge(pageMem.pageSize(), prnt.io, prnt.buf, prntIdx, left.buf, right.buf, emptyBranch))
+ if (!left.io.merge(prnt.io, prnt.buf, prntIdx, left.buf, right.buf, emptyBranch, pageSize()))
return false;
// Invalidate indexes after successful merge.