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/06 08:09:08 UTC

[1/7] ignite git commit: ignite-4332 Usage of cache.getEntry inside GridCacheQueryManager.runQuery causes to remote operations

Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master 2f1828e25 -> f11bb6bcd


ignite-4332 Usage of cache.getEntry inside GridCacheQueryManager.runQuery causes to remote operations

(cherry picked from commit c06e401)


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

Branch: refs/heads/ignite-comm-balance-master
Commit: a0371d80030b4ff6523f5141792e7765e8540e77
Parents: 979ecb4
Author: Eduard Shangareev <es...@gridgain.com>
Authored: Wed Nov 30 17:34:47 2016 +0700
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Tue Dec 6 11:22:28 2016 +0700

----------------------------------------------------------------------
 .../cache/query/GridCacheQueryManager.java        | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a0371d80/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index 00a9181..01b7b34 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -55,6 +55,7 @@ import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.IgniteKernal;
 import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.processors.cache.CacheEntryImpl;
 import org.apache.ignite.internal.processors.cache.CacheMetricsImpl;
 import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
@@ -1515,9 +1516,12 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
                         metrics.addGetTimeNanos(System.nanoTime() - start);
                     }
 
+                    K key0 = null;
+                    V val0 = null;
+
                     if (readEvt) {
-                        K key0 = (K)cctx.unwrapBinaryIfNeeded(key, qry.keepBinary());
-                        V val0 = (V)cctx.unwrapBinaryIfNeeded(val, qry.keepBinary());
+                        key0 = (K)cctx.unwrapBinaryIfNeeded(key, qry.keepBinary());
+                        val0 = (V)cctx.unwrapBinaryIfNeeded(val, qry.keepBinary());
 
                         switch (type) {
                             case SQL:
@@ -1586,12 +1590,12 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
                     }
 
                     if (rdc != null || trans != null) {
-                        Cache.Entry<K, V> entry;
+                        if (key0 == null)
+                            key0 = (K)cctx.unwrapBinaryIfNeeded(key, qry.keepBinary());
+                        if (val0 == null)
+                            val0 = (V)cctx.unwrapBinaryIfNeeded(val, qry.keepBinary());
 
-                        if (qry.keepBinary())
-                            entry = cache.<K, V>keepBinary().getEntry(key);
-                        else
-                            entry = cache.<K, V>getEntry(key);
+                        Cache.Entry<K, V> entry = new CacheEntryImpl(key0, val0);
 
                         // Reduce.
                         if (rdc != null) {


[3/7] ignite git commit: minor

Posted by sb...@apache.org.
minor


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 5076c478bc10876dd2f4e1d20dc2d334b4afa7a7
Parents: f7057eb
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Tue Dec 6 11:27:49 2016 +0700
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Tue Dec 6 11:27:49 2016 +0700

----------------------------------------------------------------------
 .../internal/processors/cache/query/GridCacheQueryRequest.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/5076c478/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java
index dbd5fbd..9f965d8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryRequest.java
@@ -121,7 +121,7 @@ public class GridCacheQueryRequest extends GridCacheMessage implements GridCache
     private int taskHash;
 
     /** Partition. */
-    private int part;
+    private int part = -1;
 
     /** */
     private AffinityTopologyVersion topVer;


[7/7] ignite git commit: Merge remote-tracking branch 'remotes/community/ignite-comm-balance' into ignite-comm-balance-master

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/community/ignite-comm-balance' into ignite-comm-balance-master

# Conflicts:
#	modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java


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

Branch: refs/heads/ignite-comm-balance-master
Commit: f11bb6bcd274f2f33f410c4e9be78ca4a5bbac1c
Parents: 3d28a65 21ea0b8
Author: sboikov <sb...@gridgain.com>
Authored: Tue Dec 6 11:08:58 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Dec 6 11:08:58 2016 +0300

----------------------------------------------------------------------
 .../configuration/IgniteConfiguration.java      |  50 ++++---
 .../apache/ignite/internal/IgniteKernal.java    |  43 ++++--
 .../org/apache/ignite/internal/IgnitionEx.java  |   4 +-
 .../managers/communication/GridIoManager.java   |   5 +-
 .../GridCachePartitionExchangeManager.java      |   2 +-
 .../GridDistributedTxFinishResponse.java        |  32 +----
 .../cache/query/GridCacheQueryRequest.java      |   2 +-
 .../ignite/internal/util/StripedExecutor.java   | 132 +++++++++----------
 .../ignite/tools/classgen/ClassesGenerator.java |   7 +-
 9 files changed, 143 insertions(+), 134 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f11bb6bc/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 1648c44,e229141..4972d1f
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@@ -1007,10 -1031,13 +1032,12 @@@ public class IgniteKernal implements Ig
                      // at least one waiting request, then it is possible starvation.
                      if (exec.getPoolSize() == exec.getActiveCount() && completedCnt == lastCompletedCnt &&
                          !exec.getQueue().isEmpty())
-                         LT.warn(log, "Possible thread pool starvation detected (no task completed in last " +
-                             interval + "ms, is executorService pool size large enough?)");
+                         LT.warn(
+                             log,
 -                            null,
+                             "Possible thread pool starvation detected (no task completed in last " +
+                                 interval + "ms, is " + pool + " thread pool size large enough?)");
  
-                     lastCompletedCnt = completedCnt;
+                     return completedCnt;
                  }
              }, interval, interval);
          }

