Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 162F810936 for ; Tue, 3 Feb 2015 02:05:54 +0000 (UTC) Received: (qmail 53019 invoked by uid 500); 3 Feb 2015 02:05:39 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 52984 invoked by uid 500); 3 Feb 2015 02:05:39 -0000 Mailing-List: contact commits-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list commits@ignite.incubator.apache.org Received: (qmail 52974 invoked by uid 99); 3 Feb 2015 02:05:39 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Feb 2015 02:05:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Tue, 03 Feb 2015 02:05:35 +0000 Received: (qmail 52384 invoked by uid 99); 3 Feb 2015 02:05:15 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Feb 2015 02:05:15 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 7C1A6E0535; Tue, 3 Feb 2015 02:05:15 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: akuznetsov@apache.org To: commits@ignite.incubator.apache.org Date: Tue, 03 Feb 2015 02:05:22 -0000 Message-Id: In-Reply-To: <662bb9db6434428a96c318ad92db97c5@git.apache.org> References: <662bb9db6434428a96c318ad92db97c5@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [08/44] incubator-ignite git commit: #IGNITE-86: wip X-Virus-Checked: Checked by ClamAV on apache.org #IGNITE-86: wip Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/42d94fe2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/42d94fe2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/42d94fe2 Branch: refs/heads/ignite-82 Commit: 42d94fe229477d9048d9b389a2472ff6f6ff2596 Parents: 5819493 Author: ivasilinets Authored: Fri Jan 23 15:48:07 2015 +0300 Committer: ivasilinets Committed: Fri Jan 23 15:48:07 2015 +0300 ---------------------------------------------------------------------- .../cache/GridCacheDeploymentManager.java | 141 ++++++++++--------- .../cache/GridCachePreloaderAdapter.java | 2 +- .../preloader/GridDhtPartitionDemandPool.java | 2 +- 3 files changed, 74 insertions(+), 71 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/42d94fe2/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheDeploymentManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheDeploymentManager.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheDeploymentManager.java index 39d998e..5d9759f 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheDeploymentManager.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCacheDeploymentManager.java @@ -53,7 +53,8 @@ public class GridCacheDeploymentManager extends GridCacheSharedManagerAdap private volatile ClassLoader globalLdr; /** Undeploys. */ - private final ConcurrentLinkedQueue undeploys = new ConcurrentLinkedQueue<>(); + private final ConcurrentHashMap8> undeploys + = new ConcurrentHashMap8<>(); /** Per-thread deployment context. */ private ConcurrentMap> deps = @@ -178,10 +179,10 @@ public class GridCacheDeploymentManager extends GridCacheSharedManagerAdap /** * Undeploy all queued up closures. */ - public void unwind() { + public void unwind(GridCacheContext ctx) { int cnt = 0; - for (CA c = undeploys.poll(); c != null; c = undeploys.poll()) { + for (CA c = undeploys.get(ctx).poll(); c != null; c = undeploys.get(ctx).poll()) { c.apply(); cnt++; @@ -202,11 +203,16 @@ public class GridCacheDeploymentManager extends GridCacheSharedManagerAdap if (log.isDebugEnabled()) log.debug("Received onUndeploy() request [ldr=" + ldr + ", cctx=" + cctx + ']'); - undeploys.add(new CA() { - @Override public void apply() { - onUndeploy0(ldr); - } - }); + for (final GridCacheContext cacheCtx : cctx.cacheContexts()) { + undeploys.putIfAbsent(cacheCtx, new ConcurrentLinkedQueue()); + + undeploys.get(cacheCtx).add(new CA() { + @Override + public void apply() { + onUndeploy0(ldr, cacheCtx); + } + }); + } for (GridCacheContext cacheCtx : cctx.cacheContexts()) { // Unwind immediately for local and replicate caches. @@ -219,86 +225,83 @@ public class GridCacheDeploymentManager extends GridCacheSharedManagerAdap /** * @param ldr Loader. */ - private void onUndeploy0(final ClassLoader ldr) { - for (final GridCacheContext cacheCtx : cctx.cacheContexts()) { - GridCacheAdapter cache = cacheCtx.cache(); - - Set keySet = cache.keySet(cacheCtx.vararg( - new P1>() { - @Override public boolean apply(GridCacheEntry e) { - return cacheCtx.isNear() ? undeploy(e, cacheCtx.near()) || undeploy(e, cacheCtx.near().dht()) : - undeploy(e, cacheCtx.cache()); - } - - /** - * @param e Entry. - * @param cache Cache. - * @return {@code True} if entry should be undeployed. - */ - private boolean undeploy(GridCacheEntry e, GridCacheAdapter cache) { - K k = e.getKey(); + private void onUndeploy0(final ClassLoader ldr, final GridCacheContext cacheCtx) { + GridCacheAdapter cache = cacheCtx.cache(); + + Set keySet = cache.keySet(cacheCtx.vararg( + new P1>() { + @Override public boolean apply(GridCacheEntry e) { + return cacheCtx.isNear() ? undeploy(e, cacheCtx.near()) || undeploy(e, cacheCtx.near().dht()) : + undeploy(e, cacheCtx.cache()); + } - GridCacheEntryEx entry = cache.peekEx(e.getKey()); + /** + * @param e Entry. + * @param cache Cache. + * @return {@code True} if entry should be undeployed. + */ + private boolean undeploy(GridCacheEntry e, GridCacheAdapter cache) { + K k = e.getKey(); - if (entry == null) - return false; + GridCacheEntryEx entry = cache.peekEx(e.getKey()); - V v; + if (entry == null) + return false; - try { - v = entry.peek(GridCachePeekMode.GLOBAL, CU.empty()); - } - catch (GridCacheEntryRemovedException ignore) { - return false; - } - catch (IgniteException ignore) { - // Peek can throw runtime exception if unmarshalling failed. - return true; - } + V v; - assert k != null : "Key cannot be null for cache entry: " + e; + try { + v = entry.peek(GridCachePeekMode.GLOBAL, CU.empty()); + } + catch (GridCacheEntryRemovedException ignore) { + return false; + } + catch (IgniteException ignore) { + // Peek can throw runtime exception if unmarshalling failed. + return true; + } - ClassLoader keyLdr = U.detectObjectClassLoader(k); - ClassLoader valLdr = U.detectObjectClassLoader(v); + assert k != null : "Key cannot be null for cache entry: " + e; - boolean res = F.eq(ldr, keyLdr) || F.eq(ldr, valLdr); + ClassLoader keyLdr = U.detectObjectClassLoader(k); + ClassLoader valLdr = U.detectObjectClassLoader(v); - if (log.isDebugEnabled()) - log.debug("Finished examining entry [entryCls=" + e.getClass() + - ", key=" + k + ", keyCls=" + k.getClass() + - ", valCls=" + (v != null ? v.getClass() : "null") + - ", keyLdr=" + keyLdr + ", valLdr=" + valLdr + ", res=" + res + ']'); + boolean res = F.eq(ldr, keyLdr) || F.eq(ldr, valLdr); - return res; - } - })); + if (log.isDebugEnabled()) + log.debug("Finished examining entry [entryCls=" + e.getClass() + + ", key=" + k + ", keyCls=" + k.getClass() + + ", valCls=" + (v != null ? v.getClass() : "null") + + ", keyLdr=" + keyLdr + ", valLdr=" + valLdr + ", res=" + res + ']'); - Collection keys = new ArrayList<>(); + return res; + } + })); - for (K k : keySet) - keys.add(k); + Collection keys = new ArrayList<>(); - if (log.isDebugEnabled()) - log.debug("Finished searching keys for undeploy [keysCnt=" + keys.size() + ']'); + for (K k : keySet) + keys.add(k); - cache.clearAll(keys, true); + if (log.isDebugEnabled()) + log.debug("Finished searching keys for undeploy [keysCnt=" + keys.size() + ']'); - if (cacheCtx.isNear()) - cacheCtx.near().dht().clearAll(keys, true); + cache.clearAll(keys, true); - GridCacheQueryManager qryMgr = cacheCtx.queries(); + if (cacheCtx.isNear()) + cacheCtx.near().dht().clearAll(keys, true); - if (qryMgr != null) - qryMgr.onUndeploy(ldr); + GridCacheQueryManager qryMgr = cacheCtx.queries(); - // Examine swap for entries to undeploy. - int swapUndeployCnt = cacheCtx.isNear() ? - cacheCtx.near().dht().context().swap().onUndeploy(ldr) : - cacheCtx.swap().onUndeploy(ldr); + if (qryMgr != null) + qryMgr.onUndeploy(ldr); - if (cacheCtx.system()) - continue; + // Examine swap for entries to undeploy. + int swapUndeployCnt = cacheCtx.isNear() ? + cacheCtx.near().dht().context().swap().onUndeploy(ldr) : + cacheCtx.swap().onUndeploy(ldr); + if (!cacheCtx.system()) { U.quietAndWarn(log, ""); U.quietAndWarn( log, http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/42d94fe2/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCachePreloaderAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCachePreloaderAdapter.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCachePreloaderAdapter.java index 950092e..e574ab6 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCachePreloaderAdapter.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/GridCachePreloaderAdapter.java @@ -107,7 +107,7 @@ public class GridCachePreloaderAdapter implements GridCachePreloader /** {@inheritDoc} */ @Override public void unwindUndeploys() { - cctx.deploy().unwind(); + cctx.deploy().unwind(cctx); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/42d94fe2/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java index 7bbf102..f347450 100644 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java @@ -391,7 +391,7 @@ public class GridDhtPartitionDemandPool { demandLock.writeLock().lock(); try { - cctx.deploy().unwind(); + cctx.deploy().unwind(cctx); } finally { demandLock.writeLock().unlock();