ignite-db - freeSpace compare

Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9a835da2
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9a835da2
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9a835da2

Branch: refs/heads/ignite-db-x-10884
Commit: 9a835da260c5cbf84e2dfcb1a7ec6f4dda7cf0cf
Parents: 476cccf
Author: S.Vladykin <[email protected]>
Authored: Thu Apr 14 01:44:52 2016 +0300
Committer: S.Vladykin <[email protected]>
Committed: Thu Apr 14 01:44:52 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/cache/database/freelist/FreeTree.java   | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/9a835da2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeTree.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeTree.java
index 8c21c86..5011363 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeTree.java
@@ -90,6 +90,11 @@ public class FreeTree extends BPlusTree<FreeItem, FreeItem> {
     /** {@inheritDoc} */
     @Override protected int compare(BPlusIO<FreeItem> io, ByteBuffer buf, int 
idx, FreeItem row)
         throws IgniteCheckedException {
+        if (io.isLeaf()) // In a leaf we can do a fair compare.
+            return Short.compare(((FreeIO)io).freeSpace(buf, idx), 
row.freeSpace());
+
+        // In inner pages we do compare on dispersed free space to avoid 
contention on a single page
+        // when all the entries are equal and many pages have the same free 
space.
         return Integer.compare(((FreeIO)io).dispersedFreeSpace(buf, idx), 
row.dispersedFreeSpace());
     }
 

Reply via email to