http://git-wip-us.apache.org/repos/asf/ignite/blob/f11bb6bc/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/f11bb6bc/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------


[6/7] ignite git commit: Correct partition() method for new 'single' requests.

Posted by sb...@apache.org.
Correct partition() method for new 'single' requests.


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 3d28a65649bab42239339e2202731ae780909ead
Parents: 2f1828e
Author: sboikov <sb...@gridgain.com>
Authored: Tue Dec 6 10:51:39 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Dec 6 10:51:39 2016 +0300

----------------------------------------------------------------------
 .../dht/atomic/GridDhtAtomicSingleUpdateRequest.java            | 5 +++++
 .../dht/atomic/GridNearAtomicSingleUpdateRequest.java           | 5 +++++
 2 files changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/3d28a656/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicSingleUpdateRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicSingleUpdateRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicSingleUpdateRequest.java
index a03d948..0af7cf5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicSingleUpdateRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicSingleUpdateRequest.java
@@ -235,6 +235,11 @@ public class GridDhtAtomicSingleUpdateRequest extends GridDhtAtomicAbstractUpdat
     }
 
     /** {@inheritDoc} */
+    @Override public int partition() {
+        return partId;
+    }
+
+    /** {@inheritDoc} */
     @Override public int partitionId(int idx) {
         assert idx == 0 : idx;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/3d28a656/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateRequest.java
index 1c1addd..c3e9fbe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateRequest.java
@@ -125,6 +125,11 @@ public class GridNearAtomicSingleUpdateRequest extends GridNearAtomicAbstractSin
         );
     }
 
+    /** {@inheritDoc} */
+    @Override public int partition() {
+        return partId;
+    }
+
     /**
      * @param key Key to add.
      * @param val Optional update value.


[4/7] ignite git commit: finalizing

Posted by sb...@apache.org.
finalizing


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

Branch: refs/heads/ignite-comm-balance-master
Commit: ff7f0b294a9592e6901c018fd0d0caddc41ed4ba
Parents: 5076c47
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Tue Dec 6 12:59:26 2016 +0700
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Tue Dec 6 12:59:26 2016 +0700

----------------------------------------------------------------------
 .../configuration/IgniteConfiguration.java      | 50 ++++++++++++--------
 .../org/apache/ignite/internal/IgnitionEx.java  |  4 +-
 .../managers/communication/GridIoManager.java   |  2 +-
 .../GridCachePartitionExchangeManager.java      |  2 +-
 .../GridDistributedTxFinishResponse.java        | 32 +------------
 .../ignite/internal/util/StripedExecutor.java   |  3 ++
 .../ignite/tools/classgen/ClassesGenerator.java |  7 +--
 7 files changed, 43 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ff7f0b29/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
index 4c1544d..ba31c35 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
@@ -74,7 +74,6 @@ import org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpi
 import org.apache.ignite.spi.swapspace.SwapSpaceSpi;
 import org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi;
 import org.apache.ignite.ssl.SslContextFactory;
-import org.apache.ignite.thread.IgniteThreadPoolExecutor;
 
 import static org.apache.ignite.plugin.segmentation.SegmentationPolicy.STOP;
 
@@ -231,15 +230,18 @@ public class IgniteConfiguration {
     /** Logger. */
     private IgniteLogger log;
 
