ignite-db-x minor rename
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/921b5c7e Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/921b5c7e Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/921b5c7e Branch: refs/heads/ignite-db-x-opt Commit: 921b5c7edd7cd1468df432daf90c3c4b611c0cec Parents: 658d207 Author: sboikov <[email protected]> Authored: Thu Dec 15 10:53:25 2016 +0300 Committer: sboikov <[email protected]> Committed: Thu Dec 15 10:53:25 2016 +0300 ---------------------------------------------------------------------- .../cache/GridCacheConcurrentMapImpl.java | 3 +- .../cache/database/freelist/FreeListImpl.java | 20 +++++++++ .../cache/database/tree/io/DataPageIO.java | 46 ++++++++++++++++++-- .../ignite/internal/util/CacheStatistics.java | 6 +-- .../internal/util/OperationStatistic.java | 8 ++++ .../ignite/internal/util/PutStatistic.java | 21 ++++++++- 6 files changed, 95 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/921b5c7e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java index 5f21c42..bb125d1 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheConcurrentMapImpl.java @@ -22,6 +22,7 @@ import java.util.AbstractSet; import java.util.Collection; import java.util.Iterator; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicInteger; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; @@ -100,7 +101,7 @@ public class GridCacheConcurrentMapImpl implements GridCacheConcurrentMap { this.ctx = ctx; this.factory = factory; - map = new ConcurrentHashMap8<>(initialCapacity, loadFactor, concurrencyLevel); + map = new ConcurrentHashMap<>(initialCapacity, loadFactor, concurrencyLevel); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/921b5c7e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java index 6a29027..5568867 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java @@ -35,6 +35,8 @@ import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO; import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseBag; import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseList; import org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler; +import org.apache.ignite.internal.util.CacheStatistics; +import org.apache.ignite.internal.util.PutStatistic; import org.apache.ignite.internal.util.typedef.internal.U; import static org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler.writePage; @@ -81,17 +83,25 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList { assert oldFreeSpace > 0 : oldFreeSpace; + CacheStatistics.opStart(PutStatistic.Ops.DATA_ADD); + // If the full row does not fit into this page write only a fragment. written = (written == 0 && oldFreeSpace >= rowSize) ? addRow(page, buf, io, row, rowSize): addRowFragment(page, buf, io, row, written, rowSize); + CacheStatistics.opEnd(PutStatistic.Ops.DATA_ADD); + // Reread free space after update. int newFreeSpace = io.getFreeSpace(buf); if (newFreeSpace > MIN_PAGE_FREE_SPACE) { + CacheStatistics.opStart(PutStatistic.Ops.FREE_LIST_PUT); + int bucket = bucket(newFreeSpace, false); put(null, page, buf, bucket); + + CacheStatistics.opEnd(PutStatistic.Ops.FREE_LIST_PUT); } // Avoid boxing with garbage generation for usual case. @@ -155,6 +165,9 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList { int written, int rowSize ) throws IgniteCheckedException { + if (true) + throw new IgniteCheckedException("Error"); + // Read last link before the fragment write, because it will be updated there. long lastLink = row.link(); @@ -304,6 +317,8 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList { int written = 0; do { + CacheStatistics.opStart(PutStatistic.Ops.FREE_LIST_FIND); + int freeSpace = Math.min(MIN_SIZE_FOR_DATA_PAGE, rowSize - written); int bucket = bucket(freeSpace, false); @@ -322,6 +337,8 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList { } } + CacheStatistics.opEnd(PutStatistic.Ops.FREE_LIST_FIND); + try (Page page = pageId == 0 ? allocateDataPage(row.partition()) : pageMem.page(cacheId, pageId)) { // If it is an existing page, we do not need to initialize it. DataPageIO init = reuseBucket || pageId == 0L ? DataPageIO.VERSIONS.latest() : null; @@ -350,6 +367,9 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList { } while (nextLink != 0L) { + if (true) + throw new IgniteCheckedException("Error"); + itemId = PageIdUtils.itemId(nextLink); pageId = PageIdUtils.pageId(nextLink); http://git-wip-us.apache.org/repos/asf/ignite/blob/921b5c7e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/DataPageIO.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/DataPageIO.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/DataPageIO.java index 6d05cd8..badf6f5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/DataPageIO.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/DataPageIO.java @@ -27,6 +27,8 @@ import org.apache.ignite.internal.processors.cache.CacheObject; import org.apache.ignite.internal.processors.cache.database.CacheDataRow; import org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler; import org.apache.ignite.internal.processors.cache.version.GridCacheVersion; +import org.apache.ignite.internal.util.CacheStatistics; +import org.apache.ignite.internal.util.PutStatistic; import org.apache.ignite.internal.util.typedef.internal.SB; /** @@ -1127,6 +1129,8 @@ public class DataPageIO extends PageIO { private int compactDataEntries(ByteBuffer buf, int directCnt) { assert checkCount(directCnt) : directCnt; + CacheStatistics.opStart(PutStatistic.Ops.DATA_ADD1); + int[] offs = new int[directCnt]; for (int i = 0; i < directCnt; i++) { @@ -1152,18 +1156,52 @@ public class DataPageIO extends PageIO { if (delta != 0) { // Move right. assert delta > 0: delta; - moveBytes(buf, off, entrySize, delta); + int cnt = 1; + int mvSize = entrySize; + + for (int j = i - 1; j >= 0; j++) { + int off0 = offs[j] >>> 8; + int entrySize0 = getPageEntrySize(buf, off0, SHOW_PAYLOAD_LEN | SHOW_LINK); + int o = off0 + entrySize0; + + if (o != off) + break; + + mvSize += entrySize0; + off = off0; + + cnt++; + } + + if (cnt > 1) { + moveBytes(buf, off, mvSize, delta); - int itemId = offs[i] & 0xFF; + for (int j = 0; j < cnt; j++) { + int itemId = offs[i + j] & 0xFF; - off += delta; + off += delta; - setItem(buf, itemId, directItemFromOffset(off)); + setItem(buf, itemId, directItemFromOffset(off)); + } + + i += cnt; + } + else { + moveBytes(buf, off, entrySize, delta); + + int itemId = offs[i] & 0xFF; + + off += delta; + + setItem(buf, itemId, directItemFromOffset(off)); + } } prevOff = off; } + CacheStatistics.opEnd(PutStatistic.Ops.DATA_ADD1); + return prevOff; } http://git-wip-us.apache.org/repos/asf/ignite/blob/921b5c7e/modules/core/src/main/java/org/apache/ignite/internal/util/CacheStatistics.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/CacheStatistics.java b/modules/core/src/main/java/org/apache/ignite/internal/util/CacheStatistics.java index ab6d614..556a713 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/CacheStatistics.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/CacheStatistics.java @@ -22,7 +22,7 @@ package org.apache.ignite.internal.util; */ public class CacheStatistics { /** */ - private final ThreadLocal<PutStatistic> putStat = new ThreadLocal<>(); + private static final ThreadLocal<PutStatistic> putStat = new ThreadLocal<>(); private final InternalStatistics stats; @@ -49,14 +49,14 @@ public class CacheStatistics { } } - public final void opStart(Enum op) { + public static final void opStart(Enum op) { PutStatistic stat = putStat.get(); if (stat != null) stat.startOp(op.ordinal()); } - public final void opEnd(Enum op) { + public static final void opEnd(Enum op) { PutStatistic stat = putStat.get(); if (stat != null) http://git-wip-us.apache.org/repos/asf/ignite/blob/921b5c7e/modules/core/src/main/java/org/apache/ignite/internal/util/OperationStatistic.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/OperationStatistic.java b/modules/core/src/main/java/org/apache/ignite/internal/util/OperationStatistic.java index 6de5f5e..a1f323e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/OperationStatistic.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/OperationStatistic.java @@ -62,6 +62,14 @@ public class OperationStatistic { endTime = System.nanoTime(); } + public final void startOp(Enum op) { + startOp(op.ordinal()); + } + + public final void endOp(Enum op) { + endOp(op.ordinal()); + } + public final void startOp(int op) { assert time[op] == -1L : time[op]; http://git-wip-us.apache.org/repos/asf/ignite/blob/921b5c7e/modules/core/src/main/java/org/apache/ignite/internal/util/PutStatistic.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/PutStatistic.java b/modules/core/src/main/java/org/apache/ignite/internal/util/PutStatistic.java index fbd72b0..389dad7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/PutStatistic.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/PutStatistic.java @@ -56,6 +56,25 @@ public class PutStatistic extends OperationStatistic { STORE_RMV, /** */ - TREE_PUT; + TREE_PUT, + + /** */ + FREE_LIST_FIND, + + /** */ + FREE_LIST_PUT, + + /** */ + DATA_ADD, + + /** */ + DATA_ADD1, + + /** */ + DATA_ADD2, + + /** */ + DATA_ADD3 + ; } }
