You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/11/27 16:34:42 UTC
ignite git commit: IGNITE-10390 Fixed BPlusTree#isEmpty - Fixes #5486.
Repository: ignite
Updated Branches:
refs/heads/master 23de74357 -> 0b4282be2
IGNITE-10390 Fixed BPlusTree#isEmpty - Fixes #5486.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0b4282be
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0b4282be
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0b4282be
Branch: refs/heads/master
Commit: 0b4282be26b4d042637ce57821e9a3448043d56d
Parents: 23de743
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Tue Nov 27 19:31:51 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Tue Nov 27 19:33:26 2018 +0300
----------------------------------------------------------------------
.../persistence/GridCacheOffheapManager.java | 4 +---
.../cache/persistence/tree/BPlusTree.java | 23 ++++++++++++--------
.../processors/database/BPlusTreeSelfTest.java | 23 ++++++++++++++++++++
3 files changed, 38 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0b4282be/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
index 7d4a3ae..44ae6f1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheOffheapManager.java
@@ -1463,7 +1463,6 @@ public class GridCacheOffheapManager extends IgniteCacheOffheapManagerImpl imple
* @return Store delegate.
* @throws IgniteCheckedException If failed.
*/
- @SuppressWarnings("SizeReplaceableByIsEmpty")
private CacheDataStore init0(boolean checkExists) throws IgniteCheckedException {
CacheDataStore delegate0 = delegate;
@@ -1574,8 +1573,7 @@ public class GridCacheOffheapManager extends IgniteCacheOffheapManagerImpl imple
pendingTree = pendingTree0;
- // TODO IGNITE-10390 replace size() > 0 with isEmpty()
- if (!hasPendingEntries && pendingTree0.size() > 0)
+ if (!hasPendingEntries && !pendingTree0.isEmpty())
hasPendingEntries = true;
int grpId = grp.groupId();
http://git-wip-us.apache.org/repos/asf/ignite/blob/0b4282be/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
index 7852008..476667a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
@@ -2109,21 +2109,26 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
long rootId, rootPage = acquirePage(rootId = treeMeta.rootId);
- long rootAddr = readLock(rootId, rootPage);
+ try {
+ long rootAddr = readLock(rootId, rootPage);
- if (rootAddr == 0) {
- checkDestroyed();
+ if (rootAddr == 0) {
+ checkDestroyed();
- continue;
- }
+ continue;
+ }
- try {
- BPlusIO<L> io = io(rootAddr);
+ try {
+ BPlusIO<L> io = io(rootAddr);
- return io.getCount(rootAddr) == 0;
+ return io.getCount(rootAddr) == 0;
+ }
+ finally {
+ readUnlock(rootId, rootPage, rootAddr);
+ }
}
finally {
- readUnlock(rootId, rootPage, rootAddr);
+ releasePage(rootId, rootPage);
}
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/0b4282be/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
index fa72978..ae9aff8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
@@ -252,6 +252,29 @@ public class BPlusTreeSelfTest extends GridCommonAbstractTest {
}
/**
+ * @throws Exception if failed.
+ */
+ public void testIsEmpty() throws Exception {
+ TestTree tree = createTestTree(true);
+
+ assertTrue(tree.isEmpty());
+
+ for (long i = 1; i <= 500; i++) {
+ tree.put(i);
+
+ assertFalse(tree.isEmpty());
+ }
+
+ for (long i = 1; i <= 500; i++) {
+ assertFalse(tree.isEmpty());
+
+ tree.remove(i);
+ }
+
+ assertTrue(tree.isEmpty());
+ }
+
+ /**
* @throws IgniteCheckedException If failed.
*/
public void testFindWithClosure() throws IgniteCheckedException {