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/18 15:27:39 UTC

[3/9] ignite git commit: ignite-db-x minor rename

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 <sb...@gridgain.com>
Authored: Thu Dec 15 10:53:25 2016 +0300
Committer: sboikov <sb...@gridgain.com>
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
+        ;
     }
 }