You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by yz...@apache.org on 2017/08/01 07:18:01 UTC
ignite git commit: FreeList striped pool optimisation
Repository: ignite
Updated Branches:
refs/heads/ignite-5658 66645fe49 -> b16455779
FreeList striped pool optimisation
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b1645577
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b1645577
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b1645577
Branch: refs/heads/ignite-5658
Commit: b1645577980c2f547133b883604900af8b58f78b
Parents: 66645fe
Author: Igor Seliverstov <gv...@gmail.com>
Authored: Mon Jul 31 18:53:08 2017 +0300
Committer: Igor Seliverstov <gv...@gmail.com>
Committed: Mon Jul 31 18:53:08 2017 +0300
----------------------------------------------------------------------
.../cache/persistence/freelist/PagesList.java | 21 ++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/b1645577/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/PagesList.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/PagesList.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/PagesList.java
index 15bc4a0..6284da0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/PagesList.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/PagesList.java
@@ -508,21 +508,26 @@ public abstract class PagesList extends DataStructure {
* @throws IgniteCheckedException If failed.
*/
private Stripe getPageForPut(int bucket) throws IgniteCheckedException {
- Stripe[] tails = getBucket(bucket);
-
- if (tails == null)
- return addStripe(bucket, true);
-
// Striped pool optimization
int stripeIdx = IgniteThread.currentStripe();
if (stripeIdx != -1) {
- if (stripeIdx >= tails.length)
- return addStripe(bucket, true);
+ Stripe[] tails = getBucket(bucket);
+
+ while (tails == null || stripeIdx >= tails.length) {
+ addStripe(bucket, true);
+
+ tails = getBucket(bucket);
+ }
return tails[stripeIdx];
}
+ Stripe[] tails = getBucket(bucket);
+
+ if (tails == null)
+ return addStripe(bucket, true);
+
return randomTail(tails);
}
@@ -932,7 +937,7 @@ public abstract class PagesList extends DataStructure {
if (stripeIdx != -1) {
if (stripeIdx >= len)
- return addStripe(bucket, !isReuseBucket(bucket));
+ return null;
Stripe stripe = tails[stripeIdx];