IGNITE-2236: Preparing.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/060b2fbd Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/060b2fbd Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/060b2fbd Branch: refs/heads/ignite-2236 Commit: 060b2fbdca9cac10a4c57824f26b3fb306350004 Parents: 863a951 Author: vozerov-gridgain <[email protected]> Authored: Sat Dec 26 14:14:19 2015 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Sat Dec 26 14:14:19 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheMvccManager.java | 27 ++++++++------------ 1 file changed, 11 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/060b2fbd/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java ---------------------------------------------------------------------- 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 c30bcb4..384130d 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 @@ -77,7 +77,12 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { private static final int MAX_REMOVED_LOCKS = 10240; /** Pending locks per thread. */ - private final ThreadLocal<ArrayList<GridCacheMvccCandidate>> pending = new MvccCandidateThreadLocal(); + private final ThreadLocal<LinkedList<GridCacheMvccCandidate>> pending = + new ThreadLocal<LinkedList<GridCacheMvccCandidate>>() { + @Override protected LinkedList<GridCacheMvccCandidate> initialValue() { + return new LinkedList<>(); + } + }; /** Pending near local locks and topology version per thread. */ private ConcurrentMap<Long, GridCacheExplicitLockSpan> pendingExplicit; @@ -721,14 +726,14 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { if (cacheCtx.isNear() || cand.singleImplicit()) return true; - ArrayList<GridCacheMvccCandidate> pending0 = pending.get(); + LinkedList<GridCacheMvccCandidate> queue = pending.get(); GridCacheMvccCandidate prev = null; - if (!pending0.isEmpty()) - prev = pending0.get(pending0.size() - 1); + if (!queue.isEmpty()) + prev = queue.getLast(); - pending0.add(cand); + queue.add(cand); if (prev != null) { prev.next(cand); @@ -746,7 +751,7 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { * Reset MVCC context. */ public void contextReset() { - pending.get().clear(); + pending.set(new LinkedList<GridCacheMvccCandidate>()); } /** @@ -1228,14 +1233,4 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter { CachePartialUpdateCheckedException.class.isAssignableFrom(cls); } } - - /** - * Thread local for pending MVCC candidates. - */ - private static class MvccCandidateThreadLocal extends ThreadLocal<ArrayList<GridCacheMvccCandidate>> { - /** {@inheritDoc} */ - @Override protected ArrayList<GridCacheMvccCandidate> initialValue() { - return new ArrayList<>(); - } - } }
