# ignite-883
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/ad2f4efc Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/ad2f4efc Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/ad2f4efc Branch: refs/heads/ignite-389 Commit: ad2f4efce373b6fa08953ad030862175527cd009 Parents: 6bfc78e Author: sboikov <sboi...@gridgain.com> Authored: Thu Jun 4 13:34:57 2015 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Thu Jun 4 13:34:57 2015 +0300 ---------------------------------------------------------------------- .../GridCachePartitionExchangeManager.java | 26 +++++----- .../dht/atomic/GridDhtAtomicCache.java | 18 ++++--- .../GridDhtPartitionsExchangeFuture.java | 50 +++++++++++--------- 3 files changed, 53 insertions(+), 41 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ad2f4efc/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java index 488227b..3236bb5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java @@ -1144,20 +1144,24 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana /** {@inheritDoc} */ @Override public void onTimeout() { - if (!busyLock.readLock().tryLock()) - return; + cctx.kernalContext().closure().runLocalSafe(new Runnable() { + @Override public void run() { + if (!busyLock.readLock().tryLock()) + return; - try { - if (started.compareAndSet(false, true)) - refreshPartitions(); - } - finally { - busyLock.readLock().unlock(); + try { + if (started.compareAndSet(false, true)) + refreshPartitions(); + } + finally { + busyLock.readLock().unlock(); - cctx.time().removeTimeoutObject(this); + cctx.time().removeTimeoutObject(ResendTimeoutObject.this); - pendingResend.compareAndSet(this, null); - } + pendingResend.compareAndSet(ResendTimeoutObject.this, null); + } + } + }); } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ad2f4efc/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java index 9ca80f9..ce91c6e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java @@ -2775,14 +2775,18 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> { /** {@inheritDoc} */ @Override public void onTimeout() { if (guard.compareAndSet(false, true)) { - writeLock().lock(); + ctx.closures().runLocalSafe(new Runnable() { + @Override public void run() { + writeLock().lock(); - try { - finish(); - } - finally { - writeLock().unlock(); - } + try { + finish(); + } + finally { + writeLock().unlock(); + } + } + }); } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ad2f4efc/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java index e0bfee6..3362265 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java @@ -1389,30 +1389,34 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT GridTimeoutObject timeoutObj = new GridTimeoutObjectAdapter( cctx.gridConfig().getNetworkTimeout() * Math.max(1, cctx.gridConfig().getCacheConfiguration().length)) { @Override public void onTimeout() { - if (isDone()) - return; + cctx.kernalContext().closure().runLocalSafe(new Runnable() { + @Override public void run() { + if (isDone()) + return; + + if (!enterBusy()) + return; + + try { + U.warn(log, + "Retrying preload partition exchange due to timeout [done=" + isDone() + + ", dummy=" + dummy + ", exchId=" + exchId + ", rcvdIds=" + F.id8s(rcvdIds) + + ", rmtIds=" + F.id8s(rmtIds) + ", remaining=" + F.id8s(remaining()) + + ", init=" + init + ", initFut=" + initFut.isDone() + + ", ready=" + ready + ", replied=" + replied + ", added=" + added + + ", oldest=" + U.id8(oldestNode.get().id()) + ", oldestOrder=" + + oldestNode.get().order() + ", evtLatch=" + evtLatch.getCount() + + ", locNodeOrder=" + cctx.localNode().order() + + ", locNodeId=" + cctx.localNode().id() + ']', + "Retrying preload partition exchange due to timeout."); - if (!enterBusy()) - return; - - try { - U.warn(log, - "Retrying preload partition exchange due to timeout [done=" + isDone() + - ", dummy=" + dummy + ", exchId=" + exchId + ", rcvdIds=" + F.id8s(rcvdIds) + - ", rmtIds=" + F.id8s(rmtIds) + ", remaining=" + F.id8s(remaining()) + - ", init=" + init + ", initFut=" + initFut.isDone() + - ", ready=" + ready + ", replied=" + replied + ", added=" + added + - ", oldest=" + U.id8(oldestNode.get().id()) + ", oldestOrder=" + - oldestNode.get().order() + ", evtLatch=" + evtLatch.getCount() + - ", locNodeOrder=" + cctx.localNode().order() + - ", locNodeId=" + cctx.localNode().id() + ']', - "Retrying preload partition exchange due to timeout."); - - recheck(); - } - finally { - leaveBusy(); - } + recheck(); + } + finally { + leaveBusy(); + } + } + }); } };