ignite-db - more fixes

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

Branch: refs/heads/ignite-db-x-10884
Commit: a11f9f0e9b4799dcea6bf1edb3a3618d56e3ded7
Parents: 892f1f5
Author: S.Vladykin <[email protected]>
Authored: Tue Apr 26 07:27:00 2016 +0300
Committer: S.Vladykin <[email protected]>
Committed: Tue Apr 26 07:27:00 2016 +0300

----------------------------------------------------------------------
 .../processors/cache/database/tree/BPlusTree.java    | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a11f9f0e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index f0919d2..eb91602 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -1706,7 +1706,7 @@ public abstract class BPlusTree<L, T extends L> {
             while (t.lvl != 0) { // If we've found empty branch, merge it top 
down.
                 boolean res = merge(t);
 
-                assert res;
+                assert res: needMergeEmptyBranch;
 
                 if (needMergeEmptyBranch == TRUE)
                     needMergeEmptyBranch = READY; // Need to mark that we've 
already done the first iteration.
@@ -1913,7 +1913,7 @@ public abstract class BPlusTree<L, T extends L> {
             int leftCnt = left.getCount();
             int rightCnt = right.getCount();
 
-            assert prntCnt > 0: prntCnt;
+            assert prntCnt > 0 || needMergeEmptyBranch == READY: prntCnt;
 
             int newCnt = leftCnt + rightCnt;
 
@@ -2048,7 +2048,10 @@ public abstract class BPlusTree<L, T extends L> {
          * @throws IgniteCheckedException If failed.
          */
         private boolean merge(Tail<L> prnt) throws IgniteCheckedException {
-            if (prnt.getCount() == 0)
+            // If we are merging empty branch this is acceptable because even 
if we merge
+            // two routing pages, one of them is effectively dropped in this 
merge, so just
+            // keep a single routing page.
+            if (prnt.getCount() == 0 && needMergeEmptyBranch != READY)
                 return false; // Parent is an empty routing page, child 
forward page will have another parent.
 
             Tail<L> right = prnt.down;
@@ -2097,12 +2100,6 @@ public abstract class BPlusTree<L, T extends L> {
          * Release pages for all locked levels at the tail.
          */
         private void releaseTail() {
-//            U.dumpStack("releaseTail");
-//            X.println("------>");
-//            for (Tail<L> t = tail; t != null; t = t.down)
-//                X.println("" + t);
-//            X.println("------<");
-
             doReleaseTail(tail);
 
             tail = null;

Reply via email to