# ignite-1124
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/57368a18 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/57368a18 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/57368a18 Branch: refs/heads/ignite-1124 Commit: 57368a1835f835f3e12212b9644ea09578703bf1 Parents: 1abf851 Author: sboikov <sboi...@gridgain.com> Authored: Thu Jul 16 16:28:58 2015 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Thu Jul 16 16:42:31 2015 +0300 ---------------------------------------------------------------------- .../apache/ignite/internal/IgniteKernal.java | 12 +++++ .../GridCachePartitionExchangeManager.java | 53 ++++++++++++++++++++ .../GridDhtPartitionsExchangeFuture.java | 20 +------- .../testframework/junits/GridAbstractTest.java | 5 ++ 4 files changed, 71 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/57368a18/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java index 0d4ce32..c411f2e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java @@ -3009,6 +3009,18 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { return ctx.isDaemon() && U.hasAnnotation(comp.getClass(), SkipDaemon.class); } + /** + * + */ + public void dumpDebugInfo() { + U.warn(log, "Dumping debug info for node [id=" + ctx.localNodeId() + + ", name=" + ctx.gridName() + + ", order=" + ctx.discovery().localNode().order() + + ", client=" + ctx.clientNode() + ']'); + + ctx.cache().context().exchange().dumpDebugInfo(); + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(IgniteKernal.class, this); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/57368a18/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 1f6a8bb..c26f5c3 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 @@ -27,6 +27,7 @@ import org.apache.ignite.internal.managers.eventstorage.*; import org.apache.ignite.internal.processors.affinity.*; import org.apache.ignite.internal.processors.cache.distributed.dht.*; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.*; +import org.apache.ignite.internal.processors.cache.transactions.*; import org.apache.ignite.internal.processors.timeout.*; import org.apache.ignite.internal.util.*; import org.apache.ignite.internal.util.future.*; @@ -949,6 +950,58 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana } /** + * + */ + public void dumpDebugInfo() { + U.warn(log, "Ready affinity version: " + readyTopVer.get()); + + U.warn(log, "Last exchange future: " + lastInitializedFut); + + U.warn(log, "Pending exchange futures:"); + + for (GridDhtPartitionsExchangeFuture fut : pendingExchangeFuts) + U.warn(log, ">>> " + fut); + + U.warn(log, "Last 10 exchange futures (total: " + exchFuts.size() + "):"); + + int cnt = 0; + + for (GridDhtPartitionsExchangeFuture fut : exchFuts) { + U.warn(log, ">>> " + fut); + + if (++cnt == 10) + break; + } + + dumpPendingObjects(); + } + + /** + * + */ + public void dumpPendingObjects() { + U.warn(log, "Pending transactions:"); + + for (IgniteInternalTx tx : cctx.tm().activeTransactions()) + U.warn(log, ">>> " + tx); + + U.warn(log, "Pending explicit locks:"); + + for (GridCacheExplicitLockSpan lockSpan : cctx.mvcc().activeExplicitLocks()) + U.warn(log, ">>> " + lockSpan); + + U.warn(log, "Pending cache futures:"); + + for (GridCacheFuture<?> fut : cctx.mvcc().activeFutures()) + U.warn(log, ">>> " + fut); + + U.warn(log, "Pending atomic cache futures:"); + + for (GridCacheFuture<?> fut : cctx.mvcc().atomicFutures()) + U.warn(log, ">>> " + fut); + } + + /** * @param deque Deque to poll from. * @param time Time to wait. * @param w Worker. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/57368a18/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 7d36768..b3f19f6 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 @@ -842,25 +842,7 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT U.warn(log, "Failed to wait for partition release future. Dumping pending objects that might be the cause: " + cctx.localNodeId()); - U.warn(log, "Pending transactions:"); - - for (IgniteInternalTx tx : cctx.tm().activeTransactions()) - U.warn(log, ">>> " + tx); - - U.warn(log, "Pending explicit locks:"); - - for (GridCacheExplicitLockSpan lockSpan : cctx.mvcc().activeExplicitLocks()) - U.warn(log, ">>> " + lockSpan); - - U.warn(log, "Pending cache futures:"); - - for (GridCacheFuture<?> fut : cctx.mvcc().activeFutures()) - U.warn(log, ">>> " + fut); - - U.warn(log, "Pending atomic cache futures:"); - - for (GridCacheFuture<?> fut : cctx.mvcc().atomicFutures()) - U.warn(log, ">>> " + fut); + cctx.exchange().dumpPendingObjects(); } /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/57368a18/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java index 06a1523..9a55ccf 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java @@ -1577,6 +1577,11 @@ public abstract class GridAbstractTest extends TestCase { "Test has been timed out and will be interrupted (threads dump will be taken before interruption) [" + "test=" + getName() + ", timeout=" + getTestTimeout() + ']'); + List<Ignite> nodes = G.allGrids(); + + for (Ignite node : nodes) + ((IgniteKernal)node).dumpDebugInfo(); + // We dump threads to stdout, because we can loose logs in case // the build is cancelled on TeamCity. U.dumpThreads(null);