You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/12/05 14:41:58 UTC

[36/50] [abbrv] ignite git commit: debugging TC hangs

debugging TC hangs


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/71b7b2ac
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/71b7b2ac
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/71b7b2ac

Branch: refs/heads/ignite-comm-balance-master
Commit: 71b7b2acaae86ad89b0d377b3fa58f15e045d2fd
Parents: 012789f
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Sat Nov 26 17:40:37 2016 +0700
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Sat Nov 26 17:40:37 2016 +0700

----------------------------------------------------------------------
 .../managers/communication/GridIoManager.java   |  6 ++-
 .../GridDistributedTxFinishResponse.java        | 36 ++++++++++++++++++
 .../ignite/internal/util/StripedExecutor.java   | 40 ++++++++++++++++++++
 3 files changed, 80 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/71b7b2ac/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 60e709c..14dc98b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -30,7 +30,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedDeque;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.Executor;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -59,7 +58,6 @@ import org.apache.ignite.internal.processors.pool.PoolProcessor;
 import org.apache.ignite.internal.processors.timeout.GridTimeoutObject;
 import org.apache.ignite.internal.util.GridBoundedConcurrentLinkedHashSet;
 import org.apache.ignite.internal.util.GridSpinReadWriteLock;
-import org.apache.ignite.internal.util.StripedExecutor;
 import org.apache.ignite.internal.util.future.GridFinishedFuture;
 import org.apache.ignite.internal.util.future.GridFutureAdapter;
 import org.apache.ignite.internal.util.lang.GridTuple3;
@@ -790,6 +788,10 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
                     msgC.run();
                 }
             }
+
+            @Override public String toString() {
+                return "Message closure [msg=" + msg + ']';
+            }
         };
 
         if (msg.topicOrdinal() == TOPIC_IO_TEST.ordinal()) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/71b7b2ac/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
index 109d665..b922628 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxFinishResponse.java
@@ -86,6 +86,42 @@ public class GridDistributedTxFinishResponse extends GridCacheMessage {
     }
 
     /** {@inheritDoc} */
+    @Override public int partition() {
+        /*
+        TODO possible starvation - need to fix sync waits in internal threads.
+        Thread [name="sys-stripe-1-#30%dht.GridCacheColocatedTxExceptionSelfTest1%", id=46, state=WAITING, blockCnt=0, waitCnt=7]
+    Lock [object=o.a.i.i.processors.cache.distributed.dht.GridDhtTxFinishFuture@212874c9, ownerName=null, ownerId=-1]
+        at sun.misc.Unsafe.park(Native Method)
+        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
+        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
+        at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994)
+        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303)
+        at o.a.i.i.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:159)
+        at o.a.i.i.util.future.GridFutureAdapter.get(GridFutureAdapter.java:117)
+        at o.a.i.i.processors.cache.distributed.dht.GridDhtTxFinishFuture.onError(GridDhtTxFinishFuture.java:183)
+        at o.a.i.i.processors.cache.distributed.dht.GridDhtTxLocal.finishCommit(GridDhtTxLocal.java:543)
+        at o.a.i.i.processors.cache.distributed.dht.GridDhtTxLocal.commitAsync(GridDhtTxLocal.java:580)
+        at o.a.i.i.processors.cache.transactions.IgniteTxHandler.finishDhtLocal(IgniteTxHandler.java:849)
+        at o.a.i.i.processors.cache.transactions.IgniteTxHandler.finish(IgniteTxHandler.java:728)
+        at o.a.i.i.processors.cache.transactions.IgniteTxHandler.processNearTxFinishRequest(IgniteTxHandler.java:687)
+        at o.a.i.i.processors.cache.transactions.IgniteTxHandler$3.apply(IgniteTxHandler.java:157)
+        at o.a.i.i.processors.cache.transactions.IgniteTxHandler$3.apply(IgniteTxHandler.java:155)
+        at o.a.i.i.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:758)
+        at o.a.i.i.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:363)
+        at o.a.i.i.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:287)
+        at o.a.i.i.processors.cache.GridCacheIoManager.access$000(GridCacheIoManager.java:89)
+        at o.a.i.i.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:232)
+        at o.a.i.i.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1212)
+        at o.a.i.i.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:840)
+        at o.a.i.i.managers.communication.GridIoManager.access$2100(GridIoManager.java:110)
+        at o.a.i.i.managers.communication.GridIoManager$6.run(GridIoManager.java:785)
+        at o.a.i.i.util.StripedExecutor$Stripe.run(StripedExecutor.java:362)
+        at java.lang.Thread.run(Thread.java:724)
+         */
+        return Integer.MIN_VALUE;
+    }
+
+    /** {@inheritDoc} */
     @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) {
         writer.setBuffer(buf);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/71b7b2ac/modules/core/src/main/java/org/apache/ignite/internal/util/StripedExecutor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/StripedExecutor.java b/modules/core/src/main/java/org/apache/ignite/internal/util/StripedExecutor.java
index 2290164..a6161f3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/StripedExecutor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/StripedExecutor.java
@@ -67,6 +67,29 @@ public class StripedExecutor implements ExecutorService {
                 stripes[i].start();
             }
 
+            // TODO
+            Thread t = new Thread(new Runnable() {
+                @Override public void run() {
+                    for (;;) {
+                        try {
+                            Thread.sleep(10000);
+                        }
+                        catch (InterruptedException e) {
+                            e.printStackTrace();
+                        }
+
+                        for (Stripe stripe : stripes) {
+                            if (stripe.queueSize() > 0)
+                                System.out.println(stripe.thread.getName() + " - " + stripe.queueToString());
+                        }
+                    }
+                }
+            });
+
+            t.setDaemon(true);
+
+            t.start();
+
             success = true;
         }
         catch (Error | RuntimeException e) {
@@ -392,6 +415,8 @@ public class StripedExecutor implements ExecutorService {
          */
         abstract int queueSize();
 
+        abstract String queueToString();
+
         /** {@inheritDoc} */
         @Override public String toString() {
             return S.toString(Stripe.class, this);
@@ -466,6 +491,11 @@ public class StripedExecutor implements ExecutorService {
         }
 
         /** {@inheritDoc} */
+        @Override String queueToString() {
+            return String.valueOf(queue);
+        }
+
+        /** {@inheritDoc} */
         @Override int queueSize() {
             return queue.size();
         }
@@ -522,6 +552,11 @@ public class StripedExecutor implements ExecutorService {
         }
 
         /** {@inheritDoc} */
+        @Override String queueToString() {
+            return String.valueOf(queue);
+        }
+
+        /** {@inheritDoc} */
         @Override public String toString() {
             return S.toString(StripeConcurrentQueueNoPark.class, this, super.toString());
         }
@@ -568,6 +603,11 @@ public class StripedExecutor implements ExecutorService {
         }
 
         /** {@inheritDoc} */
+        @Override String queueToString() {
+            return String.valueOf(queue);
+        }
+
+        /** {@inheritDoc} */
         @Override public String toString() {
             return S.toString(StripeConcurrentBlockingQueue.class, this, super.toString());
         }