Repository: ignite
Updated Branches:
refs/heads/ignite-db-x-10884 fc7e0630b -> aea1c1728
Merge remote-tracking branch 'remotes/community/ignite-db-x' into
ignite-db-x-10884
Conflicts:
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/PageIO.java
modules/indexing/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheH2DatabaseManager.java
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbSingleNodePutGetSelfTest.java
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/aea1c172
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/aea1c172
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/aea1c172
Branch: refs/heads/ignite-db-x-10884
Commit: aea1c17282dc21421aba82b3858fbc6f67cc4cbe
Parents: fc7e063
Author: sboikov <[email protected]>
Authored: Thu Apr 28 11:55:51 2016 +0300
Committer: sboikov <[email protected]>
Committed: Thu Apr 28 11:55:51 2016 +0300
----------------------------------------------------------------------
.../cache/IgniteCacheOffheapManager.java | 41 ++++++++++++++++----
.../cache/database/tree/io/BPlusInnerIO.java | 8 ++--
.../processors/query/h2/IgniteH2Indexing.java | 3 +-
.../IgniteDbSingleNodePutGetSelfTest.java | 3 --
4 files changed, 39 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/aea1c172/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java
----------------------------------------------------------------------
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java
index 04736cd..32dfe5f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java
@@ -41,6 +41,7 @@ import
org.apache.ignite.internal.processors.cache.database.tree.io.BPlusLeafIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.DataPageIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.IOVersions;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
+import
org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseList;
import
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtInvalidPartitionException;
import org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
@@ -72,6 +73,12 @@ public class IgniteCacheOffheapManager extends
GridCacheManagerAdapter {
/** */
private final boolean indexingEnabled;
+ /** */
+ private FreeList freeList;
+
+ /** */
+ private ReuseList reuseList;
+
/**
* @param indexingEnabled {@code True} if indexing is enabled for cache.
*/
@@ -82,19 +89,31 @@ public class IgniteCacheOffheapManager extends
GridCacheManagerAdapter {
/**
* {@inheritDoc}
*/
- @Override
- protected void start0() throws IgniteCheckedException {
+ @Override protected void start0() throws IgniteCheckedException {
super.start0();
IgniteCacheDatabaseSharedManager dbMgr = cctx.shared().database();
IgniteBiTuple<FullPageId, Boolean> page =
dbMgr.meta().getOrAllocateForIndex(cctx.cacheId(), cctx.namexx());
- rowStore = new CacheDataRowStore(cctx, null);
+ int cpus = Runtime.getRuntime().availableProcessors();
+
+ reuseList = new ReuseList(cctx.cacheId(), dbMgr.pageMemory(), cpus *
2, dbMgr.meta());
+ freeList = new FreeList(cctx, reuseList);
+
+ rowStore = new CacheDataRowStore(cctx, freeList);
dataTree = new CacheDataTree(rowStore, cctx, dbMgr.pageMemory(),
page.get1(), page.get2());
}
+ public ReuseList reuseList() {
+ return reuseList;
+ }
+
+ public FreeList freeList() {
+ return freeList;
+ }
+
/**
* {@inheritDoc}
*/
@@ -173,8 +192,7 @@ public class IgniteCacheOffheapManager extends
GridCacheManagerAdapter {
* @return Value tuple, if available.
* @throws IgniteCheckedException If failed.
*/
- @Nullable
- public IgniteBiTuple<CacheObject, GridCacheVersion> read(KeyCacheObject
key, int part)
+ @Nullable public IgniteBiTuple<CacheObject, GridCacheVersion>
read(KeyCacheObject key, int part)
throws IgniteCheckedException {
if (indexingEnabled)
return cctx.queries().read(key, part);
@@ -184,8 +202,7 @@ public class IgniteCacheOffheapManager extends
GridCacheManagerAdapter {
return dataRow != null ? F.t(dataRow.val, dataRow.ver) : null;
}
- @Nullable
- CacheObject readValue(KeyCacheObject key, int part) throws
IgniteCheckedException {
+ @Nullable CacheObject readValue(KeyCacheObject key, int part) throws
IgniteCheckedException {
IgniteBiTuple<CacheObject, GridCacheVersion> t = read(key, part);
return t != null ? t.get1() : null;
@@ -567,7 +584,9 @@ public class IgniteCacheOffheapManager extends
GridCacheManagerAdapter {
PageMemory pageMem,
FullPageId metaPageId,
boolean initNew) throws IgniteCheckedException {
- super(cctx.cacheId(), pageMem, metaPageId);
+ super(cctx.cacheId(), pageMem, metaPageId, null);
+
+ assert rowStore != null;
this.rowStore = rowStore;
this.cctx = cctx;
@@ -831,6 +850,12 @@ public class IgniteCacheOffheapManager extends
GridCacheManagerAdapter {
}
/** {@inheritDoc} */
+ @Override public void store(ByteBuffer dst, int dstIdx,
BPlusIO<KeySearchRow> srcIo, ByteBuffer src, int srcIdx)
+ throws IgniteCheckedException {
+ setLink(dst, dstIdx, getLink(src, srcIdx));
+ }
+
+ /** {@inheritDoc} */
@Override public KeySearchRow getLookupRow(BPlusTree<KeySearchRow,?>
tree, ByteBuffer buf, int idx)
throws IgniteCheckedException {
long link = getLink(buf, idx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/aea1c172/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java
----------------------------------------------------------------------
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java
index 60c8f58..c3e5470 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/BPlusInnerIO.java
@@ -25,13 +25,13 @@ import org.apache.ignite.IgniteCheckedException;
*/
public abstract class BPlusInnerIO<L> extends BPlusIO<L> {
/** */
- private static final int SHIFT_LEFT = ITEMS_OFF;
+ protected static final int SHIFT_LEFT = ITEMS_OFF;
/** */
- private static final int SHIFT_LINK = SHIFT_LEFT + 8;
+ protected static final int SHIFT_LINK = SHIFT_LEFT + 8;
/** */
- private final int SHIFT_RIGHT = SHIFT_LINK + itemSize;
+ protected final int SHIFT_RIGHT = SHIFT_LINK + itemSize;
/**
* @param type Page type.
@@ -121,7 +121,7 @@ public abstract class BPlusInnerIO<L> extends BPlusIO<L> {
* @param shift It can be either link itself or left or right page ID.
* @return Offset from byte buffer begin in bytes.
*/
- private int offset(int idx, int shift) {
+ protected final int offset(int idx, int shift) {
return shift + (8 + itemSize) * idx;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/aea1c172/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index a35c7d9..659c387 100644
---
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -2057,7 +2057,7 @@ public class IgniteH2Indexing implements
GridQueryIndexing {
GridCacheContext cctx =
ctx.cache().context().cacheContext(cacheId);
if (cctx.affinityNode() && cctx.offheapIndex())
- return new H2RowStore(tbl.rowDescriptor(), cctx, null);
+ return new H2RowStore(tbl.rowDescriptor(), cctx,
cctx.offheap().freeList());
return null;
}
@@ -2190,6 +2190,7 @@ public class IgniteH2Indexing implements
GridQueryIndexing {
H2TreeIndex idx = new H2TreeIndex(
cctx,
dbMgr.pageMemory(),
+ cctx.offheap().reuseList(),
page.get1(),
page.get2(),
keyCol,
http://git-wip-us.apache.org/repos/asf/ignite/blob/aea1c172/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbSingleNodePutGetSelfTest.java
----------------------------------------------------------------------
diff --git
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbSingleNodePutGetSelfTest.java
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbSingleNodePutGetSelfTest.java
index c50d012..052830f 100644
---
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbSingleNodePutGetSelfTest.java
+++
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbSingleNodePutGetSelfTest.java
@@ -59,9 +59,6 @@ public class IgniteDbSingleNodePutGetSelfTest extends
GridCommonAbstractTest {
dbCfg.setConcurrencyLevel(Runtime.getRuntime().availableProcessors() *
4);
- // TODO GG-10884 increased to avoid errors on metadata cache update.
- dbCfg.setPageSize(1024);
-
dbCfg.setPageCacheSize(100 * 1024 * 1024);
cfg.setDatabaseConfiguration(dbCfg);