[02/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: e6bc6c255da4a5cb80950643db404edcf33064cc
Parents: 50cbdbf
Author: sboikov 
Authored: Tue Dec 6 19:04:23 2016 +0300
Committer: sboikov 
Committed: Tue Dec 6 19:04:23 2016 +0300

--
 .../apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/e6bc6c25/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index b3f95c3..fa8da9a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -243,7 +243,7 @@ import static 
org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.SSL_META
 public class TcpCommunicationSpi extends IgniteSpiAdapter
 implements CommunicationSpi, TcpCommunicationSpiMBean {
 /** */
-private static final IgniteProductVersion MULTIPLE_CONN_SINCE_VER = 
IgniteProductVersion.fromString("1.8");
+private static final IgniteProductVersion MULTIPLE_CONN_SINCE_VER = 
IgniteProductVersion.fromString("1.8.0");
 
 /** IPC error message. */
 public static final String OUT_OF_RESOURCES_TCP_MSG = "Failed to allocate 
shared memory segment " +



[24/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: e88dbd87e441aa4521bedd84789c8dbaf174497a
Parents: 276b53a
Author: sboikov 
Authored: Thu Dec 8 12:23:09 2016 +0300
Committer: sboikov 
Committed: Thu Dec 8 12:23:09 2016 +0300

--
 .../cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java  | 6 +-
 .../apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/e88dbd87/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
index 3fca826..322690c 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
@@ -86,7 +86,6 @@ public class IgniteCacheMultiTxLockSelfTest extends 
GridCommonAbstractTest {
 plc.setMaxSize(10);
 
 ccfg.setEvictionPolicy(plc);
-ccfg.setEvictSynchronized(true);
 
 c.setCacheConfiguration(ccfg);
 
@@ -95,6 +94,11 @@ public class IgniteCacheMultiTxLockSelfTest extends 
GridCommonAbstractTest {
 return c;
 }
 
+/** {@inheritDoc} */
+@Override protected long getTestTimeout() {
+return 60_000;
+}
+
 /**
  * @throws Exception If failed.
  */

http://git-wip-us.apache.org/repos/asf/ignite/blob/e88dbd87/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
index 0513786..e7eb540 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
@@ -44,7 +44,7 @@ public class IgniteCacheRestartTestSuite2 extends TestSuite {
 suite.addTestSuite(IgniteCachePutAllRestartTest.class);
 suite.addTestSuite(GridCachePutAllFailoverSelfTest.class);
 
-suite.addTestSuite(IgniteBinaryMetadataUpdateNodeRestartTest.class);
+// suite.addTestSuite(IgniteBinaryMetadataUpdateNodeRestartTest.class);
 
 suite.addTestSuite(IgniteCacheGetRestartTest.class);
 



[18/28] ignite git commit: ignite-comm-balance-master

2016-12-08 Thread sboikov
ignite-comm-balance-master


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

Branch: refs/heads/ignite-4371
Commit: d8ce5afc5d71225131da2a1a3c7ed4b1d22c9549
Parents: 18d0d0d
Author: sboikov 
Authored: Wed Dec 7 18:37:30 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 18:37:30 2016 +0300

--
 .../datastreamer/DataStreamProcessor.java   | 22 +---
 1 file changed, 15 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/d8ce5afc/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
index 32fda87..fee4dd6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
@@ -328,6 +328,8 @@ public class DataStreamProcessor extends 
GridProcessorAdapter {
 if (!allowOverwrite)
 cctx.topology().readLock();
 
+GridDhtTopologyFuture topWaitFut = null;
+
 try {
 GridDhtTopologyFuture fut = cctx.topologyVersionFuture();
 
@@ -352,19 +354,25 @@ public class DataStreamProcessor extends 
GridProcessorAdapter {
 
 waitFut = allowOverwrite ? null : 
cctx.mvcc().addDataStreamerFuture(topVer);
 }
-else {
-fut.listen(new 
IgniteInClosure>() {
-@Override public void 
apply(IgniteInternalFuture e) {
-localUpdate(nodeId, req, updater, topic);
-}
-});
-}
+else
+topWaitFut = fut;
 }
 finally {
 if (!allowOverwrite)
 cctx.topology().readUnlock();
 }
 
+if (topWaitFut != null) {
+// Need call 'listen' after topology read lock is released.
+topWaitFut.listen(new 
IgniteInClosure>() {
+@Override public void 
apply(IgniteInternalFuture e) {
+localUpdate(nodeId, req, updater, topic);
+}
+});
+
+return;
+}
+
 if (job != null) {
 try {
 job.call();



[07/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: d15a0a74839ff30d6116f90e5825276a09f20520
Parents: c449eeb
Author: sboikov 
Authored: Wed Dec 7 11:23:09 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 11:23:09 2016 +0300

--
 .../cache/GridAbstractCacheInterceptorRebalanceTest.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/d15a0a74/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
index 9405a19..3a2bc81 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
@@ -200,7 +200,9 @@ public abstract class 
GridAbstractCacheInterceptorRebalanceTest extends GridComm
 private void testRebalance(final Operation operation) throws Exception {
 interceptor = new RebalanceUpdateInterceptor();
 
-for (int iter = 0; iter < TEST_ITERATIONS; iter++) {
+long stopTime = System.currentTimeMillis() + 2 * 60_000;
+
+for (int iter = 0; iter < TEST_ITERATIONS && 
System.currentTimeMillis() < stopTime; iter++) {
 log.info("Iteration: " + iter);
 
 failed = false;



[12/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: 2b561f7754c41ac7c972224b059e94c553cea427
Parents: d6a9767
Author: sboikov 
Authored: Wed Dec 7 12:30:29 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 14:28:34 2016 +0300

--
 .../ignite/internal/IgniteInternalFuture.java   | 11 +++
 .../transactions/IgniteTxLocalAdapter.java  |  8 +++---
 .../processors/igfs/IgfsDataManager.java|  6 +++-
 .../platform/compute/PlatformCompute.java   |  6 
 .../util/future/GridFinishedFuture.java | 24 
 .../internal/util/future/GridFutureAdapter.java | 15 --
 .../util/future/GridFutureChainListener.java| 30 ++--
 .../TxDeadlockDetectionNoHangsTest.java |  2 +-
 8 files changed, 90 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/2b561f77/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
index b80a755..789556d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal;
 
+import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import org.apache.ignite.IgniteCheckedException;
@@ -133,6 +134,16 @@ public interface IgniteInternalFuture {
 public  IgniteInternalFuture chain(IgniteClosure, T> doneCb);
 
 /**
+ * Make a chained future to convert result of this future (when complete) 
into a new format.
+ * It is guaranteed that done callback will be called only ONCE.
+ *
+ * @param doneCb Done callback that is applied to this future when it 
finishes to produce chained future result.
+ * @param exec Executor to run callback.
+ * @return Chained future that finishes after this future completes and 
done callback is called.
+ */
+public  IgniteInternalFuture chain(IgniteClosure, T> doneCb, Executor exec);
+
+/**
  * @return Error value if future has already been completed with error.
  */
 public Throwable error();

http://git-wip-us.apache.org/repos/asf/ignite/blob/2b561f77/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 6d21dcf..393fb1a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -391,7 +391,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 /** {@inheritDoc} */
 @Override public IgniteInternalFuture loadMissing(
 final GridCacheContext cacheCtx,
-AffinityTopologyVersion topVer,
+final AffinityTopologyVersion topVer,
 final boolean readThrough,
 boolean async,
 final Collection keys,
@@ -472,7 +472,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 CacheObject cacheVal = cacheCtx.toCacheObject(val);
 
 while (true) {
-GridCacheEntryEx entry = 
cacheCtx.cache().entryEx(key);
+GridCacheEntryEx entry = 
cacheCtx.cache().entryEx(key, topVer);
 
 try {
 GridCacheVersion setVer = 
entry.versionedValue(cacheVal, ver, null);
@@ -1507,7 +1507,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 
 assert txEntry != null || readCommitted() || skipVals;
 
-GridCacheEntryEx e = txEntry == null ? 
entryEx(cacheCtx, txKey) : txEntry.cached();
+GridCacheEntryEx e = txEntry == null ? 
entryEx(cacheCtx, txKey, topVer) : txEntry.cached();
 
 if (readCommitt

[01/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-4371 54d7cea30 -> eb930599f


ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: 50cbdbf03ffdcd8d93e392aed86aa5f836e31713
Parents: dd9f3c2
Author: sboikov 
Authored: Tue Dec 6 16:30:33 2016 +0300
Committer: sboikov 
Committed: Tue Dec 6 16:30:33 2016 +0300

--
 .../apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/50cbdbf0/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 8a1864e..b3f95c3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -243,7 +243,7 @@ import static 
org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.SSL_META
 public class TcpCommunicationSpi extends IgniteSpiAdapter
 implements CommunicationSpi, TcpCommunicationSpiMBean {
 /** */
-private static final IgniteProductVersion MULTIPLE_CONN_SINCE_VER = 
IgniteProductVersion.fromString("1.7.3");
+private static final IgniteProductVersion MULTIPLE_CONN_SINCE_VER = 
IgniteProductVersion.fromString("1.8");
 
 /** IPC error message. */
 public static final String OUT_OF_RESOURCES_TCP_MSG = "Failed to allocate 
shared memory segment " +



[21/28] ignite git commit: ignite-comm-balance-master

2016-12-08 Thread sboikov
ignite-comm-balance-master


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

Branch: refs/heads/ignite-4371
Commit: abc5d7a7ee219b2c2c815aff916cb77aa7d516e2
Parents: 622f045
Author: sboikov 
Authored: Thu Dec 8 11:09:26 2016 +0300
Committer: sboikov 
Committed: Thu Dec 8 11:09:26 2016 +0300

--
 .../ignite/spi/communication/tcp/TcpCommunicationSpi.java  | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/abc5d7a7/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index b16169c..8f5fc74 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -2600,7 +2600,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
  * @return Client.
  * @throws IgniteCheckedException If failed.
  */
-@Nullable protected GridCommunicationClient createShmemClient(ClusterNode 
node,
+@Nullable private GridCommunicationClient createShmemClient(ClusterNode 
node,
 int connIdx,
 Integer port) throws IgniteCheckedException {
 int attempt = 1;
@@ -2715,9 +2715,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
 ", clientNode=" + node +
 ", slowClientQueueLimit=" + slowClientQueueLimit + ']';
 
-U.quietAndWarn(
-log,
-msg);
+U.quietAndWarn(log, msg);
 
 getSpiContext().failNode(id.nodeId(), msg);
 }



[25/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: 03593023dabe8bf295760c9a387a3e9af8964112
Parents: e88dbd8
Author: sboikov 
Authored: Thu Dec 8 13:51:40 2016 +0300
Committer: sboikov 
Committed: Thu Dec 8 13:51:40 2016 +0300

--
 .../TxOptimisticDeadlockDetectionTest.java  | 29 
 1 file changed, 18 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/03593023/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
index aa240aa..f6a06c2 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
@@ -111,6 +111,9 @@ public class TxOptimisticDeadlockDetectionTest extends 
GridCommonAbstractTest {
 
 cfg.setClientMode(client);
 
+// Test spi blocks message send, this can cause hang with striped pool.
+cfg.setStripedPoolSize(-1);
+
 return cfg;
 }
 
@@ -274,8 +277,8 @@ public class TxOptimisticDeadlockDetectionTest extends 
GridCommonAbstractTest {
 
 Object k;
 
-log.info(">>> Performs put [node=" + 
((IgniteKernal)ignite).localNode() +
-", tx=" + tx + ", key=" + transformer.apply(key) + 
']');
+log.info(">>> Performs put [node=" + 
((IgniteKernal)ignite).localNode().id() +
+", tx=" + tx.xid() + ", key=" + transformer.apply(key) 
+ ']');
 
 cache.put(transformer.apply(key), 0);
 
@@ -309,23 +312,27 @@ public class TxOptimisticDeadlockDetectionTest extends 
GridCommonAbstractTest {
 entries.put(k, 2);
 }
 
-log.info(">>> Performs put [node=" + 
((IgniteKernal)ignite).localNode() +
-", tx=" + tx + ", entries=" + entries + ']');
+log.info(">>> Performs put [node=" + 
((IgniteKernal)ignite).localNode().id() +
+", tx=" + tx.xid() + ", entries=" + entries + ']');
 
 cache.putAll(entries);
 
 tx.commit();
 }
 catch (Throwable e) {
-U.error(log, "Expected exception: ", e);
+log.info("Expected exception: " + e);
+
+e.printStackTrace(System.out);
 
 // At least one stack trace should contain 
TransactionDeadlockException.
 if (hasCause(e, TransactionTimeoutException.class) &&
-hasCause(e, TransactionDeadlockException.class)
-) {
-if (deadlockErr.compareAndSet(null, cause(e, 
TransactionDeadlockException.class)))
-U.error(log, "At least one stack trace should 
contain " +
-
TransactionDeadlockException.class.getSimpleName(), e);
+hasCause(e, TransactionDeadlockException.class)) {
+if (deadlockErr.compareAndSet(null, cause(e, 
TransactionDeadlockException.class))) {
+log.info("At least one stack trace should contain 
" +
+
TransactionDeadlockException.class.getSimpleName());
+
+e.printStackTrace(System.out);
+}
 }
 }
 }
@@ -344,7 +351,7 @@ public class TxOptimisticDeadlockDetectionTest extends 
GridCommonAbstractTest {
 
 TransactionDeadlockException deadlockE = deadlockErr.get();
 
-assertNotNull(deadlockE);
+assertNotNull("Failed to detect deadlock", deadlockE);
 
 boolean fail = false;
 



[04/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: 5a3ba538b814320ec532801a79c92af786c12ad0
Parents: 55e7f9b
Author: sboikov 
Authored: Wed Dec 7 10:54:09 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 10:54:09 2016 +0300

--
 .../processors/cache/distributed/dht/GridDhtCacheAdapter.java | 3 ++-
 .../processors/cache/distributed/IgniteCacheCreatePutTest.java| 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/5a3ba538/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index 35e6267..519d0fc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -218,7 +218,8 @@ public abstract class GridDhtCacheAdapter extends 
GridDistributedCacheAdap
 @Override public void onKernalStart() throws IgniteCheckedException {
 super.onKernalStart();
 
-preldr.onKernalStart();
+if (preldr != null)
+preldr.onKernalStart();
 }
 
 /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/5a3ba538/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
index 2f700f3..a91de67 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
@@ -107,7 +107,7 @@ public class IgniteCacheCreatePutTest extends 
GridCommonAbstractTest {
 try {
 int iter = 0;
 
-while (System.currentTimeMillis() < stopTime) {
+while (System.currentTimeMillis() < stopTime && iter < 5) {
 log.info("Iteration: " + iter++);
 
 try {



[08/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: d6a976795087887c871037238036b72aed248d36
Parents: d15a0a7
Author: sboikov 
Authored: Wed Dec 7 11:41:55 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 11:41:55 2016 +0300

--
 .../cache/CrossCacheTxRandomOperationsTest.java | 23 +---
 1 file changed, 20 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/d6a97679/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
index a07491c..eaa9923 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
@@ -175,9 +175,17 @@ public class CrossCacheTxRandomOperationsTest extends 
GridCommonAbstractTest {
 }
 
 /**
+ * @param cacheMode Cache mode.
+ * @param writeSync Write synchronization mode.
+ * @param fairAff Fair affinity flag.
+ * @param ignite Node to use.
+ * @param name Cache name.
  */
-protected void createCache(CacheMode cacheMode, 
CacheWriteSynchronizationMode writeSync, boolean fairAff,
-Ignite ignite, String name) {
+protected void createCache(CacheMode cacheMode,
+CacheWriteSynchronizationMode writeSync,
+boolean fairAff,
+Ignite ignite,
+String name) {
 ignite.createCache(cacheConfiguration(name, cacheMode, writeSync, 
fairAff));
 }
 
@@ -274,9 +282,18 @@ public class CrossCacheTxRandomOperationsTest extends 
GridCommonAbstractTest {
 
 boolean checkData = fullSync && !optimistic;
 
+long stopTime = System.currentTimeMillis() + 10_000;
+
 for (int i = 0; i < 10_000; i++) {
-if (i % 100 == 0)
+if (i % 100 == 0) {
+if (System.currentTimeMillis() > stopTime) {
+log.info("Stop on timeout, iteration: " + i);
+
+break;
+}
+
 log.info("Iteration: " + i);
+}
 
 boolean rollback = i % 10 == 0;
 



[03/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: 55e7f9be542e263e62c87ace54569b819e413b2b
Parents: e6bc6c2
Author: sboikov 
Authored: Wed Dec 7 10:27:44 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 10:27:44 2016 +0300

--
 .../apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/55e7f9be/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index fa8da9a..c08939c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -1188,7 +1188,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
  * Set this to {@code true} if {@code TcpCommunicationSpi} should
  * maintain connection for outgoing and incoming messages separately.
  * In this case total number of connections between local and each remote 
node
- * is {@link #connectionsPerNode()} * 2.
+ * is {@link #getConnectionsPerNode()} * 2.
  * 
  * Set this to {@code false} if each connection of {@link 
#getConnectionsPerNode()}
  * should be used for outgoing and incoming messages. In this case total 
number



[13/28] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-4371
Commit: 3d33d241bf7bc018092b6129f6306a2b79e3ec2f
Parents: d6a9767
Author: sboikov 
Authored: Wed Dec 7 12:30:29 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 14:54:28 2016 +0300

--
 .../ignite/internal/IgniteInternalFuture.java   |  11 ++
 .../transactions/IgniteTxLocalAdapter.java  |   8 +-
 .../processors/igfs/IgfsDataManager.java|   6 +-
 .../platform/compute/PlatformCompute.java   |   6 +
 .../util/future/GridFinishedFuture.java |  24 
 .../internal/util/future/GridFutureAdapter.java |  15 ++-
 .../util/future/GridFutureChainListener.java|  30 -
 .../TxDeadlockDetectionNoHangsTest.java |   2 +-
 .../util/future/GridFutureAdapterSelfTest.java  | 122 ++-
 9 files changed, 157 insertions(+), 67 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/3d33d241/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
index b80a755..789556d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal;
 
+import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import org.apache.ignite.IgniteCheckedException;
@@ -133,6 +134,16 @@ public interface IgniteInternalFuture {
 public  IgniteInternalFuture chain(IgniteClosure, T> doneCb);
 
 /**
+ * Make a chained future to convert result of this future (when complete) 
into a new format.
+ * It is guaranteed that done callback will be called only ONCE.
+ *
+ * @param doneCb Done callback that is applied to this future when it 
finishes to produce chained future result.
+ * @param exec Executor to run callback.
+ * @return Chained future that finishes after this future completes and 
done callback is called.
+ */
+public  IgniteInternalFuture chain(IgniteClosure, T> doneCb, Executor exec);
+
+/**
  * @return Error value if future has already been completed with error.
  */
 public Throwable error();

http://git-wip-us.apache.org/repos/asf/ignite/blob/3d33d241/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 6d21dcf..393fb1a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -391,7 +391,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 /** {@inheritDoc} */
 @Override public IgniteInternalFuture loadMissing(
 final GridCacheContext cacheCtx,
-AffinityTopologyVersion topVer,
+final AffinityTopologyVersion topVer,
 final boolean readThrough,
 boolean async,
 final Collection keys,
@@ -472,7 +472,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 CacheObject cacheVal = cacheCtx.toCacheObject(val);
 
 while (true) {
-GridCacheEntryEx entry = 
cacheCtx.cache().entryEx(key);
+GridCacheEntryEx entry = 
cacheCtx.cache().entryEx(key, topVer);
 
 try {
 GridCacheVersion setVer = 
entry.versionedValue(cacheVal, ver, null);
@@ -1507,7 +1507,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 
 assert txEntry != null || readCommitted() || skipVals;
 
-GridCacheEntryEx e = txEntry == null ? 
entryEx(cacheCtx, txKey) : txEntry.cached();
+GridCacheEntryEx e = txEntry == null ? 
entryEx(cacheCtx, txKey, topVer) : txEntry.cached();
 

[3/7] ignite git commit: ignite-comm-balance-master

2016-12-08 Thread sboikov
ignite-comm-balance-master


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

Branch: refs/heads/ignite-comm-balance-master
Commit: abc5d7a7ee219b2c2c815aff916cb77aa7d516e2
Parents: 622f045
Author: sboikov 
Authored: Thu Dec 8 11:09:26 2016 +0300
Committer: sboikov 
Committed: Thu Dec 8 11:09:26 2016 +0300

--
 .../ignite/spi/communication/tcp/TcpCommunicationSpi.java  | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/abc5d7a7/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index b16169c..8f5fc74 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -2600,7 +2600,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
  * @return Client.
  * @throws IgniteCheckedException If failed.
  */
-@Nullable protected GridCommunicationClient createShmemClient(ClusterNode 
node,
+@Nullable private GridCommunicationClient createShmemClient(ClusterNode 
node,
 int connIdx,
 Integer port) throws IgniteCheckedException {
 int attempt = 1;
@@ -2715,9 +2715,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
 ", clientNode=" + node +
 ", slowClientQueueLimit=" + slowClientQueueLimit + ']';
 
-U.quietAndWarn(
-log,
-msg);
+U.quietAndWarn(log, msg);
 
 getSpiContext().failNode(id.nodeId(), msg);
 }



[7/7] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 03593023dabe8bf295760c9a387a3e9af8964112
Parents: e88dbd8
Author: sboikov 
Authored: Thu Dec 8 13:51:40 2016 +0300
Committer: sboikov 
Committed: Thu Dec 8 13:51:40 2016 +0300

--
 .../TxOptimisticDeadlockDetectionTest.java  | 29 
 1 file changed, 18 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/03593023/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
index aa240aa..f6a06c2 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
@@ -111,6 +111,9 @@ public class TxOptimisticDeadlockDetectionTest extends 
GridCommonAbstractTest {
 
 cfg.setClientMode(client);
 
+// Test spi blocks message send, this can cause hang with striped pool.
+cfg.setStripedPoolSize(-1);
+
 return cfg;
 }
 
@@ -274,8 +277,8 @@ public class TxOptimisticDeadlockDetectionTest extends 
GridCommonAbstractTest {
 
 Object k;
 
-log.info(">>> Performs put [node=" + 
((IgniteKernal)ignite).localNode() +
-", tx=" + tx + ", key=" + transformer.apply(key) + 
']');
+log.info(">>> Performs put [node=" + 
((IgniteKernal)ignite).localNode().id() +
+", tx=" + tx.xid() + ", key=" + transformer.apply(key) 
+ ']');
 
 cache.put(transformer.apply(key), 0);
 
@@ -309,23 +312,27 @@ public class TxOptimisticDeadlockDetectionTest extends 
GridCommonAbstractTest {
 entries.put(k, 2);
 }
 
-log.info(">>> Performs put [node=" + 
((IgniteKernal)ignite).localNode() +
-", tx=" + tx + ", entries=" + entries + ']');
+log.info(">>> Performs put [node=" + 
((IgniteKernal)ignite).localNode().id() +
+", tx=" + tx.xid() + ", entries=" + entries + ']');
 
 cache.putAll(entries);
 
 tx.commit();
 }
 catch (Throwable e) {
-U.error(log, "Expected exception: ", e);
+log.info("Expected exception: " + e);
+
+e.printStackTrace(System.out);
 
 // At least one stack trace should contain 
TransactionDeadlockException.
 if (hasCause(e, TransactionTimeoutException.class) &&
-hasCause(e, TransactionDeadlockException.class)
-) {
-if (deadlockErr.compareAndSet(null, cause(e, 
TransactionDeadlockException.class)))
-U.error(log, "At least one stack trace should 
contain " +
-
TransactionDeadlockException.class.getSimpleName(), e);
+hasCause(e, TransactionDeadlockException.class)) {
+if (deadlockErr.compareAndSet(null, cause(e, 
TransactionDeadlockException.class))) {
+log.info("At least one stack trace should contain 
" +
+
TransactionDeadlockException.class.getSimpleName());
+
+e.printStackTrace(System.out);
+}
 }
 }
 }
@@ -344,7 +351,7 @@ public class TxOptimisticDeadlockDetectionTest extends 
GridCommonAbstractTest {
 
 TransactionDeadlockException deadlockE = deadlockErr.get();
 
-assertNotNull(deadlockE);
+assertNotNull("Failed to detect deadlock", deadlockE);
 
 boolean fail = false;
 



[6/7] ignite git commit: ignite-comm-balance

2016-12-08 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: e88dbd87e441aa4521bedd84789c8dbaf174497a
Parents: 276b53a
Author: sboikov 
Authored: Thu Dec 8 12:23:09 2016 +0300
Committer: sboikov 
Committed: Thu Dec 8 12:23:09 2016 +0300

--
 .../cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java  | 6 +-
 .../apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/e88dbd87/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
index 3fca826..322690c 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java
@@ -86,7 +86,6 @@ public class IgniteCacheMultiTxLockSelfTest extends 
GridCommonAbstractTest {
 plc.setMaxSize(10);
 
 ccfg.setEvictionPolicy(plc);
-ccfg.setEvictSynchronized(true);
 
 c.setCacheConfiguration(ccfg);
 
@@ -95,6 +94,11 @@ public class IgniteCacheMultiTxLockSelfTest extends 
GridCommonAbstractTest {
 return c;
 }
 
+/** {@inheritDoc} */
+@Override protected long getTestTimeout() {
+return 60_000;
+}
+
 /**
  * @throws Exception If failed.
  */

http://git-wip-us.apache.org/repos/asf/ignite/blob/e88dbd87/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
index 0513786..e7eb540 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
@@ -44,7 +44,7 @@ public class IgniteCacheRestartTestSuite2 extends TestSuite {
 suite.addTestSuite(IgniteCachePutAllRestartTest.class);
 suite.addTestSuite(GridCachePutAllFailoverSelfTest.class);
 
-suite.addTestSuite(IgniteBinaryMetadataUpdateNodeRestartTest.class);
+// suite.addTestSuite(IgniteBinaryMetadataUpdateNodeRestartTest.class);
 
 suite.addTestSuite(IgniteCacheGetRestartTest.class);
 



ignite git commit: ignite-comm-balance-master

2016-12-07 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master 18d0d0d94 -> d8ce5afc5


ignite-comm-balance-master


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

Branch: refs/heads/ignite-comm-balance-master
Commit: d8ce5afc5d71225131da2a1a3c7ed4b1d22c9549
Parents: 18d0d0d
Author: sboikov 
Authored: Wed Dec 7 18:37:30 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 18:37:30 2016 +0300

--
 .../datastreamer/DataStreamProcessor.java   | 22 +---
 1 file changed, 15 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/d8ce5afc/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
index 32fda87..fee4dd6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamProcessor.java
@@ -328,6 +328,8 @@ public class DataStreamProcessor extends 
GridProcessorAdapter {
 if (!allowOverwrite)
 cctx.topology().readLock();
 
+GridDhtTopologyFuture topWaitFut = null;
+
 try {
 GridDhtTopologyFuture fut = cctx.topologyVersionFuture();
 
@@ -352,19 +354,25 @@ public class DataStreamProcessor extends 
GridProcessorAdapter {
 
 waitFut = allowOverwrite ? null : 
cctx.mvcc().addDataStreamerFuture(topVer);
 }
-else {
-fut.listen(new 
IgniteInClosure>() {
-@Override public void 
apply(IgniteInternalFuture e) {
-localUpdate(nodeId, req, updater, topic);
-}
-});
-}
+else
+topWaitFut = fut;
 }
 finally {
 if (!allowOverwrite)
 cctx.topology().readUnlock();
 }
 
+if (topWaitFut != null) {
+// Need call 'listen' after topology read lock is released.
+topWaitFut.listen(new 
IgniteInClosure>() {
+@Override public void 
apply(IgniteInternalFuture e) {
+localUpdate(nodeId, req, updater, topic);
+}
+});
+
+return;
+}
+
 if (job != null) {
 try {
 job.call();



[1/2] ignite git commit: ignite-comm-balance

2016-12-07 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master 2b561f775 -> 892c82997


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 3d33d241bf7bc018092b6129f6306a2b79e3ec2f
Parents: d6a9767
Author: sboikov 
Authored: Wed Dec 7 12:30:29 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 14:54:28 2016 +0300

--
 .../ignite/internal/IgniteInternalFuture.java   |  11 ++
 .../transactions/IgniteTxLocalAdapter.java  |   8 +-
 .../processors/igfs/IgfsDataManager.java|   6 +-
 .../platform/compute/PlatformCompute.java   |   6 +
 .../util/future/GridFinishedFuture.java |  24 
 .../internal/util/future/GridFutureAdapter.java |  15 ++-
 .../util/future/GridFutureChainListener.java|  30 -
 .../TxDeadlockDetectionNoHangsTest.java |   2 +-
 .../util/future/GridFutureAdapterSelfTest.java  | 122 ++-
 9 files changed, 157 insertions(+), 67 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/3d33d241/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
index b80a755..789556d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal;
 
+import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import org.apache.ignite.IgniteCheckedException;
@@ -133,6 +134,16 @@ public interface IgniteInternalFuture {
 public  IgniteInternalFuture chain(IgniteClosure, T> doneCb);
 
 /**
+ * Make a chained future to convert result of this future (when complete) 
into a new format.
+ * It is guaranteed that done callback will be called only ONCE.
+ *
+ * @param doneCb Done callback that is applied to this future when it 
finishes to produce chained future result.
+ * @param exec Executor to run callback.
+ * @return Chained future that finishes after this future completes and 
done callback is called.
+ */
+public  IgniteInternalFuture chain(IgniteClosure, T> doneCb, Executor exec);
+
+/**
  * @return Error value if future has already been completed with error.
  */
 public Throwable error();

http://git-wip-us.apache.org/repos/asf/ignite/blob/3d33d241/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 6d21dcf..393fb1a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -391,7 +391,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 /** {@inheritDoc} */
 @Override public IgniteInternalFuture loadMissing(
 final GridCacheContext cacheCtx,
-AffinityTopologyVersion topVer,
+final AffinityTopologyVersion topVer,
 final boolean readThrough,
 boolean async,
 final Collection keys,
@@ -472,7 +472,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 CacheObject cacheVal = cacheCtx.toCacheObject(val);
 
 while (true) {
-GridCacheEntryEx entry = 
cacheCtx.cache().entryEx(key);
+GridCacheEntryEx entry = 
cacheCtx.cache().entryEx(key, topVer);
 
 try {
 GridCacheVersion setVer = 
entry.versionedValue(cacheVal, ver, null);
@@ -1507,7 +1507,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 
 assert txEntry != null || readCommitted() || skipVals;
 
-GridCacheEntryEx e = txEntry == null ? 
entryEx(cacheCtx, txKey) : txEntry.cached();
+  

ignite git commit: ignite-comm-balance

2016-12-07 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master d6a976795 -> 2b561f775


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 2b561f7754c41ac7c972224b059e94c553cea427
Parents: d6a9767
Author: sboikov 
Authored: Wed Dec 7 12:30:29 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 14:28:34 2016 +0300

--
 .../ignite/internal/IgniteInternalFuture.java   | 11 +++
 .../transactions/IgniteTxLocalAdapter.java  |  8 +++---
 .../processors/igfs/IgfsDataManager.java|  6 +++-
 .../platform/compute/PlatformCompute.java   |  6 
 .../util/future/GridFinishedFuture.java | 24 
 .../internal/util/future/GridFutureAdapter.java | 15 --
 .../util/future/GridFutureChainListener.java| 30 ++--
 .../TxDeadlockDetectionNoHangsTest.java |  2 +-
 8 files changed, 90 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/2b561f77/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
index b80a755..789556d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal;
 
+import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import org.apache.ignite.IgniteCheckedException;
@@ -133,6 +134,16 @@ public interface IgniteInternalFuture {
 public  IgniteInternalFuture chain(IgniteClosure, T> doneCb);
 
 /**
+ * Make a chained future to convert result of this future (when complete) 
into a new format.
+ * It is guaranteed that done callback will be called only ONCE.
+ *
+ * @param doneCb Done callback that is applied to this future when it 
finishes to produce chained future result.
+ * @param exec Executor to run callback.
+ * @return Chained future that finishes after this future completes and 
done callback is called.
+ */
+public  IgniteInternalFuture chain(IgniteClosure, T> doneCb, Executor exec);
+
+/**
  * @return Error value if future has already been completed with error.
  */
 public Throwable error();

http://git-wip-us.apache.org/repos/asf/ignite/blob/2b561f77/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 6d21dcf..393fb1a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -391,7 +391,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 /** {@inheritDoc} */
 @Override public IgniteInternalFuture loadMissing(
 final GridCacheContext cacheCtx,
-AffinityTopologyVersion topVer,
+final AffinityTopologyVersion topVer,
 final boolean readThrough,
 boolean async,
 final Collection keys,
@@ -472,7 +472,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 CacheObject cacheVal = cacheCtx.toCacheObject(val);
 
 while (true) {
-GridCacheEntryEx entry = 
cacheCtx.cache().entryEx(key);
+GridCacheEntryEx entry = 
cacheCtx.cache().entryEx(key, topVer);
 
 try {
 GridCacheVersion setVer = 
entry.versionedValue(cacheVal, ver, null);
@@ -1507,7 +1507,7 @@ public abstract class IgniteTxLocalAdapter extends 
IgniteTxAdapter implements Ig
 
 assert txEntry != null || readCommitted() || skipVals;
 
-GridCacheEntryEx e = txEntry == null ? 
entryEx(cacheCtx, txKey) : txEntry.cached();
+GridCacheEntryEx e

ignite git commit: ignite-comm-balance

2016-12-07 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master d15a0a748 -> d6a976795


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: d6a976795087887c871037238036b72aed248d36
Parents: d15a0a7
Author: sboikov 
Authored: Wed Dec 7 11:41:55 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 11:41:55 2016 +0300

--
 .../cache/CrossCacheTxRandomOperationsTest.java | 23 +---
 1 file changed, 20 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/d6a97679/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
index a07491c..eaa9923 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
@@ -175,9 +175,17 @@ public class CrossCacheTxRandomOperationsTest extends 
GridCommonAbstractTest {
 }
 
 /**
+ * @param cacheMode Cache mode.
+ * @param writeSync Write synchronization mode.
+ * @param fairAff Fair affinity flag.
+ * @param ignite Node to use.
+ * @param name Cache name.
  */
-protected void createCache(CacheMode cacheMode, 
CacheWriteSynchronizationMode writeSync, boolean fairAff,
-Ignite ignite, String name) {
+protected void createCache(CacheMode cacheMode,
+CacheWriteSynchronizationMode writeSync,
+boolean fairAff,
+Ignite ignite,
+String name) {
 ignite.createCache(cacheConfiguration(name, cacheMode, writeSync, 
fairAff));
 }
 
@@ -274,9 +282,18 @@ public class CrossCacheTxRandomOperationsTest extends 
GridCommonAbstractTest {
 
 boolean checkData = fullSync && !optimistic;
 
+long stopTime = System.currentTimeMillis() + 10_000;
+
 for (int i = 0; i < 10_000; i++) {
-if (i % 100 == 0)
+if (i % 100 == 0) {
+if (System.currentTimeMillis() > stopTime) {
+log.info("Stop on timeout, iteration: " + i);
+
+break;
+}
+
 log.info("Iteration: " + i);
+}
 
 boolean rollback = i % 10 == 0;
 



ignite git commit: ignite-comm-balance

2016-12-07 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master c449eeb66 -> d15a0a748


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: d15a0a74839ff30d6116f90e5825276a09f20520
Parents: c449eeb
Author: sboikov 
Authored: Wed Dec 7 11:23:09 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 11:23:09 2016 +0300

--
 .../cache/GridAbstractCacheInterceptorRebalanceTest.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/d15a0a74/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
index 9405a19..3a2bc81 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridAbstractCacheInterceptorRebalanceTest.java
@@ -200,7 +200,9 @@ public abstract class 
GridAbstractCacheInterceptorRebalanceTest extends GridComm
 private void testRebalance(final Operation operation) throws Exception {
 interceptor = new RebalanceUpdateInterceptor();
 
-for (int iter = 0; iter < TEST_ITERATIONS; iter++) {
+long stopTime = System.currentTimeMillis() + 2 * 60_000;
+
+for (int iter = 0; iter < TEST_ITERATIONS && 
System.currentTimeMillis() < stopTime; iter++) {
 log.info("Iteration: " + iter);
 
 failed = false;



[1/3] ignite git commit: ignite-comm-balance

2016-12-07 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master 55e7f9be5 -> c449eeb66


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 5a3ba538b814320ec532801a79c92af786c12ad0
Parents: 55e7f9b
Author: sboikov 
Authored: Wed Dec 7 10:54:09 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 10:54:09 2016 +0300

--
 .../processors/cache/distributed/dht/GridDhtCacheAdapter.java | 3 ++-
 .../processors/cache/distributed/IgniteCacheCreatePutTest.java| 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/5a3ba538/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index 35e6267..519d0fc 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -218,7 +218,8 @@ public abstract class GridDhtCacheAdapter extends 
GridDistributedCacheAdap
 @Override public void onKernalStart() throws IgniteCheckedException {
 super.onKernalStart();
 
-preldr.onKernalStart();
+if (preldr != null)
+preldr.onKernalStart();
 }
 
 /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/5a3ba538/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
index 2f700f3..a91de67 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheCreatePutTest.java
@@ -107,7 +107,7 @@ public class IgniteCacheCreatePutTest extends 
GridCommonAbstractTest {
 try {
 int iter = 0;
 
-while (System.currentTimeMillis() < stopTime) {
+while (System.currentTimeMillis() < stopTime && iter < 5) {
 log.info("Iteration: " + iter++);
 
 try {



ignite git commit: ignite-comm-balance

2016-12-06 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master e6bc6c255 -> 55e7f9be5


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 55e7f9be542e263e62c87ace54569b819e413b2b
Parents: e6bc6c2
Author: sboikov 
Authored: Wed Dec 7 10:27:44 2016 +0300
Committer: sboikov 
Committed: Wed Dec 7 10:27:44 2016 +0300

--
 .../apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/55e7f9be/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index fa8da9a..c08939c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -1188,7 +1188,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
  * Set this to {@code true} if {@code TcpCommunicationSpi} should
  * maintain connection for outgoing and incoming messages separately.
  * In this case total number of connections between local and each remote 
node
- * is {@link #connectionsPerNode()} * 2.
+ * is {@link #getConnectionsPerNode()} * 2.
  * 
  * Set this to {@code false} if each connection of {@link 
#getConnectionsPerNode()}
  * should be used for outgoing and incoming messages. In this case total 
number



ignite git commit: ignite-comm-balance

2016-12-06 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master 50cbdbf03 -> e6bc6c255


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: e6bc6c255da4a5cb80950643db404edcf33064cc
Parents: 50cbdbf
Author: sboikov 
Authored: Tue Dec 6 19:04:23 2016 +0300
Committer: sboikov 
Committed: Tue Dec 6 19:04:23 2016 +0300

--
 .../apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/e6bc6c25/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index b3f95c3..fa8da9a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -243,7 +243,7 @@ import static 
org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.SSL_META
 public class TcpCommunicationSpi extends IgniteSpiAdapter
 implements CommunicationSpi, TcpCommunicationSpiMBean {
 /** */
-private static final IgniteProductVersion MULTIPLE_CONN_SINCE_VER = 
IgniteProductVersion.fromString("1.8");
+private static final IgniteProductVersion MULTIPLE_CONN_SINCE_VER = 
IgniteProductVersion.fromString("1.8.0");
 
 /** IPC error message. */
 public static final String OUT_OF_RESOURCES_TCP_MSG = "Failed to allocate 
shared memory segment " +



ignite git commit: ignite-comm-balance

2016-12-06 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master dd9f3c2ba -> 50cbdbf03


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 50cbdbf03ffdcd8d93e392aed86aa5f836e31713
Parents: dd9f3c2
Author: sboikov 
Authored: Tue Dec 6 16:30:33 2016 +0300
Committer: sboikov 
Committed: Tue Dec 6 16:30:33 2016 +0300

--
 .../apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/50cbdbf0/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 8a1864e..b3f95c3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -243,7 +243,7 @@ import static 
org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.SSL_META
 public class TcpCommunicationSpi extends IgniteSpiAdapter
 implements CommunicationSpi, TcpCommunicationSpiMBean {
 /** */
-private static final IgniteProductVersion MULTIPLE_CONN_SINCE_VER = 
IgniteProductVersion.fromString("1.7.3");
+private static final IgniteProductVersion MULTIPLE_CONN_SINCE_VER = 
IgniteProductVersion.fromString("1.8");
 
 /** IPC error message. */
 public static final String OUT_OF_RESOURCES_TCP_MSG = "Failed to allocate 
shared memory segment " +



[4/6] ignite git commit: ignite-comm-balance

2016-12-06 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 68bac334e447983bba8febc2b35956b504582993
Parents: c17dc3c
Author: sboikov 
Authored: Tue Dec 6 13:52:31 2016 +0300
Committer: sboikov 
Committed: Tue Dec 6 13:52:31 2016 +0300

--
 ...erNoStripedPoolMultiNodeFullApiSelfTest.java | 35 
 ...edNoStripedPoolMultiNodeFullApiSelfTest.java | 35 
 .../IgniteCacheFullApiSelfTestSuite.java|  6 
 3 files changed, 76 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/68bac334/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicPrimaryWriteOrderNoStripedPoolMultiNodeFullApiSelfTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicPrimaryWriteOrderNoStripedPoolMultiNodeFullApiSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicPrimaryWriteOrderNoStripedPoolMultiNodeFullApiSelfTest.java
new file mode 100644
index 000..e8175e5
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheAtomicPrimaryWriteOrderNoStripedPoolMultiNodeFullApiSelfTest.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.distributed.near;
+
+import org.apache.ignite.configuration.IgniteConfiguration;
+
+/**
+ *
+ */
+public class 
GridCacheAtomicPrimaryWriteOrderNoStripedPoolMultiNodeFullApiSelfTest extends
+GridCacheAtomicPrimaryWriteOrderMultiNodeFullApiSelfTest {
+/** {@inheritDoc} */
+@Override protected IgniteConfiguration getConfiguration(String gridName) 
throws Exception {
+IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+cfg.setStripedPoolSize(-1);
+
+return cfg;
+}
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/68bac334/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedNoStripedPoolMultiNodeFullApiSelfTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedNoStripedPoolMultiNodeFullApiSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedNoStripedPoolMultiNodeFullApiSelfTest.java
new file mode 100644
index 000..05fe85f
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedNoStripedPoolMultiNodeFullApiSelfTest.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.distributed.near;
+
+import org.apache.ignite.configuration.IgniteConfiguration;
+
+/**
+ *
+ */
+public cla

[1/3] ignite git commit: ignite-comm-balance

2016-12-06 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master b4fae204b -> c17dc3c30


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 794b3c066ad2f8f57d5185a4f463fdbffd8c5266
Parents: b4d9a22
Author: sboikov 
Authored: Tue Dec 6 13:21:18 2016 +0300
Committer: sboikov 
Committed: Tue Dec 6 13:21:18 2016 +0300

--
 .../communication/IgniteIoTestMessagesTest.java | 95 
 .../ignite/testsuites/IgniteCacheTestSuite.java |  2 +
 2 files changed, 97 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/794b3c06/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessagesTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessagesTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessagesTest.java
new file mode 100644
index 000..b644878
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteIoTestMessagesTest.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.managers.communication;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.util.typedef.G;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+
+/**
+ *
+ */
+public class IgniteIoTestMessagesTest extends GridCommonAbstractTest {
+/** */
+private static TcpDiscoveryIpFinder ipFinder = new 
TcpDiscoveryVmIpFinder(true);
+
+/** */
+private boolean client;
+
+/** {@inheritDoc} */
+@Override protected IgniteConfiguration getConfiguration(String gridName) 
throws Exception {
+IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(ipFinder);
+
+cfg.setClientMode(client);
+
+return cfg;
+}
+
+/** {@inheritDoc} */
+@Override protected void beforeTestsStarted() throws Exception {
+super.beforeTestsStarted();
+
+startGrids(3);
+
+client = true;
+
+startGrid(3);
+
+startGrid(4);
+}
+
+/** {@inheritDoc} */
+@Override protected void afterTestsStopped() throws Exception {
+stopAllGrids();
+
+super.afterTestsStopped();
+}
+
+/**
+ * @throws Exception If failed.
+ */
+public void testIoTestMessages() throws Exception {
+for (Ignite node : G.allGrids()) {
+IgniteKernal ignite = (IgniteKernal)node;
+
+List rmts = new 
ArrayList<>(ignite.cluster().forRemotes().nodes());
+
+assertEquals(4, rmts.size());
+
+for (ClusterNode rmt : rmts) {
+ignite.sendIoTest(rmt, new byte[1024], false);
+
+ignite.sendIoTest(rmt, new byte[1024], true);
+
+ignite.sendIoTest(rmts, new byte[1024], false);
+
+ignite.sendIoTest(rmts, new byte[1024], true);
+}
+}
+}
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/794b3c06/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/t

ignite git commit: ignite-comm-balance

2016-12-06 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master d756f6799 -> b4d9a22d0


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: b4d9a22d0232aeb493bb955efd4a5660e5ed058b
Parents: d756f67
Author: sboikov 
Authored: Tue Dec 6 12:59:38 2016 +0300
Committer: sboikov 
Committed: Tue Dec 6 12:59:38 2016 +0300

--
 .../internal/util/nio/GridCommunicationClient.java   |  4 ++--
 .../apache/ignite/internal/util/nio/GridNioServer.java   |  6 +++---
 .../internal/util/nio/GridSelectorNioSessionImpl.java|  8 
 .../spi/communication/tcp/TcpCommunicationSpi.java   | 11 ---
 ...GridTcpCommunicationSpiConcurrentConnectSelfTest.java |  2 +-
 5 files changed, 14 insertions(+), 17 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/b4d9a22d/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridCommunicationClient.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridCommunicationClient.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridCommunicationClient.java
index 312a20e..71b2c24 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridCommunicationClient.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridCommunicationClient.java
@@ -96,11 +96,11 @@ public interface GridCommunicationClient {
 /**
  * @param nodeId Remote node ID. Provided only for sync clients.
  * @param msg Message to send.
- * @param closure Ack closure.
+ * @param c Ack closure.
  * @throws IgniteCheckedException If failed.
  * @return {@code True} if should try to resend message.
  */
-public boolean sendMessage(@Nullable UUID nodeId, Message msg, @Nullable 
IgniteInClosure closure)
+public boolean sendMessage(@Nullable UUID nodeId, Message msg, @Nullable 
IgniteInClosure c)
 throws IgniteCheckedException;
 
 /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/b4d9a22d/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index e1a57b1..4dd03a1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -250,7 +250,7 @@ public class GridNioServer {
  * @param writerFactory Writer factory.
  * @param skipRecoveryPred Skip recovery predicate.
  * @param msgQueueLsnr Message queue size listener.
- * @param balancing Balancing flag.
+ * @param balancing NIO sessions balancing flag.
  * @param filters Filters for this server.
  * @throws IgniteCheckedException If failed.
  */
@@ -3124,7 +3124,7 @@ public class GridNioServer {
 /** */
 private long selectorSpins;
 
-/** */
+/** NIO sessions balancing flag. */
 private boolean balancing;
 
 /**
@@ -3169,7 +3169,7 @@ public class GridNioServer {
 }
 
 /**
- * @param balancing Balancing flag.
+ * @param balancing NIO sessions balancing flag.
  * @return This for chaining.
  */
 public Builder balancing(boolean balancing) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/b4d9a22d/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
index 2d2fe47..66f9176 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
@@ -175,8 +175,6 @@ class GridSelectorNioSessionImpl extends GridNioSessionImpl 
{
  */
 boolean offerMove(GridNioWorker from, GridNioServer.SessionChangeRequest 
fut) {
 synchronized (this) {
-// U.debug(log, "Offered move [ses=" + this + ", fut=" + fut + 
']');
-
 if (log.isDebugEnabled())
 log.debug("Offered move [

ignite git commit: ignite-comm-balance

2016-12-06 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance-master f11bb6bcd -> 8f45a3bbb


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 8f45a3bbb95f7a572926f9d038de3df48eea7452
Parents: f11bb6b
Author: sboikov 
Authored: Tue Dec 6 11:23:49 2016 +0300
Committer: sboikov 
Committed: Tue Dec 6 11:23:49 2016 +0300

--
 .../ignite/internal/util/nio/GridNioServer.java | 18 -
 .../communication/tcp/TcpCommunicationSpi.java  | 41 +++-
 2 files changed, 22 insertions(+), 37 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/8f45a3bb/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 61c438f..e1a57b1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -250,6 +250,7 @@ public class GridNioServer {
  * @param writerFactory Writer factory.
  * @param skipRecoveryPred Skip recovery predicate.
  * @param msgQueueLsnr Message queue size listener.
+ * @param balancing Balancing flag.
  * @param filters Filters for this server.
  * @throws IgniteCheckedException If failed.
  */
@@ -274,6 +275,7 @@ public class GridNioServer {
 GridNioMessageWriterFactory writerFactory,
 IgnitePredicate skipRecoveryPred,
 IgniteBiInClosure msgQueueLsnr,
+boolean balancing,
 GridNioFilter... filters
 ) throws IgniteCheckedException {
 if (port != -1)
@@ -357,7 +359,7 @@ public class GridNioServer {
 
 IgniteRunnable balancer0 = null;
 
-if (balancePeriod > 0) {
+if (balancing && balancePeriod > 0) {
 boolean rndBalance = 
IgniteSystemProperties.getBoolean(IGNITE_IO_BALANCE_RANDOM_BALANCE, false);
 
 balancer0 = rndBalance ? new RandomBalancer() : new 
SizeBasedBalancer(balancePeriod);
@@ -3122,6 +3124,9 @@ public class GridNioServer {
 /** */
 private long selectorSpins;
 
+/** */
+private boolean balancing;
+
 /**
  * Finishes building the instance.
  *
@@ -3150,6 +3155,7 @@ public class GridNioServer {
 writerFactory,
 skipRecoveryPred,
 msgQueueLsnr,
+balancing,
 filters != null ? Arrays.copyOf(filters, filters.length) : 
EMPTY_FILTERS
 );
 
@@ -3163,6 +3169,16 @@ public class GridNioServer {
 }
 
 /**
+ * @param balancing Balancing flag.
+ * @return This for chaining.
+ */
+public Builder balancing(boolean balancing) {
+this.balancing = balancing;
+
+return this;
+}
+
+/**
  * @param addr Local address.
  * @return This for chaining.
  */

http://git-wip-us.apache.org/repos/asf/ignite/blob/8f45a3bb/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 675f414..d8a6344 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -1754,43 +1754,11 @@ public class TcpCommunicationSpi extends 
IgniteSpiAdapter
 }
 
 if (connectionsPerNode > 1) {
-int idxMode = IgniteSystemProperties.getInteger("CONN_IDX_MODE", 
0);
-
-switch (idxMode) {
-case 0: {
-connPlc = new ConnectionPolicy() {
-@Override public int connectionIndex() {
-return (int)(Thread.currentThread().getId() % 
connectionsPerNode);
-}
-};
-
-break;
-}
-
-case 1: {
-connPlc = new ConnectionPolicy() {
-@Override public int connectionIndex() {
-Integer threadIdx = thre

ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-opts2 072f5a72b -> 88a1ccb7f


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-opts2
Commit: 88a1ccb7f61b8e18af3f85177c935212b1ef4568
Parents: 072f5a7
Author: sboikov 
Authored: Fri Sep 23 19:00:44 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 19:00:44 2016 +0300

--
 .../communication/GridIoMessageFactory.java | 10 +++---
 .../ignite/internal/util/nio/GridNioServer.java | 34 
 .../communication/tcp/TcpCommunicationSpi.java  |  5 +--
 .../GridTcpCommunicationSpiConfigSelfTest.java  |  2 --
 ...GridTcpCommunicationSpiRecoverySelfTest.java |  3 +-
 5 files changed, 35 insertions(+), 19 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/88a1ccb7/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index 33cd752..bd6ac5b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -201,11 +201,6 @@ public class GridIoMessageFactory implements 
MessageFactory {
 
 break;
 
-case TcpCommunicationSpi.HANDSHAKE_MSG_TYPE2:
-msg = new TcpCommunicationSpi.HandshakeMessage2();
-
-break;
-
 case 0:
 msg = new GridJobCancelRequest();
 
@@ -761,6 +756,11 @@ public class GridIoMessageFactory implements 
MessageFactory {
 
 break;
 
+case 125:
+msg = new TcpCommunicationSpi.HandshakeMessage2();
+
+break;
+
 // [-3..119] [124-125] - this
 // [120..123] - DR
 // [-4..-22, -30..-35] - SQL

http://git-wip-us.apache.org/repos/asf/ignite/blob/88a1ccb7/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 83ed513e..8ad7bde 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -45,7 +45,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteLogger;
@@ -147,13 +146,13 @@ public class GridNioServer {
 /** Flag indicating if this server should use direct buffers. */
 private final boolean directBuf;
 
-/** Index to select which thread will serve next in socket channel. Using 
round-robin balancing. */
+/** Index to select which thread will serve next incoming socket channel. 
Using round-robin balancing. */
 @GridToStringExclude
-private final AtomicInteger readBalanceIdx = new AtomicInteger();
+private int readBalanceIdx;
 
 /** Index to select which thread will serve next out socket channel. Using 
round-robin balancing. */
 @GridToStringExclude
-private final AtomicInteger writeBalanceIdx = new AtomicInteger(1);
+private int writeBalanceIdx = 1;
 
 /** Tcp no delay flag. */
 private final boolean tcpNoDelay;
@@ -691,9 +690,32 @@ public class GridNioServer {
 assert req.operation() == NioOperation.REGISTER : req;
 assert req.socketChannel() != null : req;
 
-int balanceIdx = req.accepted() ? readBalanceIdx.getAndAdd(2) : 
writeBalanceIdx.getAndAdd(2);
+int workes = clientWorkers.size();
 
-clientWorkers.get(balanceIdx & (clientWorkers.size() - 1)).offer(req);
+int balanceIdx;
+
+if (workes > 1) {
+if (req.accepted()) {
+balanceIdx = readBalanceIdx;
+
+readBalanceIdx += 2;
+
+if (readBalanceIdx >= workes)
+readBalanceIdx = 0;
+}
+else {
+balanceIdx = writeBala

[26/27] ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance
Commit: 88a1ccb7f61b8e18af3f85177c935212b1ef4568
Parents: 072f5a7
Author: sboikov 
Authored: Fri Sep 23 19:00:44 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 19:00:44 2016 +0300

--
 .../communication/GridIoMessageFactory.java | 10 +++---
 .../ignite/internal/util/nio/GridNioServer.java | 34 
 .../communication/tcp/TcpCommunicationSpi.java  |  5 +--
 .../GridTcpCommunicationSpiConfigSelfTest.java  |  2 --
 ...GridTcpCommunicationSpiRecoverySelfTest.java |  3 +-
 5 files changed, 35 insertions(+), 19 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/88a1ccb7/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
index 33cd752..bd6ac5b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessageFactory.java
@@ -201,11 +201,6 @@ public class GridIoMessageFactory implements 
MessageFactory {
 
 break;
 
-case TcpCommunicationSpi.HANDSHAKE_MSG_TYPE2:
-msg = new TcpCommunicationSpi.HandshakeMessage2();
-
-break;
-
 case 0:
 msg = new GridJobCancelRequest();
 
@@ -761,6 +756,11 @@ public class GridIoMessageFactory implements 
MessageFactory {
 
 break;
 
+case 125:
+msg = new TcpCommunicationSpi.HandshakeMessage2();
+
+break;
+
 // [-3..119] [124-125] - this
 // [120..123] - DR
 // [-4..-22, -30..-35] - SQL

http://git-wip-us.apache.org/repos/asf/ignite/blob/88a1ccb7/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 83ed513e..8ad7bde 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -45,7 +45,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteLogger;
@@ -147,13 +146,13 @@ public class GridNioServer {
 /** Flag indicating if this server should use direct buffers. */
 private final boolean directBuf;
 
-/** Index to select which thread will serve next in socket channel. Using 
round-robin balancing. */
+/** Index to select which thread will serve next incoming socket channel. 
Using round-robin balancing. */
 @GridToStringExclude
-private final AtomicInteger readBalanceIdx = new AtomicInteger();
+private int readBalanceIdx;
 
 /** Index to select which thread will serve next out socket channel. Using 
round-robin balancing. */
 @GridToStringExclude
-private final AtomicInteger writeBalanceIdx = new AtomicInteger(1);
+private int writeBalanceIdx = 1;
 
 /** Tcp no delay flag. */
 private final boolean tcpNoDelay;
@@ -691,9 +690,32 @@ public class GridNioServer {
 assert req.operation() == NioOperation.REGISTER : req;
 assert req.socketChannel() != null : req;
 
-int balanceIdx = req.accepted() ? readBalanceIdx.getAndAdd(2) : 
writeBalanceIdx.getAndAdd(2);
+int workes = clientWorkers.size();
 
-clientWorkers.get(balanceIdx & (clientWorkers.size() - 1)).offer(req);
+int balanceIdx;
+
+if (workes > 1) {
+if (req.accepted()) {
+balanceIdx = readBalanceIdx;
+
+readBalanceIdx += 2;
+
+if (readBalanceIdx >= workes)
+readBalanceIdx = 0;
+}
+else {
+balanceIdx = writeBalanceIdx;
+
+writeBalanceIdx += 2;
+
+if (writeBalanceIdx >= 

[24/27] ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance
Commit: bc2516fec62a827d1a4a6b1d9b884470c8bd8f76
Parents: dbfd6ea
Author: sboikov 
Authored: Fri Sep 23 18:23:05 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 18:23:05 2016 +0300

--
 .../apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/bc2516fe/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 92022df..d3f5bfb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -314,7 +314,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
 public static final long DFLT_SOCK_WRITE_TIMEOUT = 2000;
 
 /** Default connections per node. */
-public static final int DFLT_CONN_PER_NODE = 2;
+public static final int DFLT_CONN_PER_NODE = 1;
 
 /** No-op runnable. */
 private static final IgniteRunnable NOOP = new IgniteRunnable() {



ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-opts2 dbfd6eadf -> bc2516fec


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-opts2
Commit: bc2516fec62a827d1a4a6b1d9b884470c8bd8f76
Parents: dbfd6ea
Author: sboikov 
Authored: Fri Sep 23 18:23:05 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 18:23:05 2016 +0300

--
 .../apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/bc2516fe/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 92022df..d3f5bfb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -314,7 +314,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
 public static final long DFLT_SOCK_WRITE_TIMEOUT = 2000;
 
 /** Default connections per node. */
-public static final int DFLT_CONN_PER_NODE = 2;
+public static final int DFLT_CONN_PER_NODE = 1;
 
 /** No-op runnable. */
 private static final IgniteRunnable NOOP = new IgniteRunnable() {



ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance 2518c8168 -> 928c805dc


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance
Commit: 928c805dcf2bf84d4f58c7c8ce560d1a9b3a9a4f
Parents: 2518c81
Author: sboikov 
Authored: Fri Sep 23 17:51:29 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 17:58:11 2016 +0300

--
 .../apache/ignite/IgniteSystemProperties.java   |   3 +
 .../ignite/internal/util/nio/GridNioServer.java | 197 +--
 .../internal/util/nio/GridNioSessionImpl.java   |  13 +-
 .../ignite/internal/util/nio/GridNioWorker.java |   8 +-
 .../util/nio/GridSelectorNioSessionImpl.java|  12 +-
 .../IgniteCommunicationBalanceTest.java |  93 +
 6 files changed, 126 insertions(+), 200 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/928c805d/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 7c428a6..f28c806 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -461,6 +461,9 @@ public final class IgniteSystemProperties {
 @Deprecated
 public static final String IGNITE_BINARY_DONT_WRAP_TREE_STRUCTURES = 
"IGNITE_BINARY_DONT_WRAP_TREE_STRUCTURES";
 
+/** */
+public static final String IGNITE_IO_BALANCE_PERIOD = 
"IGNITE_IO_BALANCE_PERIOD";
+
 /**
  * Enforces singleton.
  */

http://git-wip-us.apache.org/repos/asf/ignite/blob/928c805d/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 33e227a..bcc5bf1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal.util.nio;
 
 import java.io.IOException;
-import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
@@ -46,6 +45,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 import org.apache.ignite.IgniteCheckedException;
@@ -67,6 +67,7 @@ import org.apache.ignite.internal.util.worker.GridWorker;
 import org.apache.ignite.lang.IgniteBiInClosure;
 import org.apache.ignite.lang.IgniteInClosure;
 import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.lang.IgniteRunnable;
 import org.apache.ignite.plugin.extensions.communication.Message;
 import org.apache.ignite.plugin.extensions.communication.MessageReader;
 import org.apache.ignite.plugin.extensions.communication.MessageWriter;
@@ -91,10 +92,7 @@ import static 
org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.NIO_OPER
  */
 public class GridNioServer {
 /** */
-public static final String IGNITE_NIO_SES_BALANCER_CLASS_NAME = 
"IGNITE_NIO_SES_BALANCER_CLASS_NAME";
-
-/** */
-public static final String IGNITE_NIO_SES_BALANCER_BALANCE_PERIOD = 
"IGNITE_NIO_SES_BALANCER_BALANCE_PERIOD";
+public static final String IGNITE_IO_BALANCE_RANDOM_BALANCE = 
"IGNITE_IO_BALANCE_RANDOM_BALANCER";
 
 /** Default session write timeout. */
 public static final int DFLT_SES_WRITE_TIMEOUT = 5000;
@@ -225,7 +223,7 @@ public class GridNioServer {
 private final AtomicLong writerMoveCnt = new AtomicLong();
 
 /** */
-private final Balancer balancer;
+private final IgniteRunnable balancer;
 
 /**
  * @param addr Address.
@@ -339,36 +337,29 @@ public class GridNioServer {
 
 this.skipRecoveryPred = skipRecoveryPred != null ? skipRecoveryPred : 
F.alwaysFalse();
 
-boolean balanceEnabled = 
IgniteSystemProperties.getBoolean("IGNITE_NIO_SES_BALANCE_ENABLED", true);
-
-Balancer balancer0 = null;
+long balancePeriod = 
IgniteSystemProperties.getLong(IgniteSystemProperties.IGNITE_IO_BALANCE_PERIOD, 
500

ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance d6240f907 -> 2518c8168


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance
Commit: 2518c816894f78a5fed0708b27893914e4110c62
Parents: d6240f9
Author: sboikov 
Authored: Fri Sep 23 14:35:33 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 17:32:20 2016 +0300

--
 .../ignite/internal/util/nio/GridNioServer.java |  82 
 .../util/nio/GridSelectorNioSessionImpl.java|  18 +++
 .../communication/tcp/TcpCommunicationSpi.java  |   2 +-
 .../IgniteCommunicationBalanceTest.java |  39 +++---
 .../testsuites/IgniteCacheTestSuite2.java   | 128 +--
 5 files changed, 220 insertions(+), 49 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/2518c816/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 326d0ad..33e227a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -604,7 +604,12 @@ public class GridNioServer {
 assert to >= 0 && to < clientWorkers.size() : to;
 assert from != to;
 
-clientWorkers.get(from).offer(new 
SessionMoveFuture((GridSelectorNioSessionImpl)ses, to));
+GridSelectorNioSessionImpl ses0 = (GridSelectorNioSessionImpl)ses;
+
+SessionMoveFuture fut = new SessionMoveFuture(ses0, to);
+
+if (!ses0.offerMove(clientWorkers.get(from), fut))
+fut.onDone(false);
 }
 
 /**
@@ -990,6 +995,7 @@ public class GridNioServer {
 metricsLsnr.onBytesReceived(cnt);
 
 ses.bytesReceived(cnt);
+
 onRead(cnt);
 
 readBuf.flip();
@@ -1343,15 +1349,22 @@ public class GridNioServer {
 /** Worker index. */
 private final int idx;
 
-/** Sessions assigned to this worker. */
-private final GridConcurrentHashSet 
workerSessions =
-new GridConcurrentHashSet<>();
+/** */
+private long bytesRcvd;
 
-private volatile long bytesRcvd;
-private volatile long bytesSent;
+/** */
+private long bytesSent;
+
+/** */
 private volatile long bytesRcvd0;
+
+/** */
 private volatile long bytesSent0;
 
+/** Sessions assigned to this worker. */
+private final GridConcurrentHashSet 
workerSessions =
+new GridConcurrentHashSet<>();
+
 /**
  * @param idx Index of this worker in server's array.
  * @param gridName Grid name.
@@ -1468,7 +1481,7 @@ public class GridNioServer {
 List sesReqs = null;
 
 for (GridNioServer.NioOperationFuture changeReq : changeReqs) {
-if (changeReq.session() == ses) {
+if (changeReq.session() == ses && !(changeReq instanceof 
SessionMoveFuture)) {
 boolean rmv = changeReqs.remove(changeReq);
 
 assert rmv : changeReq;
@@ -2070,17 +2083,26 @@ public class GridNioServer {
  */
 protected abstract void processWrite(SelectionKey key) throws 
IOException;
 
-protected void onRead(int cnt) { // TODO
+/**
+ * @param cnt
+ */
+final void onRead(int cnt) {
 bytesRcvd += cnt;
 bytesRcvd0 += cnt;
 }
 
-protected void onWrite(int cnt) {
+/**
+ * @param cnt
+ */
+final void onWrite(int cnt) {
 bytesSent += cnt;
 bytesSent0 += cnt;
 }
 
-protected void reset0() {
+/**
+ *
+ */
+final void reset0() {
 bytesSent0 = 0;
 bytesRcvd0 = 0;
 
@@ -2266,7 +2288,7 @@ public class GridNioServer {
 /** Register read key selection. */
 REGISTER,
 
-/** */
+/** Move session between workers. */
 MOVE,
 
 /** Register write key selection. */
@@ -3001,16 +3023,22 @@ public class GridNioServer {
 for (int i = 0; i < clientWorkers.size(); i++) {
 GridNioServer.AbstractNioClientWorker worker = 
clientWorkers.get(i);
 
-if ((i & 1) == 0) {
+int sesCnt = worker.workerSessions.size();
+

ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance ff37591e4 -> d6240f907


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance
Commit: d6240f9078672feee416c3f47bf358c8a573c01b
Parents: ff37591
Author: sboikov 
Authored: Fri Sep 23 13:05:51 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 13:05:51 2016 +0300

--
 .../ignite/internal/util/nio/GridNioServer.java |  2 +-
 ...unicationBalanceMultipleConnectionsTest.java | 28 +
 .../IgniteCommunicationBalanceTest.java | 33 ++--
 .../ignite/testsuites/IgniteCacheTestSuite.java |  2 ++
 .../testsuites/IgniteCacheTestSuite2.java   |  7 +++--
 5 files changed, 58 insertions(+), 14 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/d6240f90/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 7b546ef..326d0ad 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -633,7 +633,7 @@ public class GridNioServer {
  *
  */
 public void dumpStats() {
-U.warn(log, "Server statistics [readerSesBalanceCnt=" + 
readerMoveCount() +
+U.warn(log, "NIO server statistics [readerSesBalanceCnt=" + 
readerMoveCount() +
 ", writerSesBalanceCnt=" + writerMoveCount() + ']');
 
 for (int i = 0; i < clientWorkers.size(); i++)

http://git-wip-us.apache.org/repos/asf/ignite/blob/d6240f90/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceMultipleConnectionsTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceMultipleConnectionsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceMultipleConnectionsTest.java
new file mode 100644
index 000..e95b1ec
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceMultipleConnectionsTest.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.managers.communication;
+
+/**
+ *
+ */
+public class IgniteCommunicationBalanceMultipleConnectionsTest extends 
IgniteCommunicationBalanceTest {
+/** {@inheritDoc} */
+@Override protected int connectionsPerNode() {
+return 5;
+}
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/d6240f90/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
index 2e59cb8..efe7f65 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
@@ -68,7 +68,7 @@ public class IgniteCommunicationBalanceTest extends 
GridCommonAbstractTest {
 TcpCommunicationSpi commSpi = 
((TcpCommunicationSpi)cfg.getCommunicationSpi());
 
 commSpi.setSharedMemoryPort(-1);
-commSpi.

ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance 0b6508d0d -> ff37591e4


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance
Commit: ff37591e43df6955101a21c36cbbb065fe0bb636
Parents: 0b6508d
Author: sboikov 
Authored: Fri Sep 23 12:39:00 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 12:39:53 2016 +0300

--
 .../ignite/testsuites/IgniteCacheTestSuite.java | 305 +--
 .../testsuites/IgniteCacheTestSuite2.java   | 125 +---
 2 files changed, 157 insertions(+), 273 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/ff37591e/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
index 0cbc7a5..5b24a13 100755
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
@@ -171,160 +171,157 @@ public class IgniteCacheTestSuite extends TestSuite {
 public static TestSuite suite(Set ignoredTests) throws Exception {
 TestSuite suite = new TestSuite("IgniteCache Test Suite");
 
-//suite.addTestSuite(IgniteCacheEntryListenerAtomicTest.class);
-//
suite.addTestSuite(IgniteCacheEntryListenerAtomicReplicatedTest.class);
-//suite.addTestSuite(IgniteCacheEntryListenerAtomicLocalTest.class);
-//suite.addTestSuite(IgniteCacheEntryListenerTxTest.class);
-//
suite.addTestSuite(IgniteCacheEntryListenerTxOffheapTieredTest.class);
-//
suite.addTestSuite(IgniteCacheEntryListenerTxOffheapValuesTest.class);
-//suite.addTestSuite(IgniteCacheEntryListenerTxReplicatedTest.class);
-//suite.addTestSuite(IgniteCacheEntryListenerTxLocalTest.class);
-//
suite.addTestSuite(IgniteCacheEntryListenerEagerTtlDisabledTest.class);
-//
suite.addTestSuite(IgniteCacheEntryListenerAtomicOffheapTieredTest.class);
-//
suite.addTestSuite(IgniteCacheEntryListenerAtomicOffheapValuesTest.class);
-//
-//suite.addTestSuite(IgniteClientAffinityAssignmentSelfTest.class);
-//
-//suite.addTestSuite(IgniteCacheAtomicInvokeTest.class);
-//suite.addTestSuite(IgniteCacheAtomicNearEnabledInvokeTest.class);
-//
suite.addTestSuite(IgniteCacheAtomicPrimaryWriteOrderInvokeTest.class);
-//
suite.addTestSuite(IgniteCacheAtomicPrimaryWriteOrderWithStoreInvokeTest.class);
-//suite.addTestSuite(IgniteCacheAtomicLocalInvokeTest.class);
-//suite.addTestSuite(IgniteCacheAtomicLocalWithStoreInvokeTest.class);
-//suite.addTestSuite(IgniteCacheTxInvokeTest.class);
-//suite.addTestSuite(CacheEntryProcessorNonSerializableTest.class);
-//suite.addTestSuite(IgniteCacheEntryProcessorCallTest.class);
-//GridTestUtils.addTestIfNeeded(suite, 
CacheEntryProcessorCopySelfTest.class, ignoredTests);
-//suite.addTestSuite(IgniteCacheTxNearEnabledInvokeTest.class);
-//suite.addTestSuite(IgniteCacheTxLocalInvokeTest.class);
-//suite.addTestSuite(IgniteCrossCacheTxStoreSelfTest.class);
-//
-//suite.addTestSuite(IgnitePutAllLargeBatchSelfTest.class);
-//
suite.addTestSuite(IgnitePutAllUpdateNonPreloadedPartitionSelfTest.class);
-//
-//// User's class loader tests.
-//GridTestUtils.addTestIfNeeded(suite, 
IgniteCacheAtomicExecutionContextTest.class, ignoredTests);
-//GridTestUtils.addTestIfNeeded(suite, 
IgniteCachePartitionedExecutionContextTest.class, ignoredTests);
-//GridTestUtils.addTestIfNeeded(suite, 
IgniteCacheReplicatedExecutionContextTest.class, ignoredTests);
-//GridTestUtils.addTestIfNeeded(suite, 
IgniteCacheTxExecutionContextTest.class, ignoredTests);
-//GridTestUtils.addTestIfNeeded(suite, 
IgniteCacheContinuousExecutionContextTest.class, ignoredTests);
-//GridTestUtils.addTestIfNeeded(suite, 
IgniteCacheIsolatedExecutionContextTest.class, ignoredTests);
-//GridTestUtils.addTestIfNeeded(suite, 
IgniteCacheP2PDisableExecutionContextTest.class, ignoredTests);
-//GridTestUtils.addTestIfNeeded(suite, 
IgniteCachePrivateExecutionContextTest.class, ignoredTests);
-//GridTestUtils.addTestIfNeeded(suite, 
IgniteCacheSharedExecutionContextTest.class, ignoredTests);
-//
-//// Warmup closure tests.
-//suite.addTestSuite(

ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance c2dcb255d -> 0b6508d0d


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance
Commit: 0b6508d0d6e0fec7f6001f0cb5a206c982440bd4
Parents: c2dcb25
Author: sboikov 
Authored: Fri Sep 23 12:29:22 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 12:29:22 2016 +0300

--
 .../managers/communication/IgniteCommunicationBalanceTest.java  | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/0b6508d0/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
index f6fd2c1..2e59cb8 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteCommunicationBalanceTest.java
@@ -275,6 +275,7 @@ public class IgniteCommunicationBalanceTest extends 
GridCommonAbstractTest {
  */
 public void testRandomBalance() throws Exception {
 System.setProperty(GridNioServer.IGNITE_NIO_SES_BALANCER_CLASS_NAME, 
TestBalancer.class.getName());
+
System.setProperty(GridNioServer.IGNITE_NIO_SES_BALANCER_BALANCE_PERIOD, "500");
 
 try {
 final int NODES = 10;
@@ -296,6 +297,7 @@ public class IgniteCommunicationBalanceTest extends 
GridCommonAbstractTest {
 }
 finally {
 
System.setProperty(GridNioServer.IGNITE_NIO_SES_BALANCER_CLASS_NAME, "");
+
System.setProperty(GridNioServer.IGNITE_NIO_SES_BALANCER_BALANCE_PERIOD, "");
 }
 }
 
@@ -350,9 +352,6 @@ public class IgniteCommunicationBalanceTest extends 
GridCommonAbstractTest {
 while (w2 == w1)
 w2 = rnd.nextInt(clientWorkers.size());
 
-if (clientWorkers.get(w2).sessions().isEmpty())
-return;
-
 GridNioSession ses = randomSession(clientWorkers.get(w1));
 
 if (ses != null) {



ignite git commit: ignite-comm-balance

2016-09-23 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance de50ab3ef -> c2dcb255d


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance
Commit: c2dcb255d0ef4a9ef3f67652612cb9303fff5e7a
Parents: de50ab3
Author: sboikov 
Authored: Fri Sep 23 12:24:14 2016 +0300
Committer: sboikov 
Committed: Fri Sep 23 12:24:14 2016 +0300

--
 .../ignite/internal/util/nio/GridNioServer.java |  21 +-
 .../internal/util/nio/GridNioSessionImpl.java   |  29 --
 .../IgniteCommunicationBalanceTest.java |  33 +-
 .../ignite/testsuites/IgniteCacheTestSuite.java | 305 ++-
 4 files changed, 188 insertions(+), 200 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/c2dcb255/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 7352b5c..7b546ef 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -633,6 +633,9 @@ public class GridNioServer {
  *
  */
 public void dumpStats() {
+U.warn(log, "Server statistics [readerSesBalanceCnt=" + 
readerMoveCount() +
+", writerSesBalanceCnt=" + writerMoveCount() + ']');
+
 for (int i = 0; i < clientWorkers.size(); i++)
 clientWorkers.get(i).offer(new NioOperationFuture(null, 
NioOperation.DUMP_STATS));
 }
@@ -987,7 +990,6 @@ public class GridNioServer {
 metricsLsnr.onBytesReceived(cnt);
 
 ses.bytesReceived(cnt);
-ses.onBytesRead(cnt, readBuf.capacity());
 onRead(cnt);
 
 readBuf.flip();
@@ -1303,7 +1305,6 @@ public class GridNioServer {
 metricsLsnr.onBytesSent(cnt);
 
 ses.bytesSent(cnt);
-ses.onBytesWritten(cnt, buf.capacity());
 onWrite(cnt);
 }
 else {
@@ -1527,6 +1528,8 @@ public class GridNioServer {
 ses);
 
 ses.key(key);
+
+f.onDone(true);
 }
 else {
 assert f.movedSocketChannel() == null : f;
@@ -1536,12 +1539,16 @@ public class GridNioServer {
 
 SelectionKey key = ses.key();
 
+assert key.channel() != null : key;
+
 
f.movedSocketChannel((SocketChannel)key.channel());
 
 key.cancel();
 
 
clientWorkers.get(f.toIndex()).offer(f);
 }
+else
+f.onDone(false);
 }
 
 break;
@@ -1656,8 +1663,6 @@ public class GridNioServer {
 .append(", 
bytesSent=").append(ses.bytesSent())
 .append(", 
bytesSent0=").append(ses.bytesSent0())
 .append(", 
opQueueSize=").append(ses.writeQueueSize())
-.append(", 
writeStats=").append(Arrays.toString(ses.writeStats()))
-.append(", 
readStats=").append(Arrays.toString(ses.readStats()))
 .append(", msgWriter=").append(writer 
!= null ? writer.toString() : "null")
 .append(", msgReader=").append(reader 
!= null ? reader.toString() : "null");
 
@@ -2487,7 +2492,7 @@ public class GridNioServer {
 /**
  *
  */
-private static class SessionMoveFuture extends NioOperationFuture {
+private static class SessionMoveFuture extends NioOperationFuture 
{
 /** */
 private final int toIdx;
 
@@ -2526,6 +2531,8 @@ public class GridNioServer {
  * @param movedSockCh Moved session socket channel.
  */
 void movedSocketChannel(SocketChannel movedSockCh) {
+assert movedSockCh != null;
+
 this.movedSockCh = movedSockCh;
 }
 
@@ -3073,7 +3080,7 @@ public class GridNioServe

ignite git commit: ignite-comm-balance

2016-09-16 Thread sboikov
Repository: ignite
Updated Branches:
  refs/heads/ignite-comm-balance 5ebb7ebb9 -> a1e875d34


ignite-comm-balance


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

Branch: refs/heads/ignite-comm-balance
Commit: a1e875d34778dc7d97c468fc5ffc5dd926bc78d1
Parents: 5ebb7eb
Author: sboikov 
Authored: Fri Sep 16 17:30:59 2016 +0300
Committer: sboikov 
Committed: Fri Sep 16 17:30:59 2016 +0300

--
 .../ignite/internal/util/nio/GridNioServer.java | 37 +++-
 .../ignite/internal/util/nio/GridNioWorker.java | 28 +++
 .../util/nio/GridSelectorNioSessionImpl.java| 28 ++-
 3 files changed, 59 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/a1e875d3/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 3ede2cb..961def9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -434,10 +434,11 @@ public class GridNioServer {
 
 NioOperationFuture fut = new NioOperationFuture<>(impl, 
NioOperation.CLOSE);
 
-int idx = impl.selectorIndex(); // TODO
-
-if (idx != -1)
-clientWorkers.get(idx).offer(fut);
+impl.offerStateChange(fut);
+//int idx = impl.selectorIndex(); // TODO
+//
+//if (idx != -1)
+//clientWorkers.get(idx).offer(fut);
 
 return fut;
 }
@@ -499,10 +500,11 @@ public class GridNioServer {
 }
 else if (msgCnt == 1) {
 // Change from 0 to 1 means that worker thread should be waken up.
-int idx = ses.selectorIndex();
-
-if (idx != -1) // TODO revisit
-clientWorkers.get(idx).offer(fut);
+//int idx = ses.selectorIndex();
+//
+//if (idx != -1) // TODO revisit
+//clientWorkers.get(idx).offer(fut);
+ses.offerStateChange(fut);
 }
 
 if (msgQueueLsnr != null)
@@ -576,7 +578,8 @@ public class GridNioServer {
 ses0.resend(futs);
 
 // Wake up worker.
-
clientWorkers.get(ses0.selectorIndex()).offer(((NioOperationFuture)fut0));
+
//clientWorkers.get(ses0.selectorIndex()).offer(((NioOperationFuture)fut0));
+ses0.offerStateChange(fut0);
 }
 }
 
@@ -615,7 +618,7 @@ public class GridNioServer {
 
 NioOperationFuture fut = new NioOperationFuture(impl, op);
 
-clientWorkers.get(impl.selectorIndex()).offer(fut);
+impl.offerStateChange(fut);
 
 return fut;
 }
@@ -1324,7 +1327,7 @@ public class GridNioServer {
 /**
  * Thread performing only read operations from the channel.
  */
-public abstract class AbstractNioClientWorker extends GridWorker {
+public abstract class AbstractNioClientWorker extends GridWorker 
implements GridNioWorker {
 /** Queue of change requests on this selector. */
 private final ConcurrentLinkedQueue changeReqs = 
new ConcurrentLinkedQueue<>();
 
@@ -1445,8 +1448,8 @@ public class GridNioServer {
  *
  * @param req Change request.
  */
-private void offer(NioOperationFuture req) {
-changeReqs.offer(req);
+@Override  public void offer(GridNioFuture req) {
+changeReqs.offer((NioOperationFuture)req);
 
 selector.wakeup();
 }
@@ -1478,7 +1481,7 @@ public class GridNioServer {
 GridSelectorNioSessionImpl ses = f.session();
 
 if (idx == f.toIdx) {
-ses.selectorIndex(idx);
+ses.worker = this;
 
 sessions0.add(ses);
 
@@ -1489,10 +1492,10 @@ public class GridNioServer {
 }
 else {
 if (sessions0.remove(ses)) {
-assert ses.selectorIndex() == idx; // 
TODO replace with IF and ignore?
+assert ses.worker == this; // TODO 
replace with IF and ignore?
 
 // Cleanup.
-ses.selectorIndex(-1);
+