ignite-4652 - b+tree finished

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

Branch: refs/heads/ignite-4652
Commit: a6e2569e0834593ff79e8522a203e9a97d0bcf96
Parents: 607e418
Author: Sergi Vladykin <[email protected]>
Authored: Wed Feb 15 19:36:03 2017 +0300
Committer: Sergi Vladykin <[email protected]>
Committed: Wed Feb 15 19:36:03 2017 +0300

----------------------------------------------------------------------
 .../internal/processors/cache/database/tree/BPlusTree.java    | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a6e2569e/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 904d91e..5971844 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
@@ -363,7 +363,10 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
                     // Can happen only for invoke, otherwise inner key must be 
replaced on the way down.
                     assert p.invoke;
 
-                    p.needReplaceInner = TRUE;
+                    // We need to restart the operation from root to perform 
inner replace.
+                    // On the second pass we will not get here (will avoid 
infinite loop) because
+                    // needReplaceInner will be DONE or our key will not be 
the rightmost anymore.
+                    return RETRY_ROOT;
                 }
                 else
                     p.finish();
@@ -1515,7 +1518,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
                             continue;
                         }
 
-                        // Put does insert on the same level.
+                        // Unfinished Put does insertion on the same level.
                         if (x.isPut())
                             continue;
 

Reply via email to