-    /** Use striped pool for internal requests processing when possible (e.g. cache requests). */
-    private boolean useStripedPool = true;
-
     /** Public pool size. */
     private int pubPoolSize = DFLT_PUBLIC_THREAD_CNT;
 
     /** Async Callback pool size. */
     private int callbackPoolSize = DFLT_PUBLIC_THREAD_CNT;
 
+    /**
+     * Use striped pool for internal requests processing when possible
+     * (e.g. cache requests per-partition striping).
+     */
+    private int stripedPoolSize = DFLT_PUBLIC_THREAD_CNT;
+
     /** System pool size. */
     private int sysPoolSize = DFLT_SYSTEM_CORE_THREAD_CNT;
 
@@ -557,13 +559,13 @@ public class IgniteConfiguration {
         sndRetryDelay = cfg.getNetworkSendRetryDelay();
         sslCtxFactory = cfg.getSslContextFactory();
         storeSesLsnrs = cfg.getCacheStoreSessionListenerFactories();
+        stripedPoolSize = cfg.getStripedPoolSize();
         svcCfgs = cfg.getServiceConfiguration();
         sysPoolSize = cfg.getSystemThreadPoolSize();
         timeSrvPortBase = cfg.getTimeServerPortBase();
         timeSrvPortRange = cfg.getTimeServerPortRange();
         txCfg = cfg.getTransactionConfiguration();
         userAttrs = cfg.getUserAttributes();
-        useStripedPool = cfg.isUseStripedPool();
         utilityCacheKeepAliveTime = cfg.getUtilityCacheKeepAliveTime();
         utilityCachePoolSize = cfg.getUtilityCacheThreadPoolSize();
         waitForSegOnStart = cfg.isWaitForSegmentOnStart();
@@ -717,31 +719,41 @@ public class IgniteConfiguration {
     }
 
     /**
-     * Returns {@code true} if striped pool should be used for public
-     * pool and system pools. Default is {@code true}. If {@code false} then,
-     * {@link IgniteThreadPoolExecutor} is used.
+     * Returns striped pool size that should be used for cache requests
+     * processing.
+     * <p>
+     * If set to non-positive value then requests get processed in system pool.
      * <p>
-     * Striped pool is better for typical cache operations and short-term
-     * compute jobs.
+     * Striped pool is better for typical cache operations.
      *
-     * @return {@code True} if striped pool should be used for public
-     * pool and system pools.
+     * @return Positive value if striped pool should be initialized
+     *      with configured number of threads (stripes) and used for requests processing
+     *      or non-positive value to process requests in system pool.
      *
      * @see #getPublicThreadPoolSize()
      * @see #getSystemThreadPoolSize()
      */
-    public boolean isUseStripedPool() {
-        return useStripedPool;
+    public int getStripedPoolSize() {
+        return stripedPoolSize;
     }
 
     /**
-     * Enables/disables use of striped pools for public and system pools.
+     * Sets striped pool size that should be used for cache requests
+     * processing.
+     * <p>
+     * If set to non-positive value then requests get processed in system pool.
+     * <p>
+     * Striped pool is better for typical cache operations.
+     *
+     * @param stripedPoolSize Positive value if striped pool should be initialized
+     *      with passed in number of threads (stripes) and used for requests processing
+     *      or non-positive value to process requests in system pool.
      *
-     * @param useStripedPool {@code True} if striped pool should be used for public
-     * pool and system pools.
+     * @see #getPublicThreadPoolSize()
+     * @see #getSystemThreadPoolSize()
      */
-    public void setUseStripedPool(boolean useStripedPool) {
-        this.useStripedPool = useStripedPool;
+    public void setStripedPoolSize(int stripedPoolSize) {
+        this.stripedPoolSize = stripedPoolSize;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/ff7f0b29/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
index 54ca6d0..3858d87 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
@@ -1664,8 +1664,8 @@ public class IgnitionEx {
 
             sysExecSvc.allowCoreThreadTimeOut(true);
 
-            if (cfg.isUseStripedPool())
-                stripedExecSvc = new StripedExecutor(cfg.getPublicThreadPoolSize(), cfg.getGridName(), "sys", log);
+            if (cfg.getStripedPoolSize() > 0)
+                stripedExecSvc = new StripedExecutor(cfg.getStripedPoolSize(), cfg.getGridName(), "sys", log);
 
             // Note that since we use 'LinkedBlockingQueue', number of
             // maximum threads has no effect.

http://git-wip-us.apache.org/repos/asf/ignite/blob/ff7f0b29/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 345460c..7ef7bc0 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
@@ -804,7 +804,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
             }
         }
 
-        if (ctx.config().isUseStripedPool() &&
+        if (ctx.config().getStripedPoolSize() > 0 &&
             plc == GridIoPolicy.SYSTEM_POOL &&
             msg.partition() != Integer.MIN_VALUE
             ) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/ff7f0b29/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 521a322..f922465 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
@@ -1645,7 +1645,7 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana
                                             fut.onDone();
                                         }
                                     }
-                                }, /*system pool*/false); //Todo: fix to not no use system pool properly.
+                                }, /*system pool*/false); //TODO https://issues.apache.org/jira/browse/IGNITE-4242
                             }
                             else {
                                 U.log(log, "Skipping rebalancing (obsolete exchange ID) " +

http://git-wip-us.apache.org/repos/asf/ignite/blob/ff7f0b29/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 b922628..c5cf332 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
@@ -87,37 +87,7 @@ 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)
-         */
+        // TODO https://issues.apache.org/jira/browse/IGNITE-4371
         return Integer.MIN_VALUE;
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/ff7f0b29/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 7db75bd..69f6b67 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
@@ -34,6 +34,7 @@ import java.util.concurrent.TimeoutException;
 import java.util.concurrent.locks.LockSupport;
 import org.apache.ignite.IgniteInterruptedException;
 import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.thread.IgniteThread;
@@ -52,6 +53,8 @@ public class StripedExecutor implements ExecutorService {
      * @param cnt Count.
      */
     public StripedExecutor(int cnt, String gridName, String poolName, final IgniteLogger log) {
+        A.ensure(cnt > 0, "cnt > 0");
+
         boolean success = false;
 
         stripes = new Stripe[cnt];

http://git-wip-us.apache.org/repos/asf/ignite/blob/ff7f0b29/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java
----------------------------------------------------------------------
diff --git a/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java b/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java
index c0a71a2..369e318 100644
--- a/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java
+++ b/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java
@@ -122,10 +122,11 @@ public class ClassesGenerator {
             for (String err : errs)
                 sb.append("    ").append(err).append('\n');
 
-            System.out.println(sb.toString().trim());
+            String msg = sb.toString().trim();
 
-            // TODO
-            // throw new Exception(sb.toString().trim());
+            System.out.println(msg);
+
+            throw new Exception(msg);
         }
 
         PrintStream out = new PrintStream(new File(basePath,


[2/7] ignite git commit: minor

Posted by sb...@apache.org.
minor


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

Branch: refs/heads/ignite-comm-balance-master
Commit: f7057eb948cef92c794fd702df29ecfd0637af1a
Parents: a0371d8
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Tue Dec 6 11:23:27 2016 +0700
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Tue Dec 6 11:23:27 2016 +0700

----------------------------------------------------------------------
 .../ignite/internal/managers/communication/GridIoManager.java     | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f7057eb9/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 ce53e6e..345460c 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
@@ -806,8 +806,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
 
         if (ctx.config().isUseStripedPool() &&
             plc == GridIoPolicy.SYSTEM_POOL &&
-            msg.partition() != Integer.MIN_VALUE &&
-            msg.message().directType() != 58 // TODO Query request should go to former pool.
+            msg.partition() != Integer.MIN_VALUE
             ) {
             ctx.getStripedExecutorService().execute(msg.partition(), c);
 


[5/7] ignite git commit: minor

Posted by sb...@apache.org.
minor


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 21ea0b8b497b6c0c35f894ed5a5ee920c2437d09
Parents: ff7f0b2
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Tue Dec 6 13:36:15 2016 +0700
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Tue Dec 6 13:36:15 2016 +0700

----------------------------------------------------------------------
 .../apache/ignite/internal/IgniteKernal.java    |  44 +++++--
 .../ignite/internal/util/StripedExecutor.java   | 129 +++++++++----------
 2 files changed, 99 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/21ea0b8b/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 fdd1bda..e229141 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
@@ -680,7 +680,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
         ExecutorService marshCachePool,
         final ExecutorService execSvc,
         final ExecutorService sysExecSvc,
-        StripedExecutor stripedExecSvc,
+        final StripedExecutor stripedExecSvc,
         ExecutorService p2pExecSvc,
         ExecutorService mgmtExecSvc,
         ExecutorService igfsExecSvc,
@@ -992,24 +992,52 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
 
             starveTask = ctx.timeout().schedule(new Runnable() {
                 /** Last completed task count. */
-                private long lastCompletedCnt;
+                private long lastCompletedCntPub;
+
+                /** Last completed task count. */
+                private long lastCompletedCntSys;
 
                 @Override public void run() {
-                    if (!(execSvc instanceof ThreadPoolExecutor))
-                        return;
+                    if (execSvc instanceof ThreadPoolExecutor) {
+                        ThreadPoolExecutor exec = (ThreadPoolExecutor)execSvc;
+
+                        lastCompletedCntPub = checkPoolStarvation(exec, lastCompletedCntPub, "public");
+                    }
 
-                    ThreadPoolExecutor exec = (ThreadPoolExecutor)execSvc;
+                    if (sysExecSvc instanceof ThreadPoolExecutor) {
+                        ThreadPoolExecutor exec = (ThreadPoolExecutor)sysExecSvc;
+
+                        lastCompletedCntSys = checkPoolStarvation(exec, lastCompletedCntSys, "system");
+                    }
+
+                    if (stripedExecSvc != null)
+                        stripedExecSvc.checkStarvation();
+                }
 
+                /**
+                 * @param exec Thread pool executor to check.
+                 * @param lastCompletedCnt Last completed tasks count.
+                 * @param pool Pool name for message.
+                 * @return Current completed tasks count.
+                 */
+                private long checkPoolStarvation(
+                    ThreadPoolExecutor exec,
+                    long lastCompletedCnt,
+                    String pool
+                ) {
                     long completedCnt = exec.getCompletedTaskCount();
 
                     // If all threads are active and no task has completed since last time and there is
                     // at least one waiting request, then it is possible starvation.
                     if (exec.getPoolSize() == exec.getActiveCount() && completedCnt == lastCompletedCnt &&
                         !exec.getQueue().isEmpty())
-                        LT.warn(log, null, "Possible thread pool starvation detected (no task completed in last " +
-                            interval + "ms, is executorService pool size large enough?)");
+                        LT.warn(
+                            log,
+                            null,
+                            "Possible thread pool starvation detected (no task completed in last " +
+                                interval + "ms, is " + pool + " thread pool size large enough?)");
 
-                    lastCompletedCnt = completedCnt;
+                    return completedCnt;
                 }
             }, interval, interval);
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/21ea0b8b/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 69f6b67..e9ec74b 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
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.util;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -47,6 +48,12 @@ public class StripedExecutor implements ExecutorService {
     /** Stripes. */
     private final Stripe[] stripes;
 
+    /** For starvation checks. */
+    private final long[] completedCntrs;
+
+    /** */
+    private final IgniteLogger log;
+
     /**
      * Constructor.
      *
@@ -59,6 +66,12 @@ public class StripedExecutor implements ExecutorService {
 
         stripes = new Stripe[cnt];
 
+        completedCntrs = new long[cnt];
+
+        Arrays.fill(completedCntrs, -1);
+
+        this.log = log;
+
         try {
             for (int i = 0; i < cnt; i++) {
                 stripes[i] = new StripeConcurrentQueue(
@@ -70,60 +83,6 @@ public class StripedExecutor implements ExecutorService {
                 stripes[i].start();
             }
 
-            // TODO - move to starvation checker
-            Thread t = new Thread(new Runnable() {
-                @Override public void run() {
-                    long[] cntrs = new long[stripes.length];
-
-                    for (; !isShutdown();) {
-                        try {
-                            Thread.sleep(10_000);
-                        }
-                        catch (InterruptedException e) {
-                            return;
-                        }
-
-                        for (int i = 0; i < stripes.length; i++) {
-                            Stripe stripe = stripes[i];
-
-                            long completedCnt = stripe.completedCnt;
-
-                            if (cntrs[i] == completedCnt &&
-                                stripe.active) {
-                                boolean deadlockPresent = U.deadlockPresent();
-
-                                GridStringBuilder sb = new GridStringBuilder();
-
-                                sb.a(">>> Possible starvation in striped pool: ")
-                                    .a(stripe.thread.getName()).a(U.nl())
-                                    .a(stripe.queueToString()).a(U.nl())
-                                    .a("deadlock: ").a(deadlockPresent).a(U.nl())
-                                    .a("completed: ").a(completedCnt).a(U.nl());
-
-                                U.printStackTrace(
-                                    stripe.thread.getId(),
-                                    sb);
-
-                                String msg = sb.toString();
-
-                                U.warn(
-                                    log,
-                                    msg);
-                                U.warn(
-                                    null,
-                                    msg);
-                            }
-                            else
-                                cntrs[i] = completedCnt;
-                        }
-                    }
-                }
-            });
-
-            t.setDaemon(true);
-
-            t.start();
-
             success = true;
         }
         catch (Error | RuntimeException e) {
@@ -147,6 +106,45 @@ public class StripedExecutor implements ExecutorService {
     }
 
     /**
+     * Checks starvation in striped pool. Maybe too verbose
+     * but this is needed to faster debug possible issues.
+     */
+    public void checkStarvation() {
+        for (int i = 0; i < stripes.length; i++) {
+            Stripe stripe = stripes[i];
+
+            long completedCnt = stripe.completedCnt;
+
+            boolean active = stripe.active;
+
+            if (completedCntrs[i] != -1 &&
+                completedCntrs[i] == completedCnt &&
+                active) {
+                boolean deadlockPresent = U.deadlockPresent();
+
+                GridStringBuilder sb = new GridStringBuilder();
+
+                sb.a(">>> Possible starvation in striped pool: ")
+                    .a(stripe.thread.getName()).a(U.nl())
+                    .a(stripe.queueToString()).a(U.nl())
+                    .a("deadlock: ").a(deadlockPresent).a(U.nl())
+                    .a("completed: ").a(completedCnt).a(U.nl());
+
+                U.printStackTrace(
+                    stripe.thread.getId(),
+                    sb);
+
+                String msg = sb.toString();
+
+                U.warn(log, msg);
+            }
+
+            if (active || completedCnt > 0)
+                completedCntrs[i] = completedCnt;
+        }
+    }
+
+    /**
      * @return Stripes count.
      */
     public int stripes() {
@@ -246,28 +244,27 @@ public class StripedExecutor implements ExecutorService {
     }
 
     /**
-     * @param log Logger to dump to.
+     * @return Return total queue size of all stripes.
      */
-    public void dumpStats(IgniteLogger log) {
-        StringBuilder sb = new StringBuilder("Stats ");
+    public int queueSize() {
+        int size = 0;
 
-        for (int i = 0; i < stripes.length; i++)
-            sb.append(i).append(" [qSize=").append(stripes[i].queueSize()).append("]; ");
+        for (Stripe stripe : stripes)
+            size += stripe.queueSize();
 
-        if (log.isInfoEnabled())
-            log.info(sb.toString());
+        return size;
     }
 
     /**
-     * @return Return total queue size of all stripes.
+     * @return Completed tasks count.
      */
-    public int queueSize() {
-        int size = 0;
+    public long completedTasks() {
+        long cnt = 0;
 
         for (Stripe stripe : stripes)
-            size += stripe.queueSize();
+            cnt += stripe.completedCnt;
 
-        return size;
+        return cnt;
     }
 
     /**