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()); }
