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 2017/01/17 14:05:25 UTC
[49/50] [abbrv] ignite git commit: ignite-3477 PageMemory
optimizations - use page address instead of ByteBuffer to work with page
memory - got rid of pages pin/unpin - do not copy byte array for cache key
comparison - reduced size of data tree search ro
ignite-3477 PageMemory optimizations
- use page address instead of ByteBuffer to work with page memory
- got rid of pages pin/unpin
- do not copy byte array for cache key comparison
- reduced size of data tree search row
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7db65ddd
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7db65ddd
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7db65ddd
Branch: refs/heads/ignite-gg-11810-1
Commit: 7db65ddd16beae5f5bf95f67c638d5ae1c58653c
Parents: cb60e38
Author: sboikov <sb...@gridgain.com>
Authored: Tue Jan 17 14:45:51 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Jan 17 14:45:53 2017 +0300
----------------------------------------------------------------------
.../internal/binary/BinaryEnumObjectImpl.java | 7 +
.../internal/binary/BinaryObjectImpl.java | 5 +
.../binary/BinaryObjectOffheapImpl.java | 5 +
.../apache/ignite/internal/pagemem/Page.java | 11 +-
.../ignite/internal/pagemem/PageMemory.java | 9 +-
.../ignite/internal/pagemem/PageUtils.java | 185 ++++++
.../pagemem/impl/PageMemoryNoStoreImpl.java | 134 ++--
.../internal/pagemem/impl/PageNoStoreImpl.java | 91 +--
.../delta/DataPageInsertFragmentRecord.java | 8 +-
.../wal/record/delta/DataPageInsertRecord.java | 8 +-
.../wal/record/delta/DataPageRemoveRecord.java | 8 +-
.../delta/DataPageSetFreeListPageRecord.java | 8 +-
.../wal/record/delta/FixCountRecord.java | 8 +-
.../record/delta/FixLeftmostChildRecord.java | 8 +-
.../pagemem/wal/record/delta/FixRemoveId.java | 8 +-
.../wal/record/delta/InitNewPageRecord.java | 8 +-
.../wal/record/delta/InnerReplaceRecord.java | 4 +-
.../pagemem/wal/record/delta/InsertRecord.java | 5 +-
.../pagemem/wal/record/delta/MergeRecord.java | 3 +-
.../wal/record/delta/MetaPageAddRootRecord.java | 8 +-
.../wal/record/delta/MetaPageCutRootRecord.java | 7 +-
.../wal/record/delta/MetaPageInitRecord.java | 14 +-
.../record/delta/MetaPageInitRootRecord.java | 9 +-
.../delta/MetaPageUpdateLastAllocatedIndex.java | 10 +-
...aPageUpdateLastSuccessfulFullSnapshotId.java | 8 +-
.../MetaPageUpdateLastSuccessfulSnapshotId.java | 8 +-
.../delta/MetaPageUpdateNextSnapshotId.java | 8 +-
.../MetaPageUpdatePartitionDataRecord.java | 12 +-
.../wal/record/delta/NewRootInitRecord.java | 6 +-
.../wal/record/delta/PageDeltaRecord.java | 7 +-
.../delta/PageListMetaResetCountRecord.java | 8 +-
.../record/delta/PagesListAddPageRecord.java | 8 +-
.../delta/PagesListInitNewPageRecord.java | 10 +-
.../record/delta/PagesListRemovePageRecord.java | 8 +-
.../record/delta/PagesListSetNextRecord.java | 8 +-
.../delta/PagesListSetPreviousRecord.java | 8 +-
.../pagemem/wal/record/delta/RecycleRecord.java | 6 +-
.../pagemem/wal/record/delta/RemoveRecord.java | 12 +-
.../pagemem/wal/record/delta/ReplaceRecord.java | 7 +-
.../record/delta/SplitExistingPageRecord.java | 8 +-
.../record/delta/SplitForwardPageRecord.java | 3 +-
.../record/delta/TrackingPageDeltaRecord.java | 10 +-
.../internal/processors/cache/CacheObject.java | 7 +
.../processors/cache/CacheObjectAdapter.java | 40 +-
.../cache/CacheObjectByteArrayImpl.java | 5 +
.../cache/IgniteCacheOffheapManagerImpl.java | 372 +++++++----
.../processors/cache/database/CacheDataRow.java | 13 +-
.../cache/database/CacheDataRowAdapter.java | 72 ++-
.../cache/database/CacheSearchRow.java | 40 ++
.../cache/database/DataStructure.java | 36 +-
.../IgniteCacheDatabaseSharedManager.java | 2 +-
.../cache/database/MetadataStorage.java | 149 +++--
.../cache/database/freelist/FreeListImpl.java | 61 +-
.../cache/database/freelist/PagesList.java | 212 +++----
.../database/freelist/io/PagesListMetaIO.java | 71 +--
.../database/freelist/io/PagesListNodeIO.java | 117 ++--
.../cache/database/tree/BPlusTree.java | 616 ++++++++++---------
.../cache/database/tree/io/BPlusIO.java | 201 +++---
.../cache/database/tree/io/BPlusInnerIO.java | 71 ++-
.../cache/database/tree/io/BPlusLeafIO.java | 11 +-
.../cache/database/tree/io/BPlusMetaIO.java | 79 +--
.../cache/database/tree/io/CacheVersionIO.java | 46 ++
.../cache/database/tree/io/DataPageIO.java | 545 ++++++++--------
.../cache/database/tree/io/DataPagePayload.java | 64 ++
.../cache/database/tree/io/IOVersions.java | 12 +-
.../cache/database/tree/io/PageIO.java | 110 +++-
.../cache/database/tree/io/PageMetaIO.java | 118 ++--
.../database/tree/io/PagePartitionMetaIO.java | 67 +-
.../database/tree/reuse/ReuseListImpl.java | 2 +-
.../cache/database/tree/util/PageHandler.java | 135 ++--
.../database/tree/util/PageLockListener.java | 17 +-
.../atomic/GridDhtAtomicSingleUpdateFuture.java | 3 +-
.../atomic/GridNearAtomicUpdateResponse.java | 3 +
.../apache/ignite/internal/util/GridUnsafe.java | 12 +
.../apache/ignite/internal/util/IgniteTree.java | 31 +-
.../internal/GridAffinityNoCacheSelfTest.java | 5 +
.../pagemem/impl/PageMemoryNoLoadSelfTest.java | 29 +-
.../IgniteIncompleteCacheObjectSelfTest.java | 5 +
.../database/tree/io/TrackingPageIOTest.java | 38 +-
.../database/BPlusTreeReuseSelfTest.java | 22 +-
.../processors/database/BPlusTreeSelfTest.java | 85 +--
.../database/FreeListImplSelfTest.java | 15 +-
.../database/MetadataStorageSelfTest.java | 2 +-
.../internal/processors/query/h2/H2Cursor.java | 9 +-
.../processors/query/h2/database/H2Tree.java | 5 +-
.../query/h2/database/H2TreeIndex.java | 5 +-
.../query/h2/database/io/H2InnerIO.java | 24 +-
.../query/h2/database/io/H2LeafIO.java | 22 +-
.../query/h2/database/io/H2RowLinkIO.java | 6 +-
.../processors/query/h2/opt/GridH2Row.java | 5 +
.../query/IgniteSqlDistributedJoinSelfTest.java | 46 +-
.../h2/GridIndexingSpiAbstractSelfTest.java | 5 +
.../IgniteDistributedJoinTestSuite.java | 2 +-
93 files changed, 2579 insertions(+), 1807 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
index a17f755..d6b6168 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryEnumObjectImpl.java
@@ -276,6 +276,13 @@ public class BinaryEnumObjectImpl implements BinaryObjectEx, Externalizable, Cac
}
/** {@inheritDoc} */
+ @Override public int putValue(long addr) throws IgniteCheckedException {
+ assert valBytes != null : "Value bytes must be initialized before object is stored";
+
+ return CacheObjectAdapter.putValue(addr, cacheObjectType(), valBytes, 0);
+ }
+
+ /** {@inheritDoc} */
@Override public boolean putValue(final ByteBuffer buf, int off, int len) throws IgniteCheckedException {
return CacheObjectAdapter.putValue(cacheObjectType(), buf, off, len, valBytes, 0);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
index ff14b63..0442a95 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectImpl.java
@@ -165,6 +165,11 @@ public final class BinaryObjectImpl extends BinaryObjectExImpl implements Extern
}
/** {@inheritDoc} */
+ @Override public int putValue(long addr) throws IgniteCheckedException {
+ return CacheObjectAdapter.putValue(addr, cacheObjectType(), arr, start);
+ }
+
+ /** {@inheritDoc} */
@Override public boolean putValue(final ByteBuffer buf, int off, int len) throws IgniteCheckedException {
return CacheObjectAdapter.putValue(cacheObjectType(), buf, off, len, arr, start);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
index 4cf2bdf..d45815a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryObjectOffheapImpl.java
@@ -152,6 +152,11 @@ public class BinaryObjectOffheapImpl extends BinaryObjectExImpl implements Exter
}
/** {@inheritDoc} */
+ @Override public int putValue(long addr) throws IgniteCheckedException {
+ throw new UnsupportedOperationException("TODO implement");
+ }
+
+ /** {@inheritDoc} */
@Override public boolean putValue(final ByteBuffer buf, final int off, final int len)
throws IgniteCheckedException {
throw new UnsupportedOperationException("TODO implement");
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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 e08fad6..2667e44 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
@@ -17,9 +17,6 @@
package org.apache.ignite.internal.pagemem;
-import java.nio.ByteBuffer;
-import org.jetbrains.annotations.Nullable;
-
/**
*
*/
@@ -39,9 +36,9 @@ public interface Page extends AutoCloseable {
public FullPageId fullId();
/**
- * @return ByteBuffer for modifying the page.
+ * @return Pointer for modifying the page.
*/
- public ByteBuffer getForRead();
+ public long getForReadPointer();
/**
* Releases reserved page. Released page can be evicted from RAM after flushing modifications to disk.
@@ -51,12 +48,12 @@ public interface Page extends AutoCloseable {
/**
* @return ByteBuffer for modifying the page.
*/
- public ByteBuffer getForWrite();
+ public long getForWritePointer();
/**
* @return ByteBuffer for modifying the page of {@code null} if failed to get write lock.
*/
- @Nullable public ByteBuffer tryGetForWrite();
+ public long tryGetForWritePointer();
/**
* Releases reserved page. Released page can be evicted from RAM after flushing modifications to disk.
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageMemory.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageMemory.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageMemory.java
index 53b37f6..cfee19f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageMemory.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageMemory.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.pagemem;
+import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.lifecycle.LifecycleAware;
@@ -25,7 +26,7 @@ import org.apache.ignite.lifecycle.LifecycleAware;
*/
public interface PageMemory extends LifecycleAware, PageIdAllocator {
/** */
- ByteOrder NATIVE_BYTE_ORDER = ByteOrder.nativeOrder();
+ public static final ByteOrder NATIVE_BYTE_ORDER = ByteOrder.nativeOrder();
/**
* Gets the page associated with the given page ID. Each page obtained with this method must be released by
@@ -62,4 +63,10 @@ public interface PageMemory extends LifecycleAware, PageIdAllocator {
* @return Page size with system overhead, in bytes.
*/
public int systemPageSize();
+
+ /**
+ * @param pageAddr Page address.
+ * @return Page byte buffer.
+ */
+ public ByteBuffer pageBuffer(long pageAddr);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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
new file mode 100644
index 0000000..f824368
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageUtils.java
@@ -0,0 +1,185 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.pagemem;
+
+import org.apache.ignite.internal.util.GridUnsafe;
+
+/**
+ *
+ */
+@SuppressWarnings("deprecation")
+public class PageUtils {
+ /**
+ * @param addr Start address.
+ * @param off Offset.
+ * @return Byte value from given address.
+ */
+ public static byte getByte(long addr, int off) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+
+ return GridUnsafe.getByte(addr + off);
+ }
+
+ /**
+ * @param addr Start address.
+ * @param off Offset.
+ * @param len Bytes length.
+ * @return Bytes from given address.
+ */
+ public static byte[] getBytes(long addr, int off, int len) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+ assert len >= 0;
+
+ byte[] bytes = new byte[len];
+
+ GridUnsafe.copyMemory(null, addr + off, bytes, GridUnsafe.BYTE_ARR_OFF, len);
+
+ return bytes;
+ }
+
+ /**
+ * @param srcAddr Source address.
+ * @param srcOff Source offset.
+ * @param dst Destination array.
+ * @param dstOff Destination offset.
+ * @param len Length.
+ */
+ public static void getBytes(long srcAddr, int srcOff, byte[] dst, int dstOff, int len) {
+ assert srcAddr > 0;
+ assert srcOff > 0;
+ assert dst != null;
+ assert dstOff >= 0;
+ assert len >= 0;
+
+ GridUnsafe.copyMemory(null, srcAddr + srcOff, dst, GridUnsafe.BYTE_ARR_OFF + dstOff, len);
+ }
+
+ /**
+ * @param addr Address.
+ * @param off Offset.
+ * @return Value.
+ */
+ public static short getShort(long addr, int off) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+
+ return GridUnsafe.getShort(addr + off);
+ }
+
+ /**
+ * @param addr Address.
+ * @param off Offset.
+ * @return Value.
+ */
+ public static int getInt(long addr, int off) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+
+ return GridUnsafe.getInt(addr + off);
+ }
+
+ /**
+ * @param addr Address.
+ * @param off Offset.
+ * @return Value.
+ */
+ public static long getLong(long addr, int off) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+
+ return GridUnsafe.getLong(addr + off);
+ }
+
+ /**
+ * @param addr Address/
+ * @param off Offset.
+ * @param bytes Bytes.
+ */
+ public static void putBytes(long addr, int off, byte[] bytes) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+ assert bytes != null;
+
+ GridUnsafe.copyMemory(bytes, GridUnsafe.BYTE_ARR_OFF, null, addr + off, bytes.length);
+ }
+
+ /**
+ * @param addr Address.
+ * @param off Offset.
+ * @param bytes Bytes array.
+ * @param bytesOff Bytes array offset.
+ */
+ public static void putBytes(long addr, int off, byte[] bytes, int bytesOff) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+ assert bytes != null;
+ assert bytesOff >= 0 && (bytesOff < bytes.length || bytes.length == 0) : bytesOff;
+
+ GridUnsafe.copyMemory(bytes, GridUnsafe.BYTE_ARR_OFF + bytesOff, null, addr + off, bytes.length - bytesOff);
+ }
+
+ /**
+ * @param addr Address.
+ * @param off Offset.
+ * @param v Value.
+ */
+ public static void putByte(long addr, int off, byte v) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+
+ GridUnsafe.putByte(addr + off, v);
+ }
+
+ /**
+ * @param addr Address.
+ * @param off Offset.
+ * @param v Value.
+ */
+ public static void putShort(long addr, int off, short v) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+
+ GridUnsafe.putShort(addr + off, v);
+ }
+
+ /**
+ * @param addr Address.
+ * @param off Offset.
+ * @param v Value.
+ */
+ public static void putInt(long addr, int off, int v) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+
+ GridUnsafe.putInt(addr + off, v);
+ }
+
+ /**
+ * @param addr Address.
+ * @param off Offset.
+ * @param v Value.
+ */
+ public static void putLong(long addr, int off, long v) {
+ assert addr > 0 : addr;
+ assert off >= 0;
+
+ GridUnsafe.putLong(addr + off, v);
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
index 1d29df8..41e401d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
@@ -20,15 +20,14 @@ package org.apache.ignite.internal.pagemem.impl;
import java.io.Closeable;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.mem.DirectMemory;
-import org.apache.ignite.internal.mem.DirectMemoryRegion;
import org.apache.ignite.internal.mem.DirectMemoryProvider;
+import org.apache.ignite.internal.mem.DirectMemoryRegion;
import org.apache.ignite.internal.mem.OutOfMemoryException;
import org.apache.ignite.internal.pagemem.Page;
import org.apache.ignite.internal.pagemem.PageIdUtils;
@@ -37,7 +36,6 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.OffheapReadWriteLock;
import org.apache.ignite.internal.util.offheap.GridOffHeapOutOfMemoryException;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lifecycle.LifecycleAware;
import sun.misc.JavaNioAccess;
import sun.misc.SharedSecrets;
@@ -90,10 +88,7 @@ public class PageMemoryNoStoreImpl implements PageMemory {
public static final int PAGE_ID_OFFSET = 8;
/** Page pin counter offset. */
- public static final int PIN_CNT_OFFSET = 16;
-
- /** Page pin counter offset. */
- public static final int LOCK_OFFSET = 24;
+ public static final int LOCK_OFFSET = 16;
/**
* Need a 8-byte pointer for linked list, 8 bytes for internal needs (flags),
@@ -134,21 +129,28 @@ public class PageMemoryNoStoreImpl implements PageMemory {
/** */
private OffheapReadWriteLock rwLock;
+ /** */
+ private final boolean trackAcquiredPages;
+
/**
+ * @param log Logger.
* @param directMemoryProvider Memory allocator to use.
* @param sharedCtx Cache shared context.
* @param pageSize Page size.
+ * @param trackAcquiredPages If {@code true} tracks number of allocated pages (for tests purpose only).
*/
public PageMemoryNoStoreImpl(
IgniteLogger log,
DirectMemoryProvider directMemoryProvider,
GridCacheSharedContext<?, ?> sharedCtx,
- int pageSize
+ int pageSize,
+ boolean trackAcquiredPages
) {
assert log != null || sharedCtx != null;
this.log = sharedCtx != null ? sharedCtx.logger(PageMemoryNoStoreImpl.class) : log;
this.directMemoryProvider = directMemoryProvider;
+ this.trackAcquiredPages = trackAcquiredPages;
sysPageSize = pageSize + PAGE_OVERHEAD;
@@ -205,6 +207,11 @@ public class PageMemoryNoStoreImpl implements PageMemory {
}
/** {@inheritDoc} */
+ @Override public ByteBuffer pageBuffer(long pageAddr) {
+ return wrapPointer(pageAddr, pageSize());
+ }
+
+ /** {@inheritDoc} */
@Override public long allocatePage(int cacheId, int partId, byte flags) {
long relPtr = INVALID_REL_PTR;
long absPtr = 0;
@@ -213,13 +220,13 @@ public class PageMemoryNoStoreImpl implements PageMemory {
relPtr = seg.borrowFreePage();
if (relPtr != INVALID_REL_PTR) {
- absPtr = seg.absolute(relPtr);
+ absPtr = seg.absolute(PageIdUtils.pageIndex(relPtr));
break;
}
}
- // No segments conatined a free page.
+ // No segments contained a free page.
if (relPtr == INVALID_REL_PTR) {
int segAllocIdx = nextRoundRobinIndex();
@@ -231,7 +238,7 @@ public class PageMemoryNoStoreImpl implements PageMemory {
relPtr = seg.allocateFreePage(flags);
if (relPtr != INVALID_REL_PTR) {
- absPtr = seg.absolute(relPtr);
+ absPtr = seg.absolute(PageIdUtils.pageIndex(relPtr));
break;
}
@@ -248,9 +255,6 @@ public class PageMemoryNoStoreImpl implements PageMemory {
writePageId(absPtr, pageId);
- // Clear pin counter.
- GridUnsafe.putLong(absPtr + PIN_CNT_OFFSET, 0);
-
// TODO pass an argument to decide whether the page should be cleaned.
GridUnsafe.setMemory(absPtr + PAGE_OVERHEAD, sysPageSize - PAGE_OVERHEAD, (byte)0);
@@ -259,7 +263,7 @@ public class PageMemoryNoStoreImpl implements PageMemory {
/** {@inheritDoc} */
@Override public boolean freePage(int cacheId, long pageId) {
- Segment seg = segment(pageId);
+ Segment seg = segment(PageIdUtils.pageIndex(pageId));
seg.releaseFreePage(pageId);
@@ -268,25 +272,25 @@ public class PageMemoryNoStoreImpl implements PageMemory {
/** {@inheritDoc} */
@Override public Page page(int cacheId, long pageId) throws IgniteCheckedException {
- Segment seg = segment(pageId);
+ int pageIdx = PageIdUtils.pageIndex(pageId);
- return seg.acquirePage(cacheId, pageId, false);
+ Segment seg = segment(pageIdx);
+
+ return seg.acquirePage(pageIdx, pageId);
}
/** {@inheritDoc} */
@Override public Page page(int cacheId, long pageId, boolean restore) throws IgniteCheckedException {
- Segment seg = segment(pageId);
-
- return seg.acquirePage(cacheId, pageId, restore);
+ throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
@Override public void releasePage(Page p) {
- PageNoStoreImpl page = (PageNoStoreImpl)p;
-
- Segment seg = segments[page.segmentIndex()];
+ if (trackAcquiredPages) {
+ Segment seg = segment(PageIdUtils.pageIndex(p.id()));
- seg.releasePage(page);
+ seg.onPageRelease();
+ }
}
/** {@inheritDoc} */
@@ -435,17 +439,15 @@ public class PageMemoryNoStoreImpl implements PageMemory {
* @param absPtr Absolute memory pointer to the page header.
* @param pageId Page ID to write.
*/
- void writePageId(long absPtr, long pageId) {
+ private void writePageId(long absPtr, long pageId) {
GridUnsafe.putLong(absPtr + PAGE_ID_OFFSET, pageId);
}
/**
- * @param pageId Page ID.
+ * @param pageIdx Page index.
* @return Segment.
*/
- private Segment segment(long pageId) {
- long pageIdx = PageIdUtils.pageIndex(pageId);
-
+ private Segment segment(int pageIdx) {
int segIdx = segmentIndex(pageIdx);
return segments[segIdx];
@@ -539,63 +541,31 @@ public class PageMemoryNoStoreImpl implements PageMemory {
* @return Pinned page impl.
*/
@SuppressWarnings("TypeMayBeWeakened")
- private PageNoStoreImpl acquirePage(int cacheId, long pageId, boolean restore) {
- long absPtr = absolute(pageId);
-
- long marker = GridUnsafe.getLong(absPtr);
-
- if (marker != PAGE_MARKER)
- throw new IllegalStateException("Page was not allocated [absPtr=" + U.hexLong(absPtr) +
- ", cacheId=" + cacheId + ", pageId=" + U.hexLong(pageId) +
- ", marker=" + U.hexLong(marker) + ']');
-
- while (true) {
- long pinCnt = GridUnsafe.getLong(absPtr + PIN_CNT_OFFSET);
+ private PageNoStoreImpl acquirePage(int pageIdx, long pageId) {
+ long absPtr = absolute(pageIdx);
- if (pinCnt < 0)
- throw new IllegalStateException("Page has been deallocated [absPtr=" + U.hexLong(absPtr) +
- ", cacheId=" + cacheId + ", pageId=" + U.hexLong(pageId) + ", pinCnt=" + pinCnt + ']');
+ if (trackAcquiredPages)
+ acquiredPages.incrementAndGet();
- if (GridUnsafe.compareAndSwapLong(null, absPtr + PIN_CNT_OFFSET, pinCnt, pinCnt + 1))
- break;
- }
-
- acquiredPages.incrementAndGet();
-
- return new PageNoStoreImpl(PageMemoryNoStoreImpl.this, idx, absPtr, cacheId, pageId, restore);
+ return new PageNoStoreImpl(PageMemoryNoStoreImpl.this, absPtr, pageId);
}
/**
- * @param pinnedPage Page to unpin.
*/
- private void releasePage(PageNoStoreImpl pinnedPage) {
- long absPtr = pinnedPage.absolutePointer();
-
- while (true) {
- long pinCnt = GridUnsafe.getLong(absPtr + PIN_CNT_OFFSET);
-
- assert pinCnt > 0 : "Releasing a page that was not pinned [page=" + pinnedPage +
- ", pinCnt=" + pinCnt + ']';
-
- if (GridUnsafe.compareAndSwapLong(null, absPtr + PIN_CNT_OFFSET, pinCnt, pinCnt - 1))
- break;
- }
-
+ private void onPageRelease() {
acquiredPages.decrementAndGet();
}
/**
- * @param relativePtr Relative pointer.
+ * @param pageIdx Page index.
* @return Absolute pointer.
*/
- private long absolute(long relativePtr) {
- int pageIdx = PageIdUtils.pageIndex(relativePtr);
-
+ private long absolute(int pageIdx) {
pageIdx &= idxMask;
- long offset = ((long)pageIdx) * sysPageSize;
+ long off = ((long)pageIdx) * sysPageSize;
- return pagesBase + offset;
+ return pagesBase + off;
}
/**
@@ -616,24 +586,12 @@ public class PageMemoryNoStoreImpl implements PageMemory {
* @param pageId Page ID to release.
*/
private void releaseFreePage(long pageId) {
- // Clear out flags and file ID.
- long relPtr = PageIdUtils.pageId(0, (byte)0, PageIdUtils.pageIndex(pageId));
-
- long absPtr = absolute(relPtr);
-
- // Prepare page to free.
- // First, swap pin counter down to -1.
- while (true) {
- long pinCnt = GridUnsafe.getLong(absPtr + PIN_CNT_OFFSET);
-
- assert pinCnt >= 0 : "pinCnt=" + pinCnt + ", relPtr=" + U.hexLong(relPtr);
+ int pageIdx = PageIdUtils.pageIndex(pageId);
- if (pinCnt > 0)
- throw new IllegalStateException("Releasing a page being in use: " + U.hexLong(relPtr));
+ // Clear out flags and file ID.
+ long relPtr = PageIdUtils.pageId(0, (byte)0, pageIdx);
- if (GridUnsafe.compareAndSwapLong(null, absPtr + PIN_CNT_OFFSET, 0, -1))
- break;
- }
+ long absPtr = absolute(pageIdx);
// Second, write clean relative pointer instead of page ID.
writePageId(absPtr, relPtr);
@@ -665,7 +623,7 @@ public class PageMemoryNoStoreImpl implements PageMemory {
long cnt = ((freePageRelPtrMasked & COUNTER_MASK) + COUNTER_INC) & COUNTER_MASK;
if (freePageRelPtr != INVALID_REL_PTR) {
- long freePageAbsPtr = absolute(freePageRelPtr);
+ long freePageAbsPtr = absolute(PageIdUtils.pageIndex(freePageRelPtr));
long nextFreePageRelPtr = GridUnsafe.getLong(freePageAbsPtr) & ADDRESS_MASK;
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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 404c0b2..b52df55 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
@@ -20,54 +20,39 @@ package org.apache.ignite.internal.pagemem.impl;
import org.apache.ignite.internal.pagemem.FullPageId;
import org.apache.ignite.internal.pagemem.Page;
import org.apache.ignite.internal.pagemem.PageIdUtils;
-import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
-import org.apache.ignite.internal.util.OffheapReadWriteLock;
import org.apache.ignite.internal.util.typedef.internal.SB;
-import java.nio.ByteBuffer;
-
/**
*
*/
public class PageNoStoreImpl implements Page {
/** */
- private int segIdx;
-
- /** */
private long absPtr;
/** */
private long pageId;
/** */
- private int cacheId;
-
- /** */
private PageMemoryNoStoreImpl pageMem;
- /** */
- private final ByteBuffer buf;
-
- /** Page for memory restore */
- private final boolean noTagCheck;
-
/**
- * @param segIdx Segment index.
+ * @param pageMem Page memory.
* @param absPtr Absolute pointer.
+ * @param pageId Page ID.
*/
- public PageNoStoreImpl(
- PageMemoryNoStoreImpl pageMem, int segIdx, long absPtr, int cacheId, long pageId, boolean noTagCheck
- ) {
+ PageNoStoreImpl(PageMemoryNoStoreImpl pageMem, long absPtr, long pageId) {
this.pageMem = pageMem;
- this.segIdx = segIdx;
this.absPtr = absPtr;
- this.cacheId = cacheId;
this.pageId = pageId;
- this.noTagCheck = noTagCheck;
+ }
- buf = pageMem.wrapPointer(absPtr + PageMemoryNoStoreImpl.PAGE_OVERHEAD, pageMem.pageSize());
+ /**
+ * @return Data pointer.
+ */
+ private long pointer() {
+ return absPtr + PageMemoryNoStoreImpl.PAGE_OVERHEAD;
}
/** {@inheritDoc} */
@@ -77,15 +62,15 @@ public class PageNoStoreImpl implements Page {
/** {@inheritDoc} */
@Override public FullPageId fullId() {
- return new FullPageId(pageId, cacheId);
+ throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
- @Override public ByteBuffer getForRead() {
+ @Override public long getForReadPointer() {
if (pageMem.readLockPage(absPtr, PageIdUtils.tag(pageId)))
- return reset(buf.asReadOnlyBuffer());
+ return pointer();
- return null;
+ return 0L;
}
/** {@inheritDoc} */
@@ -94,31 +79,29 @@ public class PageNoStoreImpl implements Page {
}
/** {@inheritDoc} */
- @Override public ByteBuffer getForWrite() {
- int tag = noTagCheck ? OffheapReadWriteLock.TAG_LOCK_ALWAYS : PageIdUtils.tag(pageId);
+ @Override public long getForWritePointer() {
+ int tag = PageIdUtils.tag(pageId);
boolean locked = pageMem.writeLockPage(absPtr, tag);
- if (!locked && !noTagCheck)
- return null;
-
- assert locked;
+ if (!locked)
+ return 0L;
- return reset(buf);
+ return pointer();
}
/** {@inheritDoc} */
- @Override public ByteBuffer tryGetForWrite() {
- int tag = noTagCheck ? OffheapReadWriteLock.TAG_LOCK_ALWAYS : PageIdUtils.tag(pageId);
+ @Override public long tryGetForWritePointer() {
+ int tag = PageIdUtils.tag(pageId);
if (pageMem.tryWriteLockPage(absPtr, tag))
- return reset(buf);
+ return pointer();
- return null;
+ return 0L;
}
/** {@inheritDoc} */
@Override public void releaseWrite(boolean markDirty) {
- long updatedPageId = PageIO.getPageId(buf);
+ long updatedPageId = PageIO.getPageId(pointer());
pageMem.writeUnlockPage(absPtr, PageIdUtils.tag(updatedPageId));
}
@@ -143,39 +126,11 @@ public class PageNoStoreImpl implements Page {
pageMem.releasePage(this);
}
- /**
- * @return Segment index.
- */
- int segmentIndex() {
- return segIdx;
- }
-
- /**
- * @return Absolute pointer to the system page start.
- */
- long absolutePointer() {
- return absPtr;
- }
-
- /**
- * @param buf Byte buffer.
- * @return The given buffer back.
- */
- private ByteBuffer reset(ByteBuffer buf) {
- buf.order(PageMemory.NATIVE_BYTE_ORDER);
-
- buf.rewind();
-
- return buf;
- }
-
/** {@inheritDoc} */
@Override public String toString() {
SB sb = new SB("PageNoStoreImpl [absPtr=0x");
sb.appendHex(absPtr);
- sb.a(", segIdx=").a(segIdx);
- sb.a(", cacheId=").a(cacheId);
sb.a(", pageId=0x").appendHex(pageId);
sb.a("]");
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..eeaabd1 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
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.DataPageIO;
/**
@@ -50,10 +50,10 @@ public class DataPageInsertFragmentRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- DataPageIO io = DataPageIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ DataPageIO io = DataPageIO.VERSIONS.forPage(pageAddr);
- io.addRowFragment(buf, payload, lastLink);
+ io.addRowFragment(pageAddr, payload, lastLink, pageMem.pageSize());
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..f23d57a 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
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.DataPageIO;
/**
@@ -51,12 +51,12 @@ public class DataPageInsertRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
assert payload != null;
- DataPageIO io = DataPageIO.VERSIONS.forPage(buf);
+ DataPageIO io = DataPageIO.VERSIONS.forPage(pageAddr);
- io.addRow(buf, payload);
+ io.addRow(pageAddr, payload, pageMem.pageSize());
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..17c7fe8 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
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.DataPageIO;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -48,11 +48,11 @@ public class DataPageRemoveRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf)
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr)
throws IgniteCheckedException {
- DataPageIO io = DataPageIO.VERSIONS.forPage(buf);
+ DataPageIO io = DataPageIO.VERSIONS.forPage(pageAddr);
- io.removeRow(buf, itemId);
+ io.removeRow(pageAddr, itemId, pageMem.pageSize());
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..c835052 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
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.DataPageIO;
import static org.apache.ignite.internal.pagemem.wal.record.WALRecord.RecordType.DATA_PAGE_SET_FREE_LIST_PAGE;
@@ -49,10 +49,10 @@ public class DataPageSetFreeListPageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- DataPageIO io = DataPageIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ DataPageIO io = DataPageIO.VERSIONS.forPage(pageAddr);
- io.setFreeListPageId(buf, freeListPage);
+ io.setFreeListPageId(pageAddr, freeListPage);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..c727710 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
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
@@ -40,10 +40,10 @@ public class FixCountRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- BPlusIO<?> io = PageIO.getBPlusIO(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ BPlusIO<?> io = PageIO.getBPlusIO(pageAddr);
- io.setCount(buf, cnt);
+ io.setCount(pageAddr, cnt);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..94155c9 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
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusInnerIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
@@ -41,10 +41,10 @@ public class FixLeftmostChildRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- BPlusInnerIO<?> io = PageIO.getBPlusIO(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ BPlusInnerIO<?> io = PageIO.getBPlusIO(pageAddr);
- io.setLeft(buf, 0, rightId);
+ io.setLeft(pageAddr, 0, rightId);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..b9900e1 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
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
@@ -41,11 +41,11 @@ public class FixRemoveId extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf)
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr)
throws IgniteCheckedException {
- BPlusIO<?> io = PageIO.getBPlusIO(buf);
+ BPlusIO<?> io = PageIO.getBPlusIO(pageAddr);
- io.setRemoveId(buf, rmvId);
+ io.setRemoveId(pageAddr, rmvId);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..f5607dd 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
@@ -17,15 +17,15 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
/**
- * Initializes new page by calling {@link PageIO#initNewPage(ByteBuffer, long)}.
+ * Initializes new page by calling {@link PageIO#initNewPage(long, long, int)}.
*/
public class InitNewPageRecord extends PageDeltaRecord {
/** */
@@ -54,10 +54,10 @@ public class InitNewPageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
PageIO io = PageIO.getPageIO(ioType, ioVer);
- io.initNewPage(buf, newPageId);
+ io.initNewPage(pageAddr, newPageId, pageMem.pageSize());
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..35d23c1 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
@@ -17,9 +17,9 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.pagemem.PageMemory;
/**
* Inner replace on remove.
@@ -57,7 +57,7 @@ public class InnerReplaceRecord<L> extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer dstBuf) throws IgniteCheckedException {
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
throw new IgniteCheckedException("Inner replace record should not be logged.");
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..fa598b2 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
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.pagemem.wal.record.delta;
import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusIO;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -72,8 +73,8 @@ public class InsertRecord<L> extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- io.insert(buf, idx, row, rowBytes, rightId);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ io.insert(pageAddr, idx, row, rowBytes, rightId);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..84770d5 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
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.pagemem.wal.record.delta;
import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -63,7 +64,7 @@ public class MergeRecord<L> extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer leftBuf) throws IgniteCheckedException {
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
throw new IgniteCheckedException("Merge record should not be logged.");
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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 75aaca4..176df33 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusMetaIO;
/**
@@ -40,10 +40,10 @@ public class MetaPageAddRootRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- BPlusMetaIO io = BPlusMetaIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ BPlusMetaIO io = BPlusMetaIO.VERSIONS.forPage(pageAddr);
- io.addRoot(buf, rootId);
+ io.addRoot(pageAddr, rootId, pageMem.pageSize());
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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 ba1d04d..50ccddc 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
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.pagemem.wal.record.delta;
import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusMetaIO;
/**
@@ -34,10 +35,10 @@ public class MetaPageCutRootRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- BPlusMetaIO io = BPlusMetaIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ BPlusMetaIO io = BPlusMetaIO.VERSIONS.forPage(pageAddr);
- io.cutRoot(buf);
+ io.cutRoot(pageAddr, pageMem.pageSize());
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..3d351a2 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PagePartitionMetaIO;
@@ -75,15 +75,15 @@ public class MetaPageInitRecord extends InitNewPageRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
PageMetaIO io = ioType == PageIO.T_META ?
- PageMetaIO.VERSIONS.forPage(buf) :
- PagePartitionMetaIO.VERSIONS.forPage(buf);
+ PageMetaIO.VERSIONS.forPage(pageAddr) :
+ PagePartitionMetaIO.VERSIONS.forPage(pageAddr);
- io.initNewPage(buf, newPageId);
+ io.initNewPage(pageAddr, newPageId, pageMem.pageSize());
- io.setTreeRoot(buf, treeRoot);
- io.setReuseListRoot(buf, reuseListRoot);
+ io.setTreeRoot(pageAddr, treeRoot);
+ io.setReuseListRoot(pageAddr, reuseListRoot);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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 a9d2677..4d56db0 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusMetaIO;
/**
@@ -40,11 +40,10 @@ public class MetaPageInitRootRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf)
- throws IgniteCheckedException {
- BPlusMetaIO io = BPlusMetaIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ BPlusMetaIO io = BPlusMetaIO.VERSIONS.forPage(pageAddr);
- io.initRoot(buf, rootId);
+ io.initRoot(pageAddr, rootId, pageMem.pageSize());
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..bd9b100 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
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
@@ -39,12 +39,12 @@ public class MetaPageUpdateLastAllocatedIndex extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- assert PageIO.getType(buf) == PageIO.T_META || PageIO.getType(buf) == PageIO.T_PART_META;
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ assert PageIO.getType(pageAddr) == PageIO.T_META || PageIO.getType(pageAddr) == PageIO.T_PART_META;
- PageMetaIO io = PageMetaIO.VERSIONS.forVersion(PageIO.getVersion(buf));
+ PageMetaIO io = PageMetaIO.VERSIONS.forVersion(PageIO.getVersion(pageAddr));
- io.setLastAllocatedIndex(buf, lastAllocatedIdx);
+ io.setLastAllocatedIndex(pageAddr, lastAllocatedIdx);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullSnapshotId.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullSnapshotId.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullSnapshotId.java
index 5633354..e322b4f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullSnapshotId.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulFullSnapshotId.java
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
/**
@@ -38,10 +38,10 @@ public class MetaPageUpdateLastSuccessfulFullSnapshotId extends PageDeltaRecord
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PageMetaIO io = PageMetaIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PageMetaIO io = PageMetaIO.VERSIONS.forPage(pageAddr);
- io.setLastSuccessfulFullSnapshotId(buf, lastSuccessfulFullSnapshotId);
+ io.setLastSuccessfulFullSnapshotId(pageAddr, lastSuccessfulFullSnapshotId);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulSnapshotId.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulSnapshotId.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulSnapshotId.java
index 20e136b..df9d778 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulSnapshotId.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateLastSuccessfulSnapshotId.java
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
/**
@@ -42,10 +42,10 @@ public class MetaPageUpdateLastSuccessfulSnapshotId extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PageMetaIO io = PageMetaIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PageMetaIO io = PageMetaIO.VERSIONS.forPage(pageAddr);
- io.setLastSuccessfulSnapshotId(buf, lastSuccessfulSnapshotId);
+ io.setLastSuccessfulSnapshotId(pageAddr, lastSuccessfulSnapshotId);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextSnapshotId.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextSnapshotId.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextSnapshotId.java
index 0a92aef..1403bd7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextSnapshotId.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/MetaPageUpdateNextSnapshotId.java
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageMetaIO;
/**
@@ -38,10 +38,10 @@ public class MetaPageUpdateNextSnapshotId extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PageMetaIO io = PageMetaIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PageMetaIO io = PageMetaIO.VERSIONS.forPage(pageAddr);
- io.setNextSnapshotTag(buf, nextSnapshotId);
+ io.setNextSnapshotTag(pageAddr, nextSnapshotId);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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 ae6210a..66efc6f 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.PagePartitionMetaIO;
/**
@@ -85,12 +85,12 @@ public class MetaPageUpdatePartitionDataRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PagePartitionMetaIO io = PagePartitionMetaIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PagePartitionMetaIO io = PagePartitionMetaIO.VERSIONS.forPage(pageAddr);
- io.setUpdateCounter(buf, updateCntr);
- io.setGlobalRemoveId(buf, globalRmvId);
- io.setSize(buf, partSize);
+ io.setUpdateCounter(pageAddr, updateCntr);
+ io.setGlobalRemoveId(pageAddr, globalRmvId);
+ io.setSize(pageAddr, partSize);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..26ee364 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusInnerIO;
/**
@@ -74,8 +74,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(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ io.initNewRoot(pageAddr, newRootId, leftChildId, row, rowBytes, rightChildId, pageMem.pageSize());
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..ca52bd2 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
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.pagemem.wal.record.WALRecord;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -62,10 +62,11 @@ public abstract class PageDeltaRecord extends WALRecord {
* Apply changes from this delta to the given page.
* It is assumed that the given buffer represents page state right before this update.
*
- * @param buf Page buffer.
+ * @param pageMem Page memory.
+ * @param pageAddr Page address.
* @throws IgniteCheckedException If failed.
*/
- public abstract void applyDelta(ByteBuffer buf) throws IgniteCheckedException;
+ public abstract void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException;
/** {@inheritDoc} */
@Override public String toString() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageListMetaResetCountRecord.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageListMetaResetCountRecord.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageListMetaResetCountRecord.java
index 23ebcee..16587d3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageListMetaResetCountRecord.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/wal/record/delta/PageListMetaResetCountRecord.java
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListMetaIO;
/**
@@ -34,10 +34,10 @@ public class PageListMetaResetCountRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PagesListMetaIO io = PagesListMetaIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PagesListMetaIO io = PagesListMetaIO.VERSIONS.forPage(pageAddr);
- io.resetCount(buf);
+ io.resetCount(pageAddr);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..a503b46 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -51,10 +51,10 @@ public class PagesListAddPageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(pageAddr);
- int cnt = io.addPage(buf, dataPageId);
+ int cnt = io.addPage(pageAddr, dataPageId, pageMem.pageSize());
assert cnt >= 0 : cnt;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..b035323 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@ -73,14 +73,14 @@ public class PagesListInitNewPageRecord extends InitNewPageRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
PagesListNodeIO io = PageIO.getPageIO(PageIO.T_PAGE_LIST_NODE, ioVer);
- io.initNewPage(buf, pageId());
- io.setPreviousId(buf, prevPageId);
+ io.initNewPage(pageAddr, pageId(), pageMem.pageSize());
+ io.setPreviousId(pageAddr, prevPageId);
if (addDataPageId != 0L) {
- int cnt = io.addPage(buf, addDataPageId);
+ int cnt = io.addPage(pageAddr, addDataPageId, pageMem.pageSize());
assert cnt == 0 : cnt;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..26f832c 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -51,10 +51,10 @@ public class PagesListRemovePageRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(pageAddr);
- boolean rmvd = io.removePage(buf, rmvdPageId);
+ boolean rmvd = io.removePage(pageAddr, rmvdPageId);
assert rmvd;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..c0bed60 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
/**
@@ -47,10 +47,10 @@ public class PagesListSetNextRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(pageAddr);
- io.setNextId(buf, nextPageId);
+ io.setNextId(pageAddr, nextPageId);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..21c3ef2 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
/**
@@ -47,10 +47,10 @@ public class PagesListSetPreviousRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PagesListNodeIO io = PagesListNodeIO.VERSIONS.forPage(pageAddr);
- io.setPreviousId(buf, prevPageId);
+ io.setPreviousId(pageAddr, prevPageId);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..1737e12 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
/**
@@ -40,8 +40,8 @@ public class RecycleRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- PageIO.setPageId(buf, newPageId);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ PageIO.setPageId(pageAddr, newPageId);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..6d278e9 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,8 +17,8 @@
package org.apache.ignite.internal.pagemem.wal.record.delta;
-import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -47,13 +47,13 @@ public class RemoveRecord extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf) throws IgniteCheckedException {
- BPlusIO<?> io = PageIO.getBPlusIO(buf);
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr) throws IgniteCheckedException {
+ BPlusIO<?> io = PageIO.getBPlusIO(pageAddr);
- if (io.getCount(buf) != cnt)
- throw new DeltaApplicationException("Count is wrong [expCnt=" + cnt + ", actual=" + io.getCount(buf) + ']');
+ if (io.getCount(pageAddr) != cnt)
+ throw new DeltaApplicationException("Count is wrong [expCnt=" + cnt + ", actual=" + io.getCount(pageAddr) + ']');
- io.remove(buf, idx, cnt);
+ io.remove(pageAddr, idx, cnt);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/7db65ddd/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..757afe1 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
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.pagemem.wal.record.delta;
import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusIO;
/**
@@ -55,12 +56,12 @@ public class ReplaceRecord<L> extends PageDeltaRecord {
}
/** {@inheritDoc} */
- @Override public void applyDelta(ByteBuffer buf)
+ @Override public void applyDelta(PageMemory pageMem, long pageAddr)
throws IgniteCheckedException {
- if (io.getCount(buf) < idx)
+ if (io.getCount(pageAddr) < idx)
throw new DeltaApplicationException("Index is greater than count: " + idx);
- io.store(buf, idx, row, rowBytes);
+ io.store(pageAddr, idx, row, rowBytes);
}
/** {@inheritDoc} */