From 0c9bbe1fc1b466369c205955ba4a5dffb91401ea Mon Sep 17 00:00:00 2001 From: Alexey Goncharuk Date: Fri, 31 Jul 2015 17:25:56 -0700 Subject: [PATCH] # ignite-1159 --- .../processors/cache/GridCacheMvccManager.java | 44 +++++++--------------- .../processors/cache/GridCacheMvccSelfTest.java | 1 - 2 files changed, 13 insertions(+), 32 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java index a0d9051..44991c6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java @@ -51,9 +51,9 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { private static final int MAX_REMOVED_LOCKS = 10240; /** Pending locks per thread. */ - private final ThreadLocal> pending = - new ThreadLocal>() { - @Override protected Queue initialValue() { + private final ThreadLocal> pending = + new ThreadLocal>() { + @Override protected LinkedList initialValue() { return new LinkedList<>(); } }; @@ -751,43 +751,25 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { if (cacheCtx.isNear() || cand.singleImplicit()) return true; - Queue queue = pending.get(); - - boolean add = true; + LinkedList queue = pending.get(); GridCacheMvccCandidate prev = null; - for (Iterator it = queue.iterator(); it.hasNext(); ) { - GridCacheMvccCandidate c = it.next(); - - if (c.equals(cand)) - add = false; - - if (c.used()) { - it.remove(); + if (!queue.isEmpty()) + prev = queue.getLast(); - unlink(c); + queue.add(cand); - continue; - } + if (prev != null) { + prev.next(cand); - prev = c; + cand.previous(prev); } - if (add) { - queue.add(cand); - - if (prev != null) { - prev.next(cand); - - cand.previous(prev); - } - - if (log.isDebugEnabled()) - log.debug("Linked new candidate: " + cand); - } + if (log.isDebugEnabled()) + log.debug("Linked new candidate: " + cand); - return add; + return true; } /** diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java index be7e3c9..2a4365d 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java @@ -1387,7 +1387,6 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest { ctx.mvcc().addNext(ctx, c4); - assert c3.previous() == null; assert c4 != null; assert c4.previous() == c3; } -- 1.9.5 (Apple Git-50.3)