You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/02/14 13:11:20 UTC

[01/34] ignite git commit: IGNITE-3727: added ability intercept "stop listener" message, check future status after invoke stopRemoteListen.

Repository: ignite
Updated Branches:
  refs/heads/ignite-3727-2 [created] 68f2d38e3


IGNITE-3727: added ability intercept "stop listener" message, check future status after invoke stopRemoteListen.


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

Branch: refs/heads/ignite-3727-2
Commit: 4e6605f1691a43b2ba57da3d4eef98e6dd460a43
Parents: 2d5d5bc
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Tue Aug 30 18:38:13 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Tue Aug 30 18:38:13 2016 +0300

----------------------------------------------------------------------
 .../ignite/messaging/GridMessagingSelfTest.java | 101 +++++++++++++++++--
 1 file changed, 92 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/4e6605f1/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
index e796eb5..2e2afd4 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
@@ -24,27 +24,26 @@ import java.io.ObjectOutput;
 import java.io.Serializable;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentLinkedDeque;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteMessaging;
+
+import org.apache.ignite.*;
 import org.apache.ignite.cluster.ClusterGroup;
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.managers.discovery.*;
+import org.apache.ignite.internal.processors.continuous.*;
 import org.apache.ignite.internal.util.GridConcurrentHashSet;
 import org.apache.ignite.internal.util.typedef.P2;
 import org.apache.ignite.internal.util.typedef.PA;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteFuture;
 import org.apache.ignite.resources.IgniteInstanceResource;
+import org.apache.ignite.spi.discovery.*;
 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;
@@ -198,7 +197,7 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
     @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
         IgniteConfiguration cfg = super.getConfiguration(gridName);
 
-        TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
+        TestTcpDiscoverySpi discoSpi = new TestTcpDiscoverySpi();
 
         discoSpi.setIpFinder(ipFinder);
 
@@ -944,7 +943,7 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
      * @throws Exception If error occurs.
      */
     public void testSendMessageWithExternalClassLoader() throws Exception {
-        URL[] urls = new URL[] { new URL(GridTestProperties.getProperty("p2p.uri.cls")) };
+        URL[] urls = new URL[] {new URL(GridTestProperties.getProperty("p2p.uri.cls"))};
 
         ClassLoader extLdr = new URLClassLoader(urls);
 
@@ -1028,6 +1027,8 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
     public void testAsync() throws Exception {
         final AtomicInteger msgCnt = new AtomicInteger();
 
+        TestTcpDiscoverySpi discoSpi = (TestTcpDiscoverySpi)ignite2.configuration().getDiscoverySpi();
+
         assertFalse(ignite2.message().isAsync());
 
         final IgniteMessaging msg = ignite2.message().withAsync();
@@ -1085,6 +1086,8 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
 
         assertEquals(1, msgCnt.get());
 
+        discoSpi.blockCustomEvent();
+
         msg.stopRemoteListen(id);
 
         IgniteFuture<?> stopFut = msg.future();
@@ -1099,8 +1102,14 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
             }
         }, IllegalStateException.class, null);
 
+        Assert.assertFalse(stopFut.isDone());
+
+        discoSpi.stopBlock();
+
         stopFut.get();
 
+        Assert.assertTrue(stopFut.isDone());
+
         message(ignite1.cluster().forRemotes()).send(topic, "msg2");
 
         U.sleep(1000);
@@ -1109,6 +1118,80 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
     }
 
     /**
+     *
+     */
+    static class TestTcpDiscoverySpi extends TcpDiscoverySpi {
+        /** */
+        private boolean blockCustomEvt;
+
+        /** */
+        private final Object mux = new Object();
+
+        /** */
+        private List<DiscoverySpiCustomMessage> blockedMsgs = new ArrayList<>();
+
+        /** {@inheritDoc} */
+        @Override public void sendCustomEvent(DiscoverySpiCustomMessage msg) throws IgniteException {
+            synchronized (mux) {
+                if (blockCustomEvt) {
+                    DiscoveryCustomMessage msg0 = GridTestUtils.getFieldValue(msg, "delegate");
+                    if (msg0 instanceof StopRoutineDiscoveryMessage) {
+                        log.info("Block custom message: " + msg0);
+                        blockedMsgs.add(msg);
+
+                        mux.notifyAll();
+                    }
+                    return;
+                }
+            }
+
+            super.sendCustomEvent(msg);
+        }
+
+        /**
+         *
+         */
+        public void blockCustomEvent() {
+            synchronized (mux) {
+                assert blockedMsgs.isEmpty() : blockedMsgs;
+
+                blockCustomEvt = true;
+            }
+        }
+
+        /**
+         * @throws InterruptedException If interrupted.
+         */
+        public void waitCustomEvent() throws InterruptedException {
+            synchronized (mux) {
+                while (blockedMsgs.isEmpty())
+                    mux.wait();
+            }
+        }
+
+        /**
+         *
+         */
+        public void stopBlock() {
+            List<DiscoverySpiCustomMessage> msgs;
+
+            synchronized (this) {
+                msgs = new ArrayList<>(blockedMsgs);
+
+                blockCustomEvt = false;
+
+                blockedMsgs.clear();
+            }
+
+            for (DiscoverySpiCustomMessage msg : msgs) {
+                log.info("Resend blocked message: " + msg);
+
+                super.sendCustomEvent(msg);
+            }
+        }
+    }
+
+    /**
      * Tests that message listener registers only for one oldest node.
      *
      * @throws Exception If an error occurred.


[14/34] ignite git commit: IGNITE-3727 send(..) javadoc update

Posted by sb...@apache.org.
IGNITE-3727 send(..) javadoc update


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

Branch: refs/heads/ignite-3727-2
Commit: e3855a35b71a7f6e5bd96ab3b4572d11d049d6f7
Parents: 14e1a6b
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Fri Sep 9 11:11:00 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Fri Sep 9 11:11:00 2016 +0300

----------------------------------------------------------------------
 .../core/src/main/java/org/apache/ignite/IgniteMessaging.java  | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e3855a35/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
index 23b29f3..00a4fc8 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
@@ -77,7 +77,8 @@ public interface IgniteMessaging extends IgniteAsyncSupport {
 
     /**
      * Sends given message with specified topic to the nodes in the underlying cluster group.
-     * When you invoke method, all listeners who were registered on topic in the local node, will be executing in the same thread.
+     * When you invoke method, all listeners who were registered on topic in the local node, will executing in the same thread
+     * by default, or if you use {@link #withAsync()}, listeners will execute through thread pool, and current thread will not be block.
      *
      * @param topic Topic to send to, {@code null} for default topic.
      * @param msg Message to send.
@@ -88,7 +89,8 @@ public interface IgniteMessaging extends IgniteAsyncSupport {
 
     /**
      * Sends given messages with the specified topic to the nodes in the underlying cluster group.
-     * When you invoke method, all listeners who were registered on topic in the local node, will be executing in the same thread.
+     * When you invoke method, all listeners who were registered on topic in the local node, will executing in the same thread
+     * by default, or if you use {@link #withAsync()}, listeners will execute through thread pool, and current thread will not be block.
      *
      * @param topic Topic to send to, {@code null} for default topic.
      * @param msgs Messages to send. Order of the sending is undefined. If the method produces


[07/34] ignite git commit: IGNITE-2539 issues reproduce test

Posted by sb...@apache.org.
IGNITE-2539 issues reproduce  test


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

Branch: refs/heads/ignite-3727-2
Commit: 6485ae58c1f6dafdbfcf4de4f258f1386affa723
Parents: 784958b
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Thu Sep 8 14:55:09 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Thu Sep 8 14:55:09 2016 +0300

----------------------------------------------------------------------
 .../ignite/internal/util/IgniteUtils.java       |  41 ++++
 .../IssuesIGNITE2539ReproduceTest.java          | 227 +++++++++++++++++++
 2 files changed, 268 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/6485ae58/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index e3389d5..9fd4122 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -1244,6 +1244,47 @@ public abstract class IgniteUtils {
     }
 
     /**
+     * Performs thread dump and return all available info.
+     */
+    public static GridStringBuilder dumpThreads() {
+        ThreadMXBean mxBean = ManagementFactory.getThreadMXBean();
+
+        GridStringBuilder sb = new GridStringBuilder("Thread dump at ")
+            .a(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss z").format(new Date(U.currentTimeMillis()))).a(NL);
+
+        final Set<Long> deadlockedThreadsIds = getDeadlockedThreadIds(mxBean);
+
+        sb.a(NL);
+
+        if (deadlockedThreadsIds.isEmpty())
+            sb.a("No deadlocked threads detected.");
+        else
+            sb.a("Deadlocked threads detected (see thread dump below) " +
+                "[deadlockedThreadsCnt=" + deadlockedThreadsIds.size() + ']');
+
+        sb.a(NL);
+
+        ThreadInfo[] threadInfos =
+            mxBean.dumpAllThreads(mxBean.isObjectMonitorUsageSupported(), mxBean.isSynchronizerUsageSupported());
+
+        for (ThreadInfo info : threadInfos) {
+            printThreadInfo(info, sb, deadlockedThreadsIds);
+
+            sb.a(NL);
+
+            if (info.getLockedSynchronizers() != null && info.getLockedSynchronizers().length > 0) {
+                printSynchronizersInfo(info.getLockedSynchronizers(), sb);
+
+                sb.a(NL);
+            }
+        }
+
+        sb.a(NL);
+
+        return sb;
+    }
+
+    /**
      * Get deadlocks from the thread bean.
      * @param mxBean the bean
      * @return the set of deadlocked threads (may be empty Set, but never null).

http://git-wip-us.apache.org/repos/asf/ignite/blob/6485ae58/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java b/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
new file mode 100644
index 0000000..c39ebf0
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
@@ -0,0 +1,227 @@
+package org.apache.ignite.cache.affinity.bugreproduce;
+
+import org.apache.ignite.*;
+import org.apache.ignite.cache.*;
+import org.apache.ignite.cache.affinity.*;
+import org.apache.ignite.cache.affinity.rendezvous.*;
+import org.apache.ignite.configuration.*;
+import org.apache.ignite.internal.util.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.spi.discovery.tcp.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+import org.apache.ignite.testframework.*;
+import org.apache.ignite.testframework.junits.common.*;
+
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.concurrent.atomic.*;
+
+/**
+ * Created by dgovorukhin on 01.09.2016.
+ */
+public class IssuesIGNITE2539ReproduceTest extends GridCommonAbstractTest {
+    /** */
+    protected static TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+
+    /** */
+    private static final int ITERATIONS = 10;
+
+    /** partitioned cache name. */
+    private static final String CACHE_NAME_DHT_PARTITIONED = "cacheP";
+
+    /** replicated cache name. */
+    private static final String CACHE_NAME_DHT_REPLICATED = "cacheR";
+
+    /** Ignite. */
+    private static Ignite ignite1;
+
+    /** Ignite. */
+    private static Ignite ignite2;
+
+    /** Ignite. */
+    private static Ignite ignite3;
+
+    private static final AtomicReference<Throwable> exc = new AtomicReference<>();
+
+    private static final AtomicReference<GridStringBuilder> dump = new AtomicReference<>();
+
+    private static final AtomicReference<Thread> thr = new AtomicReference<>();
+
+    /**
+     * @return Affinity function to test.
+     */
+    private AffinityFunction affinityFunction() {
+        return new RendezvousAffinityFunction();
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void beforeTestsStarted() throws Exception {
+        ignite1 = startGrid(0);
+        ignite2 = startGrid(1);
+        ignite3 = startGrid(2);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        stopAllGrids();
+    }
+
+    /** {@inheritDoc} */
+    @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+        IgniteConfiguration iCfg = super.getConfiguration(gridName);
+
+        ((TcpDiscoverySpi)iCfg.getDiscoverySpi()).setIpFinder(ipFinder);
+        iCfg.setRebalanceThreadPoolSize(2);
+
+        return iCfg;
+    }
+
+    /**
+     *
+     */
+    public void testCacheStopping() throws Exception {
+
+        final int delta = 5;
+
+        for (Thread worker : getExchangeWorkerThread()) {
+            worker.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+                @Override public void uncaughtException(Thread t, Throwable e) {
+                    dump.compareAndSet(null, U.dumpThreads());
+                    exc.compareAndSet(null, e);
+                    thr.compareAndSet(null, t);
+                }
+            });
+        }
+
+        GridTestUtils.runAsync(new Callable<Void>() {
+            @Override public Void call() throws Exception {
+
+                for (int start = 0; Ignition.allGrids().contains(ignite1); start += delta) {
+                    fillWithCache(ignite2, delta, start, affinityFunction());
+
+                    for (String victim : ignite2.cacheNames())
+                        ignite2.getOrCreateCache(victim).put(start, delta);
+
+                    for (String victim : ignite1.cacheNames())
+                        ignite1.destroyCache(victim);
+                }
+                return null;
+            }
+        }, "CacheSerialKiller");
+
+        for (int i = delta; i < ITERATIONS + delta; i++)
+            startGrid(i);
+
+        U.sleep(500);
+
+        for (int i = delta; i < ITERATIONS + delta; i++)
+            stopGrid(i);
+
+        if (exc.get() != null) {
+            log.info(thr.get().getName());
+
+            Throwable e = exc.get();
+            log.error(e.getMessage(), e);
+
+            log.info(dump.toString());
+
+            exc.set(null);
+            dump.set(null);
+            thr.set(null);
+
+            fail("see all log");
+        }
+    }
+
+    /**
+     *
+     */
+    public void testCacheStopping2() throws Exception {
+
+        final int delta = 5;
+
+        int itr = 20;
+
+        for (int j = 0; j < itr; j++) {
+
+            AtomicReference<Throwable> exc = new AtomicReference<>();
+
+            AtomicBoolean asyncRun = new AtomicBoolean(true);
+
+            for (Thread worker : getExchangeWorkerThread()) {
+                worker.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+                    @Override public void uncaughtException(Thread t, Throwable e) {
+                        exc.set(e);
+                    }
+                });
+            }
+
+            Thread thread = new Thread(new Runnable() {
+                @Override public void run() {
+                    for (int start = 0; asyncRun.get(); start += delta) {
+                        fillWithCache(ignite2, delta, start, affinityFunction());
+
+                        for (String victim : ignite2.cacheNames())
+                            ignite2.getOrCreateCache(victim).put(start, delta);
+
+                        for (String victim : ignite1.cacheNames())
+                            ignite1.destroyCache(victim);
+                    }
+                }
+            });
+            thread.start();
+
+            for (int i = delta; i < ITERATIONS + delta; i++)
+                startGrid(i);
+
+            U.sleep(500);
+
+            for (int i = delta; i < ITERATIONS + delta; i++)
+                stopGrid(i);
+
+            asyncRun.set(false);
+
+            thread.join();
+
+            if (exc.get() != null)
+                fail(exc.get().getMessage());
+
+        }
+    }
+
+    /**
+     *
+     */
+    private Iterable<Thread> getExchangeWorkerThread() {
+        Collection<Thread> exhcWorkers = new ArrayList<>();
+        for (Thread t : Thread.getAllStackTraces().keySet()) {
+            if (t.getName().contains("exchange-worker"))
+                exhcWorkers.add(t);
+        }
+        return exhcWorkers;
+    }
+
+    /** Put 2 * {@code iterations} caches inside ignite. */
+    private static void fillWithCache(Ignite ignite, int iterations, int start, AffinityFunction affinityFunction) {
+        for (int i = start; i < iterations + start; i++) {
+            CacheConfiguration<Integer, Integer> cachePCfg = new CacheConfiguration<>();
+
+            cachePCfg.setName(CACHE_NAME_DHT_PARTITIONED + i);
+            cachePCfg.setCacheMode(CacheMode.PARTITIONED);
+            cachePCfg.setBackups(1);
+            cachePCfg.setAffinity(affinityFunction);
+
+            ignite.getOrCreateCache(cachePCfg);
+
+            CacheConfiguration<Integer, Integer> cacheRCfg = new CacheConfiguration<>();
+
+            cacheRCfg.setName(CACHE_NAME_DHT_REPLICATED + i);
+            cacheRCfg.setCacheMode(CacheMode.REPLICATED);
+            cachePCfg.setBackups(0);
+            cachePCfg.setAffinity(affinityFunction);
+
+            ignite.getOrCreateCache(cacheRCfg);
+        }
+    }
+}


[32/34] ignite git commit: Merge remote-tracking branch 'remotes/origin/master' into ignite-3727-2

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/91e83407/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/91e83407/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 3d9238a,7ef7bc0..cda1321
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@@ -830,14 -785,36 +784,37 @@@ public class GridIoManager extends Grid
                  finally {
                      threadProcessingMessage(false);
  
 -                    msgC.run();
 +                    if (msgC != null)
 +                        msgC.run();
                  }
              }
+ 
+             @Override public String toString() {
+                 return "Message closure [msg=" + msg + ']';
+             }
          };
  
+         if (msg.topicOrdinal() == TOPIC_IO_TEST.ordinal()) {
+             IgniteIoTestMessage msg0 = (IgniteIoTestMessage)msg.message();
+ 
+             if (msg0.processFromNioThread()) {
+                 c.run();
+ 
+                 return;
+             }
+         }
+ 
+         if (ctx.config().getStripedPoolSize() > 0 &&
+             plc == GridIoPolicy.SYSTEM_POOL &&
+             msg.partition() != Integer.MIN_VALUE
+             ) {
+             ctx.getStripedExecutorService().execute(msg.partition(), c);
+ 
+             return;
+         }
+ 
          try {
-             pool(plc).execute(c);
+             pools.poolForPolicy(plc).execute(c);
          }
          catch (RejectedExecutionException e) {
              U.error(log, "Failed to process regular message due to execution rejection. Increase the upper bound " +

http://git-wip-us.apache.org/repos/asf/ignite/blob/91e83407/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
index 3eb7e5f,9e20d2a..688edf7
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
@@@ -51,10 -53,11 +53,12 @@@ import org.apache.ignite.internal.produ
  import org.apache.ignite.internal.util.nio.IgniteExceptionInNioWorkerSelfTest;
  import org.apache.ignite.internal.util.typedef.internal.U;
  import org.apache.ignite.marshaller.DynamicProxySerializationMultiJvmSelfTest;
+ import org.apache.ignite.marshaller.MarshallerContextSelfTest;
  import org.apache.ignite.messaging.GridMessagingNoPeerClassLoadingSelfTest;
  import org.apache.ignite.messaging.GridMessagingSelfTest;
 +import org.apache.ignite.messaging.IgniteMessagingSendAsyncTest;
  import org.apache.ignite.messaging.IgniteMessagingWithClientTest;
+ import org.apache.ignite.plugin.security.SecurityPermissionSetBuilderTest;
  import org.apache.ignite.spi.GridSpiLocalHostInjectionTest;
  import org.apache.ignite.startup.properties.NotStringSystemPropertyTest;
  import org.apache.ignite.testframework.GridTestUtils;

http://git-wip-us.apache.org/repos/asf/ignite/blob/91e83407/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java
----------------------------------------------------------------------
diff --cc modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java
index d1b9eaa,8ffea8c..3db68c4
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java
@@@ -117,7 -144,10 +144,10 @@@ public class HadoopShuffle extends Hado
      private void send0(UUID nodeId, Object msg) throws IgniteCheckedException {
          ClusterNode node = ctx.kernalContext().discovery().node(nodeId);
  
-         ctx.kernalContext().io().sendUserMessage(F.asList(node), msg, GridTopic.TOPIC_HADOOP, false, 0, false);
+         if (msg instanceof Message)
+             ctx.kernalContext().io().send(node, GridTopic.TOPIC_HADOOP_MSG, (Message)msg, GridIoPolicy.PUBLIC_POOL);
+         else
 -            ctx.kernalContext().io().sendUserMessage(F.asList(node), msg, GridTopic.TOPIC_HADOOP, false, 0);
++            ctx.kernalContext().io().sendUserMessage(F.asList(node), msg, GridTopic.TOPIC_HADOOP, false, 0, false);
      }
  
      /**


[24/34] ignite git commit: Revert "IGNITE-2539 fix issue, move cleanup code"

Posted by sb...@apache.org.
Revert "IGNITE-2539 fix issue, move cleanup code"

This reverts commit ccae9b0673ff169be94cfc393dfbd43f4867ffa5.


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

Branch: refs/heads/ignite-3727-2
Commit: 62f91abd32a261cd9c1aaa29dce930fe96a748a7
Parents: 980df4e
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Tue Sep 13 14:39:17 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Tue Sep 13 14:39:17 2016 +0300

----------------------------------------------------------------------
 .../cache/GridCachePartitionExchangeManager.java  | 16 ++++++++++++++++
 .../GridDhtPartitionsExchangeFuture.java          | 18 +-----------------
 2 files changed, 17 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/62f91abd/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
index b899240..4eb61e3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
@@ -957,6 +957,22 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana
                 }
             }
         }
+
+        ExchangeFutureSet exchFuts0 = exchFuts;
+
+        if (exchFuts0 != null) {
+            int skipped = 0;
+
+            for (GridDhtPartitionsExchangeFuture fut : exchFuts0.values()) {
+                if (exchFut.exchangeId().topologyVersion().compareTo(fut.exchangeId().topologyVersion()) < 0)
+                    continue;
+
+                skipped++;
+
+                if (skipped > 10)
+                    fut.cleanUp();
+            }
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/62f91abd/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index 39af156..80b3768 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@ -1110,25 +1110,9 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
             return true;
         }
 
-        cleanUpExchFtr();
-
         return dummy;
     }
 
-    private void cleanUpExchFtr() {
-        int skipped = 0;
-
-        for (GridDhtPartitionsExchangeFuture fut : cctx.exchange().exchangeFutures()) {
-            if (exchId.topologyVersion().compareTo(fut.exchangeId().topologyVersion()) < 0)
-                continue;
-
-            skipped++;
-
-            if (skipped > 10)
-                fut.cleanUp();
-        }
-    }
-
     /** {@inheritDoc} */
     @Override public Throwable validateCache(GridCacheContext cctx) {
         Throwable err = error();
@@ -1402,7 +1386,7 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
             if (!crd.equals(node)) {
                 if (log.isDebugEnabled())
                     log.debug("Received full partition map from unexpected node [oldest=" + crd.id() +
-                        ", nodeId=" + node.id() + ']');
+                            ", nodeId=" + node.id() + ']');
 
                 if (node.order() > crd.order())
                     fullMsgs.put(node, msg);


[21/34] ignite git commit: IGNITE-3727 fix notes from jira. (small update)

Posted by sb...@apache.org.
IGNITE-3727 fix notes from jira. (small update)


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

Branch: refs/heads/ignite-3727-2
Commit: 21e0093adf8978523e5c9451dd44f3087d65ca3d
Parents: 14cb9f5
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Tue Sep 13 13:00:17 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Tue Sep 13 13:00:17 2016 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/21e0093a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
index d98dedf..66c9ed0 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
@@ -120,7 +120,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
      * @param msgStr    Message string.
      * @param cls       Callback for compare result.
      */
-    public void sendWith2Node(
+    private void sendWith2Node(
             final Ignite ignite2,
             final IgniteMessaging igniteMsg,
             final String msgStr,


[22/34] ignite git commit: Revert "IGNITE-1678 code + test+ benchmark config"

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedAtomicSequenceMultiThreadedTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedAtomicSequenceMultiThreadedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedAtomicSequenceMultiThreadedTest.java
deleted file mode 100644
index 5a5f013..0000000
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedAtomicSequenceMultiThreadedTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.datastructures.replicated;
-
-import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.internal.processors.cache.datastructures.GridCacheAtomicSequenceMultiThreadedAbstractTest;
-
-import static org.apache.ignite.cache.CacheMode.REPLICATED;
-
-/**
- * Cache partitioned multi-threaded tests.
- */
-public class GridCacheReplicatedAtomicSequenceMultiThreadedTest extends GridCacheAtomicSequenceMultiThreadedAbstractTest {
-    /** {@inheritDoc} */
-    @Override protected CacheMode atomicsCacheMode() {
-        return REPLICATED;
-    }
-}

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java
index d13c525..31b8fad 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java
@@ -30,8 +30,4 @@ public class GridCacheReplicatedSequenceApiSelfTest extends GridCacheSequenceApi
     @Override protected CacheMode atomicsCacheMode() {
         return REPLICATED;
     }
-
-    @Override protected int gridCount() {
-        return 3;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
index 66a7b00..d62369c 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
@@ -72,7 +72,6 @@ import org.apache.ignite.internal.processors.cache.datastructures.partitioned.Ig
 import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedSemaphoreSelfTest;
 import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedSetNoBackupsSelfTest;
 import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicReferenceApiSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicSequenceMultiThreadedTest;
 import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicStampedApiSelfTest;
 import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedDataStructuresFailoverSelfTest;
 import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedQueueApiSelfTest;
@@ -167,7 +166,6 @@ public class IgniteCacheDataStructuresSelfTestSuite extends TestSuite {
         suite.addTest(new TestSuite(IgniteReplicatedAtomicLongApiSelfTest.class));
 
         suite.addTest(new TestSuite(GridCachePartitionedAtomicSequenceMultiThreadedTest.class));
-        suite.addTest(new TestSuite(GridCacheReplicatedAtomicSequenceMultiThreadedTest.class));
 
         suite.addTest(new TestSuite(GridCachePartitionedAtomicStampedApiSelfTest.class));
         suite.addTest(new TestSuite(GridCacheReplicatedAtomicStampedApiSelfTest.class));

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteAtomicSequenceBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteAtomicSequenceBenchmark.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteAtomicSequenceBenchmark.java
deleted file mode 100644
index 4b2f085..0000000
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteAtomicSequenceBenchmark.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.yardstick.cache;
-
-import java.util.Map;
-import org.apache.ignite.IgniteAtomicSequence;
-import org.apache.ignite.yardstick.IgniteAbstractBenchmark;
-import org.yardstickframework.BenchmarkConfiguration;
-
-/**
- * Ignite atomic sequence benchmark.
- */
-public class IgniteAtomicSequenceBenchmark extends IgniteAbstractBenchmark {
-    /** Cache. */
-    private IgniteAtomicSequence seq;
-
-    /** {@inheritDoc} */
-    @Override public void setUp(BenchmarkConfiguration cfg) throws Exception {
-        super.setUp(cfg);
-
-        seq = ignite().atomicSequence("benchSequence", 0, true);
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean test(Map<Object, Object> ctx) throws Exception {
-        seq.incrementAndGet();
-
-        return true;
-    }
-}


[06/34] ignite git commit: IGNITE-1678 code + test+ benchmark config

Posted by sb...@apache.org.
IGNITE-1678  code + test+ benchmark config


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

Branch: refs/heads/ignite-3727-2
Commit: 784958bf6e0e8e81191af498f6a993b2bfd78204
Parents: cf4cd05
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Tue Sep 6 19:35:14 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Tue Sep 6 19:35:14 2016 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/IgniteAtomicSequence.java |  15 +
 .../configuration/AtomicConfiguration.java      |  25 +
 .../datastructures/DataStructuresProcessor.java | 111 ++--
 .../GridCacheAtomicSequenceImpl.java            | 384 +++++-------
 ...AtomicSequenceMultiThreadedAbstractTest.java | 579 +++++++++++++++++++
 .../GridCacheSequenceApiSelfAbstractTest.java   | 101 +++-
 ...titionedAtomicSequenceMultiThreadedTest.java | 313 +---------
 ...GridCachePartitionedSequenceApiSelfTest.java |   4 +
 ...plicatedAtomicSequenceMultiThreadedTest.java |  33 ++
 .../GridCacheReplicatedSequenceApiSelfTest.java |   4 +
 .../IgniteCacheDataStructuresSelfTestSuite.java |   2 +
 .../cache/IgniteAtomicSequenceBenchmark.java    |  45 ++
 12 files changed, 991 insertions(+), 625 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java b/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java
index a1e1392..aa1cbdf 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java
@@ -118,6 +118,21 @@ public interface IgniteAtomicSequence extends Closeable {
     public void batchSize(int size);
 
     /**
+     * Gets local reserve percentage for this atomic sequence. When a reserve percentage of a batch size
+     * is reached when sequence starts a new reservation in background.
+     *
+     * @return Sequence reserve pecentage.
+     */
+    public int reservePercentage();
+
+    /**
+     * Sets local reserve percentage for this atomic sequence.
+     *
+     * @param percentage Reserve pecentage. Must be between 0 and 100.
+     */
+    public void reservePercentage(int percentage);
+
+    /**
      * Gets status of atomic sequence.
      *
      * @return {@code true} if atomic sequence was removed from cache, {@code false} otherwise.

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
index 6649b5e..ad96b73 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
@@ -36,6 +36,9 @@ public class AtomicConfiguration {
     /** Default atomic sequence reservation size. */
     public static final int DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE = 1000;
 
+    /** Default atomic sequence reservation size. */
+    public static final int DFLT_ATOMIC_SEQUENCE_RESERVE_PERCENTAGE = 80;
+
     /** Default batch size for all cache's sequences. */
     private int seqReserveSize = DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE;
 
@@ -45,6 +48,9 @@ public class AtomicConfiguration {
     /** Number of backups. */
     private int backups = DFLT_BACKUPS;
 
+    /** Atomic sequence reservation percentage. */
+    private int atomicSeqReservePercentage = DFLT_ATOMIC_SEQUENCE_RESERVE_PERCENTAGE;
+
     /**
      * @return Number of backup nodes.
      */
@@ -98,6 +104,25 @@ public class AtomicConfiguration {
         this.seqReserveSize = seqReserveSize;
     }
 
+    /**
+     * Gets reserve percentage for configuration. When a reserve percentage of a batch size
+     * is reached when sequence starts a new reservation in background.
+     *
+     * @return Atomic sequence reservation percentage.
+     */
+    public int getAtomicSequenceReservePercentage() {
+        return atomicSeqReservePercentage;
+    }
+
+    /**
+     * Sets reserve percentage for configuration.
+     * *
+     * @param atomicSeqReservePercentage Atomic sequence reservation percentage.
+     */
+    public void setAtomicSequenceReservePercentage(int atomicSeqReservePercentage) {
+        this.atomicSeqReservePercentage = atomicSeqReservePercentage;
+    }
+
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(AtomicConfiguration.class, this);

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
index 1cad22f..eb81ca2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
@@ -36,6 +36,7 @@ import javax.cache.event.EventType;
 import javax.cache.processor.EntryProcessor;
 import javax.cache.processor.EntryProcessorException;
 import javax.cache.processor.MutableEntry;
+
 import org.apache.ignite.IgniteAtomicLong;
 import org.apache.ignite.IgniteAtomicReference;
 import org.apache.ignite.IgniteAtomicSequence;
@@ -357,9 +358,9 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                     if (seqVal == null && !create)
                         return null;
 
-                    // We should use offset because we already reserved left side of range.
+        /*            // We should use offset because we already reserved left side of range.
                     long off = atomicCfg.getAtomicSequenceReserveSize() > 1 ?
-                        atomicCfg.getAtomicSequenceReserveSize() - 1 : 1;
+                        atomicCfg.getAtomicSequenceReserveSize() - 1 : 1;*/
 
                     long upBound;
                     long locCntr;
@@ -367,18 +368,16 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                     if (seqVal == null) {
                         locCntr = initVal;
 
-                        upBound = locCntr + off;
+                        upBound = locCntr + atomicCfg.getAtomicSequenceReserveSize();
 
-                        // Global counter must be more than reserved region.
-                        seqVal = new GridCacheAtomicSequenceValue(upBound + 1);
+                        seqVal = new GridCacheAtomicSequenceValue(upBound);
                     }
                     else {
                         locCntr = seqVal.get();
 
-                        upBound = locCntr + off;
+                        upBound = locCntr + atomicCfg.getAtomicSequenceReserveSize();
 
-                        // Global counter must be more than reserved region.
-                        seqVal.set(upBound + 1);
+                        seqVal.set(upBound);
                     }
 
                     // Update global counter.
@@ -390,6 +389,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                         seqView,
                         dsCacheCtx,
                         atomicCfg.getAtomicSequenceReserveSize(),
+                        atomicCfg.getAtomicSequenceReservePercentage(),
                         locCntr,
                         upBound);
 
@@ -448,8 +448,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * Gets an atomic long from cache or creates one if it's not cached.
      *
      * @param name Name of atomic long.
-     * @param initVal Initial value for atomic long. If atomic long already cached, {@code initVal}
-     *        will be ignored.
+     * @param initVal Initial value for atomic long. If atomic long already cached, {@code initVal} will be ignored.
      * @param create If {@code true} atomic long will be created in case it is not in cache.
      * @return Atomic long.
      * @throws IgniteCheckedException If loading failed.
@@ -526,8 +525,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         final DataStructureInfo dsInfo,
         final boolean create,
         Class<? extends T> cls)
-        throws IgniteCheckedException
-    {
+        throws IgniteCheckedException {
         Map<String, DataStructureInfo> dsMap = utilityCache.get(DATA_STRUCTURES_KEY);
 
         if (!create && (dsMap == null || !dsMap.containsKey(dsInfo.name)))
@@ -607,8 +605,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         String name,
         DataStructureType type,
         @Nullable final IgniteInClosureX<T> afterRmv)
-        throws IgniteCheckedException
-    {
+        throws IgniteCheckedException {
         Map<String, DataStructureInfo> dsMap = utilityCache.get(DATA_STRUCTURES_KEY);
 
         if (dsMap == null || !dsMap.containsKey(name))
@@ -656,8 +653,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * Gets an atomic reference from cache or creates one if it's not cached.
      *
      * @param name Name of atomic reference.
-     * @param initVal Initial value for atomic reference. If atomic reference already cached, {@code initVal}
-     *        will be ignored.
+     * @param initVal Initial value for atomic reference. If atomic reference already cached, {@code initVal} will be
+     * ignored.
      * @param create If {@code true} atomic reference will be created in case it is not in cache.
      * @return Atomic reference.
      * @throws IgniteCheckedException If loading failed.
@@ -666,8 +663,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
     public final <T> IgniteAtomicReference<T> atomicReference(final String name,
         final T initVal,
         final boolean create)
-        throws IgniteCheckedException
-    {
+        throws IgniteCheckedException {
         A.notNull(name, "name");
 
         awaitInitialization();
@@ -761,10 +757,10 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * Gets an atomic stamped from cache or creates one if it's not cached.
      *
      * @param name Name of atomic stamped.
-     * @param initVal Initial value for atomic stamped. If atomic stamped already cached, {@code initVal}
-     *        will be ignored.
-     * @param initStamp Initial stamp for atomic stamped. If atomic stamped already cached, {@code initStamp}
-     *        will be ignored.
+     * @param initVal Initial value for atomic stamped. If atomic stamped already cached, {@code initVal} will be
+     * ignored.
+     * @param initStamp Initial stamp for atomic stamped. If atomic stamped already cached, {@code initStamp} will be
+     * ignored.
      * @param create If {@code true} atomic stamped will be created in case it is not in cache.
      * @return Atomic stamped.
      * @throws IgniteCheckedException If loading failed.
@@ -1005,8 +1001,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
     @Nullable private <T> T getCollection(final IgniteClosureX<GridCacheContext, T> c,
         final DataStructureInfo dsInfo,
         boolean create)
-        throws IgniteCheckedException
-    {
+        throws IgniteCheckedException {
         awaitInitialization();
 
         Map<String, DataStructureInfo> dsMap = utilityCache.get(DATA_STRUCTURES_KEY);
@@ -1083,8 +1078,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
     @Nullable private static IgniteCheckedException validateDataStructure(
         @Nullable Map<String, DataStructureInfo> dsMap,
         DataStructureInfo info,
-        boolean create)
-    {
+        boolean create) {
         if (dsMap == null)
             return null;
 
@@ -1102,20 +1096,17 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      *
      * @param name Name of the latch.
      * @param cnt Initial count.
-     * @param autoDel {@code True} to automatically delete latch from cache when
-     *      its count reaches zero.
-     * @param create If {@code true} latch will be created in case it is not in cache,
-     *      if it is {@code false} all parameters except {@code name} are ignored.
-     * @return Count down latch for the given name or {@code null} if it is not found and
-     *      {@code create} is false.
+     * @param autoDel {@code True} to automatically delete latch from cache when its count reaches zero.
+     * @param create If {@code true} latch will be created in case it is not in cache, if it is {@code false} all
+     * parameters except {@code name} are ignored.
+     * @return Count down latch for the given name or {@code null} if it is not found and {@code create} is false.
      * @throws IgniteCheckedException If operation failed.
      */
     public IgniteCountDownLatch countDownLatch(final String name,
         final int cnt,
         final boolean autoDel,
         final boolean create)
-        throws IgniteCheckedException
-    {
+        throws IgniteCheckedException {
         A.notNull(name, "name");
 
         awaitInitialization();
@@ -1201,12 +1192,12 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                 try (IgniteInternalTx tx = CU.txStartInternal(dsCacheCtx, dsView, PESSIMISTIC, REPEATABLE_READ)) {
                     // Check correctness type of removable object.
                     GridCacheCountDownLatchValue val =
-                            cast(dsView.get(key), GridCacheCountDownLatchValue.class);
+                        cast(dsView.get(key), GridCacheCountDownLatchValue.class);
 
                     if (val != null) {
                         if (val.get() > 0) {
                             throw new IgniteCheckedException("Failed to remove count down latch " +
-                                    "with non-zero count: " + val.get());
+                                "with non-zero count: " + val.get());
                         }
 
                         dsView.remove(key);
@@ -1232,10 +1223,9 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * @param name Name of the semaphore.
      * @param cnt Initial count.
      * @param failoverSafe {@code True} FailoverSafe parameter.
-     * @param create If {@code true} semaphore will be created in case it is not in cache,
-     *      if it is {@code false} all parameters except {@code name} are ignored.
-     * @return Semaphore for the given name or {@code null} if it is not found and
-     *      {@code create} is false.
+     * @param create If {@code true} semaphore will be created in case it is not in cache, if it is {@code false} all
+     * parameters except {@code name} are ignored.
+     * @return Semaphore for the given name or {@code null} if it is not found and {@code create} is false.
      * @throws IgniteCheckedException If operation failed.
      */
     public IgniteSemaphore semaphore(final String name, final int cnt, final boolean failoverSafe, final boolean create)
@@ -1351,11 +1341,11 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * @param failoverSafe Flag indicating behaviour in case of failure.
      * @param fair Flag indicating fairness policy of this lock.
      * @param create If {@code true} reentrant lock will be created in case it is not in cache.
-     * @return ReentrantLock for the given name or {@code null} if it is not found and
-     *      {@code create} is false.
+     * @return ReentrantLock for the given name or {@code null} if it is not found and {@code create} is false.
      * @throws IgniteCheckedException If operation failed.
      */
-    public IgniteLock reentrantLock(final String name, final boolean failoverSafe, final boolean fair, final boolean create)
+    public IgniteLock reentrantLock(final String name, final boolean failoverSafe, final boolean fair,
+        final boolean create)
         throws IgniteCheckedException {
         A.notNull(name, "name");
 
@@ -1532,8 +1522,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         /** {@inheritDoc} */
         @Override public void onUpdated(
             Iterable<CacheEntryEvent<? extends GridCacheInternalKey, ? extends GridCacheInternal>> evts)
-            throws CacheEntryListenerException
-        {
+            throws CacheEntryListenerException {
             for (CacheEntryEvent<? extends GridCacheInternalKey, ? extends GridCacheInternal> evt : evts) {
                 if (evt.getEventType() == EventType.CREATED || evt.getEventType() == EventType.UPDATED) {
                     GridCacheInternal val0 = evt.getValue();
@@ -1603,8 +1592,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                         }
                         else if (sem != null) {
                             U.error(log, "Failed to cast object " +
-                                    "[expected=" + IgniteSemaphore.class.getSimpleName() +
-                                    ", actual=" + sem.getClass() + ", value=" + sem + ']');
+                                "[expected=" + IgniteSemaphore.class.getSimpleName() +
+                                ", actual=" + sem.getClass() + ", value=" + sem + ']');
                         }
                     }
                     else if (val0 instanceof GridCacheLockState) {
@@ -1761,6 +1750,18 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         if (atomicCfg == null)
             throw new IgniteException("Atomic data structure can not be created, " +
                 "need to provide IgniteAtomicConfiguration.");
+
+        if (atomicCfg.getAtomicSequenceReserveSize() <= 0)
+            throw new IgniteException(
+                "Atomic sequence can not be created, " +
+                    "reserve size must be more than 0, but atomicSequenceReserveSize: " + atomicCfg.getAtomicSequenceReserveSize()
+            );
+
+        if (atomicCfg.getAtomicSequenceReservePercentage() > 100)
+            throw new IgniteException(
+                "Atomic sequence can not be created, reserve percentage must have value " +
+                    "between 0 and 100, but atomicSequenceReservePercentage: " + atomicCfg.getAtomicSequenceReservePercentage()
+            );
     }
 
     /**
@@ -1779,7 +1780,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                 col.cfg.getBackups() == cfg.getBackups() &&
                 col.cfg.getOffHeapMaxMemory() == cfg.getOffHeapMaxMemory() &&
                 ((col.cfg.getNodeFilter() == null && cfg.getNodeFilter() == null) ||
-                (col.cfg.getNodeFilter() != null && col.cfg.getNodeFilter().equals(cfg.getNodeFilter()))))
+                    (col.cfg.getNodeFilter() != null && col.cfg.getNodeFilter().equals(cfg.getNodeFilter()))))
                 return col.cacheName;
         }
 
@@ -1788,8 +1789,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
 
     /**
      * @param c Closure to run.
-     * @throws IgniteCheckedException If failed.
      * @return Closure return value.
+     * @throws IgniteCheckedException If failed.
      */
     private static <T> T retryTopologySafe(IgniteOutClosureX<T> c) throws IgniteCheckedException {
         for (int i = 0; i < GridCacheAdapter.MAX_RETRIES; i++) {
@@ -2144,8 +2145,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         @Override public IgniteCheckedException process(
             MutableEntry<CacheDataStructuresConfigurationKey, Map<String, DataStructureInfo>> entry,
             Object... args)
-            throws EntryProcessorException
-        {
+            throws EntryProcessorException {
             Map<String, DataStructureInfo> map = entry.getValue();
 
             if (map == null) {
@@ -2223,8 +2223,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         /** {@inheritDoc} */
         @Override public T2<String, IgniteCheckedException> process(
             MutableEntry<CacheDataStructuresConfigurationKey, Map<String, DataStructureInfo>> entry,
-            Object... args)
-        {
+            Object... args) {
             Map<String, DataStructureInfo> map = entry.getValue();
 
             CollectionInfo colInfo = (CollectionInfo)info.info;
@@ -2303,8 +2302,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         /** {@inheritDoc} */
         @Override public String process(
             MutableEntry<CacheDataStructuresCacheKey, List<CacheCollectionInfo>> entry,
-            Object... args)
-        {
+            Object... args) {
             List<CacheCollectionInfo> list = entry.getValue();
 
             if (list == null) {
@@ -2380,8 +2378,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         /** {@inheritDoc} */
         @Override public T2<Boolean, IgniteCheckedException> process(
             MutableEntry<CacheDataStructuresConfigurationKey, Map<String, DataStructureInfo>> entry,
-            Object... args)
-        {
+            Object... args) {
             Map<String, DataStructureInfo> map = entry.getValue();
 
             if (map == null)

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
index 7474f46..77bbb41 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
@@ -17,36 +17,21 @@
 
 package org.apache.ignite.internal.processors.datastructures;
 
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.InvalidObjectException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.ObjectStreamException;
-import java.util.concurrent.Callable;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.internal.GridKernalContext;
-import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.processors.cache.GridCacheContext;
-import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
-import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
-import org.apache.ignite.internal.util.future.GridFinishedFuture;
-import org.apache.ignite.internal.util.typedef.internal.A;
-import org.apache.ignite.internal.util.typedef.internal.CU;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.lang.IgniteBiTuple;
-import org.jetbrains.annotations.Nullable;
-
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static org.apache.ignite.internal.util.typedef.internal.CU.retryTopologySafe;
-import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
-import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
+import org.apache.ignite.*;
+import org.apache.ignite.internal.*;
+import org.apache.ignite.internal.processors.cache.*;
+import org.apache.ignite.internal.processors.cache.transactions.*;
+import org.apache.ignite.internal.util.future.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.lang.*;
+
+import java.io.*;
+import java.util.concurrent.*;
+import java.util.concurrent.locks.*;
+
+import static org.apache.ignite.internal.util.typedef.internal.CU.*;
+import static org.apache.ignite.transactions.TransactionConcurrency.*;
+import static org.apache.ignite.transactions.TransactionIsolation.*;
 
 /**
  * Cache sequence implementation.
@@ -87,26 +72,32 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
     /** Local value of sequence. */
     private long locVal;
 
-    /**  Upper bound of local counter. */
-    private long upBound;
+    /** Upper bound of local counter. */
+    private long upBound; // TODO should be not included
 
-    /**  Sequence batch size */
-    private volatile int batchSize;
+    /** Reserved bottom bound of local counter (included). */
+    private long reservedBottomBound;
 
-    /** Synchronization lock. */
-    private final Lock lock = new ReentrantLock();
+    /** Reserved upper bound of local counter (not included). */
+    private long reservedUpBound;
+
+    /** A limit after which a new reservation should be done. */
+    private long newReservationLine;
 
-    /** Await condition. */
-    private Condition cond = lock.newCondition();
+    /** Whether reserveFuture already processed or not. */
+    private boolean isReserveFutResultsProcessed = true;
 
-    /** Callable for execution {@link #incrementAndGet} operation in async and sync mode.  */
-    private final Callable<Long> incAndGetCall = internalUpdate(1, true);
+    /** default 80% */
+    private volatile int percentage;
 
-    /** Callable for execution {@link #getAndIncrement} operation in async and sync mode.  */
-    private final Callable<Long> getAndIncCall = internalUpdate(1, false);
+    /** Sequence batch size */
+    private volatile int batchSize;
+
+    /** Synchronization lock. */
+    private final Lock lock = new ReentrantLock();
 
-    /** Add and get cache call guard. */
-    private final AtomicBoolean updateGuard = new AtomicBoolean();
+    /** Reservation future. */
+    private IgniteInternalFuture<?> reservationFut = new GridFinishedFuture<>();
 
     /**
      * Empty constructor required by {@link Externalizable}.
@@ -131,13 +122,15 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         IgniteInternalCache<GridCacheInternalKey, GridCacheAtomicSequenceValue> seqView,
         GridCacheContext ctx,
         int batchSize,
+        int percentage,
         long locVal,
-        long upBound)
-    {
+        long upBound) {
         assert key != null;
         assert seqView != null;
         assert ctx != null;
+        assert batchSize > 0 : "BatchSize: " + batchSize;
         assert locVal <= upBound;
+        assert percentage >= 0 && percentage <= 100 : "Percentage: " + percentage;
 
         this.batchSize = batchSize;
         this.ctx = ctx;
@@ -146,6 +139,9 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         this.upBound = upBound;
         this.locVal = locVal;
         this.name = name;
+        this.percentage = percentage;
+
+        newReservationLine = locVal + (batchSize * percentage / 100);
 
         log = ctx.logger(getClass());
     }
@@ -172,7 +168,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
     /** {@inheritDoc} */
     @Override public long incrementAndGet() {
         try {
-            return internalUpdate(1, incAndGetCall, true);
+            return internalUpdate(1, true);
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);
@@ -182,7 +178,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
     /** {@inheritDoc} */
     @Override public long getAndIncrement() {
         try {
-            return internalUpdate(1, getAndIncCall, false);
+            return internalUpdate(1, false);
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);
@@ -194,7 +190,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         A.ensure(l > 0, " Parameter mustn't be less then 1: " + l);
 
         try {
-            return internalUpdate(l, null, true);
+            return internalUpdate(l, true);
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);
@@ -206,7 +202,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         A.ensure(l > 0, " Parameter mustn't be less then 1: " + l);
 
         try {
-            return internalUpdate(l, null, false);
+            return internalUpdate(l, false);
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);
@@ -217,162 +213,134 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
      * Synchronous sequence update operation. Will add given amount to the sequence value.
      *
      * @param l Increment amount.
-     * @param updateCall Cache call that will update sequence reservation count in accordance with l.
      * @param updated If {@code true}, will return sequence value after update, otherwise will return sequence value
-     *      prior to update.
+     * prior to update.
      * @return Sequence value.
      * @throws IgniteCheckedException If update failed.
      */
     @SuppressWarnings("SignalWithoutCorrespondingAwait")
-    private long internalUpdate(long l, @Nullable Callable<Long> updateCall, boolean updated) throws IgniteCheckedException {
-        checkRemoved();
-
+    private long internalUpdate(final long l, final boolean updated) throws IgniteCheckedException {
         assert l > 0;
 
-        lock.lock();
+        while (true) {
+            checkRemoved();
 
-        try {
-            // If reserved range isn't exhausted.
-            if (locVal + l <= upBound) {
-                long curVal = locVal;
+            lock.lock(); // TODO locks here?
 
-                locVal += l;
+            try {
+                if (locVal + l >= newReservationLine && isReserveFutResultsProcessed && reservationFut.isDone())
+                    reservationFut = runAsyncReservation(0);
 
-                return updated ? locVal : curVal;
-            }
-        }
-        finally {
-            lock.unlock();
-        }
+                // If reserved range isn't exhausted.
+                if (locVal + l < upBound) {
+                    long curVal = locVal;
 
-        if (updateCall == null)
-            updateCall = internalUpdate(l, updated);
+                    locVal += l;
 
-        while (true) {
-            if (updateGuard.compareAndSet(false, true)) {
-                try {
-                    // This call must be outside lock.
-                    return CU.outTx(updateCall, ctx);
+                    return updated ? locVal : curVal;
                 }
-                finally {
-                    lock.lock();
 
-                    try {
-                        updateGuard.set(false);
+                if (!isReserveFutResultsProcessed && reservationFut.isDone()) {
+                    isReserveFutResultsProcessed = true;
 
-                        cond.signalAll();
-                    }
-                    finally {
-                        lock.unlock();
-                    }
-                }
-            }
-            else {
-                lock.lock();
+                    if (locVal + l < reservedUpBound) {
+                        long curVal = locVal;
 
-                try {
-                    while (locVal >= upBound && updateGuard.get())
-                        U.await(cond, 500, MILLISECONDS);
+                        locVal = (locVal + l < reservedBottomBound) ? reservedBottomBound : locVal + l;
 
-                    checkRemoved();
+                        upBound = reservedUpBound;
 
-                    // If reserved range isn't exhausted.
-                    if (locVal + l <= upBound) {
-                        long curVal = locVal;
+                        return updated ? locVal : curVal;
+                    }
+                    else {
+                        long diff = locVal + l - reservedUpBound;
 
-                        locVal += l;
+                        long off = (diff / batchSize) * batchSize;
 
-                        return updated ? locVal : curVal;
+                        reservationFut = runAsyncReservation(off);
                     }
                 }
-                finally {
-                    lock.unlock();
-                }
             }
+            finally {
+                lock.unlock();
+            }
+
+            // If reserved range is exhausted.
+            reservationFut.get();
         }
     }
 
     /**
-     * Asynchronous sequence update operation. Will add given amount to the sequence value.
+     * Runs async reservation of new range for current node.
      *
-     * @param l Increment amount.
-     * @param updateCall Cache call that will update sequence reservation count in accordance with l.
-     * @param updated If {@code true}, will return sequence value after update, otherwise will return sequence value
-     *      prior to update.
-     * @return Future indicating sequence value.
-     * @throws IgniteCheckedException If update failed.
+     * @param off Offset.
+     * @return Future.
      */
-    @SuppressWarnings("SignalWithoutCorrespondingAwait")
-    private IgniteInternalFuture<Long> internalUpdateAsync(long l, @Nullable Callable<Long> updateCall, boolean updated)
-        throws IgniteCheckedException {
-        checkRemoved();
+    private IgniteInternalFuture<?> runAsyncReservation(final long off) {
+        assert off >= 0 : "Offset: " + off;
 
-        A.ensure(l > 0, " Parameter mustn't be less then 1: " + l);
+        return ctx.kernalContext().closure().runLocalSafe(new Runnable() {
+            @Override public void run() {
+                Callable<Void> reserveCall = retryTopologySafe(new Callable<Void>() {
+                    @Override public Void call() throws Exception {
+                        try (IgniteInternalTx tx = CU.txStartInternal(ctx, seqView, PESSIMISTIC, REPEATABLE_READ)) {
+                            GridCacheAtomicSequenceValue seq = seqView.get(key);
 
-        lock.lock();
+                            checkRemoved();
 
-        try {
-            // If reserved range isn't exhausted.
-            if (locVal + l <= upBound) {
-                long curVal = locVal;
+                            assert seq != null;
 
-                locVal += l;
+                            long newUpBound = -1;
 
-                return new GridFinishedFuture<>(updated ? locVal : curVal);
-            }
-        }
-        finally {
-            lock.unlock();
-        }
+                            lock.lock();
 
-        if (updateCall == null)
-            updateCall = internalUpdate(l, updated);
+                            try {
+                                assert isReserveFutResultsProcessed;
 
-        while (true) {
-            if (updateGuard.compareAndSet(false, true)) {
-                try {
-                    // This call must be outside lock.
-                    return ctx.closures().callLocalSafe(updateCall, true);
-                }
-                finally {
-                    lock.lock();
+                                isReserveFutResultsProcessed = false;
 
-                    try {
-                        updateGuard.set(false);
+                                long curGlobalVal = seq.get();
 
-                        cond.signalAll();
-                    }
-                    finally {
-                        lock.unlock();
-                    }
-                }
-            }
-            else {
-                lock.lock();
+                                reservedBottomBound = curGlobalVal + off;
 
-                try {
-                    while (locVal >= upBound && updateGuard.get())
-                        U.await(cond, 500, MILLISECONDS);
+                                newUpBound = reservedBottomBound + batchSize;
 
-                    checkRemoved();
+                                reservedUpBound = newUpBound;
 
-                    // If reserved range isn't exhausted.
-                    if (locVal + l <= upBound) {
-                        long curVal = locVal;
+                                newReservationLine = reservedBottomBound + (batchSize * percentage / 100);
+                            }
+                            finally {
+                                lock.unlock();
+                            }
+
+                            seq.set(newUpBound);
 
-                        locVal += l;
+                            seqView.put(key, seq);
 
-                        return new GridFinishedFuture<>(updated ? locVal : curVal);
+                            tx.commit();
+                        }
+                        catch (Error | Exception e) {
+                            U.error(log, "Failed to get and add: " + this, e);
+
+                            throw e;
+                        }
+
+                        return null;
                     }
+                });
+
+                try {
+                    CU.outTx(reserveCall, ctx);
                 }
-                finally {
-                    lock.unlock();
+                catch (IgniteCheckedException e) {
+                    throw new IgniteException(e);
                 }
             }
-        }
+        }, /*sys pool*/ false);
     }
 
-    /** Get local batch size for this sequences.
+    /**
+     * Get local batch size for this sequences.
      *
      * @return Sequence batch size.
      */
@@ -398,6 +366,25 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         }
     }
 
+    /** {@inheritDoc} */
+    @Override public int reservePercentage() {
+        return percentage;
+    }
+
+    /** {@inheritDoc} */
+    @Override public void reservePercentage(int percentage) {
+        A.ensure(percentage >= 0 && percentage <= 100, "Invalid reserve percentage: " + percentage);
+
+        lock.lock();
+
+        try {
+            this.percentage = percentage;
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
     /**
      * Check removed status.
      *
@@ -465,89 +452,6 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         }
     }
 
-    /**
-     * Method returns callable for execution all update operations in async and sync mode.
-     *
-     * @param l Value will be added to sequence.
-     * @param updated If {@code true}, will return updated value, if {@code false}, will return previous value.
-     * @return Callable for execution in async and sync mode.
-     */
-    @SuppressWarnings("TooBroadScope")
-    private Callable<Long> internalUpdate(final long l, final boolean updated) {
-        return retryTopologySafe(new Callable<Long>() {
-            @Override public Long call() throws Exception {
-                try (IgniteInternalTx tx = CU.txStartInternal(ctx, seqView, PESSIMISTIC, REPEATABLE_READ)) {
-                    GridCacheAtomicSequenceValue seq = seqView.get(key);
-
-                    checkRemoved();
-
-                    assert seq != null;
-
-                    long curLocVal;
-
-                    long newUpBound;
-
-                    lock.lock();
-
-                    try {
-                        curLocVal = locVal;
-
-                        // If local range was already reserved in another thread.
-                        if (locVal + l <= upBound) {
-                            long retVal = locVal;
-
-                            locVal += l;
-
-                            return updated ? locVal : retVal;
-                        }
-
-                        long curGlobalVal = seq.get();
-
-                        long newLocVal;
-
-                        /* We should use offset because we already reserved left side of range.*/
-                        long off = batchSize > 1 ? batchSize - 1 : 1;
-
-                        // Calculate new values for local counter, global counter and upper bound.
-                        if (curLocVal + l >= curGlobalVal) {
-                            newLocVal = curLocVal + l;
-
-                            newUpBound = newLocVal + off;
-                        }
-                        else {
-                            newLocVal = curGlobalVal;
-
-                            newUpBound = newLocVal + off;
-                        }
-
-                        locVal = newLocVal;
-                        upBound = newUpBound;
-
-                        if (updated)
-                            curLocVal = newLocVal;
-                    }
-                    finally {
-                        lock.unlock();
-                    }
-
-                    // Global counter must be more than reserved upper bound.
-                    seq.set(newUpBound + 1);
-
-                    seqView.put(key, seq);
-
-                    tx.commit();
-
-                    return curLocVal;
-                }
-                catch (Error | Exception e) {
-                    U.error(log, "Failed to get and add: " + this, e);
-
-                    throw e;
-                }
-            }
-        });
-    }
-
     /** {@inheritDoc} */
     @Override public void writeExternal(ObjectOutput out) throws IOException {
         out.writeObject(ctx.kernalContext());

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicSequenceMultiThreadedAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicSequenceMultiThreadedAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicSequenceMultiThreadedAbstractTest.java
new file mode 100644
index 0000000..10b57e8
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicSequenceMultiThreadedAbstractTest.java
@@ -0,0 +1,579 @@
+/*
+ * 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.datastructures;
+
+import java.util.Random;
+import java.util.UUID;
+import org.apache.ignite.IgniteAtomicSequence;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.configuration.AtomicConfiguration;
+import org.apache.ignite.internal.processors.datastructures.GridCacheAtomicSequenceImpl;
+import org.apache.ignite.internal.util.lang.GridAbsPredicate;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.GridTestUtils;
+
+/**
+ * Cache partitioned multi-threaded tests.
+ */
+public abstract class GridCacheAtomicSequenceMultiThreadedAbstractTest extends IgniteAtomicsAbstractTest {
+    /** Number of threads for multithreaded test. */
+    private static final int THREAD_NUM = 30;
+
+    /** Number of iterations per thread for multithreaded test. */
+    private static final int ITERATION_NUM = 10000;
+
+    /** {@inheritDoc} */
+    @Override protected int gridCount() {
+        return 1;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected AtomicConfiguration atomicConfiguration() {
+        AtomicConfiguration cfg = super.atomicConfiguration();
+
+        cfg.setBackups(1);
+        cfg.setAtomicSequenceReserveSize(10);
+
+        return cfg;
+    }
+
+    /** @throws Exception If failed. */
+    public void testValues() throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
+
+        // Local reservations.
+        assertEquals(1, seq.incrementAndGet());
+        assertEquals(1, seq.getAndIncrement()); // Seq = 2
+        assertEquals(3L, seq.incrementAndGet());
+        assertEquals(3L, seq.getAndIncrement()); // Seq=4
+
+        assertEquals(4, seq.getAndAdd(3));
+        assertEquals(9, seq.addAndGet(2));
+
+        assertEquals(new Long(9L), U.field(seq, "locVal"));
+        assertEquals(new Long(10L), U.field(seq, "upBound"));
+
+        // Cache calls.
+        assertEquals(10, seq.incrementAndGet());
+
+        assertEquals(new Long(10L), U.field(seq, "locVal"));
+        assertEquals(new Long(20L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(19L), U.field(seq, "locVal"));
+        assertEquals(new Long(20L), U.field(seq, "upBound"));
+
+        assertEquals(20L, seq.incrementAndGet());
+
+        assertEquals(new Long(20L), U.field(seq, "locVal"));
+        assertEquals(new Long(30L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(29L), U.field(seq, "locVal"));
+        assertEquals(new Long(30L), U.field(seq, "upBound"));
+
+        assertEquals(29, seq.getAndIncrement());
+
+        assertEquals(new Long(30L), U.field(seq, "locVal"));
+        assertEquals(new Long(40L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(39L), U.field(seq, "locVal"));
+        assertEquals(new Long(40L), U.field(seq, "upBound"));
+
+        assertEquals(39L, seq.getAndIncrement());
+
+        assertEquals(new Long(40L), U.field(seq, "locVal"));
+        assertEquals(new Long(50L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(49L), U.field(seq, "locVal"));
+        assertEquals(new Long(50L), U.field(seq, "upBound"));
+
+        assertEquals(50, seq.addAndGet(1));
+
+        assertEquals(new Long(50L), U.field(seq, "locVal"));
+        assertEquals(new Long(60L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(59L), U.field(seq, "locVal"));
+        assertEquals(new Long(60L), U.field(seq, "upBound"));
+
+        assertEquals(59, seq.getAndAdd(1));
+
+        assertEquals(new Long(60L), U.field(seq, "locVal"));
+        assertEquals(new Long(70L), U.field(seq, "upBound"));
+    }
+
+    /** @throws Exception If failed. */
+    public void testValues2() throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 10, true);
+
+        assertSeqFields(seq, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+
+        assertEquals(17, seq.addAndGet(7));
+
+        assertSeqFields(seq, /*locVal*/ 17, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+
+        assertEquals(18, seq.incrementAndGet());
+
+        GridTestUtils.waitForCondition(new GridAbsPredicate() {
+            @Override public boolean apply() {
+                return !F.eq(U.field(seq, "isReserveFutResultsProcessed"), true);
+            }
+        }, 1000);
+
+        assertSeqFields(seq, /*locVal*/ 18, /*upBound*/ 20, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+
+        assertEquals(19, seq.incrementAndGet());
+
+        assertSeqFields(seq, /*locVal*/ 19, /*upBound*/ 20, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+
+        assertEquals(20, seq.incrementAndGet());
+
+        assertSeqFields(seq, /*locVal*/ 20, /*upBound*/ 30, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+    }
+
+    /** @throws Exception If failed. */
+    public void testValuesPercentage50() throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
+
+        seq.reservePercentage(50);
+
+        assertSeqFields(seq, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+
+        // Exhaust a first reserved range to get recalculated values according to new reserve percentage.
+        assertEquals(10, seq.addAndGet(10));
+
+        assertSeqFields(seq, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 15, /*resBottomBound*/ 10, /*resUpBound*/ 20);
+
+        assertEquals(15, seq.addAndGet(5));
+
+        GridTestUtils.waitForCondition(new GridAbsPredicate() {
+            @Override public boolean apply() {
+                return !F.eq(U.field(seq, "isReserveFutResultsProcessed"), true);
+            }
+        }, 1000);
+
+        assertSeqFields(seq, /*locVal*/ 15, /*upBound*/ 20, /*resBound*/ 25, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+    }
+
+    /** @throws Exception If failed. */
+    public void testValuesPercentage0() throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
+
+        seq.reservePercentage(0);
+
+        assertSeqFields(seq, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+
+        // Exhaust a first reserved range to get recalculated values according to new reserve percentage.
+        assertEquals(10, seq.addAndGet(10));
+
+        assertSeqFields(seq, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 10, /*resBottomBound*/ 10, /*resUpBound*/ 20);
+
+        assertEquals(11, seq.addAndGet(1));
+
+        GridTestUtils.waitForCondition(new GridAbsPredicate() {
+            @Override public boolean apply() {
+                return !F.eq(U.field(seq, "isReserveFutResultsProcessed"), true);
+            }
+        }, 1000);
+
+        assertSeqFields(seq, /*locVal*/ 11, /*upBound*/ 20, /*resBound*/ 20, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+
+        assertEquals(12, seq.incrementAndGet());
+
+        assertSeqFields(seq, /*locVal*/ 12, /*upBound*/ 20, /*resBound*/ 20, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+
+        assertEquals(20, seq.addAndGet(8));
+
+        assertSeqFields(seq, /*locVal*/ 20, /*upBound*/ 30, /*resBound*/ 20, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+    }
+
+    /** @throws Exception If failed. */
+    public void testValuesPercentage100() throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
+
+        seq.reservePercentage(100);
+
+        assertSeqFields(seq, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+
+        // Exhaust a first reserved range to get recalculated values according to new reserve percentage.
+        assertEquals(10, seq.addAndGet(10));
+
+        assertSeqFields(seq, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 20, /*resBottomBound*/ 10, /*resUpBound*/ 20);
+
+        assertEquals(19, seq.addAndGet(9));
+
+        assertSeqFields(seq, /*locVal*/ 19, /*upBound*/ 20, /*resBound*/ 20, /*resBottomBound*/ 10, /*resUpBound*/ 20);
+
+        assertEquals(20, seq.incrementAndGet());
+
+        assertSeqFields(seq, /*locVal*/ 20, /*upBound*/ 30, /*resBound*/ 30, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+    }
+
+    /** @throws Exception If failed. */
+    public void testValuesDoubleReservation() throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
+
+        assertSeqFields(seq, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+
+        assertEquals(30, seq.addAndGet(30));
+    }
+
+    /** @throws Exception If failed. */
+    public void testValues2Nodes() throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        startGrid(1);
+
+        try {
+            final GridCacheAtomicSequenceImpl seq1 = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
+            final GridCacheAtomicSequenceImpl seq2 = (GridCacheAtomicSequenceImpl)grid(1).atomicSequence(seqName, 0, false);
+
+            assertSeqFields(seq1, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+            assertSeqFields(seq2, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+
+            assertEquals(1, seq1.incrementAndGet());
+            assertEquals(11, seq2.incrementAndGet());
+
+            assertSeqFields(seq1, /*locVal*/ 1, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+            assertSeqFields(seq2, /*locVal*/ 11, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+
+            assertEquals(7, seq1.addAndGet(6));
+            assertEquals(17, seq2.addAndGet(6));
+
+            assertSeqFields(seq1, /*locVal*/ 7, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+            assertSeqFields(seq2, /*locVal*/ 17, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
+
+            // New reservation (reverse order)
+            assertEquals(18, seq2.incrementAndGet());
+
+            assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicate() {
+                @Override public boolean apply() {
+                    return !F.eq(U.field(seq2, "isReserveFutResultsProcessed"), true);
+                }
+            }, 1000));
+
+            assertEquals(8, seq1.incrementAndGet());
+
+            assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicate() {
+                @Override public boolean apply() {
+                    return !F.eq(U.field(seq1, "isReserveFutResultsProcessed"), true);
+                }
+            }, 1000));
+
+            assertSeqFields(seq1, /*locVal*/ 8, /*upBound*/ 10, /*resBound*/ 38, /*resBottomBound*/ 30, /*resUpBound*/ 40);
+            assertSeqFields(seq2, /*locVal*/ 18, /*upBound*/ 20, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+
+            assertEquals(30, seq1.addAndGet(7));
+            assertEquals(20, seq2.addAndGet(2));
+
+            assertSeqFields(seq1, /*locVal*/ 30, /*upBound*/ 40, /*resBound*/ 38, /*resBottomBound*/ 30, /*resUpBound*/ 40);
+            assertSeqFields(seq2, /*locVal*/ 20, /*upBound*/ 30, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
+        }
+        finally {
+            stopGrid(1);
+        }
+    }
+
+    /**
+     * @param seq Sequence.
+     * @param locVal Local value.
+     * @param upBound Up bound.
+     * @param newReservationLine Reservation bnound.
+     * @param reservedBottomBound Reservation bottom bound.
+     * @param reservedUpBound Reservation up bound.
+     */
+    private void assertSeqFields(GridCacheAtomicSequenceImpl seq, long locVal, long upBound, long newReservationLine,
+        long reservedBottomBound, long reservedUpBound) {
+        assertEquals(new Long(locVal), U.field(seq, "locVal"));
+        assertEquals(new Long(upBound), U.field(seq, "upBound"));
+        assertEquals(new Long(newReservationLine), U.field(seq, "newReservationLine"));
+        assertEquals(new Long(reservedBottomBound), U.field(seq, "reservedBottomBound"));
+        assertEquals(new Long(reservedUpBound), U.field(seq, "reservedUpBound"));
+    }
+
+    /** @throws Exception If failed. */
+    public void testValues2NodesDoubleReservation() throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        startGrid(1);
+
+        try {
+            final GridCacheAtomicSequenceImpl seq1 = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
+            final GridCacheAtomicSequenceImpl seq2 = (GridCacheAtomicSequenceImpl)grid(1).atomicSequence(seqName, 0, false);
+
+            assertEquals(1, seq1.incrementAndGet());
+            assertEquals(11, seq2.incrementAndGet());
+
+            assertEquals(new Long(1L), U.field(seq1, "locVal"));
+            assertEquals(new Long(10L), U.field(seq1, "upBound"));
+            assertEquals(new Long(11L), U.field(seq2, "locVal"));
+            assertEquals(new Long(20L), U.field(seq2, "upBound"));
+
+            assertEquals(31, seq2.addAndGet(20));
+
+            assertEquals(new Long(1L), U.field(seq1, "locVal"));
+            assertEquals(new Long(10L), U.field(seq1, "upBound"));
+            assertEquals(new Long(31L), U.field(seq2, "locVal"));
+            assertEquals(new Long(40L), U.field(seq2, "upBound"));
+
+            // Jump
+            assertEquals(40, seq1.addAndGet(23));
+        }
+        finally {
+            stopGrid(1);
+        }
+    }
+
+    /** @throws Exception If failed. */
+    public void testUpdatedSync() throws Exception {
+        checkUpdate(true);
+    }
+
+    /** @throws Exception If failed. */
+    public void testPreviousSync() throws Exception {
+        checkUpdate(false);
+    }
+
+    /** @throws Exception If failed. */
+    public void testIncrementAndGet() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.incrementAndGet();
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testIncrementAndGet2Nodes() throws Exception {
+        startGrid(1);
+
+        try {
+            String seqName = UUID.randomUUID().toString();
+
+            final IgniteAtomicSequence seq1 = grid(0).atomicSequence(seqName, 0L, true);
+            final IgniteAtomicSequence seq2 = grid(1).atomicSequence(seqName, 0L, true);
+
+            multithreaded(new Runnable() {
+                @Override public void run() {
+                    for (int i = 0; i < ITERATION_NUM; i++) {
+                        if (i % 2 == 0)
+                            seq1.incrementAndGet();
+                        else
+                            seq2.incrementAndGet();
+                    }
+                }
+            }, THREAD_NUM);
+
+            long seq1Val = seq1.get();
+            long seq2Val = seq2.get();
+
+            assertEquals(ITERATION_NUM * THREAD_NUM + (seq1Val < seq2Val ? 0 : 10), seq1Val);
+            assertEquals(ITERATION_NUM * THREAD_NUM + (seq1Val < seq2Val ? 10 : 0), seq2Val);
+        }
+        finally {
+            stopGrid(1);
+        }
+    }
+
+    /** @throws Exception If failed. */
+    public void testGetAndIncrement() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.getAndIncrement();
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testAddAndGet() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.addAndGet(5);
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(5 * ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testGetAndAdd() throws Exception {
+        checkGetAndAdd(5);
+    }
+
+    /** @throws Exception If failed. */
+    public void testGetAndAdd2() throws Exception {
+        checkGetAndAdd(3);
+    }
+
+    /**
+     * @param val Value.
+     * @throws Exception If failed.
+     */
+    private void checkGetAndAdd(final int val) throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.getAndAdd(val);
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(val * ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testMixed1() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.incrementAndGet();
+                t.getAndIncrement();
+                t.incrementAndGet();
+                t.getAndIncrement();
+                t.getAndAdd(3);
+                t.addAndGet(3);
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(10 * ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testMixed2() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.getAndAdd(2);
+                t.addAndGet(3);
+                t.addAndGet(5);
+                t.getAndAdd(7);
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(17 * ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /**
+     * Executes given closure in a given number of threads given number of times.
+     *
+     * @param c Closure to execute.
+     * @param seq Sequence to pass into closure.
+     * @param cnt Count of iterations per thread.
+     * @param threadCnt Thread count.
+     * @throws Exception If failed.
+     */
+    protected void runSequenceClosure(final GridInUnsafeClosure<IgniteAtomicSequence> c,
+        final IgniteAtomicSequence seq, final int cnt, final int threadCnt) throws Exception {
+        multithreaded(new Runnable() {
+            @Override public void run() {
+                try {
+                    for (int i = 0; i < cnt; i++)
+                        c.apply(seq);
+                }
+                catch (IgniteCheckedException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }, threadCnt);
+    }
+
+    /**
+     * @param updated Whether use updated values.
+     * @throws Exception If failed.
+     */
+    @SuppressWarnings("IfMayBeConditional")
+    private void checkUpdate(boolean updated) throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        long curVal = 0;
+
+        Random r = new Random();
+
+        for (int i = 0; i < ITERATION_NUM; i++) {
+            long delta = r.nextInt(10) + 1;
+
+            long retVal = updated ? seq.addAndGet(delta) : seq.getAndAdd(delta);
+
+            assertEquals(updated ? curVal + delta : curVal, retVal);
+
+            curVal += delta;
+        }
+    }
+
+    /**
+     * Closure that throws exception.
+     *
+     * @param <E> Closure argument type.
+     */
+    private abstract static class GridInUnsafeClosure<E> {
+        public abstract void apply(E p) throws IgniteCheckedException;
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java
index d988b2c..e7a477f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java
@@ -18,12 +18,12 @@
 package org.apache.ignite.internal.processors.cache.datastructures;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Random;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.Callable;
+
 import org.apache.ignite.IgniteAtomicSequence;
 import org.apache.ignite.configuration.AtomicConfiguration;
 import org.apache.ignite.configuration.CacheConfiguration;
@@ -36,6 +36,7 @@ import org.apache.ignite.internal.processors.datastructures.GridCacheInternalKey
 import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.transactions.Transaction;
+import org.eclipse.jetty.util.ConcurrentHashSet;
 import org.jetbrains.annotations.Nullable;
 
 import static org.apache.ignite.cache.CacheMode.PARTITIONED;
@@ -119,7 +120,7 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
             assertEquals(BATCH_SIZE, seq.batchSize());
         }
 
-        assertEquals(1, G.allGrids().size());
+        assertEquals(gridCount(), G.allGrids().size());
     }
 
     /** {@inheritDoc} */
@@ -308,9 +309,29 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      * @throws Exception If failed.
      */
     public void testMultiThreadedSequenceIntegrity() throws Exception {
-        multiThreadedSequenceIntegrity(1, 0);
-        multiThreadedSequenceIntegrity(7, -1500);
-        multiThreadedSequenceIntegrity(3, 345);
+        multiThreadedSequenceIntegrity(/*batchSize*/ 1, /*percentage*/ 30, /*initVal*/0);
+        multiThreadedSequenceIntegrity(/*batchSize*/ 7, /*percentage*/ 0, /*initVal*/-1500);
+        multiThreadedSequenceIntegrity(/*batchSize*/ 3, /*percentage*/ 100, /*initVal*/345);
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testMultiNodeSequenceIntegrity() throws Exception {
+        if (gridCount() < 2)
+            return;
+
+        multiNodeSequenceIntegrity(/*batchSize*/ 1, /*percentage*/ 80, /*initVal*/0);
+        multiNodeSequenceIntegrity(/*batchSize*/ 1, /*percentage*/ 0, /*initVal*/-11);
+        multiNodeSequenceIntegrity(/*batchSize*/ 1, /*percentage*/ 100, /*initVal*/183);
+
+        multiNodeSequenceIntegrity(/*batchSize*/ 7, /*percentage*/ 20, /*initVal*/83);
+        multiNodeSequenceIntegrity(/*batchSize*/ 7, /*percentage*/ 0, /*initVal*/-17);
+        multiNodeSequenceIntegrity(/*batchSize*/ 7, /*percentage*/ 100, /*initVal*/11);
+
+        multiNodeSequenceIntegrity(/*batchSize*/ 11, /*percentage*/ 50, /*initVal*/-7);
+        multiNodeSequenceIntegrity(/*batchSize*/ 11, /*percentage*/ 0, /*initVal*/55);
+        multiNodeSequenceIntegrity(/*batchSize*/ 11, /*percentage*/ 100, /*initVal*/22);
     }
 
     /**
@@ -364,8 +385,8 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      * Sequence get and increment.
      *
      * @param seq Sequence for test.
-     * @throws Exception If failed.
      * @return Result of operation.
+     * @throws Exception If failed.
      */
     private long getAndIncrement(IgniteAtomicSequence seq) throws Exception {
         long locSeqVal = seq.get();
@@ -381,8 +402,8 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      * Sequence add and increment
      *
      * @param seq Sequence for test.
-     * @throws Exception If failed.
      * @return Result of operation.
+     * @throws Exception If failed.
      */
     private long incrementAndGet(IgniteAtomicSequence seq) throws Exception {
         long locSeqVal = seq.get();
@@ -399,8 +420,8 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      *
      * @param seq Sequence for test.
      * @param l Number of added elements.
-     * @throws Exception If failed.
      * @return Result of operation.
+     * @throws Exception If failed.
      */
     private long addAndGet(IgniteAtomicSequence seq, long l) throws Exception {
         long locSeqVal = seq.get();
@@ -417,8 +438,8 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      *
      * @param seq Sequence for test.
      * @param l Number of added elements.
-     * @throws Exception If failed.
      * @return Result of operation.
+     * @throws Exception If failed.
      */
     private long getAndAdd(IgniteAtomicSequence seq, long l) throws Exception {
         long locSeqVal = seq.get();
@@ -431,10 +452,10 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
     }
 
     /**
-     *  Sequence integrity.
+     * Sequence integrity.
      *
      * @param batchSize Sequence batch size.
-     * @param initVal  Sequence initial value.
+     * @param initVal Sequence initial value.
      * @throws Exception If test fail.
      */
     private void sequenceIntegrity(int batchSize, long initVal) throws Exception {
@@ -465,24 +486,24 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
     }
 
     /**
-     *  Multi-threaded integrity.
+     * Multi-threaded integrity.
      *
      * @param batchSize Sequence batch size.
-     * @param initVal  Sequence initial value.
+     * @param initVal Sequence initial value.
      * @throws Exception If test fail.
      */
-    private void multiThreadedSequenceIntegrity(int batchSize, long initVal) throws Exception {
+    private void multiThreadedSequenceIntegrity(int batchSize, int percentage, long initVal) throws Exception {
         // Random sequence names.
         String locSeqName = UUID.randomUUID().toString();
 
         // Sequence.
-        final IgniteAtomicSequence locSeq = grid().atomicSequence(locSeqName, initVal,
-            true);
+        final IgniteAtomicSequence locSeq = grid().atomicSequence(locSeqName, initVal, true);
 
         locSeq.batchSize(batchSize);
+        locSeq.reservePercentage(percentage);
 
         // Result set.
-        final Set<Long> resSet = Collections.synchronizedSet(new HashSet<Long>());
+        final Set<Long> resSet = new ConcurrentHashSet<>();
 
         // Get sequence value and try to put it result set.
         for (int i = 0; i < MAX_LOOPS_NUM; i++) {
@@ -521,7 +542,6 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
 
             resSet.add(val);
 
-
             if (i % 100 == 0)
                 info("Finished iteration 2: " + i);
         }
@@ -539,6 +559,51 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
     }
 
     /**
+     * Multi-threaded integrity.
+     *
+     * @param batchSize Sequence batch size.
+     * @param initVal Sequence initial value.
+     * @throws Exception If test fail.
+     */
+    private void multiNodeSequenceIntegrity(int batchSize, int percentage, long initVal) throws Exception {
+        // Random sequence names.
+        String locSeqName = UUID.randomUUID().toString();
+
+        // Sequences.
+        final IgniteAtomicSequence[] locSeqs = new IgniteAtomicSequence[3];
+
+        for (int i = 0; i < locSeqs.length; i++) {
+            locSeqs[i] = grid(i).atomicSequence(locSeqName, initVal, true);
+
+            locSeqs[i].batchSize(batchSize);
+
+            locSeqs[i].reservePercentage(percentage);
+        }
+
+        final Set<Long> resSet = new ConcurrentHashSet<>();
+
+        multithreaded(
+            new Callable() {
+                @Nullable @Override public Object call() throws Exception {
+                    // Get sequence value and try to put it result set.
+                    for (int i = 0; i < MAX_LOOPS_NUM; i++) {
+                        Long val = locSeqs[i % locSeqs.length].getAndIncrement();
+
+                        assert !resSet.contains(val) : "Element already in set : " + val;
+
+                        resSet.add(val);
+                    }
+
+                    return null;
+                }
+            }, THREAD_NUM);
+
+        assert resSet.size() == MAX_LOOPS_NUM * THREAD_NUM;
+
+        removeSequence(locSeqName);
+    }
+
+    /**
      * Test sequence integrity.
      *
      * @param seq Sequence for test.

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java
index 945650d..ac38fd5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java
@@ -17,324 +17,17 @@
 
 package org.apache.ignite.internal.processors.cache.datastructures.partitioned;
 
-import java.util.Random;
-import java.util.UUID;
-import org.apache.ignite.IgniteAtomicSequence;
-import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.configuration.AtomicConfiguration;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteAtomicsAbstractTest;
-import org.apache.ignite.internal.processors.datastructures.GridCacheAtomicSequenceImpl;
-import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.processors.cache.datastructures.GridCacheAtomicSequenceMultiThreadedAbstractTest;
 
 import static org.apache.ignite.cache.CacheMode.PARTITIONED;
 
 /**
  * Cache partitioned multi-threaded tests.
  */
-public class GridCachePartitionedAtomicSequenceMultiThreadedTest extends IgniteAtomicsAbstractTest {
-    /** Number of threads for multithreaded test. */
-    private static final int THREAD_NUM = 30;
-
-    /** Number of iterations per thread for multithreaded test. */
-    private static final int ITERATION_NUM = 4000;
-
+public class GridCachePartitionedAtomicSequenceMultiThreadedTest extends GridCacheAtomicSequenceMultiThreadedAbstractTest {
     /** {@inheritDoc} */
     @Override protected CacheMode atomicsCacheMode() {
         return PARTITIONED;
     }
-
-    /** {@inheritDoc} */
-    @Override protected int gridCount() {
-        return 1;
-    }
-
-    /** {@inheritDoc} */
-    @Override protected AtomicConfiguration atomicConfiguration() {
-        AtomicConfiguration cfg = super.atomicConfiguration();
-
-        cfg.setBackups(1);
-        cfg.setAtomicSequenceReserveSize(10);
-
-        return cfg;
-    }
-
-    /** @throws Exception If failed. */
-    public void testValues() throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
-
-        // Local reservations.
-        assertEquals(1, seq.incrementAndGet());
-        assertEquals(1, seq.getAndIncrement()); // Seq = 2
-        assertEquals(3L, seq.incrementAndGet());
-        assertEquals(3L, seq.getAndIncrement()); // Seq=4
-
-        assertEquals(4, seq.getAndAdd(3));
-        assertEquals(9, seq.addAndGet(2));
-
-        assertEquals(new Long(9L), U.field(seq, "locVal"));
-        assertEquals(new Long(9L), U.field(seq, "upBound"));
-
-        // Cache calls.
-        assertEquals(10, seq.incrementAndGet());
-
-        assertEquals(new Long(10L), U.field(seq, "locVal"));
-        assertEquals(new Long(19L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(19L), U.field(seq, "locVal"));
-        assertEquals(new Long(19L), U.field(seq, "upBound"));
-
-        assertEquals(20L, seq.incrementAndGet());
-
-        assertEquals(new Long(20L), U.field(seq, "locVal"));
-        assertEquals(new Long(29L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(29L), U.field(seq, "locVal"));
-        assertEquals(new Long(29L), U.field(seq, "upBound"));
-
-        assertEquals(29, seq.getAndIncrement());
-
-        assertEquals(new Long(30L), U.field(seq, "locVal"));
-        assertEquals(new Long(39L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(39L), U.field(seq, "locVal"));
-        assertEquals(new Long(39L), U.field(seq, "upBound"));
-
-        assertEquals(39L, seq.getAndIncrement());
-
-        assertEquals(new Long(40L), U.field(seq, "locVal"));
-        assertEquals(new Long(49L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(49L), U.field(seq, "locVal"));
-        assertEquals(new Long(49L), U.field(seq, "upBound"));
-
-        assertEquals(50, seq.addAndGet(1));
-
-        assertEquals(new Long(50L), U.field(seq, "locVal"));
-        assertEquals(new Long(59L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(59L), U.field(seq, "locVal"));
-        assertEquals(new Long(59L), U.field(seq, "upBound"));
-
-        assertEquals(59, seq.getAndAdd(1));
-
-        assertEquals(new Long(60L), U.field(seq, "locVal"));
-        assertEquals(new Long(69L), U.field(seq, "upBound"));
-    }
-
-    /** @throws Exception If failed. */
-    public void testUpdatedSync() throws Exception {
-        checkUpdate(true);
-    }
-
-    /** @throws Exception If failed. */
-    public void testPreviousSync() throws Exception {
-        checkUpdate(false);
-    }
-
-    /** @throws Exception If failed. */
-    public void testIncrementAndGet() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.incrementAndGet();
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testIncrementAndGetAsync() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.incrementAndGet();
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testGetAndIncrement() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.getAndIncrement();
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testGetAndIncrementAsync() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.getAndIncrement();
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testAddAndGet() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.addAndGet(5);
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(5 * ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testGetAndAdd() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.getAndAdd(5);
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(5 * ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testMixed1() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.incrementAndGet();
-                t.getAndIncrement();
-                t.incrementAndGet();
-                t.getAndIncrement();
-                t.getAndAdd(3);
-                t.addAndGet(3);
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(10 * ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testMixed2() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.getAndAdd(2);
-                t.addAndGet(3);
-                t.addAndGet(5);
-                t.getAndAdd(7);
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(17 * ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /**
-     * Executes given closure in a given number of threads given number of times.
-     *
-     * @param c Closure to execute.
-     * @param seq Sequence to pass into closure.
-     * @param cnt Count of iterations per thread.
-     * @param threadCnt Thread count.
-     * @throws Exception If failed.
-     */
-    protected void runSequenceClosure(final GridInUnsafeClosure<IgniteAtomicSequence> c,
-        final IgniteAtomicSequence seq, final int cnt, final int threadCnt) throws Exception {
-        multithreaded(new Runnable() {
-            @Override public void run() {
-                try {
-                    for (int i = 0; i < cnt; i++)
-                        c.apply(seq);
-                }
-                catch (IgniteCheckedException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }, threadCnt);
-    }
-
-    /**
-     * @param updated Whether use updated values.
-     * @throws Exception If failed.
-     */
-    @SuppressWarnings("IfMayBeConditional")
-    private void checkUpdate(boolean updated) throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        long curVal = 0;
-
-        Random r = new Random();
-
-        for (int i = 0; i < ITERATION_NUM; i++) {
-            long delta = r.nextInt(10) + 1;
-
-            long retVal = updated ? seq.addAndGet(delta) : seq.getAndAdd(delta);
-
-            assertEquals(updated ? curVal + delta : curVal, retVal);
-
-            curVal += delta;
-        }
-    }
-
-    /**
-     * Closure that throws exception.
-     *
-     * @param <E> Closure argument type.
-     */
-    private abstract static class GridInUnsafeClosure<E> {
-        public abstract void apply(E p) throws IgniteCheckedException;
-    }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java
index adc2ab3..ae03348 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java
@@ -40,4 +40,8 @@ public class GridCachePartitionedSequenceApiSelfTest extends GridCacheSequenceAp
 
         return atomicCfg;
     }
+
+    @Override protected int gridCount() {
+        return 3;
+    }
 }
\ No newline at end of file


[13/34] ignite git commit: IGNITE-3727 start/stop async remote listener test

Posted by sb...@apache.org.
IGNITE-3727 start/stop async remote listener test


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

Branch: refs/heads/ignite-3727-2
Commit: 14e1a6b300109e84bf1a0652673fa674a9ea83b3
Parents: 271619d
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Thu Sep 8 20:24:08 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Thu Sep 8 20:24:08 2016 +0300

----------------------------------------------------------------------
 .../ignite/messaging/GridMessagingSelfTest.java   | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/14e1a6b3/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
index 2e2afd4..c6ce0dc 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
@@ -1045,6 +1045,8 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
             }
         }, IllegalStateException.class, null);
 
+        discoSpi.blockCustomEvent();
+
         final String topic = "topic";
 
         UUID id = msg.remoteListen(topic, new P2<UUID, Object>() {
@@ -1060,9 +1062,13 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
 
         Assert.assertNull(id);
 
-        IgniteFuture<UUID> fut = msg.future();
+        IgniteFuture<UUID> starFut = msg.future();
+
+        Assert.assertNotNull(starFut);
+
+        Assert.assertFalse(starFut.isDone());
 
-        Assert.assertNotNull(fut);
+        discoSpi.stopBlock();
 
         GridTestUtils.assertThrows(log, new Callable<Void>() {
             @Override public Void call() throws Exception {
@@ -1072,10 +1078,12 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
             }
         }, IllegalStateException.class, null);
 
-        id = fut.get();
+        id = starFut.get();
 
         Assert.assertNotNull(id);
 
+        Assert.assertTrue(starFut.isDone());
+
         message(ignite1.cluster().forRemotes()).send(topic, "msg1");
 
         GridTestUtils.waitForCondition(new PA() {
@@ -1086,8 +1094,6 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
 
         assertEquals(1, msgCnt.get());
 
-        discoSpi.blockCustomEvent();
-
         msg.stopRemoteListen(id);
 
         IgniteFuture<?> stopFut = msg.future();
@@ -1135,7 +1141,7 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
             synchronized (mux) {
                 if (blockCustomEvt) {
                     DiscoveryCustomMessage msg0 = GridTestUtils.getFieldValue(msg, "delegate");
-                    if (msg0 instanceof StopRoutineDiscoveryMessage) {
+                    if (msg0 instanceof StopRoutineDiscoveryMessage || msg0 instanceof StartRoutineDiscoveryMessage) {
                         log.info("Block custom message: " + msg0);
                         blockedMsgs.add(msg);
 


[03/34] ignite git commit: IGNITE-3727: added comment for message send method, details behavior

Posted by sb...@apache.org.
IGNITE-3727: added comment for message send method, details behavior


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

Branch: refs/heads/ignite-3727-2
Commit: 1f31fdb47b7b0f8d621ee1c96927038591cd369d
Parents: bb899bd
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Fri Sep 2 17:15:44 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Fri Sep 2 17:15:44 2016 +0300

----------------------------------------------------------------------
 modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/1f31fdb4/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
index ab554af..a9dc043 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
@@ -77,6 +77,7 @@ public interface IgniteMessaging extends IgniteAsyncSupport {
 
     /**
      * Sends given message with specified topic to the nodes in the underlying cluster group.
+     * When you invoke method, all listeners who were registered on the local node{@link #localListen} or {@link #remoteListen}, will be executing in the same thread.
      *
      * @param topic Topic to send to, {@code null} for default topic.
      * @param msg Message to send.
@@ -87,6 +88,7 @@ public interface IgniteMessaging extends IgniteAsyncSupport {
 
     /**
      * Sends given messages with the specified topic to the nodes in the underlying cluster group.
+     * When you invoke method, all listeners who were registered on local node {@link #localListen} or {@link #remoteListen}, will be executing in the same thread.
      *
      * @param topic Topic to send to, {@code null} for default topic.
      * @param msgs Messages to send. Order of the sending is undefined. If the method produces


[27/34] ignite git commit: ignite-3727 added test for sendOrdered + javadoc (behavior sendOrdered)

Posted by sb...@apache.org.
ignite-3727  added test for sendOrdered + javadoc (behavior sendOrdered)


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

Branch: refs/heads/ignite-3727-2
Commit: de59444b235ae325bb35976dbd0f211ce8dfb69c
Parents: 60b030c
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Wed Sep 14 11:18:10 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Wed Sep 14 11:18:10 2016 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/IgniteMessaging.java |   4 +-
 .../messaging/IgniteMessagingSendAsyncTest.java | 147 ++++++++++++++++++-
 2 files changed, 149 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/de59444b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
index 00a4fc8..b0cbe1d 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
@@ -103,7 +103,9 @@ public interface IgniteMessaging extends IgniteAsyncSupport {
     /**
      * Sends given message with specified topic to the nodes in the underlying cluster group. Messages sent with
      * this method will arrive in the same order they were sent. Note that if a topic is used
-     * for ordered messages, then it cannot be reused for non-ordered messages.
+     * for ordered messages, then it cannot be reused for non-ordered messages. Note if you have local listener
+     * on this topic, all messages will process through thread pool, and current thread will never be blocked
+     * when you invoke sendOrdered, no matter which mode you used (default or {@link #withAsync()}).
      * <p>
      * The {@code timeout} parameter specifies how long an out-of-order message will stay in a queue,
      * waiting for messages that are ordered ahead of it to arrive. If timeout expires, then all ordered

http://git-wip-us.apache.org/repos/asf/ignite/blob/de59444b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
index 66c9ed0..4cfff38 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.messaging;
 
+import com.google.common.collect.Lists;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteMessaging;
 import org.apache.ignite.lang.IgniteBiInClosure;
@@ -25,6 +26,7 @@ import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Assert;
 
 import java.io.Serializable;
+import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicReference;
@@ -65,7 +67,6 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
                 Assert.assertEquals(msgStr, msg);
             }
         });
-
     }
 
     /**
@@ -116,6 +117,72 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
+     * Test for check, that SendOrdered work in our thread pool. 1 node in topology.
+     */
+    public void testSendOrderedDefaultMode() throws Exception {
+        Ignite ignite1 = startGrid(1);
+
+        final List<String> msgs = orderedMsg();
+
+        sendOrdered(ignite1.message(), msgs, new IgniteBiInClosure< List<String>,  List<Thread>> () {
+            @Override public void apply(List<String> received, List<Thread> threads) {
+                assertFalse(threads.contains(Thread.currentThread()));
+                assertTrue(msgs.equals(received));
+            }
+        });
+    }
+
+    /**
+     * Test for check, that SendOrdered work in our thread pool. 1 node in topology.
+     */
+    public void testSendOrderedAsyncMode() throws Exception {
+        Ignite ignite1 = startGrid(1);
+
+        final List<String> msgs = orderedMsg();
+
+        sendOrdered(ignite1.message().withAsync(), msgs, new IgniteBiInClosure< List<String>,  List<Thread>> () {
+            @Override public void apply(List<String> received, List<Thread> threads) {
+                assertFalse(threads.contains(Thread.currentThread()));
+                assertTrue(msgs.equals(received));
+            }
+        });
+    }
+
+    /**
+     * Test for check, that SendOrdered work in our thread pool. 2 node in topology.
+     */
+    public void testSendOrderedDefaultMode2Node() throws Exception {
+        Ignite ignite1 = startGrid(1);
+        Ignite ignite2 = startGrid(2);
+
+        final List<String> msgs = orderedMsg();
+
+        sendOrderedWith2Node(ignite2, ignite1.message(), msgs, new IgniteBiInClosure<List<String>, List<Thread>>() {
+            @Override public void apply(List<String> received, List<Thread> threads) {
+                assertFalse(threads.contains(Thread.currentThread()));
+                assertTrue(msgs.equals(received));
+            }
+        });
+    }
+
+    /**
+     * Test for check, that SendOrdered work in our thread pool. 2 node in topology.
+     */
+    public void testSendOrderedAsyncMode2Node() throws Exception {
+        Ignite ignite1 = startGrid(1);
+        Ignite ignite2 = startGrid(2);
+
+        final List<String> msgs = orderedMsg();
+
+        sendOrderedWith2Node(ignite2, ignite1.message().withAsync(), msgs, new IgniteBiInClosure<List<String>, List<Thread>>() {
+            @Override public void apply(List<String> received, List<Thread> threads) {
+                assertFalse(threads.contains(Thread.currentThread()));
+                assertTrue(msgs.equals(received));
+            }
+        });
+    }
+
+    /**
      * @param igniteMsg Ignite message.
      * @param msgStr    Message string.
      * @param cls       Callback for compare result.
@@ -171,4 +238,82 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
 
         cls.apply(val.get(), thread.get());
     }
+
+    /**
+     * @param ignite2 Ignite 2.
+     * @param igniteMsg Ignite message.
+     * @param msgs messages for send.
+     * @param cls  Callback for compare result.
+     */
+    private void sendOrderedWith2Node(
+            final Ignite ignite2,
+            final IgniteMessaging igniteMsg,
+            final List<String> msgs,
+            final IgniteBiInClosure<List<String>,List<Thread>> cls
+    ) throws Exception {
+
+        final CountDownLatch latch = new CountDownLatch(msgs.size());
+
+        final List<String> received = Lists.newArrayList();
+
+        ignite2.message().localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
+            @Override public boolean apply(UUID uuid, String msg) {
+                received.add(msg);
+                latch.countDown();
+                return true;
+            }
+        });
+
+        sendOrdered(igniteMsg, msgs, cls);
+
+        latch.await();
+
+        assertTrue(msgs.equals(received));
+
+    }
+
+    /**
+     * @param igniteMsg Ignite message.
+     * @param msgs  messages for send.
+     * @param cls Callback for compare result.
+     */
+    private void sendOrdered(
+            final IgniteMessaging igniteMsg,
+            final List<String> msgs,
+            final IgniteBiInClosure<List<String>,List<Thread>> cls
+    ) throws InterruptedException {
+
+        final CountDownLatch latch = new CountDownLatch(msgs.size());
+
+        final List<String> received = Lists.newArrayList();
+        final List<Thread> threads = Lists.newArrayList();
+
+        for (String msg : msgs)
+            igniteMsg.sendOrdered(TOPIC, msg, 1000);
+
+        igniteMsg.localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
+            @Override public boolean apply(UUID uuid, String s) {
+                received.add(s);
+                threads.add(Thread.currentThread());
+                latch.countDown();
+                return true;
+            }
+        });
+
+        latch.await();
+
+        cls.apply(received, threads);
+    }
+
+    /**
+     * @return List ordered messages
+     */
+    private List<String> orderedMsg() {
+        final List<String> msgs = Lists.newArrayList();
+
+        for (int i = 0; i < 1000; i++)
+            msgs.add("" + i);
+
+        return msgs;
+    }
 }


[33/34] ignite git commit: Merge remote-tracking branch 'remotes/origin/master' into ignite-3727-2

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/master' into ignite-3727-2

# Conflicts:
#	modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java


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

Branch: refs/heads/ignite-3727-2
Commit: 91e834078402dcab161cdac7f9b4a72f89c80135
Parents: 000bb8e 8e12513
Author: sboikov <sb...@gridgain.com>
Authored: Tue Feb 14 15:40:47 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Feb 14 15:40:47 2017 +0300

----------------------------------------------------------------------
 .gitignore                                      |     1 +
 DEVNOTES.txt                                    |     3 +
 NOTICE                                          |     2 +-
 README.md                                       |     8 +
 RELEASE_NOTES.txt                               |    22 +
 assembly/LICENSE_FABRIC                         |    35 +-
 assembly/LICENSE_HADOOP                         |    17 +-
 assembly/NOTICE_FABRIC                          |     2 +-
 assembly/NOTICE_HADOOP                          |     2 +-
 assembly/dependencies-fabric-lgpl.xml           |     2 +
 assembly/dependencies-fabric.xml                |     2 +
 assembly/release-base.xml                       |     5 +
 assembly/release-fabric-base.xml                |     1 +
 bin/ignite.bat                                  |     5 +
 bin/ignite.sh                                   |     9 +
 bin/include/setenv.bat                          |     8 -
 bin/include/setenv.sh                           |    31 -
 config/dotnet/default-dotnet.xml                |    45 +
 examples/pom-standalone-lgpl.xml                |     6 +
 examples/pom-standalone.xml                     |     6 +
 examples/pom.xml                                |     8 +-
 examples/redis/redis-example.php                |    82 +
 examples/redis/redis-example.py                 |    62 +
 examples/schema-import/bin/h2-server.bat        |     2 +-
 examples/schema-import/bin/h2-server.sh         |     4 +-
 .../schema-import/bin/schema-import.properties  |     2 +-
 examples/schema-import/pom.xml                  |     2 +-
 .../examples/datagrid/SpatialQueryExample.java  |   106 +
 .../ignite/examples/ExampleNodeStartup.java     |     2 +-
 .../examples/datagrid/CachePutGetExample.java   |     2 +-
 .../examples/datagrid/CacheQueryDmlExample.java |   163 +
 .../scalar/examples/ScalarJvmCloudExample.scala |     2 +-
 .../SpatialQueryExampleMultiNodeSelfTest.java   |    31 +
 .../examples/SpatialQueryExampleSelfTest.java   |    33 +
 .../IgniteLgplExamplesSelfTestSuite.java        |     4 +
 .../CacheExamplesMultiNodeSelfTest.java         |     7 +
 .../ignite/examples/CacheExamplesSelfTest.java  |     8 +
 modules/aop/pom.xml                             |     2 +-
 modules/apache-license-gen/pom.xml              |     2 +-
 .../src/main/resources/META-INF/licenses.txt.vm |     7 +-
 modules/aws/pom.xml                             |     2 +-
 .../tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java |    37 +-
 .../s3/S3CheckpointManagerSelfTest.java         |     3 +
 .../checkpoint/s3/S3CheckpointSpiSelfTest.java  |     4 +
 .../s3/S3CheckpointSpiStartStopSelfTest.java    |     7 +
 .../s3/S3SessionCheckpointSelfTest.java         |     2 +
 .../TcpDiscoveryS3IpFinderAbstractSelfTest.java |    84 +
 ...3IpFinderAwsCredentialsProviderSelfTest.java |    46 +
 ...scoveryS3IpFinderAwsCredentialsSelfTest.java |    45 +
 .../s3/TcpDiscoveryS3IpFinderSelfTest.java      |    72 -
 .../ignite/testsuites/IgniteS3TestSuite.java    |    39 +-
 modules/benchmarks/pom.xml                      |     2 +-
 .../jmh/misc/JmhIncrementBenchmark.java         |    95 +
 modules/camel/pom.xml                           |     2 +-
 .../stream/camel/IgniteCamelStreamerTest.java   |     4 +-
 modules/cassandra/README.txt                    |     8 +-
 modules/cassandra/licenses/apache-2.0.txt       |   202 -
 modules/cassandra/pom.xml                       |   315 +-
 modules/cassandra/serializers/README.txt        |    34 +
 .../serializers/licenses/apache-2.0.txt         |   202 +
 modules/cassandra/serializers/pom.xml           |   129 +
 .../cassandra/serializer/KryoSerializer.java    |    95 +
 .../apache/ignite/tests/KryoSerializerTest.java |    70 +
 .../java/org/apache/ignite/tests/MyPojo.java    |   102 +
 .../store/cassandra/CassandraCacheStore.java    |   409 -
 .../cassandra/CassandraCacheStoreFactory.java   |   200 -
 .../store/cassandra/common/CassandraHelper.java |   133 -
 .../cassandra/common/PropertyMappingHelper.java |   220 -
 .../store/cassandra/common/RandomSleeper.java   |   104 -
 .../store/cassandra/common/SystemHelper.java    |    46 -
 .../store/cassandra/common/package-info.java    |    21 -
 .../store/cassandra/datasource/Credentials.java |    37 -
 .../store/cassandra/datasource/DataSource.java  |   550 -
 .../cassandra/datasource/PlainCredentials.java  |    50 -
 .../cassandra/datasource/package-info.java      |    21 -
 .../cache/store/cassandra/package-info.java     |    21 -
 .../persistence/KeyPersistenceSettings.java     |   274 -
 .../KeyValuePersistenceSettings.java            |   478 -
 .../persistence/PersistenceController.java      |   421 -
 .../persistence/PersistenceSettings.java        |   335 -
 .../persistence/PersistenceStrategy.java        |    62 -
 .../store/cassandra/persistence/PojoField.java  |   219 -
 .../cassandra/persistence/PojoKeyField.java     |    91 -
 .../cassandra/persistence/PojoValueField.java   |   152 -
 .../persistence/ValuePersistenceSettings.java   |   107 -
 .../cassandra/persistence/package-info.java     |    21 -
 .../cassandra/serializer/JavaSerializer.java    |    81 -
 .../cassandra/serializer/KryoSerializer.java    |    93 -
 .../store/cassandra/serializer/Serializer.java  |    43 -
 .../cassandra/serializer/package-info.java      |    21 -
 .../session/BatchExecutionAssistant.java        |    95 -
 .../cassandra/session/BatchLoaderAssistant.java |    47 -
 .../cassandra/session/CassandraSession.java     |    60 -
 .../cassandra/session/CassandraSessionImpl.java |   832 --
 .../cassandra/session/ExecutionAssistant.java   |    77 -
 .../session/GenericBatchExecutionAssistant.java |    71 -
 .../session/LoadCacheCustomQueryWorker.java     |   105 -
 .../store/cassandra/session/package-info.java   |    21 -
 .../cassandra/session/pool/SessionPool.java     |   173 -
 .../cassandra/session/pool/SessionWrapper.java  |    71 -
 .../cassandra/session/pool/package-info.java    |    21 -
 .../store/cassandra/utils/DDLGenerator.java     |    64 -
 .../store/cassandra/utils/package-info.java     |    21 -
 .../cassandra/src/test/bootstrap/aws/README.txt |    13 -
 .../aws/cassandra/cassandra-bootstrap.sh        |   336 -
 .../bootstrap/aws/cassandra/cassandra-env.sh    |   287 -
 .../bootstrap/aws/cassandra/cassandra-start.sh  |   217 -
 .../aws/cassandra/cassandra-template.yaml       |   888 --
 .../cassandra/src/test/bootstrap/aws/common.sh  |  1481 --
 modules/cassandra/src/test/bootstrap/aws/env.sh |   113 -
 .../test/bootstrap/aws/ganglia/agent-start.sh   |    75 -
 .../bootstrap/aws/ganglia/ganglia-bootstrap.sh  |   417 -
 .../bootstrap/aws/ignite/ignite-bootstrap.sh    |   336 -
 .../ignite/ignite-cassandra-server-template.xml |   190 -
 .../src/test/bootstrap/aws/ignite/ignite-env.sh |    29 -
 .../test/bootstrap/aws/ignite/ignite-start.sh   |   266 -
 .../src/test/bootstrap/aws/logs-collector.sh    |   173 -
 .../tests/ignite-cassandra-client-template.xml  |   192 -
 .../test/bootstrap/aws/tests/tests-bootstrap.sh |   317 -
 .../test/bootstrap/aws/tests/tests-manager.sh   |   458 -
 .../test/bootstrap/aws/tests/tests-report.sh    |   499 -
 .../CassandraDirectPersistenceLoadTest.java     |   107 -
 .../tests/CassandraDirectPersistenceTest.java   |   371 -
 .../apache/ignite/tests/DDLGeneratorTest.java   |    43 -
 .../tests/IgnitePersistentStoreLoadTest.java    |   111 -
 .../ignite/tests/IgnitePersistentStoreTest.java |   369 -
 .../LoadTestsCassandraArtifactsCreator.java     |   104 -
 .../org/apache/ignite/tests/load/Generator.java |    27 -
 .../apache/ignite/tests/load/IntGenerator.java  |    33 -
 .../ignite/tests/load/LoadTestDriver.java       |   238 -
 .../apache/ignite/tests/load/LongGenerator.java |    28 -
 .../ignite/tests/load/PersonGenerator.java      |    43 -
 .../ignite/tests/load/PersonIdGenerator.java    |    31 -
 .../ignite/tests/load/StringGenerator.java      |    28 -
 .../org/apache/ignite/tests/load/Worker.java    |   429 -
 .../tests/load/cassandra/BulkReadWorker.java    |    63 -
 .../tests/load/cassandra/BulkWriteWorker.java   |    52 -
 .../ignite/tests/load/cassandra/ReadWorker.java |    51 -
 .../tests/load/cassandra/WriteWorker.java       |    51 -
 .../tests/load/cassandra/package-info.java      |    21 -
 .../tests/load/ignite/BulkReadWorker.java       |    52 -
 .../tests/load/ignite/BulkWriteWorker.java      |    52 -
 .../ignite/tests/load/ignite/ReadWorker.java    |    51 -
 .../ignite/tests/load/ignite/WriteWorker.java   |    51 -
 .../ignite/tests/load/ignite/package-info.java  |    21 -
 .../apache/ignite/tests/load/package-info.java  |    21 -
 .../org/apache/ignite/tests/package-info.java   |    21 -
 .../org/apache/ignite/tests/pojos/Person.java   |   246 -
 .../org/apache/ignite/tests/pojos/PersonId.java |   110 -
 .../apache/ignite/tests/pojos/package-info.java |    21 -
 .../ignite/tests/utils/CacheStoreHelper.java    |    64 -
 .../tests/utils/CassandraAdminCredentials.java  |    36 -
 .../ignite/tests/utils/CassandraHelper.java     |   358 -
 .../tests/utils/CassandraLifeCycleBean.java     |   149 -
 .../utils/CassandraRegularCredentials.java      |    36 -
 .../ignite/tests/utils/TestCacheSession.java    |    91 -
 .../apache/ignite/tests/utils/TestsHelper.java  |   375 -
 .../apache/ignite/tests/utils/package-info.java |    21 -
 .../src/test/resources/log4j.properties         |   119 -
 .../tests/cassandra/connection-settings.xml     |    52 -
 .../tests/cassandra/connection.properties       |    17 -
 .../tests/cassandra/credentials.properties      |    22 -
 .../tests/cassandra/embedded-cassandra.yaml     |   119 -
 .../ignite/tests/cassandra/keyspaces.properties |    17 -
 .../tests/persistence/blob/ignite-config.xml    |    94 -
 .../persistence/blob/persistence-settings-1.xml |    21 -
 .../persistence/blob/persistence-settings-2.xml |    21 -
 .../persistence/blob/persistence-settings-3.xml |    29 -
 .../tests/persistence/pojo/ignite-config.xml    |   113 -
 .../persistence/pojo/persistence-settings-1.xml |    21 -
 .../persistence/pojo/persistence-settings-2.xml |    21 -
 .../persistence/pojo/persistence-settings-3.xml |   173 -
 .../persistence/primitive/ignite-config.xml     |    94 -
 .../primitive/ignite-remote-client-config.xml   |    99 -
 .../primitive/ignite-remote-server-config.xml   |   110 -
 .../primitive/persistence-settings-1.xml        |    21 -
 .../primitive/persistence-settings-2.xml        |    21 -
 .../src/test/resources/tests.properties         |    50 -
 .../src/test/scripts/cassandra-load-tests.bat   |    41 -
 .../src/test/scripts/cassandra-load-tests.sh    |    39 -
 .../src/test/scripts/ignite-load-tests.bat      |    41 -
 .../src/test/scripts/ignite-load-tests.sh       |    39 -
 modules/cassandra/src/test/scripts/jvm-opt.sh   |    21 -
 modules/cassandra/src/test/scripts/jvm-opts.bat |    24 -
 .../scripts/recreate-cassandra-artifacts.bat    |    41 -
 .../scripts/recreate-cassandra-artifacts.sh     |    39 -
 modules/cassandra/store/README.txt              |    32 +
 modules/cassandra/store/licenses/apache-2.0.txt |   202 +
 modules/cassandra/store/pom.xml                 |   305 +
 .../store/cassandra/CassandraCacheStore.java    |   525 +
 .../cassandra/CassandraCacheStoreFactory.java   |   200 +
 .../store/cassandra/common/CassandraHelper.java |   176 +
 .../cassandra/common/PropertyMappingHelper.java |   219 +
 .../store/cassandra/common/RandomSleeper.java   |   104 +
 .../store/cassandra/common/SystemHelper.java    |    46 +
 .../store/cassandra/common/package-info.java    |    21 +
 .../store/cassandra/datasource/Credentials.java |    39 +
 .../store/cassandra/datasource/DataSource.java  |   656 +
 .../cassandra/datasource/PlainCredentials.java  |    53 +
 .../cassandra/datasource/package-info.java      |    21 +
 .../cache/store/cassandra/package-info.java     |    21 +
 .../persistence/KeyPersistenceSettings.java     |   305 +
 .../KeyValuePersistenceSettings.java            |   526 +
 .../persistence/PersistenceController.java      |   462 +
 .../persistence/PersistenceSettings.java        |   446 +
 .../persistence/PersistenceStrategy.java        |    62 +
 .../store/cassandra/persistence/PojoField.java  |   245 +
 .../cassandra/persistence/PojoKeyField.java     |    87 +
 .../cassandra/persistence/PojoValueField.java   |   143 +
 .../persistence/ValuePersistenceSettings.java   |   120 +
 .../cassandra/persistence/package-info.java     |    21 +
 .../cassandra/serializer/JavaSerializer.java    |    80 +
 .../store/cassandra/serializer/Serializer.java  |    43 +
 .../cassandra/serializer/package-info.java      |    21 +
 .../session/BatchExecutionAssistant.java        |   102 +
 .../cassandra/session/BatchLoaderAssistant.java |    47 +
 .../cassandra/session/CassandraSession.java     |    70 +
 .../cassandra/session/CassandraSessionImpl.java |   943 ++
 .../cassandra/session/ExecutionAssistant.java   |    84 +
 .../session/GenericBatchExecutionAssistant.java |    71 +
 .../session/LoadCacheCustomQueryWorker.java     |   105 +
 .../store/cassandra/session/package-info.java   |    21 +
 .../cassandra/session/pool/SessionPool.java     |   173 +
 .../cassandra/session/pool/SessionWrapper.java  |    71 +
 .../cassandra/session/pool/package-info.java    |    21 +
 .../session/transaction/BaseMutation.java       |    68 +
 .../session/transaction/DeleteMutation.java     |    57 +
 .../cassandra/session/transaction/Mutation.java |    63 +
 .../session/transaction/WriteMutation.java      |    60 +
 .../session/transaction/package-info.java       |    21 +
 .../store/cassandra/utils/DDLGenerator.java     |    76 +
 .../store/cassandra/utils/package-info.java     |    21 +
 .../store/src/test/bootstrap/aws/README.txt     |    13 +
 .../aws/cassandra/cassandra-bootstrap.sh        |   336 +
 .../bootstrap/aws/cassandra/cassandra-env.sh    |   287 +
 .../bootstrap/aws/cassandra/cassandra-start.sh  |   217 +
 .../aws/cassandra/cassandra-template.yaml       |   888 ++
 .../store/src/test/bootstrap/aws/common.sh      |  1481 ++
 .../store/src/test/bootstrap/aws/env.sh         |   113 +
 .../test/bootstrap/aws/ganglia/agent-start.sh   |    75 +
 .../bootstrap/aws/ganglia/ganglia-bootstrap.sh  |   417 +
 .../bootstrap/aws/ignite/ignite-bootstrap.sh    |   336 +
 .../ignite/ignite-cassandra-server-template.xml |   190 +
 .../src/test/bootstrap/aws/ignite/ignite-env.sh |    29 +
 .../test/bootstrap/aws/ignite/ignite-start.sh   |   266 +
 .../src/test/bootstrap/aws/logs-collector.sh    |   173 +
 .../tests/ignite-cassandra-client-template.xml  |   192 +
 .../test/bootstrap/aws/tests/tests-bootstrap.sh |   317 +
 .../test/bootstrap/aws/tests/tests-manager.sh   |   458 +
 .../test/bootstrap/aws/tests/tests-report.sh    |   499 +
 .../CassandraDirectPersistenceLoadTest.java     |   107 +
 .../tests/CassandraDirectPersistenceTest.java   |   696 +
 .../ignite/tests/CassandraLocalServer.java      |    59 +
 .../apache/ignite/tests/DDLGeneratorTest.java   |    57 +
 .../tests/DatasourceSerializationTest.java      |   158 +
 .../tests/IgnitePersistentStoreLoadTest.java    |   111 +
 .../ignite/tests/IgnitePersistentStoreTest.java |   666 +
 .../LoadTestsCassandraArtifactsCreator.java     |   104 +
 .../org/apache/ignite/tests/load/Generator.java |    27 +
 .../apache/ignite/tests/load/IntGenerator.java  |    33 +
 .../ignite/tests/load/LoadTestDriver.java       |   238 +
 .../apache/ignite/tests/load/LongGenerator.java |    28 +
 .../ignite/tests/load/PersonGenerator.java      |    43 +
 .../ignite/tests/load/PersonIdGenerator.java    |    31 +
 .../ignite/tests/load/StringGenerator.java      |    28 +
 .../org/apache/ignite/tests/load/Worker.java    |   429 +
 .../tests/load/cassandra/BulkReadWorker.java    |    63 +
 .../tests/load/cassandra/BulkWriteWorker.java   |    52 +
 .../ignite/tests/load/cassandra/ReadWorker.java |    51 +
 .../tests/load/cassandra/WriteWorker.java       |    51 +
 .../tests/load/cassandra/package-info.java      |    21 +
 .../tests/load/ignite/BulkReadWorker.java       |    52 +
 .../tests/load/ignite/BulkWriteWorker.java      |    52 +
 .../ignite/tests/load/ignite/ReadWorker.java    |    51 +
 .../ignite/tests/load/ignite/WriteWorker.java   |    51 +
 .../ignite/tests/load/ignite/package-info.java  |    21 +
 .../apache/ignite/tests/load/package-info.java  |    21 +
 .../org/apache/ignite/tests/package-info.java   |    21 +
 .../org/apache/ignite/tests/pojos/Person.java   |   279 +
 .../org/apache/ignite/tests/pojos/PersonId.java |   110 +
 .../org/apache/ignite/tests/pojos/Product.java  |   123 +
 .../apache/ignite/tests/pojos/ProductOrder.java |   148 +
 .../apache/ignite/tests/pojos/package-info.java |    21 +
 .../ignite/tests/utils/CacheStoreHelper.java    |    77 +
 .../tests/utils/CassandraAdminCredentials.java  |    38 +
 .../ignite/tests/utils/CassandraHelper.java     |   358 +
 .../tests/utils/CassandraLifeCycleBean.java     |   149 +
 .../utils/CassandraRegularCredentials.java      |    38 +
 .../ignite/tests/utils/TestCacheSession.java    |    95 +
 .../ignite/tests/utils/TestTransaction.java     |   132 +
 .../apache/ignite/tests/utils/TestsHelper.java  |   660 +
 .../apache/ignite/tests/utils/package-info.java |    21 +
 .../store/src/test/resources/log4j.properties   |   119 +
 .../tests/cassandra/connection-settings.xml     |    52 +
 .../tests/cassandra/connection.properties       |    17 +
 .../tests/cassandra/credentials.properties      |    22 +
 .../tests/cassandra/embedded-cassandra.yaml     |   119 +
 .../ignite/tests/cassandra/keyspaces.properties |    17 +
 .../tests/persistence/blob/ignite-config.xml    |    94 +
 .../persistence/blob/persistence-settings-1.xml |    21 +
 .../persistence/blob/persistence-settings-2.xml |    21 +
 .../persistence/blob/persistence-settings-3.xml |    29 +
 .../tests/persistence/pojo/ignite-config.xml    |   169 +
 .../ignite/tests/persistence/pojo/order.xml     |    21 +
 .../persistence/pojo/persistence-settings-1.xml |    21 +
 .../persistence/pojo/persistence-settings-2.xml |    21 +
 .../persistence/pojo/persistence-settings-3.xml |   175 +
 .../persistence/pojo/persistence-settings-4.xml |   175 +
 .../ignite/tests/persistence/pojo/product.xml   |    21 +
 .../persistence/primitive/ignite-config.xml     |    94 +
 .../primitive/ignite-remote-client-config.xml   |    99 +
 .../primitive/ignite-remote-server-config.xml   |   110 +
 .../primitive/persistence-settings-1.xml        |    21 +
 .../primitive/persistence-settings-2.xml        |    21 +
 .../store/src/test/resources/tests.properties   |    65 +
 .../src/test/scripts/cassandra-load-tests.bat   |    41 +
 .../src/test/scripts/cassandra-load-tests.sh    |    39 +
 .../src/test/scripts/ignite-load-tests.bat      |    41 +
 .../store/src/test/scripts/ignite-load-tests.sh |    39 +
 .../cassandra/store/src/test/scripts/jvm-opt.sh |    21 +
 .../store/src/test/scripts/jvm-opts.bat         |    24 +
 .../scripts/recreate-cassandra-artifacts.bat    |    41 +
 .../scripts/recreate-cassandra-artifacts.sh     |    39 +
 modules/clients/pom.xml                         |     9 +-
 .../clients/src/test/config/jdbc-bin-config.xml |    54 +
 .../client/ClientReconnectionSelfTest.java      |     4 +-
 .../ClientAbstractMultiNodeSelfTest.java        |     8 +-
 .../client/router/TcpSslRouterSelfTest.java     |     7 +-
 .../client/suite/IgniteClientTestSuite.java     |    75 +-
 .../jdbc2/JdbcAbstractDmlStatementSelfTest.java |   263 +
 .../JdbcAbstractUpdateStatementSelfTest.java    |    37 +
 ...BinaryMarshallerInsertStatementSelfTest.java |    35 +
 ...cBinaryMarshallerMergeStatementSelfTest.java |    35 +
 .../jdbc2/JdbcDeleteStatementSelfTest.java      |    49 +
 .../jdbc2/JdbcInsertStatementSelfTest.java      |   122 +
 .../jdbc2/JdbcMergeStatementSelfTest.java       |    91 +
 .../internal/jdbc2/JdbcMetadataSelfTest.java    |     2 +-
 .../internal/jdbc2/JdbcNoDefaultCacheTest.java  |    40 +-
 .../internal/jdbc2/JdbcResultSetSelfTest.java   |   109 +-
 .../rest/ClientMemcachedProtocolSelfTest.java   |     4 +-
 .../rest/RestProcessorMultiStartSelfTest.java   |    48 +-
 .../rest/protocols/tcp/MockNioSession.java      |    25 +-
 .../tcp/redis/RedisProtocolSelfTest.java        |   559 +
 .../ignite/jdbc/JdbcMetadataSelfTest.java       |     4 +-
 .../jdbc/suite/IgniteJdbcDriverTestSuite.java   |     8 +-
 modules/cloud/pom.xml                           |     8 +-
 .../TcpDiscoveryCloudIpFinderSelfTest.java      |     6 +-
 .../ignite/testsuites/IgniteCloudTestSuite.java |     5 +-
 modules/codegen/pom.xml                         |     2 +-
 .../ignite/codegen/MessageCodeGenerator.java    |     2 +-
 modules/core/pom.xml                            |     2 +-
 modules/core/src/main/java/META-INF/NOTICE      |     2 +-
 .../src/main/java/org/apache/ignite/Ignite.java |    77 +-
 .../java/org/apache/ignite/IgniteCache.java     |    23 +-
 .../org/apache/ignite/IgniteDataStreamer.java   |     2 +-
 .../java/org/apache/ignite/IgniteLogger.java    |    10 +-
 .../java/org/apache/ignite/IgniteScheduler.java |    13 +
 .../java/org/apache/ignite/IgniteServices.java  |    64 +-
 .../apache/ignite/IgniteSystemProperties.java   |    76 +
 .../binary/BinaryAbstractIdentityResolver.java  |    53 +
 .../binary/BinaryArrayIdentityResolver.java     |   224 +
 .../binary/BinaryFieldIdentityResolver.java     |   307 +
 .../ignite/binary/BinaryIdentityResolver.java   |    42 +
 .../ignite/binary/BinaryTypeConfiguration.java  |    27 +-
 .../org/apache/ignite/cache/QueryEntity.java    |    47 +
 .../ignite/cache/affinity/AffinityKey.java      |     4 +-
 .../affinity/fair/FairAffinityFunction.java     |     2 +-
 .../rendezvous/RendezvousAffinityFunction.java  |    82 +-
 .../cache/query/QueryCancelledException.java    |    35 +
 .../apache/ignite/cache/query/QueryCursor.java  |     8 +-
 .../ignite/cache/query/QueryDetailMetrics.java  |    98 +
 .../apache/ignite/cache/query/QueryMetrics.java |     2 +-
 .../org/apache/ignite/cache/query/SpiQuery.java |     8 +-
 .../ignite/cache/query/SqlFieldsQuery.java      |    34 +-
 .../org/apache/ignite/cache/query/SqlQuery.java |    50 +
 .../cache/store/CacheLoadOnlyStoreAdapter.java  |     6 +-
 .../ignite/cache/store/CacheStoreAdapter.java   |     6 +
 .../store/jdbc/CacheAbstractJdbcStore.java      |   220 +-
 .../cache/store/jdbc/CacheJdbcBlobStore.java    |     4 +-
 .../store/jdbc/CacheJdbcBlobStoreFactory.java   |     2 +-
 .../cache/store/jdbc/CacheJdbcPojoStore.java    |    39 +-
 .../store/jdbc/CacheJdbcPojoStoreFactory.java   |    45 +-
 .../ignite/cache/store/jdbc/JdbcType.java       |     2 +-
 .../store/jdbc/JdbcTypesDefaultTransformer.java |   119 +-
 .../cache/store/jdbc/JdbcTypesTransformer.java  |    17 +
 .../store/jdbc/dialect/BasicJdbcDialect.java    |    43 +-
 .../cache/store/jdbc/dialect/DB2Dialect.java    |    14 +-
 .../cache/store/jdbc/dialect/H2Dialect.java     |     5 +-
 .../cache/store/jdbc/dialect/JdbcDialect.java   |    18 +-
 .../cache/store/jdbc/dialect/MySQLDialect.java  |     9 +-
 .../cache/store/jdbc/dialect/OracleDialect.java |    13 +-
 .../store/jdbc/dialect/SQLServerDialect.java    |    22 +-
 .../apache/ignite/compute/ComputeTaskSpis.java  |     8 +-
 .../configuration/CacheConfiguration.java       |   101 +-
 .../configuration/FileSystemConfiguration.java  |     2 +-
 .../configuration/IgniteConfiguration.java      |    68 +-
 .../org/apache/ignite/events/CacheEvent.java    |     6 +-
 .../ignite/events/CacheQueryReadEvent.java      |     8 +-
 .../java/org/apache/ignite/igfs/IgfsPath.java   |    14 +-
 .../org/apache/ignite/igfs/IgfsPathSummary.java |     3 +-
 .../local/LocalIgfsSecondaryFileSystem.java     |   118 +-
 .../internal/ComputeTaskInternalFuture.java     |    11 +
 .../internal/GridEventConsumeHandler.java       |    20 +-
 .../ignite/internal/GridJobContextImpl.java     |     4 +-
 .../internal/GridJobSiblingsResponse.java       |     3 +-
 .../ignite/internal/GridKernalContext.java      |    41 +
 .../ignite/internal/GridKernalContextImpl.java  |    69 +-
 .../internal/GridMessageListenHandler.java      |    18 +-
 .../internal/GridPerformanceSuggestions.java    |    92 -
 .../ignite/internal/GridTaskSessionImpl.java    |    15 +-
 .../org/apache/ignite/internal/GridTopic.java   |     8 +-
 .../ignite/internal/IgniteComponentType.java    |    11 +-
 .../ignite/internal/IgniteInternalFuture.java   |    11 +
 .../apache/ignite/internal/IgniteKernal.java    |   263 +-
 .../ignite/internal/IgniteSchedulerImpl.java    |    18 +
 .../ignite/internal/IgniteServicesImpl.java     |    13 +-
 .../ignite/internal/IgniteVersionUtils.java     |     2 +-
 .../org/apache/ignite/internal/IgnitionEx.java  |   206 +-
 .../ignite/internal/MarshallerContextImpl.java  |    16 +-
 .../internal/StripedExecutorMXBeanAdapter.java  |    90 +
 .../internal/binary/BinaryClassDescriptor.java  |    82 +-
 .../ignite/internal/binary/BinaryContext.java   |   102 +-
 .../internal/binary/BinaryEnumObjectImpl.java   |    22 +-
 .../ignite/internal/binary/BinaryFieldImpl.java |    10 +-
 .../internal/binary/BinaryMarshaller.java       |     3 +-
 .../ignite/internal/binary/BinaryMetadata.java  |     5 +-
 .../ignite/internal/binary/BinaryObjectEx.java  |     8 +
 .../internal/binary/BinaryObjectExImpl.java     |   255 +-
 .../internal/binary/BinaryObjectImpl.java       |    68 +-
 .../binary/BinaryObjectOffheapImpl.java         |    69 +-
 .../internal/binary/BinaryPrimitives.java       |    30 +-
 .../binary/BinarySerializedFieldComparator.java |   343 +
 .../ignite/internal/binary/BinaryTypeProxy.java |    15 +-
 .../ignite/internal/binary/BinaryUtils.java     |    23 +-
 .../internal/binary/BinaryWriterExImpl.java     |    77 +-
 .../internal/binary/GridBinaryMarshaller.java   |     2 +-
 .../binary/builder/BinaryBuilderReader.java     |    11 +
 .../binary/builder/BinaryBuilderSerializer.java |     4 +
 .../binary/builder/BinaryObjectBuilderImpl.java |    44 +-
 .../streams/BinaryAbstractInputStream.java      |     5 +
 .../streams/BinaryAbstractOutputStream.java     |     5 +
 .../binary/streams/BinaryHeapInputStream.java   |     9 +-
 .../binary/streams/BinaryHeapOutputStream.java  |     7 +-
 .../streams/BinaryMemoryAllocatorChunk.java     |     3 +-
 .../streams/BinaryOffheapInputStream.java       |    14 +-
 .../streams/BinaryOffheapOutputStream.java      |     8 +-
 .../internal/binary/streams/BinaryStream.java   |    12 +-
 .../GridClientConnectionManagerAdapter.java     |     8 +-
 .../impl/connection/GridClientTopology.java     |    53 +-
 .../GridClientOptimizedMarshaller.java          |     5 +-
 .../GridClientZipOptimizedMarshaller.java       |     5 +-
 .../impl/GridRouterCommandLineStartup.java      |     4 +-
 .../client/router/impl/GridTcpRouterImpl.java   |     1 +
 .../cluster/ClusterNodeLocalMapImpl.java        |     1 -
 .../igfs/common/IgfsControlResponse.java        |    19 +-
 .../internal/igfs/common/IgfsMarshaller.java    |    14 +-
 .../ignite/internal/jdbc/JdbcResultSet.java     |    10 +-
 .../apache/ignite/internal/jdbc/JdbcUtils.java  |     4 +-
 .../ignite/internal/jdbc2/JdbcConnection.java   |    17 +
 .../internal/jdbc2/JdbcPreparedStatement.java   |    71 +-
 .../ignite/internal/jdbc2/JdbcQueryTask.java    |     5 +-
 .../ignite/internal/jdbc2/JdbcQueryTaskV2.java  |   406 +
 .../ignite/internal/jdbc2/JdbcResultSet.java    |    81 +-
 .../internal/jdbc2/JdbcSqlFieldsQuery.java      |    48 +
 .../ignite/internal/jdbc2/JdbcStatement.java    |   211 +-
 .../apache/ignite/internal/jdbc2/JdbcUtils.java |    25 +-
 .../internal/managers/GridManagerAdapter.java   |    15 +
 .../checkpoint/GridCheckpointManager.java       |     6 +-
 .../managers/communication/GridIoManager.java   |   373 +-
 .../managers/communication/GridIoMessage.java   |    13 +
 .../communication/GridIoMessageFactory.java     |    82 +-
 .../communication/IgniteIoTestMessage.java      |   235 +
 .../deployment/GridDeploymentCommunication.java |     4 +-
 .../GridDeploymentPerVersionStore.java          |     2 +-
 .../discovery/GridDiscoveryManager.java         |   195 +-
 .../eventstorage/GridEventStorageManager.java   |    18 +-
 .../loadbalancer/GridLoadBalancerManager.java   |    10 +-
 .../swapspace/GridSwapSpaceManager.java         |    13 +-
 .../internal/mxbean/IgniteStandardMXBean.java   |    12 +-
 .../processors/affinity/AffinityAssignment.java |    88 +
 .../affinity/GridAffinityAssignment.java        |     8 +-
 .../affinity/GridAffinityAssignmentCache.java   |    35 +-
 .../affinity/GridAffinityProcessor.java         |    91 +-
 .../processors/affinity/GridAffinityUtils.java  |    12 +-
 .../affinity/HistoryAffinityAssignment.java     |   169 +
 .../cache/CacheAffinitySharedManager.java       |    57 +-
 .../cache/CacheEntrySerializablePredicate.java  |     4 +-
 .../cache/CacheEvictableEntryImpl.java          |     4 +-
 .../cache/CacheInvokeDirectResult.java          |     6 +-
 .../processors/cache/CacheInvokeResult.java     |     2 +-
 .../processors/cache/CacheLazyEntry.java        |     4 +-
 .../processors/cache/CacheLockCandidates.java   |    42 +
 .../cache/CacheLockCandidatesList.java          |    71 +
 .../processors/cache/CacheMetricsImpl.java      |    10 +-
 .../processors/cache/CacheObjectAdapter.java    |     7 +-
 .../cache/CacheStoreBalancingWrapper.java       |     6 +
 .../cache/DynamicCacheChangeBatch.java          |     7 +
 .../processors/cache/EntryGetResult.java        |    65 +
 .../processors/cache/GridCacheAdapter.java      |   915 +-
 .../cache/GridCacheAffinityManager.java         |    66 +-
 .../processors/cache/GridCacheAtomicFuture.java |     3 +-
 .../cache/GridCacheClearAllRunnable.java        |    58 +-
 .../processors/cache/GridCacheContext.java      |    21 +-
 .../cache/GridCacheDeploymentManager.java       |     8 +-
 .../processors/cache/GridCacheEntryEx.java      |    59 +-
 .../processors/cache/GridCacheEventManager.java |    10 +-
 .../cache/GridCacheEvictionManager.java         |     6 +-
 .../processors/cache/GridCacheIoManager.java    |    89 +-
 .../cache/GridCacheLoaderWriterStore.java       |     6 +
 .../processors/cache/GridCacheMapEntry.java     |   303 +-
 .../processors/cache/GridCacheMessage.java      |    11 +-
 .../processors/cache/GridCacheMvcc.java         |   376 +-
 .../processors/cache/GridCacheMvccCallback.java |     4 +-
 .../cache/GridCacheMvccCandidate.java           |    89 +-
 .../processors/cache/GridCacheMvccManager.java  |    96 +-
 .../GridCachePartitionExchangeManager.java      |   468 +-
 .../processors/cache/GridCachePreloader.java    |    28 +-
 .../cache/GridCachePreloaderAdapter.java        |    20 +-
 .../processors/cache/GridCacheProcessor.java    |   426 +-
 .../processors/cache/GridCacheReturn.java       |     2 +-
 .../GridCacheReturnCompletableWrapper.java      |   101 +
 .../cache/GridCacheSharedContext.java           |    25 +-
 .../cache/GridCacheSharedTtlCleanupManager.java |   132 +
 .../processors/cache/GridCacheSwapManager.java  |    24 +-
 .../processors/cache/GridCacheTtlManager.java   |   147 +-
 .../processors/cache/GridCacheUtilityKey.java   |     6 +-
 .../processors/cache/GridCacheUtils.java        |   161 +-
 .../cache/GridDeferredAckMessageSender.java     |   219 +
 .../processors/cache/IgniteCacheProxy.java      |   100 +-
 .../processors/cache/QueryCursorImpl.java       |   115 +-
 .../processors/cache/ReaderArguments.java       |    74 +
 .../cache/affinity/GridCacheAffinityImpl.java   |    16 +-
 .../binary/CacheObjectBinaryProcessorImpl.java  |     5 +-
 .../CacheDataStructuresManager.java             |     8 +-
 .../distributed/GridCacheTxRecoveryFuture.java  |     4 +-
 .../GridDistributedCacheAdapter.java            |     9 +-
 .../distributed/GridDistributedCacheEntry.java  |   306 +-
 .../distributed/GridDistributedLockRequest.java |     5 +
 .../GridDistributedLockResponse.java            |     5 +-
 .../GridDistributedTxPrepareRequest.java        |     4 +-
 .../GridDistributedTxPrepareResponse.java       |     4 +-
 .../GridDistributedTxRemoteAdapter.java         |    67 +-
 .../GridDistributedUnlockRequest.java           |     5 +
 .../dht/GridClientPartitionTopology.java        |   148 +-
 .../dht/GridDhtAffinityAssignmentRequest.java   |     2 +-
 .../dht/GridDhtAffinityAssignmentResponse.java  |    12 +-
 .../dht/GridDhtAssignmentFetchFuture.java       |     3 +-
 .../distributed/dht/GridDhtCacheAdapter.java    |    38 +-
 .../distributed/dht/GridDhtCacheEntry.java      |    34 +-
 .../cache/distributed/dht/GridDhtGetFuture.java |    85 +-
 .../distributed/dht/GridDhtGetSingleFuture.java |    77 +-
 .../distributed/dht/GridDhtLocalPartition.java  |   133 +-
 .../distributed/dht/GridDhtLockFuture.java      |    66 +-
 .../distributed/dht/GridDhtLockResponse.java    |     9 +-
 .../dht/GridDhtPartitionTopology.java           |    32 +-
 .../dht/GridDhtPartitionTopologyImpl.java       |   317 +-
 .../dht/GridDhtTransactionalCacheAdapter.java   |    22 +-
 .../distributed/dht/GridDhtTxFinishFuture.java  |    94 +-
 .../distributed/dht/GridDhtTxFinishRequest.java |    33 +-
 .../dht/GridDhtTxFinishResponse.java            |    56 +-
 .../cache/distributed/dht/GridDhtTxLocal.java   |   126 +-
 .../distributed/dht/GridDhtTxLocalAdapter.java  |    18 +-
 .../dht/GridDhtTxOnePhaseCommitAckRequest.java  |   134 +
 .../distributed/dht/GridDhtTxPrepareFuture.java |    64 +-
 .../dht/GridDhtTxPrepareRequest.java            |    93 +-
 .../cache/distributed/dht/GridDhtTxRemote.java  |     8 +-
 .../distributed/dht/GridDhtUnlockRequest.java   |     3 +-
 .../dht/GridPartitionedGetFuture.java           |    13 +-
 .../dht/GridPartitionedSingleGetFuture.java     |    14 +-
 .../GridDhtAtomicAbstractUpdateFuture.java      |   471 +
 .../GridDhtAtomicAbstractUpdateRequest.java     |   287 +
 .../dht/atomic/GridDhtAtomicCache.java          |   862 +-
 .../atomic/GridDhtAtomicSingleUpdateFuture.java |   190 +
 .../GridDhtAtomicSingleUpdateRequest.java       |   683 +
 .../dht/atomic/GridDhtAtomicUpdateFuture.java   |   423 +-
 .../dht/atomic/GridDhtAtomicUpdateRequest.java  |   317 +-
 .../dht/atomic/GridDhtAtomicUpdateResponse.java |     4 +-
 ...idNearAtomicAbstractSingleUpdateRequest.java |   562 +
 .../GridNearAtomicAbstractUpdateFuture.java     |    47 +-
 .../GridNearAtomicAbstractUpdateRequest.java    |   226 +
 .../atomic/GridNearAtomicFullUpdateRequest.java |  1024 ++
 ...GridNearAtomicSingleUpdateFilterRequest.java |   226 +
 .../GridNearAtomicSingleUpdateFuture.java       |   179 +-
 ...GridNearAtomicSingleUpdateInvokeRequest.java |   307 +
 .../GridNearAtomicSingleUpdateRequest.java      |   360 +
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |    99 +-
 .../dht/atomic/GridNearAtomicUpdateRequest.java |  1092 --
 .../atomic/GridNearAtomicUpdateResponse.java    |     4 +-
 .../dht/colocated/GridDhtColocatedCache.java    |    39 +-
 .../colocated/GridDhtColocatedLockFuture.java   |    26 +-
 .../colocated/GridDhtDetachedCacheEntry.java    |     5 +
 .../dht/preloader/GridDhtForceKeysFuture.java   |     8 +-
 .../dht/preloader/GridDhtForceKeysResponse.java |     4 +-
 .../GridDhtPartitionDemandMessage.java          |     4 +-
 .../dht/preloader/GridDhtPartitionDemander.java |   286 +-
 .../dht/preloader/GridDhtPartitionFullMap.java  |    36 +-
 .../dht/preloader/GridDhtPartitionMap2.java     |    56 +-
 .../dht/preloader/GridDhtPartitionSupplier.java |    12 +-
 .../GridDhtPartitionsAbstractMessage.java       |    40 +-
 .../GridDhtPartitionsExchangeFuture.java        |   171 +-
 .../preloader/GridDhtPartitionsFullMessage.java |   150 +-
 .../GridDhtPartitionsSingleMessage.java         |   132 +-
 .../GridDhtPartitionsSingleRequest.java         |     4 +-
 .../dht/preloader/GridDhtPreloader.java         |    62 +-
 .../distributed/near/GridNearAtomicCache.java   |    86 +-
 .../distributed/near/GridNearCacheAdapter.java  |     7 +
 .../distributed/near/GridNearCacheEntry.java    |    50 +-
 .../distributed/near/GridNearGetFuture.java     |    31 +-
 .../distributed/near/GridNearGetRequest.java    |    82 +-
 .../distributed/near/GridNearGetResponse.java   |     4 +-
 .../distributed/near/GridNearLockFuture.java    |    18 +-
 .../distributed/near/GridNearLockRequest.java   |    81 +-
 ...arOptimisticSerializableTxPrepareFuture.java |    10 +-
 .../near/GridNearOptimisticTxPrepareFuture.java |    33 +-
 .../GridNearPessimisticTxPrepareFuture.java     |     8 +-
 .../near/GridNearSingleGetRequest.java          |    57 +-
 .../near/GridNearSingleGetResponse.java         |     4 +-
 .../near/GridNearTransactionalCache.java        |    13 +-
 .../near/GridNearTxFinishFuture.java            |   173 +-
 .../near/GridNearTxFinishResponse.java          |     4 +-
 .../cache/distributed/near/GridNearTxLocal.java |    67 +-
 .../processors/cache/local/GridLocalCache.java  |     1 +
 .../cache/local/GridLocalCacheEntry.java        |   173 +-
 .../cache/local/GridLocalLockFuture.java        |     2 +-
 .../local/atomic/GridLocalAtomicCache.java      |   186 +-
 .../processors/cache/query/CacheQuery.java      |     2 -
 .../processors/cache/query/CacheQueryType.java  |     2 +-
 .../query/GridCacheDistributedQueryManager.java |     2 +-
 .../cache/query/GridCacheLocalQueryFuture.java  |     4 +-
 .../cache/query/GridCacheQueryAdapter.java      |    22 +-
 .../GridCacheQueryDetailMetricsAdapter.java     |   248 +
 .../query/GridCacheQueryDetailMetricsKey.java   |    82 +
 .../query/GridCacheQueryFutureAdapter.java      |     2 -
 .../cache/query/GridCacheQueryManager.java      |   285 +-
 .../query/GridCacheQueryMetricsAdapter.java     |    37 +-
 .../cache/query/GridCacheQueryRequest.java      |    20 +-
 .../cache/query/GridCacheQueryResponse.java     |     4 +-
 .../cache/query/GridCacheSqlQuery.java          |    10 +-
 .../cache/query/GridCacheTwoStepQuery.java      |   253 -
 .../cache/query/IgniteQueryErrorCode.java       |    91 +
 .../continuous/CacheContinuousQueryEvent.java   |     8 +-
 .../continuous/CacheContinuousQueryHandler.java |   122 +-
 .../CacheContinuousQueryListener.java           |     4 +-
 .../continuous/CacheContinuousQueryManager.java |    12 +-
 .../jdbc/GridCacheQueryJdbcMetadataTask.java    |     4 +-
 .../query/jdbc/GridCacheQueryJdbcTask.java      |     6 +-
 .../cache/store/CacheStoreManager.java          |     4 +-
 .../store/GridCacheStoreManagerAdapter.java     |    66 +-
 .../cache/store/GridCacheWriteBehindStore.java  |    10 +-
 .../cache/transactions/IgniteTxAdapter.java     |    50 +-
 .../cache/transactions/IgniteTxEntry.java       |    51 +-
 .../cache/transactions/IgniteTxHandler.java     |   186 +-
 .../transactions/IgniteTxLocalAdapter.java      |   245 +-
 .../cache/transactions/IgniteTxLocalEx.java     |     3 +
 .../cache/transactions/IgniteTxManager.java     |   174 +-
 .../cache/transactions/IgniteTxStateImpl.java   |     1 -
 .../cache/transactions/TxDeadlockDetection.java |     2 +-
 .../cache/transactions/TxEntryValueHolder.java  |     6 +-
 .../GridCacheLazyPlainVersionedEntry.java       |     6 +
 .../version/GridCachePlainVersionedEntry.java   |     5 +-
 .../version/GridCacheRawVersionedEntry.java     |     8 +-
 .../GridCacheVersionConflictContext.java        |     2 +-
 .../IgniteCacheObjectProcessorImpl.java         |    10 +-
 .../processors/clock/GridClockServer.java       |     4 +-
 .../clock/GridClockSyncProcessor.java           |     2 +-
 .../closure/GridClosureProcessor.java           |   112 +-
 .../processors/cluster/ClusterProcessor.java    |     2 +-
 .../processors/cluster/GridUpdateNotifier.java  |   108 +-
 .../continuous/GridContinuousHandler.java       |    13 +-
 .../continuous/GridContinuousMessage.java       |     2 +-
 .../continuous/GridContinuousProcessor.java     |    52 +-
 .../processors/continuous/StartRequestData.java |     4 +-
 .../datastreamer/DataStreamProcessor.java       |   119 +-
 .../datastreamer/DataStreamerImpl.java          |   615 +-
 .../datastructures/CollocatedSetItemKey.java    |     2 +-
 .../GridCacheAtomicLongValue.java               |     2 +
 .../GridCacheAtomicSequenceImpl.java            |    14 +-
 .../GridCacheAtomicSequenceValue.java           |     2 +
 .../GridCacheCountDownLatchValue.java           |     3 +
 .../datastructures/GridCacheQueueAdapter.java   |     2 +-
 .../datastructures/GridCacheSetImpl.java        |     2 +-
 .../datastructures/GridCacheSetItemKey.java     |     2 +-
 .../datastructures/GridSetQueryPredicate.java   |     2 +-
 .../processors/hadoop/HadoopClassLoader.java    |   498 +
 .../processors/hadoop/HadoopClasspathUtils.java |   424 +
 .../processors/hadoop/HadoopDefaultJobInfo.java |   156 +
 .../processors/hadoop/HadoopHelper.java         |    62 +
 .../internal/processors/hadoop/HadoopJob.java   |     5 +
 .../internal/processors/hadoop/HadoopJobId.java |    79 +-
 .../processors/hadoop/HadoopJobInfo.java        |     4 +-
 .../processors/hadoop/HadoopJobProperty.java    |    71 +-
 .../processors/hadoop/HadoopLocations.java      |   123 +
 .../hadoop/HadoopMapReducePlanner.java          |     1 +
 .../hadoop/HadoopMapperAwareTaskOutput.java     |    32 +
 .../processors/hadoop/HadoopNoopHelper.java     |    71 +
 .../processors/hadoop/HadoopNoopProcessor.java  |     4 +-
 .../processors/hadoop/HadoopTaskContext.java    |    18 +
 .../processors/hadoop/HadoopTaskInfo.java       |    43 +
 .../io/PartiallyOffheapRawComparatorEx.java     |    33 +
 .../hadoop/message/HadoopMessage.java           |    27 +
 .../shuffle/HadoopDirectShuffleMessage.java     |   273 +
 .../hadoop/shuffle/HadoopShuffleAck.java        |   170 +
 .../shuffle/HadoopShuffleFinishRequest.java     |   172 +
 .../shuffle/HadoopShuffleFinishResponse.java    |   142 +
 .../hadoop/shuffle/HadoopShuffleMessage.java    |   361 +
 .../igfs/IgfsAbstractOutputStream.java          |   266 +
 .../processors/igfs/IgfsAckMessage.java         |     5 +-
 .../internal/processors/igfs/IgfsAsyncImpl.java |    12 +-
 .../internal/processors/igfs/IgfsContext.java   |    64 +-
 .../processors/igfs/IgfsDataManager.java        |   146 +-
 .../processors/igfs/IgfsDeleteMessage.java      |     5 +-
 .../ignite/internal/processors/igfs/IgfsEx.java |    18 -
 .../internal/processors/igfs/IgfsFileImpl.java  |     5 +-
 .../igfs/IgfsFragmentizerManager.java           |    29 +-
 .../internal/processors/igfs/IgfsImpl.java      |   393 +-
 .../processors/igfs/IgfsInputStreamAdapter.java |    51 -
 .../processors/igfs/IgfsInputStreamImpl.java    |   215 +-
 .../processors/igfs/IgfsIpcHandler.java         |     7 +-
 .../processors/igfs/IgfsKernalContextAware.java |    32 +
 .../processors/igfs/IgfsMetaManager.java        |     1 -
 .../processors/igfs/IgfsModeResolver.java       |     3 +-
 .../processors/igfs/IgfsOutputStreamImpl.java   |   319 +-
 .../igfs/IgfsOutputStreamProxyImpl.java         |   163 +
 .../internal/processors/igfs/IgfsPathIds.java   |     2 +-
 .../internal/processors/igfs/IgfsPaths.java     |     9 +-
 .../internal/processors/igfs/IgfsProcessor.java |    33 +-
 .../igfs/IgfsSecondaryFileSystemImpl.java       |     2 +-
 .../internal/processors/igfs/IgfsServer.java    |     5 +-
 .../processors/igfs/IgfsThreadFactory.java      |    61 +
 .../internal/processors/igfs/IgfsUtils.java     |    21 +-
 .../igfs/client/IgfsClientSizeCallable.java     |     1 -
 .../local/LocalFileSystemIgfsFile.java          |     9 +-
 .../secondary/local/LocalFileSystemUtils.java   |   142 +
 .../processors/job/GridJobProcessor.java        |    23 +-
 .../internal/processors/job/GridJobWorker.java  |    97 +-
 .../OsDiscoveryNodeValidationProcessor.java     |     2 +-
 .../internal/processors/odbc/IgniteTypes.java   |    69 +
 .../processors/odbc/OdbcMessageParser.java      |    16 +
 .../processors/odbc/OdbcNioListener.java        |     2 +-
 .../internal/processors/odbc/OdbcProcessor.java |     1 +
 .../odbc/OdbcQueryExecuteRequest.java           |     6 +-
 .../odbc/OdbcQueryGetParamsMetaRequest.java     |    60 +
 .../odbc/OdbcQueryGetParamsMetaResult.java      |    40 +
 .../internal/processors/odbc/OdbcRequest.java   |     3 +
 .../processors/odbc/OdbcRequestHandler.java     |   181 +-
 .../internal/processors/odbc/OdbcTableMeta.java |    15 +-
 .../internal/processors/odbc/OdbcTypes.java     |   131 +
 .../internal/processors/odbc/OdbcUtils.java     |    89 +-
 .../processors/odbc/escape/OdbcEscapeUtils.java |    52 +-
 .../offheap/GridOffHeapProcessor.java           |    18 +-
 .../platform/PlatformAbstractBootstrap.java     |     3 +-
 .../platform/PlatformAbstractTarget.java        |   290 +-
 .../platform/PlatformAsyncTarget.java           |    44 +
 .../platform/PlatformConfigurationEx.java       |     9 +-
 .../platform/PlatformContextImpl.java           |     5 +-
 .../platform/PlatformNativeException.java       |     3 +-
 .../platform/PlatformNoopProcessor.java         |    44 +-
 .../processors/platform/PlatformProcessor.java  |    51 +-
 .../platform/PlatformProcessorImpl.java         |   172 +-
 .../processors/platform/PlatformTarget.java     |   123 +-
 .../platform/PlatformTargetProxy.java           |   126 +
 .../platform/PlatformTargetProxyImpl.java       |   222 +
 .../binary/PlatformBinaryProcessor.java         |    96 +
 .../platform/cache/PlatformCache.java           |  1003 +-
 .../cache/PlatformCacheEntryFilterImpl.java     |     4 +-
 .../cache/PlatformCacheEntryProcessorImpl.java  |    43 +-
 .../platform/cache/PlatformCacheExtension.java  |    47 +
 .../platform/cache/PlatformCacheIterator.java   |     2 +-
 .../cache/affinity/PlatformAffinity.java        |    18 +-
 .../affinity/PlatformAffinityFunction.java      |    66 +-
 .../PlatformAffinityFunctionTarget.java         |     4 +-
 .../cache/expiry/PlatformExpiryPolicy.java      |    93 +
 .../expiry/PlatformExpiryPolicyFactory.java     |    76 +
 .../query/PlatformAbstractQueryCursor.java      |    44 +-
 .../query/PlatformContinuousQueryProxy.java     |    55 +
 .../cache/store/PlatformCacheStoreCallback.java |    61 -
 .../callback/PlatformCallbackGateway.java       |   273 +-
 .../platform/callback/PlatformCallbackOp.java   |   206 +
 .../callback/PlatformCallbackUtils.java         |   545 +-
 .../platform/cluster/PlatformClusterGroup.java  |   167 +-
 .../platform/compute/PlatformAbstractJob.java   |     2 +-
 .../platform/compute/PlatformAbstractTask.java  |    15 +-
 .../platform/compute/PlatformClosureJob.java    |    12 +-
 .../platform/compute/PlatformCompute.java       |   116 +-
 .../platform/compute/PlatformFullJob.java       |    15 +-
 .../platform/compute/PlatformFullTask.java      |    18 +-
 .../cpp/PlatformCppConfigurationClosure.java    |    13 +-
 .../cpp/PlatformCppConfigurationEx.java         |     7 +
 .../datastreamer/PlatformDataStreamer.java      |   107 +-
 .../PlatformStreamReceiverImpl.java             |    11 +-
 .../datastructures/PlatformAtomicLong.java      |   174 +-
 .../datastructures/PlatformAtomicReference.java |    44 +-
 .../datastructures/PlatformAtomicSequence.java  |   126 +-
 .../dotnet/PlatformDotNetCacheStore.java        |   128 +-
 .../PlatformDotNetConfigurationClosure.java     |    13 +-
 .../dotnet/PlatformDotNetConfigurationEx.java   |    15 +
 ...PlatformDotNetEntityFrameworkCacheEntry.java |   102 +
 ...formDotNetEntityFrameworkCacheExtension.java |   353 +
 .../PlatformDotNetEntityFrameworkCacheKey.java  |   164 +
 ...EntityFrameworkIncreaseVersionProcessor.java |    45 +
 .../platform/events/PlatformEvents.java         |   205 +-
 .../memory/PlatformInputStreamImpl.java         |    14 +-
 .../memory/PlatformOutputStreamImpl.java        |    14 +-
 .../platform/messaging/PlatformMessaging.java   |    90 +-
 .../services/PlatformAbstractService.java       |    25 +-
 .../platform/services/PlatformServices.java     |   249 +-
 .../transactions/PlatformTransactions.java      |   231 +-
 .../utils/PlatformConfigurationUtils.java       |   232 +-
 .../platform/utils/PlatformFutureUtils.java     |    18 +-
 .../utils/PlatformListenableTarget.java         |    62 +
 .../platform/utils/PlatformUtils.java           |    46 +-
 .../PlatformDotNetSessionCacheExtension.java    |   144 +
 .../websession/PlatformDotNetSessionData.java   |   260 +
 .../PlatformDotNetSessionLockProcessor.java     |    84 +
 .../PlatformDotNetSessionLockResult.java        |   106 +
 ...tformDotNetSessionSetAndUnlockProcessor.java |   179 +
 .../internal/processors/pool/PoolProcessor.java |   154 +
 .../processors/query/GridQueryCancel.java       |    83 +
 .../processors/query/GridQueryFieldsResult.java |     3 +-
 .../query/GridQueryFieldsResultAdapter.java     |     3 +-
 .../processors/query/GridQueryIndexing.java     |    36 +-
 .../processors/query/GridQueryProcessor.java    |   874 +-
 .../processors/query/GridQueryProperty.java     |    20 +
 .../query/GridQueryTypeDescriptor.java          |    32 +
 .../processors/query/IgniteSQLException.java    |    89 +
 .../twostep/messages/GridQueryFailResponse.java |    36 +-
 .../h2/twostep/messages/GridQueryRequest.java   |    31 +-
 .../resource/GridResourceProcessor.java         |     2 +-
 .../processors/rest/GridRestProcessor.java      |    15 +
 .../processors/rest/GridRestResponse.java       |     2 +-
 .../handlers/cache/GridCacheCommandHandler.java |     2 -
 .../handlers/redis/GridRedisCommandHandler.java |    39 +
 .../GridRedisConnectionCommandHandler.java      |    74 +
 .../redis/GridRedisRestCommandHandler.java      |   102 +
 .../exception/GridRedisGenericException.java    |    37 +
 .../redis/exception/GridRedisTypeException.java |    37 +
 .../redis/key/GridRedisDelCommandHandler.java   |    95 +
 .../key/GridRedisExistsCommandHandler.java      |    94 +
 .../server/GridRedisDbSizeCommandHandler.java   |    80 +
 .../string/GridRedisAppendCommandHandler.java   |   118 +
 .../string/GridRedisGetCommandHandler.java      |   107 +
 .../string/GridRedisGetRangeCommandHandler.java |   128 +
 .../string/GridRedisGetSetCommandHandler.java   |    94 +
 .../string/GridRedisIncrDecrCommandHandler.java |   193 +
 .../string/GridRedisMGetCommandHandler.java     |    94 +
 .../string/GridRedisMSetCommandHandler.java     |    91 +
 .../string/GridRedisSetCommandHandler.java      |   156 +
 .../string/GridRedisSetRangeCommandHandler.java |   149 +
 .../string/GridRedisStrlenCommandHandler.java   |    89 +
 .../handlers/task/GridTaskCommandHandler.java   |    10 +-
 .../protocols/tcp/GridClientPacketType.java     |     3 +
 .../tcp/GridTcpMemcachedNioListener.java        |    15 +-
 .../protocols/tcp/GridTcpRestNioListener.java   |    16 +-
 .../rest/protocols/tcp/GridTcpRestParser.java   |    43 +-
 .../rest/protocols/tcp/GridTcpRestProtocol.java |     1 +
 .../protocols/tcp/redis/GridRedisCommand.java   |    80 +
 .../protocols/tcp/redis/GridRedisMessage.java   |   219 +
 .../tcp/redis/GridRedisNioListener.java         |   146 +
 .../tcp/redis/GridRedisProtocolParser.java      |   314 +
 .../service/GridServiceProcessor.java           |    91 +-
 .../processors/service/GridServiceProxy.java    |    18 +-
 .../session/GridTaskSessionProcessor.java       |     9 +-
 .../processors/task/GridTaskProcessor.java      |    11 +-
 .../processors/task/GridTaskWorker.java         |    27 +-
 .../suggestions/GridPerformanceSuggestions.java |   105 +
 .../JvmConfigurationSuggestions.java            |   104 +
 .../suggestions/OsConfigurationSuggestions.java |   127 +
 .../internal/suggestions/package-info.java      |    21 +
 .../util/GridBoundedConcurrentOrderedMap.java   |     5 +
 .../internal/util/GridBoundedPriorityQueue.java |    68 +
 .../ignite/internal/util/GridHandleTable.java   |    10 +-
 .../ignite/internal/util/GridLogThrottle.java   |    66 +-
 .../internal/util/GridStripedSpinBusyLock.java  |     2 +-
 .../apache/ignite/internal/util/GridUnsafe.java |    69 +-
 .../ignite/internal/util/HostAndPortRange.java  |     2 +-
 .../ignite/internal/util/IgniteUtils.java       |   540 +-
 .../internal/util/SerializableTransient.java    |    58 +
 .../ignite/internal/util/StripedExecutor.java   |   718 +
 .../util/future/GridCompoundFuture.java         |    56 +-
 .../util/future/GridFinishedFuture.java         |    24 +
 .../internal/util/future/GridFutureAdapter.java |    29 +-
 .../util/future/GridFutureChainListener.java    |    30 +-
 .../internal/util/io/GridUnsafeDataInput.java   |    12 +-
 .../internal/util/io/GridUnsafeDataOutput.java  |    12 +-
 .../internal/util/ipc/IpcToNioAdapter.java      |     2 +-
 .../ipc/shmem/IpcSharedMemoryNativeLoader.java  |     2 +-
 .../shmem/IpcSharedMemoryServerEndpoint.java    |    19 +-
 .../util/lang/GridMetadataAwareAdapter.java     |     2 +-
 .../util/lang/IgniteSingletonIterator.java      |    56 +
 .../nio/GridAbstractCommunicationClient.java    |    12 +-
 .../util/nio/GridCommunicationClient.java       |     9 +-
 .../nio/GridConnectionBytesVerifyFilter.java    |    17 +-
 .../util/nio/GridNioAsyncNotifyFilter.java      |    10 +-
 .../internal/util/nio/GridNioCodecFilter.java   |    19 +-
 .../ignite/internal/util/nio/GridNioFilter.java |    16 +-
 .../internal/util/nio/GridNioFilterAdapter.java |    10 +-
 .../internal/util/nio/GridNioFilterChain.java   |    16 +-
 .../ignite/internal/util/nio/GridNioFuture.java |     4 +-
 .../util/nio/GridNioRecoveryDescriptor.java     |   124 +-
 .../ignite/internal/util/nio/GridNioServer.java |  1513 +-
 .../internal/util/nio/GridNioSession.java       |    25 +-
 .../internal/util/nio/GridNioSessionImpl.java   |    65 +-
 .../util/nio/GridNioSessionMetaKey.java         |     7 +-
 .../ignite/internal/util/nio/GridNioWorker.java |    48 +
 .../util/nio/GridSelectorNioSessionImpl.java    |   223 +-
 .../util/nio/GridShmemCommunicationClient.java  |     7 +-
 .../util/nio/GridTcpNioCommunicationClient.java |    55 +-
 .../internal/util/nio/SessionWriteRequest.java  |    85 +
 .../util/nio/ssl/BlockingSslHandler.java        |    61 +-
 .../internal/util/nio/ssl/GridNioSslFilter.java |    73 +-
 .../util/nio/ssl/GridNioSslHandler.java         |    21 +-
 .../internal/util/nio/ssl/GridSslMeta.java      |    94 +
 .../util/offheap/unsafe/GridUnsafeMemory.java   |    43 +-
 .../util/tostring/GridToStringBuilder.java      |   658 +-
 .../util/tostring/GridToStringInclude.java      |    12 +-
 .../util/tostring/GridToStringThreadLocal.java  |    12 +-
 .../cache/VisorCacheQueryDetailMetrics.java     |   167 +
 ...sorCacheQueryDetailMetricsCollectorTask.java |   146 +
 .../VisorCacheResetQueryDetailMetricsTask.java  |    71 +
 .../cache/VisorCacheResetQueryMetricsTask.java  |    69 +
 .../visor/cache/VisorCacheTypeMetadata.java     |    70 +-
 .../visor/misc/VisorResolveHostNameTask.java    |     4 +-
 .../visor/node/VisorIgfsConfiguration.java      |     1 -
 .../internal/visor/query/VisorQueryJob.java     |     2 +-
 .../query/VisorQueryScanSubstringFilter.java    |     5 +-
 .../internal/visor/query/VisorQueryUtils.java   |    60 +
 .../visor/service/VisorCancelServiceTask.java   |    70 +
 .../visor/service/VisorServiceDescriptor.java   |   132 +
 .../visor/service/VisorServiceTask.java         |    75 +
 .../internal/visor/util/VisorTaskUtils.java     |    41 +-
 .../ignite/lang/IgniteProductVersion.java       |     2 +-
 .../apache/ignite/logger/java/JavaLogger.java   |    18 +-
 .../logger/java/JavaLoggerFileHandler.java      |    10 +-
 .../ignite/marshaller/MarshallerUtils.java      |    22 +
 .../ignite/marshaller/jdk/JdkMarshaller.java    |    13 +-
 .../optimized/OptimizedClassDescriptor.java     |    90 +-
 .../optimized/OptimizedMarshaller.java          |    22 +-
 .../optimized/OptimizedMarshallerUtils.java     |     4 +-
 .../optimized/OptimizedObjectOutputStream.java  |    25 +-
 .../ignite/mxbean/StripedExecutorMXBean.java    |    90 +
 .../dotnet/PlatformDotNetAffinityFunction.java  |     9 +-
 .../security/SecurityBasicPermissionSet.java    |   107 +
 .../security/SecurityPermissionSetBuilder.java  |   222 +
 .../org/apache/ignite/services/Service.java     |    12 +-
 .../org/apache/ignite/spi/IgniteSpiAdapter.java |    11 +
 .../org/apache/ignite/spi/IgniteSpiContext.java |    26 +-
 .../sharedfs/SharedFsCheckpointSpi.java         |     3 +-
 .../spi/checkpoint/sharedfs/SharedFsUtils.java  |     4 +-
 .../communication/tcp/TcpCommunicationSpi.java  |  1423 +-
 .../tcp/TcpCommunicationSpiMBean.java           |    38 +
 .../ignite/spi/discovery/tcp/ClientImpl.java    |   163 +-
 .../ignite/spi/discovery/tcp/ServerImpl.java    |   691 +-
 .../spi/discovery/tcp/TcpDiscoveryImpl.java     |    61 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |    30 +-
 .../tcp/internal/TcpDiscoveryStatistics.java    |    12 +-
 .../TcpDiscoveryMulticastIpFinder.java          |    11 +-
 .../sharedfs/TcpDiscoverySharedFsIpFinder.java  |     2 +-
 .../messages/TcpDiscoveryAbstractMessage.java   |    28 +
 .../messages/TcpDiscoveryClientAckResponse.java |     5 +
 .../TcpDiscoveryClientHeartbeatMessage.java     |     7 +-
 .../TcpDiscoveryConnectionCheckMessage.java     |     5 +
 .../TcpDiscoveryCustomEventMessage.java         |     3 +-
 .../messages/TcpDiscoveryHeartbeatMessage.java  |     5 +
 .../TcpDiscoveryNodeAddFinishedMessage.java     |    11 +
 .../messages/TcpDiscoveryNodeAddedMessage.java  |    33 +-
 .../apache/ignite/spi/indexing/IndexingSpi.java |     3 +
 .../RoundRobinGlobalLoadBalancer.java           |    16 +-
 .../roundrobin/RoundRobinLoadBalancingSpi.java  |    16 +-
 .../spi/swapspace/file/FileSwapSpaceSpi.java    |    95 +-
 .../org/apache/ignite/stream/StreamAdapter.java |     4 +-
 .../ignite/stream/socket/SocketStreamer.java    |     4 +-
 .../ignite/thread/IgniteThreadFactory.java      |     8 +-
 .../apache/ignite/util/AttributeNodeFilter.java |   108 +
 .../resources/META-INF/classnames.properties    |   152 +-
 .../core/src/main/resources/ignite.properties   |     2 +-
 modules/core/src/test/config/log4j-test.xml     |     6 +
 .../AbstractAffinityFunctionSelfTest.java       |     2 +-
 .../CacheJdbcPojoStoreAbstractSelfTest.java     |   180 +-
 ...heJdbcPojoStoreBinaryMarshallerSelfTest.java |    26 +-
 ...reBinaryMarshallerWithSqlEscapeSelfTest.java |    28 +
 ...dbcPojoStoreOptimizedMarshallerSelfTest.java |     2 +-
 ...ptimizedMarshallerWithSqlEscapeSelfTest.java |    28 +
 .../store/jdbc/CacheJdbcPojoStoreTest.java      |    48 +-
 ...eJdbcStoreAbstractMultithreadedSelfTest.java |    17 +-
 .../jdbc/JdbcTypesDefaultTransformerTest.java   |   283 +
 .../ignite/cache/store/jdbc/model/Gender.java   |    41 +
 .../ignite/cache/store/jdbc/model/Person.java   |    33 +-
 .../apache/ignite/igfs/IgfsPathSelfTest.java    |     6 -
 .../internal/ClusterGroupHostsSelfTest.java     |     6 +-
 .../ComputeJobCancelWithServiceSelfTest.java    |     2 +-
 .../internal/GridContinuousTaskSelfTest.java    |    83 +-
 .../GridEventStorageCheckAllEventsSelfTest.java |     2 +-
 .../IgniteClientReconnectApiExceptionTest.java  |     6 +-
 .../IgniteClientReconnectCacheTest.java         |    35 +
 ...niteClientReconnectFailoverAbstractTest.java |     4 +-
 .../IgniteComputeTopologyExceptionTest.java     |     5 +-
 ...RoundRobinErrorAfterClientReconnectTest.java |    99 +
 .../IgniteSlowClientDetectionSelfTest.java      |     1 +
 .../MarshallerContextLockingSelfTest.java       |     2 +-
 .../BinaryArrayIdentityResolverSelfTest.java    |   300 +
 .../internal/binary/BinaryEnumsSelfTest.java    |    18 +
 .../BinaryFieldIdentityResolverSelfTest.java    |   333 +
 .../binary/BinaryFieldsOffheapSelfTest.java     |     2 +-
 .../BinaryFooterOffsetsOffheapSelfTest.java     |     2 +-
 ...ryIdentityResolverConfigurationSelfTest.java |   138 +
 .../binary/BinaryMarshallerSelfTest.java        |   464 +-
 .../BinaryObjectBuilderAdditionalSelfTest.java  |   157 +-
 ...naryObjectBuilderDefaultMappersSelfTest.java |     2 +-
 .../binary/BinaryObjectToStringSelfTest.java    |    92 +
 .../BinarySerialiedFieldComparatorSelfTest.java |   568 +
 ...GridManagerLocalMessageListenerSelfTest.java |   222 +
 .../managers/GridManagerStopSelfTest.java       |     2 +
 ...unicationBalanceMultipleConnectionsTest.java |    28 +
 ...mmunicationBalancePairedConnectionsTest.java |    28 +
 .../IgniteCommunicationBalanceTest.java         |   354 +
 .../communication/IgniteIoTestMessagesTest.java |    95 +
 .../IgniteVariousConnectionNumberTest.java      |   166 +
 .../GridDiscoveryManagerAliveCacheSelfTest.java |     9 +-
 .../GridDiscoveryManagerAttributesSelfTest.java |     4 +-
 .../discovery/GridDiscoveryManagerSelfTest.java |     6 +-
 .../BinaryObjectOffHeapUnswapTemporaryTest.java |     1 -
 .../cache/CacheAffinityCallSelfTest.java        |     8 +-
 .../CacheAtomicSingleMessageCountSelfTest.java  |   259 +
 .../cache/CacheConcurrentReadThroughTest.java   |   184 +
 .../cache/CacheDeferredDeleteQueueTest.java     |   134 +
 .../cache/CacheEntryProcessorCopySelfTest.java  |     6 +-
 ...CacheExchangeMessageDuplicatedStateTest.java |   393 +
 .../cache/CacheGetEntryAbstractTest.java        |     5 +-
 .../processors/cache/CachePutIfAbsentTest.java  |   161 +
 .../cache/CacheRebalancingSelfTest.java         |    75 +
 .../CacheSerializableTransactionsTest.java      |   674 +-
 .../CacheStartupInDeploymentModesTest.java      |     7 +-
 .../cache/CacheStopAndDestroySelfTest.java      |     6 +-
 .../CacheSwapUnswapGetTestSmallQueueSize.java   |    35 +
 .../processors/cache/CacheTxFastFinishTest.java |     2 +-
 .../cache/CrossCacheTxRandomOperationsTest.java |    30 +-
 ...idAbstractCacheInterceptorRebalanceTest.java |   358 +
 .../cache/GridCacheAbstractFullApiSelfTest.java |    57 +-
 .../GridCacheAtomicMessageCountSelfTest.java    |    24 +-
 .../cache/GridCacheBasicStoreAbstractTest.java  |     2 +-
 ...heInterceptorAtomicOffheapRebalanceTest.java |    30 +
 ...GridCacheInterceptorAtomicRebalanceTest.java |    36 +
 ...ceptorTransactionalOffheapRebalanceTest.java |    35 +
 ...heInterceptorTransactionalRebalanceTest.java |    36 +
 .../cache/GridCacheLifecycleAwareSelfTest.java  |    33 +
 .../GridCacheMissingCommitVersionSelfTest.java  |     6 +-
 .../cache/GridCacheMvccFlagsTest.java           |     8 +-
 .../cache/GridCacheMvccPartitionedSelfTest.java |   336 +-
 .../processors/cache/GridCacheMvccSelfTest.java |   212 +-
 .../cache/GridCacheOffHeapCleanupTest.java      |   169 +
 ...CacheOffHeapMultiThreadedUpdateSelfTest.java |     6 +-
 .../GridCachePartitionedAffinitySpreadTest.java |     7 +-
 .../processors/cache/GridCacheStopSelfTest.java |     4 +-
 ...ridCacheStoreManagerDeserializationTest.java |     1 +
 .../cache/GridCacheSwapCleanupTest.java         |    99 +
 .../processors/cache/GridCacheTestEntryEx.java  |   119 +-
 .../GridCacheTtlManagerEvictionSelfTest.java    |   160 +
 .../GridCacheTtlManagerNotificationTest.java    |   107 +-
 .../cache/GridCacheUtilsSelfTest.java           |    66 +-
 ...calCacheStoreManagerDeserializationTest.java |     2 +-
 ...ProjectionForCachesOnDaemonNodeSelfTest.java |     8 +-
 .../IgniteCacheAtomicStopBusySelfTest.java      |    10 +-
 .../IgniteCacheConfigVariationsFullApiTest.java |    15 +-
 .../cache/IgniteCacheDynamicStopSelfTest.java   |    48 +-
 ...niteCacheExpireAndUpdateConsistencyTest.java |     7 +
 .../IgniteCacheInterceptorSelfTestSuite.java    |     5 +
 .../IgniteCacheP2pUnmarshallingErrorTest.java   |     2 +-
 .../cache/IgniteCachePeekModesAbstractTest.java |    10 +-
 .../cache/IgniteCacheStoreCollectionTest.java   |     1 -
 .../cache/IgniteDynamicCacheStartSelfTest.java  |   217 +-
 ...gniteTopologyValidatorAbstractCacheTest.java |     6 +-
 ...niteTopologyValidatorGridSplitCacheTest.java |   334 +
 .../processors/cache/IgniteTxAbstractTest.java  |     3 +-
 .../cache/IgniteTxConfigCacheSelfTest.java      |     2 +-
 .../IgniteTxExceptionAbstractSelfTest.java      |     3 +-
 .../IgniteTxMultiThreadedAbstractTest.java      |     4 +-
 .../IgniteTxStoreExceptionAbstractSelfTest.java |     1 +
 .../MarshallerCacheJobRunNodeRestartTest.java   |     2 +-
 ...heapCacheMetricsForClusterGroupSelfTest.java |   141 +
 .../cache/OffheapCacheOnClientsTest.java        |   143 +
 .../cache/WithKeepBinaryCacheFullApiTest.java   |    10 +-
 .../CacheKeepBinaryWithInterceptorTest.java     |     1 -
 ...yAtomicEntryProcessorDeploymentSelfTest.java |     4 +-
 .../GridCacheBinaryObjectsAbstractSelfTest.java |   304 +-
 ...IgniteCacheAbstractExecutionContextTest.java |     2 -
 ...eAbstractDataStructuresFailoverSelfTest.java |    16 +-
 ...actQueueFailoverDataConsistencySelfTest.java |     2 +-
 ...CacheAtomicReferenceApiSelfAbstractTest.java |    60 +-
 ...idCacheAtomicStampedApiSelfAbstractTest.java |    59 +
 .../GridCacheQueueApiSelfAbstractTest.java      |   124 +
 .../GridCacheSetAbstractSelfTest.java           |    53 +
 .../IgniteAtomicLongApiAbstractSelfTest.java    |    27 +
 .../IgniteCountDownLatchAbstractSelfTest.java   |    43 +
 .../IgniteLockAbstractSelfTest.java             |    78 +-
 .../IgniteSemaphoreAbstractSelfTest.java        |    52 +-
 ...SemaphoreFailoverSafeReleasePermitsTest.java |   129 +
 ...achePartitionedAtomicSequenceTxSelfTest.java |   169 +
 .../CacheGetFutureHangsSelfTest.java            |     6 +-
 .../CacheLateAffinityAssignmentTest.java        |     2 +-
 ...CacheLoadingConcurrentGridStartSelfTest.java |   255 +-
 ...ncurrentGridStartSelfTestAllowOverwrite.java |    30 +
 .../CacheLockReleaseNodeLeaveTest.java          |   135 +
 ...ridCachePartitionNotLoadedEventSelfTest.java |     4 +-
 ...eAtomicMessageRecovery10ConnectionsTest.java |    28 +
 ...micMessageRecoveryPairedConnectionsTest.java |    47 +
 ...niteCacheClientNodeChangingTopologyTest.java |    42 +-
 ...acheConnectionRecovery10ConnectionsTest.java |    35 +
 .../distributed/IgniteCacheCreatePutTest.java   |     2 +-
 .../distributed/IgniteCacheGetRestartTest.java  |     3 +
 .../IgniteCacheMessageRecoveryAbstractTest.java |    24 +-
 .../IgniteCacheMessageWriteTimeoutTest.java     |    17 +-
 ...teSynchronizationModesMultithreadedTest.java |     8 +-
 .../GridCacheDhtEvictionsDisabledSelfTest.java  |     5 +-
 .../distributed/dht/GridCacheDhtTestUtils.java  |   232 -
 .../IgniteCacheCrossCacheTxFailoverTest.java    |     6 +-
 .../dht/IgniteCacheMultiTxLockSelfTest.java     |     6 +-
 ...artitionedBackupNodeFailureRecoveryTest.java |   193 +
 ...ePrimaryNodeFailureRecoveryAbstractTest.java |     4 +-
 .../IgniteCachePutRetryAbstractSelfTest.java    |    39 +-
 ...gniteCachePutRetryTransactionalSelfTest.java |    77 +-
 .../AtomicPutAllChangingTopologyTest.java       |   212 +
 ...eAtomicInvalidPartitionHandlingSelfTest.java |     6 +-
 ...nabledMultiNodeLongTxTimeoutFullApiTest.java |     2 +-
 ...tomicClientOnlyMultiNodeFullApiSelfTest.java |    17 +-
 ...eAtomicNearOnlyMultiNodeFullApiSelfTest.java |    17 +-
 ...erNoStripedPoolMultiNodeFullApiSelfTest.java |    35 +
 ...idCacheNearOnlyMultiNodeFullApiSelfTest.java |     4 +-
 ...achePartitionedMultiNodeFullApiSelfTest.java |    37 +-
 ...edNoStripedPoolMultiNodeFullApiSelfTest.java |    35 +
 .../near/GridNearCacheStoreUpdateTest.java      |   466 +
 .../GridNearOffheapCacheStoreUpdateTest.java    |    35 +
 ...cingDelayedPartitionMapExchangeSelfTest.java |     8 +-
 .../GridCacheRebalancingSyncSelfTest.java       |    20 +-
 .../GridCacheReplicatedNodeRestartSelfTest.java |     3 +-
 .../GridCacheSyncReplicatedPreloadSelfTest.java |     3 -
 .../IgniteCacheSyncRebalanceModeSelfTest.java   |     2 +-
 .../GridCacheReplicatedPreloadSelfTest.java     |     1 -
 .../IgniteCacheExpiryPolicyAbstractTest.java    |     4 +-
 .../IgniteCacheExpiryPolicyTestSuite.java       |     2 +
 ...eCacheExpiryPolicyWithStoreAbstractTest.java |   102 +
 ...eCacheOnlyOneTtlCleanupThreadExistsTest.java |   102 +
 .../IgniteCacheTxExpiryPolicyWithStoreTest.java |    21 +
 .../CacheOffHeapAndSwapMetricsSelfTest.java     |   621 -
 ...LocalCacheOffHeapAndSwapMetricsSelfTest.java |   621 +
 .../IgniteCacheQueryCacheDestroySelfTest.java   |   142 +
 .../cache/query/IndexingSpiQuerySelfTest.java   |   396 +
 .../cache/query/IndexingSpiQueryTxSelfTest.java |   162 +
 .../IndexingSpiQueryWithH2IndexingSelfTest.java |    36 +
 ...eContinuousQueryAsyncFailoverTxSelfTest.java |     5 +
 ...ContinuousQueryFailoverAbstractSelfTest.java |   330 +-
 .../CacheContinuousQueryFailoverTxSelfTest.java |     5 +
 ...eEntryProcessorExternalizableFailedTest.java |   588 +
 .../ClientReconnectContinuousQueryTest.java     |   201 +
 ...eContinuousQueryMultiNodesFilteringTest.java |   161 +
 ...dCacheContinuousQueryNodesFilteringTest.java |     2 +-
 ...IgniteCacheContinuousQueryReconnectTest.java |    12 +-
 .../TxDeadlockDetectionNoHangsTest.java         |     4 +-
 .../transactions/TxDeadlockDetectionTest.java   |     2 +-
 .../TxOptimisticDeadlockDetectionTest.java      |    31 +-
 .../TxPessimisticDeadlockDetectionTest.java     |     2 +-
 .../closure/GridClosureSerializationTest.java   |   177 +
 ...ComputeJobExecutionErrorToLogManualTest.java |    88 +
 .../compute/PublicThreadpoolStarvationTest.java |   123 +
 .../IgniteNoCustomEventsOnNodeStart.java        |     7 +
 .../DataStreamProcessorSelfTest.java            |     4 +-
 .../datastreamer/DataStreamerImplSelfTest.java  |   172 +-
 .../DataStreamerMultiThreadedSelfTest.java      |     2 -
 .../datastreamer/DataStreamerTimeoutTest.java   |    92 +-
 .../igfs/IgfsAbstractBaseSelfTest.java          |    33 +-
 .../processors/igfs/IgfsAbstractSelfTest.java   |   214 +-
 .../IgfsAtomicPrimaryMultiNodeSelfTest.java     |    39 +
 .../IgfsAtomicPrimaryOffheapTieredSelfTest.java |    39 +
 .../IgfsAtomicPrimaryOffheapValuesSelfTest.java |    39 +
 .../igfs/IgfsAtomicPrimarySelfTest.java         |    39 +
 ...lockMessageSystemPoolStarvationSelfTest.java |    14 +-
 .../igfs/IgfsDataManagerSelfTest.java           |     6 +-
 .../igfs/IgfsDualAbstractSelfTest.java          |    70 +-
 .../processors/igfs/IgfsFileInfoSelfTest.java   |     4 +-
 .../processors/igfs/IgfsIgniteMock.java         |    19 +
 ...SecondaryFileSystemDualAbstractSelfTest.java |    29 +-
 ...lSecondaryFileSystemProxyClientSelfTest.java |    28 +
 ...fsLocalSecondaryFileSystemProxySelfTest.java |   267 +
 ...IgfsLocalSecondaryFileSystemTestAdapter.java |    27 +-
 .../igfs/IgfsMetaManagerSelfTest.java           |     7 +-
 .../processors/igfs/IgfsMetricsSelfTest.java    |    21 +-
 .../internal/processors/igfs/IgfsMock.java      |    15 +-
 .../igfs/IgfsModeResolverSelfTest.java          |    14 +-
 .../igfs/IgfsProcessorValidationSelfTest.java   |    30 +
 .../processors/igfs/IgfsProxySelfTest.java      |     2 +-
 ...IpcEndpointRegistrationAbstractSelfTest.java |    76 +-
 ...dpointRegistrationOnLinuxAndMacSelfTest.java |    11 +-
 .../processors/igfs/IgfsStreamsSelfTest.java    |     4 +-
 .../processors/igfs/IgfsTaskSelfTest.java       |    87 +-
 .../igfs/benchmark/IgfsBenchmark.java           |   561 +
 .../odbc/OdbcEscapeSequenceSelfTest.java        |   131 +
 .../cache/GridCacheCommandHandlerSelfTest.java  |     1 -
 .../handlers/log/GridLogCommandHandlerTest.java |     5 +-
 ...rviceDeploymentExceptionPropagationTest.java |     2 +-
 .../GridServiceProcessorProxySelfTest.java      |     2 +-
 .../GridServiceProcessorStopSelfTest.java       |     2 +-
 ...gniteServiceProxyTimeoutInitializedTest.java |   284 +
 .../service/IgniteServiceReassignmentTest.java  |     2 +-
 ...artupWithSpecifiedWorkDirectorySelfTest.java |   166 -
 .../internal/util/IgniteUtilsSelfTest.java      |     5 +-
 .../internal/util/StripedExecutorTest.java      |   168 +
 .../util/future/GridFutureAdapterSelfTest.java  |   123 +-
 .../ipc/shmem/IgfsSharedMemoryTestServer.java   |     4 +-
 .../IpcSharedMemoryCrashDetectionSelfTest.java  |     9 +-
 .../IpcSharedMemoryBenchmarkReader.java         |     2 +-
 .../nio/impl/GridNioFilterChainSelfTest.java    |    32 +-
 .../unsafe/GridOffheapSnapTreeSelfTest.java     |     7 +-
 .../tostring/GridToStringBuilderSelfTest.java   |    33 +-
 .../lang/GridMetadataAwareAdapterSelfTest.java  |     4 +-
 .../utils/GridBoundedPriorityQueueSelfTest.java |   114 +
 .../loadtests/hashmap/GridCacheTestContext.java |     2 +
 .../loadtests/hashmap/GridHashMapLoadTest.java  |     7 +-
 .../loadtests/nio/GridNioBenchmarkClient.java   |     4 +-
 .../ignite/logger/java/JavaLoggerTest.java      |     3 +-
 .../marshaller/MarshallerContextSelfTest.java   |    90 +
 .../marshaller/MarshallerContextTestImpl.java   |    28 +-
 .../OptimizedMarshallerNodeFailoverTest.java    |     4 -
 .../p2p/GridP2PRecursionTaskSelfTest.java       |     2 +-
 .../p2p/GridP2PSameClassLoaderSelfTest.java     |    14 +-
 .../platform/PlatformCacheWriteMetricsTask.java |   463 +
 .../platform/PlatformEventsWriteEventTask.java  |     9 -
 .../ignite/platform/PlatformExceptionTask.java  |    78 +
 .../SecurityPermissionSetBuilderTest.java       |   110 +
 .../spi/GridTcpSpiForwardingSelfTest.java       |    18 +-
 ...heckpointSpiMultipleDirectoriesSelfTest.java |     6 +-
 .../GridAbstractCommunicationSelfTest.java      |     2 -
 .../GridTcpCommunicationSpiAbstractTest.java    |    28 +-
 ...mmunicationSpiConcurrentConnectSelfTest.java |    96 +-
 ...nicationSpiConcurrentConnectSslSelfTest.java |    35 +
 .../GridTcpCommunicationSpiConfigSelfTest.java  |     5 +-
 ...cpCommunicationSpiMultithreadedSelfTest.java |    25 +-
 ...dTcpCommunicationSpiRecoveryAckSelfTest.java |     9 +-
 ...tionSpiRecoveryFailureDetectionSelfTest.java |     1 +
 ...ationSpiRecoveryNoPairedConnectionsTest.java |    28 +
 ...GridTcpCommunicationSpiRecoverySelfTest.java |    81 +-
 ...dTcpCommunicationSpiRecoverySslSelfTest.java |    35 +
 ...CommunicationSpiSslSmallBuffersSelfTest.java |    43 +
 .../tcp/IgniteCacheSslStartStopSelfTest.java    |     1 -
 ...CommunicationRecoveryAckClosureSelfTest.java |     9 +-
 .../tcp/TcpCommunicationSpiDropNodesTest.java   |   322 +
 .../TcpCommunicationSpiFaultyClientTest.java    |   265 +
 .../local/GridLocalDeploymentSpiSelfTest.java   |     6 +-
 ...lientDiscoverySpiFailureTimeoutSelfTest.java |     4 +-
 .../tcp/TcpClientDiscoverySpiMulticastTest.java |     2 +-
 .../spi/discovery/tcp/TcpDiscoverySelfTest.java |   144 +-
 .../tcp/TcpDiscoverySnapshotHistoryTest.java    |    14 +-
 .../TcpDiscoverySpiFailureTimeoutSelfTest.java  |    14 +-
 .../TcpDiscoveryMulticastIpFinderSelfTest.java  |     6 +-
 .../GridInternalTasksLoadBalancingSelfTest.java |   201 +
 .../GridSwapSpaceSpiAbstractSelfTest.java       |     5 +-
 .../file/GridFileSwapSpaceSpiSelfTest.java      |    89 +
 .../startup/GridRandomCommandLineLoader.java    |     2 +-
 .../testframework/GridSpiTestContext.java       |   114 +-
 .../ignite/testframework/GridTestNode.java      |     1 +
 .../ignite/testframework/GridTestUtils.java     |    39 +-
 .../ignite/testframework/IgniteTestSuite.java   |   318 +-
 .../testframework/junits/GridAbstractTest.java  |    57 +-
 .../junits/GridTestKernalContext.java           |     6 +-
 .../ignite/testframework/junits/IgniteMock.java |    25 +
 .../junits/IgniteTestResources.java             |     2 -
 .../junits/common/GridCommonAbstractTest.java   |    31 +-
 .../junits/logger/GridTestLog4jLogger.java      |     4 +-
 .../multijvm/IgniteCacheProcessProxy.java       |    16 +
 .../junits/multijvm/IgniteProcessProxy.java     |    15 +
 .../junits/spi/GridSpiAbstractTest.java         |     2 -
 .../ignite/testsuites/IgniteBasicTestSuite.java |    10 +
 .../testsuites/IgniteBinaryBasicTestSuite.java  |     2 -
 .../IgniteBinaryObjectsTestSuite.java           |    12 +
 .../IgniteCacheDataStructuresSelfTestSuite.java |     5 +-
 .../IgniteCacheFailoverTestSuite.java           |     3 +
 .../IgniteCacheFullApiSelfTestSuite.java        |     6 +
 .../IgniteCacheMetricsSelfTestSuite.java        |     6 +-
 .../ignite/testsuites/IgniteCacheTestSuite.java |    33 +-
 .../testsuites/IgniteCacheTestSuite2.java       |    16 +
 .../testsuites/IgniteCacheTestSuite4.java       |     7 +
 .../testsuites/IgniteCacheTestSuite5.java       |    10 +-
 .../testsuites/IgniteComputeGridTestSuite.java  |     6 +
 .../ignite/testsuites/IgniteIgfsTestSuite.java  |    16 +
 .../apache/ignite/testsuites/IgniteIgnore.java  |     9 +-
 .../testsuites/IgniteIgnoredTestSuite.java      |    63 -
 .../testsuites/IgniteKernalSelfTestSuite.java   |     6 +-
 .../testsuites/IgniteLangSelfTestSuite.java     |     4 +-
 ...essagingConfigVariationFullApiTestSuite.java |     4 +-
 .../IgniteSpiCommunicationSelfTestSuite.java    |    18 +-
 .../IgniteSpiDiscoverySelfTestSuite.java        |     2 +-
 .../IgniteSpiLoadBalancingSelfTestSuite.java    |    34 +-
 .../ignite/testsuites/IgniteSpiTestSuite.java   |     6 +-
 .../IgniteTopologyValidatorTestSuit.java        |     1 +
 .../testsuites/IgniteUtilSelfTestSuite.java     |     2 +
 .../ignite/thread/IgniteThreadPoolSizeTest.java |   131 +
 .../util/AttributeNodeFilterSelfTest.java       |   184 +
 .../apache/ignite/util/GridLogThrottleTest.java |    27 +-
 .../ignite/util/mbeans/GridMBeanSelfTest.java   |    10 +-
 modules/docker/1.8.0/Dockerfile                 |    46 +
 modules/docker/1.8.0/run.sh                     |    51 +
 modules/docker/Dockerfile                       |     6 +-
 modules/extdata/p2p/pom.xml                     |     2 +-
 .../CacheNoValueClassOnServerTestClient.java    |     5 +-
 .../CacheConfigurationP2PTestClient.java        |     5 +-
 .../extdata/uri/modules/uri-dependency/pom.xml  |     2 +-
 modules/extdata/uri/pom.xml                     |     2 +-
 modules/flink/pom.xml                           |     2 +-
 .../apache/ignite/sink/flink/IgniteSink.java    |     2 +-
 modules/flume/README.txt                        |     2 +-
 modules/flume/pom.xml                           |     2 +-
 .../apache/ignite/stream/flume/IgniteSink.java  |     7 +-
 modules/gce/pom.xml                             |     6 +-
 .../gce/TcpDiscoveryGoogleStorageIpFinder.java  |     4 +-
 modules/geospatial/pom.xml                      |     2 +-
 .../h2/GridBinaryH2IndexingGeoSelfTest.java     |    35 +
 .../query/h2/GridH2IndexingGeoSelfTest.java     |     2 +-
 .../testsuites/GeoSpatialIndexingTestSuite.java |     2 +
 modules/hadoop/pom.xml                          |    58 +-
 .../hadoop/fs/BasicHadoopFileSystemFactory.java |   132 +-
 .../fs/CachingHadoopFileSystemFactory.java      |    54 +-
 .../hadoop/fs/HadoopFileSystemFactory.java      |    11 +-
 .../fs/IgniteHadoopFileSystemCounterWriter.java |    79 +-
 .../fs/IgniteHadoopIgfsSecondaryFileSystem.java |   402 +-
 .../fs/KerberosHadoopFileSystemFactory.java     |    77 +-
 .../hadoop/fs/v1/IgniteHadoopFileSystem.java    |    47 +-
 .../hadoop/fs/v2/IgniteHadoopFileSystem.java    |    47 +-
 .../io/BytesWritablePartiallyRawComparator.java |    51 +
 .../hadoop/io/PartiallyRawComparator.java       |    33 +
 .../org/apache/ignite/hadoop/io/RawMemory.java  |    86 +
 .../hadoop/io/TextPartiallyRawComparator.java   |    51 +
 .../apache/ignite/hadoop/io/package-info.java   |    22 +
 .../IgniteHadoopClientProtocolProvider.java     |   104 +-
 .../mapreduce/IgniteHadoopMapReducePlanner.java |    22 +-
 .../IgniteHadoopWeightedMapReducePlanner.java   |     4 +-
 .../ignite/hadoop/util/UserNameMapper.java      |     4 +-
 .../processors/hadoop/HadoopClassLoader.java    |   966 --
 .../processors/hadoop/HadoopClasspathMain.java  |    44 -
 .../processors/hadoop/HadoopClasspathUtils.java |   295 -
 .../processors/hadoop/HadoopCommonUtils.java    |   154 +
 .../processors/hadoop/HadoopContext.java        |     1 -
 .../processors/hadoop/HadoopDefaultJobInfo.java |   157 -
 .../processors/hadoop/HadoopExternalSplit.java  |    96 +
 .../processors/hadoop/HadoopHelperImpl.java     |   133 +
 .../processors/hadoop/HadoopLocations.java      |   123 -
 .../hadoop/HadoopMapReduceCounterGroup.java     |   123 -
 .../hadoop/HadoopMapReduceCounters.java         |   228 -
 .../processors/hadoop/HadoopMapperUtils.java    |    56 +
 .../processors/hadoop/HadoopProcessor.java      |    32 +-
 .../processors/hadoop/HadoopSplitWrapper.java   |   128 +
 .../internal/processors/hadoop/HadoopUtils.java |   436 -
 .../hadoop/counter/HadoopCounterAdapter.java    |     1 +
 .../counter/HadoopPerformanceCounter.java       |    12 +-
 .../hadoop/delegate/HadoopDelegateUtils.java    |   138 +
 .../HadoopFileSystemCounterWriterDelegate.java  |    36 +
 .../HadoopFileSystemFactoryDelegate.java        |    36 +
 .../HadoopIgfsSecondaryFileSystemDelegate.java  |    28 +
 .../hadoop/fs/HadoopFileSystemCacheUtils.java   |   242 -
 .../hadoop/fs/HadoopFileSystemsUtils.java       |    51 -
 .../hadoop/fs/HadoopLazyConcurrentMap.java      |   212 -
 .../hadoop/fs/HadoopLocalFileSystemV1.java      |    39 -
 .../hadoop/fs/HadoopLocalFileSystemV2.java      |    88 -
 .../processors/hadoop/fs/HadoopParameters.java  |    94 -
 .../hadoop/fs/HadoopRawLocalFileSystem.java     |   314 -
 .../processors/hadoop/igfs/HadoopIgfs.java      |   202 -
 .../igfs/HadoopIgfsCommunicationException.java  |    57 -
 .../hadoop/igfs/HadoopIgfsEndpoint.java         |     4 +-
 .../processors/hadoop/igfs/HadoopIgfsEx.java    |    93 -
 .../hadoop/igfs/HadoopIgfsFuture.java           |    97 -
 .../hadoop/igfs/HadoopIgfsInProc.java           |   510 -
 .../hadoop/igfs/HadoopIgfsInputStream.java      |   629 -
 .../processors/hadoop/igfs/HadoopIgfsIo.java    |    76 -
 .../processors/hadoop/igfs/HadoopIgfsIpcIo.java |   624 -
 .../hadoop/igfs/HadoopIgfsIpcIoListener.java    |    36 -
 .../hadoop/igfs/HadoopIgfsJclLogger.java        |   116 -
 .../hadoop/igfs/HadoopIgfsOutProc.java          |   524 -
 .../hadoop/igfs/HadoopIgfsOutputStream.java     |   201 -
 .../hadoop/igfs/HadoopIgfsProperties.java       |    86 -
 .../hadoop/igfs/HadoopIgfsProxyInputStream.java |   337 -
 .../igfs/HadoopIgfsProxyOutputStream.java       |   165 -
 ...fsSecondaryFileSystemPositionedReadable.java |   105 -
 .../hadoop/igfs/HadoopIgfsStreamDelegate.java   |    96 -
 .../igfs/HadoopIgfsStreamEventListener.java     |    39 -
 .../processors/hadoop/igfs/HadoopIgfsUtils.java |   174 -
 .../hadoop/igfs/HadoopIgfsWrapper.java          |   552 -
 .../impl/HadoopMapReduceCounterGroup.java       |   124 +
 .../hadoop/impl/HadoopMapReduceCounters.java    |   229 +
 .../processors/hadoop/impl/HadoopUtils.java     |   397 +
 .../HadoopBasicFileSystemFactoryDelegate.java   |   178 +
 .../HadoopCachingFileSystemFactoryDelegate.java |    75 +
 .../HadoopDefaultFileSystemFactoryDelegate.java |    62 +
 ...doopFileSystemCounterWriterDelegateImpl.java |   108 +
 ...doopIgfsSecondaryFileSystemDelegateImpl.java |   470 +
 ...HadoopKerberosFileSystemFactoryDelegate.java |   117 +
 .../impl/fs/HadoopFileSystemCacheUtils.java     |   243 +
 .../hadoop/impl/fs/HadoopFileSystemsUtils.java  |    62 +
 .../hadoop/impl/fs/HadoopLazyConcurrentMap.java |   210 +
 .../hadoop/impl/fs/HadoopLocalFileSystemV1.java |    40 +
 .../hadoop/impl/fs/HadoopLocalFileSystemV2.java |    89 +
 .../hadoop/impl/fs/HadoopParameters.java        |    94 +
 .../impl/fs/HadoopRawLocalFileSystem.java       |   315 +
 .../processors/hadoop/impl/igfs/HadoopIgfs.java |   203 +
 .../igfs/HadoopIgfsCommunicationException.java  |    57 +
 .../hadoop/impl/igfs/HadoopIgfsEx.java          |    94 +
 .../hadoop/impl/igfs/HadoopIgfsFuture.java      |    97 +
 .../hadoop/impl/igfs/HadoopIgfsInProc.java      |   509 +
 .../hadoop/impl/igfs/HadoopIgfsInputStream.java |   630 +
 .../hadoop/impl/igfs/HadoopIgfsIo.java          |    76 +
 .../hadoop/impl/igfs/HadoopIgfsIpcIo.java       |   625 +
 .../impl/igfs/HadoopIgfsIpcIoListener.java      |    36 +
 .../hadoop/impl/igfs/HadoopIgfsJclLogger.java   |   123 +
 .../hadoop/impl/igfs/HadoopIgfsOutProc.java     |   525 +
 .../impl/igfs/HadoopIgfsOutputStream.java       |   202 +
 .../hadoop/impl/igfs/HadoopIgfsProperties.java  |    90 +
 .../impl/igfs/HadoopIgfsProxyInputStream.java   |   338 +
 .../impl/igfs/HadoopIgfsProxyOutputStream.java  |   166 +
 ...fsSecondaryFileSystemPositionedReadable.java |   106 +
 .../impl/igfs/HadoopIgfsStreamDelegate.java     |    96 +
 .../igfs/HadoopIgfsStreamEventListener.java     |    39 +
 .../hadoop/impl/igfs/HadoopIgfsUtils.java       |   175 +
 .../hadoop/impl/igfs/HadoopIgfsWrapper.java     |   554 +
 .../hadoop/impl/proto/HadoopClientProtocol.java |   379 +
 .../hadoop/impl/v1/HadoopV1CleanupTask.java     |    65 +
 .../hadoop/impl/v1/HadoopV1Counter.java         |   107 +
 .../hadoop/impl/v1/HadoopV1MapTask.java         |   135 +
 .../hadoop/impl/v1/HadoopV1OutputCollector.java |   138 +
 .../hadoop/impl/v1/HadoopV1Partitioner.java     |    44 +
 .../hadoop/impl/v1/HadoopV1ReduceTask.java      |   116 +
 .../hadoop/impl/v1/HadoopV1Reporter.java        |    81 +
 .../hadoop/impl/v1/HadoopV1SetupTask.java       |    57 +
 .../hadoop/impl/v1/HadoopV1Splitter.java        |   103 +
 .../processors/hadoop/impl/v1/HadoopV1Task.java |    98 +
 .../processors/hadoop/impl/v2/HadoopDaemon.java |   126 +
 .../impl/v2/HadoopSerializationWrapper.java     |   139 +
 .../impl/v2/HadoopShutdownHookManager.java      |    98 +
 .../hadoop/impl/v2/HadoopV2CleanupTask.java     |    73 +
 .../hadoop/impl/v2/HadoopV2Context.java         |   244 +
 .../hadoop/impl/v2/HadoopV2Counter.java         |    89 +
 ...DelegatingPartiallyOffheapRawComparator.java |    54 +
 .../processors/hadoop/impl/v2/HadoopV2Job.java  |   475 +
 .../impl/v2/HadoopV2JobResourceManager.java     |   321 +
 .../hadoop/impl/v2/HadoopV2MapTask.java         |   111 +
 .../hadoop/impl/v2/HadoopV2Partitioner.java     |    44 +
 .../hadoop/impl/v2/HadoopV2ReduceTask.java      |   105 +
 .../hadoop/impl/v2/HadoopV2SetupTask.java       |    66 +
 .../hadoop/impl/v2/HadoopV2Splitter.java        |   112 +
 .../processors/hadoop/impl/v2/HadoopV2Task.java |   186 +
 .../hadoop/impl/v2/HadoopV2TaskContext.java     |   613 +
 .../impl/v2/HadoopWritableSerialization.java    |    76 +
 .../processors/hadoop/io/OffheapRawMemory.java  |   131 +
 .../hadoop/jobtracker/HadoopJobTracker.java     |    92 +-
 .../hadoop/mapreduce/MapReduceClient.java       |   147 +
 .../hadoop/message/HadoopMessage.java           |    27 -
 .../planner/HadoopDefaultMapReducePlan.java     |     7 +-
 .../hadoop/proto/HadoopClientProtocol.java      |   349 -
 .../hadoop/shuffle/HadoopShuffle.java           |   112 +-
 .../hadoop/shuffle/HadoopShuffleAck.java        |    92 -
 .../hadoop/shuffle/HadoopShuffleJob.java        |   782 +-
 .../hadoop/shuffle/HadoopShuffleLocalState.java |    67 +
 .../hadoop/shuffle/HadoopShuffleMessage.java    |   242 -
 .../shuffle/HadoopShuffleRemoteState.java       |    61 +
 .../shuffle/collections/HadoopMultimapBase.java |     5 +-
 .../shuffle/collections/HadoopSkipList.java     |    14 +-
 .../shuffle/direct/HadoopDirectDataInput.java   |   166 +
 .../shuffle/direct/HadoopDirectDataOutput.java  |   235 +
 .../direct/HadoopDirectDataOutputContext.java   |   140 +
 .../direct/HadoopDirectDataOutputState.java     |    66 +
 .../shuffle/streams/HadoopDataOutStream.java    |     2 +-
 .../taskexecutor/HadoopExecutorService.java     |     6 +-
 .../hadoop/taskexecutor/HadoopRunnableTask.java |    12 +-
 .../external/HadoopExternalTaskExecutor.java    |    13 +-
 .../child/HadoopChildProcessRunner.java         |    38 +-
 .../child/HadoopExternalProcessStarter.java     |    10 +-
 .../HadoopExternalCommunication.java            |    21 +-
 .../communication/HadoopIpcToNioAdapter.java    |     2 +-
 .../communication/HadoopMarshallerFilter.java   |    17 +-
 .../hadoop/v1/HadoopV1CleanupTask.java          |    64 -
 .../processors/hadoop/v1/HadoopV1Counter.java   |   106 -
 .../processors/hadoop/v1/HadoopV1MapTask.java   |   122 -
 .../hadoop/v1/HadoopV1OutputCollector.java      |   137 -
 .../hadoop/v1/HadoopV1Partitioner.java          |    44 -
 .../hadoop/v1/HadoopV1ReduceTask.java           |   101 -
 .../processors/hadoop/v1/HadoopV1Reporter.java  |    81 -
 .../processors/hadoop/v1/HadoopV1SetupTask.java |    56 -
 .../processors/hadoop/v1/HadoopV1Splitter.java  |   102 -
 .../processors/hadoop/v1/HadoopV1Task.java      |    97 -
 .../processors/hadoop/v2/HadoopDaemon.java      |   126 -
 .../hadoop/v2/HadoopExternalSplit.java          |    89 -
 .../hadoop/v2/HadoopSerializationWrapper.java   |   138 -
 .../hadoop/v2/HadoopShutdownHookManager.java    |    98 -
 .../hadoop/v2/HadoopSplitWrapper.java           |   119 -
 .../hadoop/v2/HadoopV2CleanupTask.java          |    72 -
 .../processors/hadoop/v2/HadoopV2Context.java   |   243 -
 .../processors/hadoop/v2/HadoopV2Counter.java   |    88 -
 .../processors/hadoop/v2/HadoopV2Job.java       |   443 -
 .../hadoop/v2/HadoopV2JobResourceManager.java   |   322 -
 .../processors/hadoop/v2/HadoopV2MapTask.java   |    99 -
 .../hadoop/v2/HadoopV2Partitioner.java          |    44 -
 .../hadoop/v2/HadoopV2ReduceTask.java           |    91 -
 .../processors/hadoop/v2/HadoopV2SetupTask.java |    65 -
 .../processors/hadoop/v2/HadoopV2Splitter.java  |   111 -
 .../processors/hadoop/v2/HadoopV2Task.java      |   185 -
 .../hadoop/v2/HadoopV2TaskContext.java          |   559 -
 .../hadoop/v2/HadoopWritableSerialization.java  |    75 -
 .../resources/META-INF/classnames.properties    |   114 +
 .../HadoopClientProtocolEmbeddedSelfTest.java   |    35 -
 .../hadoop/HadoopClientProtocolSelfTest.java    |   654 -
 .../hadoop/cache/HadoopTxConfigCacheTest.java   |    42 -
 ...KerberosHadoopFileSystemFactorySelfTest.java |   121 -
 .../util/BasicUserNameMapperSelfTest.java       |   133 -
 .../util/ChainedUserNameMapperSelfTest.java     |   107 -
 .../util/KerberosUserNameMapperSelfTest.java    |    99 -
 .../ignite/igfs/Hadoop1DualAbstractTest.java    |   158 -
 .../igfs/Hadoop1OverIgfsDualAsyncTest.java      |    30 -
 .../igfs/Hadoop1OverIgfsDualSyncTest.java       |    30 -
 .../igfs/HadoopFIleSystemFactorySelfTest.java   |   327 -
 .../HadoopIgfs20FileSystemAbstractSelfTest.java |  2040 ---
 ...Igfs20FileSystemLoopbackPrimarySelfTest.java |    74 -
 ...oopIgfs20FileSystemShmemPrimarySelfTest.java |    74 -
 .../igfs/HadoopIgfsDualAbstractSelfTest.java    |   321 -
 .../igfs/HadoopIgfsDualAsyncSelfTest.java       |    32 -
 .../ignite/igfs/HadoopIgfsDualSyncSelfTest.java |    32 -
 ...adoopIgfsSecondaryFileSystemTestAdapter.java |   149 -
 ...oopSecondaryFileSystemConfigurationTest.java |   575 -
 .../apache/ignite/igfs/IgfsEventsTestSuite.java |   285 -
 .../igfs/IgfsNearOnlyMultiNodeSelfTest.java     |   223 -
 .../IgniteHadoopFileSystemAbstractSelfTest.java |  2432 ---
 .../IgniteHadoopFileSystemClientSelfTest.java   |   212 -
 ...IgniteHadoopFileSystemHandshakeSelfTest.java |   389 -
 .../IgniteHadoopFileSystemIpcCacheSelfTest.java |   214 -
 .../IgniteHadoopFileSystemLoggerSelfTest.java   |   298 -
 ...niteHadoopFileSystemLoggerStateSelfTest.java |   329 -
 ...adoopFileSystemLoopbackAbstractSelfTest.java |    46 -
 ...SystemLoopbackEmbeddedDualAsyncSelfTest.java |    33 -
 ...eSystemLoopbackEmbeddedDualSyncSelfTest.java |    33 -
 ...leSystemLoopbackEmbeddedPrimarySelfTest.java |    33 -
 ...SystemLoopbackEmbeddedSecondarySelfTest.java |    34 -
 ...SystemLoopbackExternalDualAsyncSelfTest.java |    33 -
 ...eSystemLoopbackExternalDualSyncSelfTest.java |    33 -
 ...leSystemLoopbackExternalPrimarySelfTest.java |    33 -
 ...SystemLoopbackExternalSecondarySelfTest.java |    34 -
 ...condaryFileSystemInitializationSelfTest.java |   214 -
 ...teHadoopFileSystemShmemAbstractSelfTest.java |    91 -
 ...ileSystemShmemEmbeddedDualAsyncSelfTest.java |    33 -
 ...FileSystemShmemEmbeddedDualSyncSelfTest.java |    33 -
 ...pFileSystemShmemEmbeddedPrimarySelfTest.java |    33 -
 ...ileSystemShmemEmbeddedSecondarySelfTest.java |    33 -
 ...ileSystemShmemExternalDualAsyncSelfTest.java |    33 -
 ...FileSystemShmemExternalDualSyncSelfTest.java |    33 -
 ...pFileSystemShmemExternalPrimarySelfTest.java |    33 -
 ...ileSystemShmemExternalSecondarySelfTest.java |    33 -
 .../hadoop/HadoopAbstractMapReduceTest.java     |   429 -
 .../hadoop/HadoopAbstractSelfTest.java          |   239 -
 .../hadoop/HadoopAbstractWordCountTest.java     |   175 -
 .../hadoop/HadoopClassLoaderTest.java           |   110 -
 .../hadoop/HadoopCommandLineTest.java           |   474 -
 .../HadoopDefaultMapReducePlannerSelfTest.java  |   615 -
 .../processors/hadoop/HadoopErrorSimulator.java |   326 -
 .../hadoop/HadoopFileSystemsTest.java           |   155 -
 .../processors/hadoop/HadoopGroupingTest.java   |   307 -
 .../hadoop/HadoopJobTrackerSelfTest.java        |   345 -
 .../hadoop/HadoopMapReduceEmbeddedSelfTest.java |   253 -
 .../HadoopMapReduceErrorResilienceTest.java     |   154 -
 .../processors/hadoop/HadoopMapReduceTest.java  |    66 -
 .../hadoop/HadoopNoHadoopMapReduceTest.java     |    47 -
 .../processors/hadoop/HadoopPlannerMockJob.java |   168 -
 .../hadoop/HadoopPopularWordsTest.java          |   298 -
 .../HadoopSerializationWrapperSelfTest.java     |    79 -
 .../processors/hadoop/HadoopSharedMap.java      |     1 +
 .../hadoop/HadoopSnappyFullMapReduceTest.java   |    36 -
 .../processors/hadoop/HadoopSnappyTest.java     |   102 -
 .../hadoop/HadoopSortingExternalTest.java       |    46 -
 .../processors/hadoop/HadoopSortingTest.java    |   303 -
 .../hadoop/HadoopSplitWrapperSelfTest.java      |    72 -
 .../processors/hadoop/HadoopStartup.java        |    54 -
 .../hadoop/HadoopTaskExecutionSelfTest.java     |   567 -
 .../hadoop/HadoopTasksAllVersionsTest.java      |   260 -
 .../processors/hadoop/HadoopTasksV1Test.java    |    58 -
 .../processors/hadoop/HadoopTasksV2Test.java    |    77 -
 .../hadoop/HadoopTestClassLoader.java           |   106 +
 .../hadoop/HadoopTestRoundRobinMrPlanner.java   |    71 -
 .../hadoop/HadoopTestTaskContext.java           |   228 -
 .../processors/hadoop/HadoopTestUtils.java      |   107 -
 .../processors/hadoop/HadoopV2JobSelfTest.java  |   100 -
 .../hadoop/HadoopValidationSelfTest.java        |    53 -
 .../HadoopWeightedMapReducePlannerTest.java     |   599 -
 .../HadoopWeightedPlannerMapReduceTest.java     |    38 -
 .../hadoop/books/alice-in-wonderland.txt        |  3735 -----
 .../processors/hadoop/books/art-of-war.txt      |  6982 ---------
 .../hadoop/books/huckleberry-finn.txt           | 11733 ---------------
 .../processors/hadoop/books/sherlock-holmes.txt | 13052 -----------------
 .../processors/hadoop/books/tom-sawyer.txt      |  8858 -----------
 .../hadoop/deps/CircularWIthHadoop.java         |    32 -
 .../hadoop/deps/CircularWithoutHadoop.java      |    27 -
 .../processors/hadoop/deps/WithCast.java        |    41 -
 .../hadoop/deps/WithClassAnnotation.java        |    28 -
 .../hadoop/deps/WithConstructorInvocation.java  |    31 -
 .../processors/hadoop/deps/WithExtends.java     |    27 -
 .../processors/hadoop/deps/WithField.java       |    29 -
 .../processors/hadoop/deps/WithImplements.java  |    36 -
 .../hadoop/deps/WithIndirectField.java          |    27 -
 .../processors/hadoop/deps/WithInitializer.java |    33 -
 .../processors/hadoop/deps/WithInnerClass.java  |    31 -
 .../hadoop/deps/WithLocalVariable.java          |    38 -
 .../hadoop/deps/WithMethodAnnotation.java       |    32 -
 .../hadoop/deps/WithMethodArgument.java         |    31 -
 .../hadoop/deps/WithMethodCheckedException.java |    31 -
 .../hadoop/deps/WithMethodInvocation.java       |    31 -
 .../hadoop/deps/WithMethodReturnType.java       |    31 -
 .../hadoop/deps/WithMethodRuntimeException.java |    31 -
 .../processors/hadoop/deps/WithOuterClass.java  |    38 -
 .../hadoop/deps/WithParameterAnnotation.java    |    31 -
 .../processors/hadoop/deps/WithStaticField.java |    29 -
 .../hadoop/deps/WithStaticInitializer.java      |    34 -
 .../processors/hadoop/deps/Without.java         |    25 -
 .../hadoop/examples/HadoopWordCount1.java       |    94 -
 .../hadoop/examples/HadoopWordCount1Map.java    |    79 -
 .../hadoop/examples/HadoopWordCount1Reduce.java |    61 -
 .../hadoop/examples/HadoopWordCount2.java       |   111 -
 .../examples/HadoopWordCount2Combiner.java      |    45 -
 .../hadoop/examples/HadoopWordCount2Mapper.java |    88 -
 .../examples/HadoopWordCount2Reducer.java       |   113 -
 .../impl/HadoopAbstractMapReduceTest.java       |   432 +
 .../hadoop/impl/HadoopAbstractSelfTest.java     |   250 +
 .../impl/HadoopAbstractWordCountTest.java       |   175 +
 .../hadoop/impl/HadoopCommandLineTest.java      |   476 +
 .../HadoopDefaultMapReducePlannerSelfTest.java  |   619 +
 .../hadoop/impl/HadoopErrorSimulator.java       |   326 +
 .../hadoop/impl/HadoopFileSystemsTest.java      |   164 +
 .../hadoop/impl/HadoopGroupingTest.java         |   302 +
 .../hadoop/impl/HadoopJobTrackerSelfTest.java   |   332 +
 .../impl/HadoopMapReduceEmbeddedSelfTest.java   |   271 +
 .../HadoopMapReduceErrorResilienceTest.java     |   154 +
 .../hadoop/impl/HadoopMapReduceTest.java        |    66 +
 .../impl/HadoopNoHadoopMapReduceTest.java       |    47 +
 .../hadoop/impl/HadoopPlannerMockJob.java       |   182 +
 .../hadoop/impl/HadoopPopularWordsTest.java     |   298 +
 .../HadoopSerializationWrapperSelfTest.java     |    80 +
 .../impl/HadoopSnappyFullMapReduceTest.java     |    36 +
 .../hadoop/impl/HadoopSnappyTest.java           |   104 +
 .../hadoop/impl/HadoopSortingExternalTest.java  |    46 +
 .../hadoop/impl/HadoopSortingTest.java          |   304 +
 .../hadoop/impl/HadoopSplitWrapperSelfTest.java |    72 +
 .../processors/hadoop/impl/HadoopStartup.java   |    54 +
 .../impl/HadoopTaskExecutionSelfTest.java       |   548 +
 .../hadoop/impl/HadoopTasksAllVersionsTest.java |   264 +
 .../hadoop/impl/HadoopTasksV1Test.java          |    62 +
 .../hadoop/impl/HadoopTasksV2Test.java          |    81 +
 .../hadoop/impl/HadoopTeraSortTest.java         |   409 +
 .../impl/HadoopTestRoundRobinMrPlanner.java     |    75 +
 .../hadoop/impl/HadoopTestTaskContext.java      |   233 +
 .../processors/hadoop/impl/HadoopTestUtils.java |   178 +
 .../hadoop/impl/HadoopTxConfigCacheTest.java    |    42 +
 .../hadoop/impl/HadoopUserLibsSelfTest.java     |   261 +
 .../hadoop/impl/HadoopV2JobSelfTest.java        |   108 +
 .../hadoop/impl/HadoopValidationSelfTest.java   |    53 +
 .../HadoopWeightedMapReducePlannerTest.java     |   602 +
 .../HadoopWeightedPlannerMapReduceTest.java     |    38 +
 .../hadoop/impl/books/alice-in-wonderland.txt   |  3735 +++++
 .../processors/hadoop/impl/books/art-of-war.txt |  6982 +++++++++
 .../hadoop/impl/books/huckleberry-finn.txt      | 11733 +++++++++++++++
 .../hadoop/impl/books/sherlock-holmes.txt       | 13052 +++++++++++++++++
 .../processors/hadoop/impl/books/tom-sawyer.txt |  8858 +++++++++++
 .../HadoopClientProtocolEmbeddedSelfTest.java   |    35 +
 ...opClientProtocolMultipleServersSelfTest.java |   315 +
 .../client/HadoopClientProtocolSelfTest.java    |   670 +
 .../hadoop/impl/examples/HadoopWordCount1.java  |    94 +
 .../impl/examples/HadoopWordCount1Map.java      |    79 +
 .../impl/examples/HadoopWordCount1Reduce.java   |    61 +
 .../hadoop/impl/examples/HadoopWordCount2.java  |   111 +
 .../impl/examples/HadoopWordCount2Combiner.java |    45 +
 .../impl/examples/HadoopWordCount2Mapper.java   |    88 +
 .../impl/examples/HadoopWordCount2Reducer.java  |   113 +
 ...KerberosHadoopFileSystemFactorySelfTest.java |   127 +
 .../impl/igfs/Hadoop1DualAbstractTest.java      |   163 +
 .../impl/igfs/Hadoop1OverIgfsDualAsyncTest.java |    32 +
 .../impl/igfs/Hadoop1OverIgfsDualSyncTest.java  |    32 +
 .../igfs/HadoopFIleSystemFactorySelfTest.java   |   345 +
 .../HadoopIgfs20FileSystemAbstractSelfTest.java |  2046 +++
 ...Igfs20FileSystemLoopbackPrimarySelfTest.java |    77 +
 ...oopIgfs20FileSystemShmemPrimarySelfTest.java |    77 +
 .../igfs/HadoopIgfsDualAbstractSelfTest.java    |   328 +
 .../impl/igfs/HadoopIgfsDualAsyncSelfTest.java  |    32 +
 .../impl/igfs/HadoopIgfsDualSyncSelfTest.java   |    32 +
 ...adoopIgfsSecondaryFileSystemTestAdapter.java |   152 +
 ...oopSecondaryFileSystemConfigurationTest.java |   595 +
 .../hadoop/impl/igfs/IgfsEventsTestSuite.java   |   289 +
 .../igfs/IgfsNearOnlyMultiNodeSelfTest.java     |   226 +
 .../IgniteHadoopFileSystemAbstractSelfTest.java |  2435 +++
 .../IgniteHadoopFileSystemClientSelfTest.java   |   212 +
 ...IgniteHadoopFileSystemHandshakeSelfTest.java |   393 +
 .../IgniteHadoopFileSystemIpcCacheSelfTest.java |   215 +
 .../IgniteHadoopFileSystemLoggerSelfTest.java   |   299 +
 ...niteHadoopFileSystemLoggerStateSelfTest.java |   332 +
 ...adoopFileSystemLoopbackAbstractSelfTest.java |    50 +
 ...SystemLoopbackEmbeddedDualAsyncSelfTest.java |    33 +
 ...eSystemLoopbackEmbeddedDualSyncSelfTest.java |    33 +
 ...leSystemLoopbackEmbeddedPrimarySelfTest.java |    33 +
 ...SystemLoopbackEmbeddedSecondarySelfTest.java |    34 +
 ...SystemLoopbackExternalDualAsyncSelfTest.java |    33 +
 ...eSystemLoopbackExternalDualSyncSelfTest.java |    33 +
 ...leSystemLoopbackExternalPrimarySelfTest.java |    33 +
 ...SystemLoopbackExternalSecondarySelfTest.java |    34 +
 ...condaryFileSystemInitializationSelfTest.java |   217 +
 ...teHadoopFileSystemShmemAbstractSelfTest.java |    94 +
 ...ileSystemShmemEmbeddedDualAsyncSelfTest.java |    33 +
 ...FileSystemShmemEmbeddedDualSyncSelfTest.java |    33 +
 ...pFileSystemShmemEmbeddedPrimarySelfTest.java |    33 +
 ...ileSystemShmemEmbeddedSecondarySelfTest.java |    33 +
 ...ileSystemShmemExternalDualAsyncSelfTest.java |    33 +
 ...FileSystemShmemExternalDualSyncSelfTest.java |    33 +
 ...pFileSystemShmemExternalPrimarySelfTest.java |    33 +
 ...ileSystemShmemExternalSecondarySelfTest.java |    33 +
 .../collections/HadoopAbstractMapTest.java      |   181 +
 .../HadoopConcurrentHashMultimapSelftest.java   |   280 +
 .../collections/HadoopHashMapSelfTest.java      |   133 +
 .../collections/HadoopSkipListSelfTest.java     |   332 +
 .../streams/HadoopDataStreamSelfTest.java       |   153 +
 .../taskexecutor/HadoopExecutorServiceTest.java |   119 +
 .../HadoopExternalTaskExecutionSelfTest.java    |   234 +
 .../HadoopExternalCommunicationSelfTest.java    |   222 +
 .../impl/util/BasicUserNameMapperSelfTest.java  |   134 +
 .../util/ChainedUserNameMapperSelfTest.java     |   111 +
 .../util/KerberosUserNameMapperSelfTest.java    |   100 +
 .../collections/HadoopAbstractMapTest.java      |   174 -
 .../HadoopConcurrentHashMultimapSelftest.java   |   278 -
 .../collections/HadoopHashMapSelfTest.java      |   131 -
 .../collections/HadoopSkipListSelfTest.java     |   318 -
 .../streams/HadoopDataStreamSelfTest.java       |   150 -
 .../hadoop/state/HadoopGroupingTestState.java   |    40 +
 .../state/HadoopJobTrackerSelfTestState.java    |    45 +
 .../HadoopMapReduceEmbeddedSelfTestState.java   |    32 +
 .../HadoopTaskExecutionSelfTestValues.java      |    51 +
 .../taskexecutor/HadoopExecutorServiceTest.java |   118 -
 .../HadoopExternalTaskExecutionSelfTest.java    |   232 -
 .../HadoopExternalCommunicationSelfTest.java    |   220 -
 .../testsuites/IgniteHadoopTestSuite.java       |   120 +-
 .../IgniteIgfsLinuxAndMacOSTestSuite.java       |    25 +-
 modules/hibernate/pom.xml                       |     2 +-
 .../hibernate/CacheHibernateBlobStore.java      |     4 +-
 modules/ignored-tests/README.txt                |     4 +
 modules/ignored-tests/pom.xml                   |   241 +
 ...gniteIgnoredBinarySimpleMapperTestSuite.java |    41 +
 .../IgniteIgnoredBinaryTestSuite.java           |    42 +
 .../testsuites/IgniteIgnoredTestSuite.java      |    61 +
 .../apache/ignite/testsuites/package-info.java  |    22 +
 modules/indexing/pom.xml                        |     2 +-
 .../cache/query/GridCacheTwoStepQuery.java      |   253 +
 .../query/h2/DmlStatementsProcessor.java        |  1083 ++
 .../query/h2/GridH2ResultSetIterator.java       |     6 +-
 .../processors/query/h2/IgniteH2Indexing.java   |   355 +-
 .../query/h2/dml/FastUpdateArgument.java        |    27 +
 .../query/h2/dml/FastUpdateArguments.java       |    53 +
 .../query/h2/dml/KeyValueSupplier.java          |    30 +
 .../processors/query/h2/dml/UpdateMode.java     |    36 +
 .../processors/query/h2/dml/UpdatePlan.java     |   128 +
 .../query/h2/dml/UpdatePlanBuilder.java         |   486 +
 .../processors/query/h2/dml/package-info.java   |    22 +
 .../query/h2/opt/GridH2IndexBase.java           |     6 +-
 .../query/h2/opt/GridH2RowDescriptor.java       |    23 +
 .../query/h2/opt/GridH2TreeIndex.java           |     2 +-
 .../processors/query/h2/sql/DmlAstUtils.java    |   616 +
 .../processors/query/h2/sql/GridSqlArray.java   |     8 +
 .../processors/query/h2/sql/GridSqlConst.java   |     6 +
 .../processors/query/h2/sql/GridSqlDelete.java  |    68 +
 .../query/h2/sql/GridSqlFunction.java           |     5 +-
 .../processors/query/h2/sql/GridSqlInsert.java  |   149 +
 .../processors/query/h2/sql/GridSqlKeyword.java |    46 +
 .../processors/query/h2/sql/GridSqlMerge.java   |   143 +
 .../processors/query/h2/sql/GridSqlQuery.java   |    44 +-
 .../query/h2/sql/GridSqlQueryParser.java        |   323 +-
 .../query/h2/sql/GridSqlQuerySplitter.java      |   149 +-
 .../processors/query/h2/sql/GridSqlSelect.java  |     3 +-
 .../query/h2/sql/GridSqlStatement.java          |    64 +
 .../processors/query/h2/sql/GridSqlUpdate.java  |   105 +
 .../query/h2/twostep/GridMapQueryExecutor.java  |    66 +-
 .../query/h2/twostep/GridMergeIndex.java        |    61 +-
 .../h2/twostep/GridReduceQueryExecutor.java     |   169 +-
 .../query/h2/twostep/msg/GridH2Geometry.java    |     2 +-
 .../h2/twostep/msg/GridH2QueryRequest.java      |    42 +-
 .../cache/BinarySerializationQuerySelfTest.java |     2 -
 ...CacheAbstractQueryDetailMetricsSelfTest.java |   572 +
 .../CacheAbstractQueryMetricsSelfTest.java      |   307 +-
 .../cache/CacheConfigurationP2PTestServer.java  |     2 -
 .../CacheLocalQueryDetailMetricsSelfTest.java   |    33 +
 ...edQueryDetailMetricsDistributedSelfTest.java |    33 +
 ...titionedQueryDetailMetricsLocalSelfTest.java |    33 +
 .../CacheRandomOperationsMultithreadedTest.java |     4 +-
 ...edQueryDetailMetricsDistributedSelfTest.java |    33 +
 ...plicatedQueryDetailMetricsLocalSelfTest.java |    33 +
 ...CacheScanPartitionQueryFallbackSelfTest.java |     2 +-
 .../ClientReconnectAfterClusterRestartTest.java |     4 +-
 .../GridCacheQueryIndexDisabledSelfTest.java    |    20 +-
 ...niteCacheAbstractInsertSqlQuerySelfTest.java |   559 +
 .../cache/IgniteCacheAbstractQuerySelfTest.java |   297 +-
 .../IgniteCacheAbstractSqlDmlQuerySelfTest.java |   243 +
 .../IgniteCacheDeleteSqlQuerySelfTest.java      |   106 +
 .../IgniteCacheInsertSqlQuerySelfTest.java      |   205 +
 .../cache/IgniteCacheLargeResultSelfTest.java   |    15 +-
 ...eLockPartitionOnAffinityRunAbstractTest.java |     1 -
 ...PartitionOnAffinityRunAtomicCacheOpTest.java |    11 +-
 ...niteCacheLockPartitionOnAffinityRunTest.java |    51 +-
 ...titionOnAffinityRunWithCollisionSpiTest.java |    10 +-
 .../cache/IgniteCacheMergeSqlQuerySelfTest.java |   152 +
 .../cache/IgniteCacheOffheapEvictQueryTest.java |    13 +-
 ...niteCacheP2pUnmarshallingQueryErrorTest.java |     4 +-
 .../IgniteCacheQueryMultiThreadedSelfTest.java  |    59 +
 .../IgniteCacheUpdateSqlQuerySelfTest.java      |   472 +
 .../cache/QueryEntityCaseMismatchTest.java      |   107 +
 .../IgniteCacheAtomicFieldsQuerySelfTest.java   |    21 -
 ...lientQueryReplicatedNodeRestartSelfTest.java |     7 +
 ...niteCacheDistributedQueryCancelSelfTest.java |   174 +
 ...butedQueryStopOnCancelOrTimeoutSelfTest.java |   262 +
 ...niteCachePartitionedFieldsQuerySelfTest.java |    25 +
 .../IgniteCachePartitionedQuerySelfTest.java    |    85 +
 ...cheQueryAbstractDistributedJoinSelfTest.java |   290 +
 ...QueryNodeRestartDistributedJoinSelfTest.java |   262 +-
 .../IgniteCacheQueryNodeRestartSelfTest2.java   |   127 +-
 ...nCancelOrTimeoutDistributedJoinSelfTest.java |   140 +
 ...gniteCacheReplicatedFieldsQuerySelfTest.java |     6 +-
 .../IgniteCacheReplicatedQuerySelfTest.java     |     6 +-
 ...eCacheLocalQueryCancelOrTimeoutSelfTest.java |   158 +
 .../IgniteSqlEntryCacheModeAgnosticTest.java    |   140 +
 .../query/IgniteSqlSchemaIndexingTest.java      |    15 +-
 .../query/IgniteSqlSplitterSelfTest.java        |   330 +-
 .../h2/GridIndexingSpiAbstractSelfTest.java     |    86 +-
 .../query/h2/sql/BaseH2CompareQueryTest.java    |     3 +-
 .../query/h2/sql/GridQueryParsingTest.java      |   118 +-
 ...narySimpleNameMapperCacheQueryTestSuite.java |     2 -
 .../IgniteCacheQuerySelfTestSuite.java          |   155 +-
 .../IgniteCacheQuerySelfTestSuite2.java         |    96 +-
 .../IgniteCacheQuerySelfTestSuite3.java         |     2 +
 .../IgniteH2IndexingSpiTestSuite.java           |    16 +-
 modules/jcl/pom.xml                             |     2 +-
 .../org/apache/ignite/logger/jcl/JclLogger.java |     9 +-
 modules/jms11/pom.xml                           |     2 +-
 .../apache/ignite/stream/jms11/JmsStreamer.java |     4 +-
 .../stream/jms11/IgniteJmsStreamerTest.java     |   206 +-
 .../jms11/IgniteJmsStreamerTestSuite.java       |     2 +-
 modules/jta/pom.xml                             |     2 +-
 ...titionedCacheJtaLookupClassNameSelfTest.java |     4 +-
 .../ignite/testsuites/IgniteJtaTestSuite.java   |     3 +-
 modules/kafka/README.txt                        |     4 +
 modules/kafka/pom.xml                           |     2 +-
 .../ignite/stream/kafka/KafkaStreamer.java      |    52 +-
 .../kafka/connect/IgniteSinkConstants.java      |     3 +
 .../stream/kafka/connect/IgniteSinkTask.java    |    47 +-
 .../serialization/CacheEventDeserializer.java   |     3 +-
 .../serialization/CacheEventSerializer.java     |     3 +-
 .../kafka/KafkaIgniteStreamerSelfTest.java      |    36 +-
 .../ignite/stream/kafka/TestKafkaBroker.java    |     2 +-
 .../kafka/connect/IgniteSinkConnectorMock.java  |    30 +
 .../kafka/connect/IgniteSinkConnectorTest.java  |    84 +-
 .../kafka/connect/IgniteSinkTaskMock.java       |    29 +
 .../connect/IgniteSourceConnectorTest.java      |     2 +-
 modules/kubernetes/DEVNOTES.txt                 |    63 +
 modules/kubernetes/README.txt                   |    33 +
 modules/kubernetes/config/Dockerfile            |    45 +
 modules/kubernetes/config/example-kube.xml      |    44 +
 .../kubernetes/config/ignite-deployment.yaml    |    26 +
 modules/kubernetes/config/ignite-service.yaml   |    14 +
 modules/kubernetes/config/run.sh                |    50 +
 modules/kubernetes/licenses/apache-2.0.txt      |   202 +
 modules/kubernetes/pom.xml                      |    93 +
 .../TcpDiscoveryKubernetesIpFinder.java         |   315 +
 .../tcp/ipfinder/kubernetes/package-info.java   |    22 +
 .../TcpDiscoveryKubernetesIpFinderSelfTest.java |    93 +
 .../tcp/ipfinder/kubernetes/package-info.java   |    22 +
 .../testsuites/IgniteKubernetesTestSuite.java   |    41 +
 modules/log4j/pom.xml                           |     2 +-
 .../apache/ignite/logger/log4j/Log4JLogger.java |     4 +-
 modules/log4j2/pom.xml                          |     2 +-
 modules/mesos/pom.xml                           |     2 +-
 modules/mqtt/pom.xml                            |     2 +-
 .../stream/mqtt/IgniteMqttStreamerTest.java     |     4 +-
 modules/osgi-karaf/pom.xml                      |     2 +-
 modules/osgi-paxlogging/pom.xml                 |     2 +-
 modules/osgi/pom.xml                            |     2 +-
 .../BundleDelegatingClassLoader.java            |     4 +-
 .../classloaders/ContainerSweepClassLoader.java |     4 +-
 modules/platforms/cpp/DEVNOTES.txt              |    23 +-
 modules/platforms/cpp/README.txt                |    10 +-
 modules/platforms/cpp/binary/Makefile.am        |     9 +-
 .../platforms/cpp/binary/include/Makefile.am    |     6 +
 .../cpp/binary/include/ignite/binary/binary.h   |    15 +-
 .../binary/binary_array_identity_resolver.h     |    64 +
 .../ignite/binary/binary_identity_resolver.h    |    61 +
 .../include/ignite/binary/binary_object.h       |    78 +
 .../include/ignite/binary/binary_raw_reader.h   |    21 +
 .../binary/include/ignite/binary/binary_type.h  |    16 -
 .../ignite/impl/binary/binary_object_header.h   |   250 +
 .../ignite/impl/binary/binary_object_impl.h     |   109 +
 .../ignite/impl/binary/binary_reader_impl.h     |     9 +-
 .../include/ignite/impl/binary/binary_schema.h  |     2 +-
 .../ignite/impl/binary/binary_type_impl.h       |   149 +
 .../ignite/impl/binary/binary_type_manager.h    |    16 +-
 .../ignite/impl/binary/binary_type_snapshot.h   |    18 +-
 .../include/ignite/impl/binary/binary_utils.h   |   236 +-
 .../ignite/impl/binary/binary_writer_impl.h     |    11 +-
 .../ignite/impl/interop/interop_output_stream.h |    10 +-
 .../cpp/binary/project/vs/binary.vcxproj        |    11 +-
 .../binary/project/vs/binary.vcxproj.filters    |    27 +
 .../binary/binary_array_identity_resolver.cpp   |    42 +
 .../cpp/binary/src/binary/binary_type.cpp       |     4 +-
 .../src/impl/binary/binary_object_header.cpp    |    51 +
 .../src/impl/binary/binary_object_impl.cpp      |    56 +
 .../src/impl/binary/binary_reader_impl.cpp      |    20 +-
 .../src/impl/binary/binary_type_manager.cpp     |    16 +-
 .../cpp/binary/src/impl/binary/binary_utils.cpp |   169 +-
 .../src/impl/binary/binary_writer_impl.cpp      |     4 +-
 .../binary/src/impl/interop/interop_memory.cpp  |     2 +-
 .../src/impl/interop/interop_output_stream.cpp  |     5 +
 modules/platforms/cpp/common/Makefile.am        |    11 +-
 .../platforms/cpp/common/include/Makefile.am    |     6 +-
 .../common/include/ignite/common/concurrent.h   |    93 +-
 .../include/ignite/common/dynamic_size_array.h  |     2 +-
 .../include/ignite/common/platform_utils.h      |    79 +
 .../include/ignite/common/reference_impl.h      |   286 +
 .../cpp/common/include/ignite/common/utils.h    |   249 +-
 .../cpp/common/include/ignite/ignite_error.h    |     4 +-
 .../cpp/common/include/ignite/reference.h       |   564 +
 .../os/linux/src/common/platform_utils.cpp      |    81 +
 .../cpp/common/os/linux/src/common/utils.cpp    |   136 -
 .../common/os/win/src/common/platform_utils.cpp |    88 +
 .../cpp/common/os/win/src/common/utils.cpp      |   142 -
 .../cpp/common/project/vs/common.vcxproj        |     8 +-
 .../common/project/vs/common.vcxproj.filters    |    18 +-
 .../platforms/cpp/common/src/common/utils.cpp   |   153 +
 .../platforms/cpp/common/src/ignite_error.cpp   |     4 +-
 modules/platforms/cpp/configure.ac              |     2 +-
 modules/platforms/cpp/configure.acrel           |     2 +-
 modules/platforms/cpp/core-test/Makefile.am     |    24 +-
 .../cpp/core-test/config/cache-identity.xml     |   121 +
 .../core-test/config/cache-query-continuous.xml |    87 +
 .../cpp/core-test/config/cache-query.xml        |    12 +-
 .../cpp/core-test/config/cache-test.xml         |     1 +
 .../platforms/cpp/core-test/config/invalid.xml  |    39 +
 .../core-test/include/ignite/binary_test_defs.h |    25 +
 .../cpp/core-test/include/ignite/complex_type.h |   135 +
 .../cpp/core-test/include/ignite/test_type.h    |   186 +
 .../cpp/core-test/include/ignite/test_utils.h   |    63 +
 .../cpp/core-test/project/vs/core-test.vcxproj  |    20 +-
 .../project/vs/core-test.vcxproj.filters        |    40 +-
 .../src/binary_identity_resolver_test.cpp       |   522 +
 .../cpp/core-test/src/binary_object_test.cpp    |   282 +
 .../cpp/core-test/src/binary_session_test.cpp   |     4 +-
 .../cpp/core-test/src/cache_query_test.cpp      |   225 +-
 .../platforms/cpp/core-test/src/cache_test.cpp  |    43 +-
 .../cpp/core-test/src/continuous_query_test.cpp |   584 +
 .../cpp/core-test/src/decimal_test.cpp          |     2 +-
 .../cpp/core-test/src/handle_registry_test.cpp  |    18 +-
 .../cpp/core-test/src/ignition_test.cpp         |    19 +-
 .../cpp/core-test/src/interop_memory_test.cpp   |     5 +-
 .../cpp/core-test/src/interop_test.cpp          |    51 +-
 .../cpp/core-test/src/reference_test.cpp        |   422 +
 .../platforms/cpp/core-test/src/test_utils.cpp  |    79 +
 .../cpp/core-test/src/transactions_test.cpp     |    23 +-
 modules/platforms/cpp/core/Makefile.am          |     7 +-
 .../cpp/core/include/ignite/cache/cache.h       |   119 +-
 .../cpp/core/include/ignite/cache/cache_entry.h |    40 +-
 .../ignite/cache/event/cache_entry_event.h      |   139 +
 .../cache/event/cache_entry_event_listener.h    |    71 +
 .../cache/query/continuous/continuous_query.h   |   239 +
 .../query/continuous/continuous_query_handle.h  |   133 +
 .../include/ignite/cache/query/query_cursor.h   |     4 +-
 .../impl/binary/binary_type_updater_impl.h      |    12 +-
 .../core/include/ignite/impl/cache/cache_impl.h |   153 +-
 .../continuous/continuous_query_handle_impl.h   |   101 +
 .../query/continuous/continuous_query_impl.h    |   351 +
 .../core/include/ignite/impl/handle_registry.h  |    62 +-
 .../include/ignite/impl/ignite_environment.h    |    81 +-
 .../ignite/impl/interop/interop_target.h        |    18 +
 .../cpp/core/include/ignite/impl/operations.h   |     4 +-
 modules/platforms/cpp/core/namespaces.dox       |    74 +-
 .../platforms/cpp/core/project/vs/core.vcxproj  |     9 +-
 .../cpp/core/project/vs/core.vcxproj.filters    |    30 +
 modules/platforms/cpp/core/src/ignition.cpp     |    21 +-
 .../impl/binary/binary_type_updater_impl.cpp    |    13 +-
 .../cpp/core/src/impl/cache/cache_impl.cpp      |    68 +-
 .../continuous/continuous_query_handle_impl.cpp |    96 +
 .../core/src/impl/cache/query/query_impl.cpp    |    15 +-
 .../cpp/core/src/impl/handle_registry.cpp       |   102 +-
 .../cpp/core/src/impl/ignite_environment.cpp    |   183 +-
 .../platforms/cpp/core/src/impl/ignite_impl.cpp |     4 +-
 .../core/src/impl/interop/interop_target.cpp    |    29 +-
 .../src/impl/transactions/transactions_impl.cpp |   135 +-
 modules/platforms/cpp/examples/Makefile.am      |     1 +
 modules/platforms/cpp/examples/README.txt       |     9 +-
 modules/platforms/cpp/examples/configure.ac     |     3 +-
 .../continuous-query-example/Makefile.am        |    58 +
 .../config/continuous-query-example.xml         |    52 +
 .../project/vs/continuous-query-example.vcxproj |   110 +
 .../vs/continuous-query-example.vcxproj.filters |    35 +
 .../src/continuous_query_example.cpp            |   142 +
 .../examples/include/ignite/examples/person.h   |     2 +-
 .../cpp/examples/odbc-example/Makefile.am       |     6 +-
 .../odbc-example/config/example-odbc.xml        |    38 +-
 .../project/vs/odbc-example.vcxproj             |     7 +-
 .../project/vs/odbc-example.vcxproj.filters     |     8 +
 .../examples/odbc-example/src/odbc_example.cpp  |   514 +-
 .../cpp/examples/project/vs/ignite-examples.sln |     6 +
 .../cpp/examples/putget-example/Makefile.am     |     6 +-
 .../putget-example/src/putget_example.cpp       |     2 +-
 .../cpp/examples/query-example/Makefile.am      |     6 +-
 .../query-example/src/query_example.cpp         |    58 +-
 modules/platforms/cpp/ignite/Makefile.am        |     6 +-
 .../cpp/ignite/project/vs/ignite.vcxproj        |     4 +-
 modules/platforms/cpp/jni/Makefile.am           |     6 +-
 .../cpp/jni/include/ignite/jni/exports.h        |   112 +-
 .../platforms/cpp/jni/include/ignite/jni/java.h |   329 +-
 .../cpp/jni/include/ignite/jni/utils.h          |    91 +-
 .../platforms/cpp/jni/project/vs/jni.vcxproj    |     2 +-
 modules/platforms/cpp/jni/project/vs/module.def |   100 +-
 modules/platforms/cpp/jni/src/exports.cpp       |   375 +-
 modules/platforms/cpp/jni/src/java.cpp          |  1854 +--
 modules/platforms/cpp/odbc-test/Makefile.am     |     8 +-
 .../cpp/odbc-test/config/queries-default.xml    |   146 +
 .../odbc-test/config/queries-test-noodbc.xml    |    80 +-
 .../cpp/odbc-test/config/queries-test.xml       |    81 +-
 .../platforms/cpp/odbc-test/include/Makefile.am |     1 +
 .../cpp/odbc-test/include/complex_type.h        |   122 +
 .../odbc-test/include/sql_test_suite_fixture.h  |    16 +
 .../platforms/cpp/odbc-test/include/test_type.h |    62 +-
 .../cpp/odbc-test/include/test_utils.h          |    49 +-
 .../cpp/odbc-test/project/vs/odbc-test.vcxproj  |     7 +-
 .../project/vs/odbc-test.vcxproj.filters        |     9 +
 .../cpp/odbc-test/src/api_robustness_test.cpp   |  1196 ++
 .../src/application_data_buffer_test.cpp        |   153 +-
 .../platforms/cpp/odbc-test/src/column_test.cpp |   199 +-
 .../cpp/odbc-test/src/queries_test.cpp          |   832 +-
 .../platforms/cpp/odbc-test/src/row_test.cpp    |     4 +-
 .../src/sql_aggregate_functions_test.cpp        |     5 +-
 .../src/sql_date_time_functions_test.cpp        |    26 +-
 .../src/sql_esc_convert_function_test.cpp       |   160 +
 .../src/sql_numeric_functions_test.cpp          |     1 +
 .../cpp/odbc-test/src/sql_outer_join_test.cpp   |     3 +-
 .../odbc-test/src/sql_string_functions_test.cpp |     1 +
 .../odbc-test/src/sql_test_suite_fixture.cpp    |   105 +-
 .../cpp/odbc-test/src/sql_types_test.cpp        |   256 +
 .../platforms/cpp/odbc-test/src/test_utils.cpp  |    60 +-
 .../cpp/odbc-test/src/utility_test.cpp          |    27 +-
 modules/platforms/cpp/odbc/Makefile.am          |    12 +-
 modules/platforms/cpp/odbc/README.txt           |    23 +-
 modules/platforms/cpp/odbc/include/Makefile.am  |     3 +-
 .../platforms/cpp/odbc/include/ignite/odbc.h    |    28 +-
 .../ignite/odbc/app/application_data_buffer.h   |    58 +-
 .../odbc/include/ignite/odbc/app/parameter.h    |    29 +-
 .../cpp/odbc/include/ignite/odbc/common_types.h |    58 +-
 .../include/ignite/odbc/config/configuration.h  |    17 +-
 .../ignite/odbc/config/connection_info.h        |     2 -
 .../ignite/odbc/diagnostic/diagnosable.h        |     7 +
 .../odbc/diagnostic/diagnosable_adapter.h       |    10 +
 .../ignite/odbc/diagnostic/diagnostic_record.h  |    19 +
 .../odbc/diagnostic/diagnostic_record_storage.h |    16 +
 .../cpp/odbc/include/ignite/odbc/log.h          |   123 +
 .../cpp/odbc/include/ignite/odbc/message.h      |   138 +-
 .../odbc/include/ignite/odbc/meta/column_meta.h |     2 -
 .../odbc/include/ignite/odbc/query/data_query.h |    12 +-
 .../cpp/odbc/include/ignite/odbc/query/query.h  |    44 +-
 .../cpp/odbc/include/ignite/odbc/statement.h    |   308 +-
 .../cpp/odbc/include/ignite/odbc/type_traits.h  |     2 +-
 .../cpp/odbc/include/ignite/odbc/utility.h      |    35 +-
 .../cpp/odbc/install/ignite-odbc-amd64.wxs      |   114 +
 .../cpp/odbc/install/ignite-odbc-install.ini    |     1 +
 .../cpp/odbc/install/ignite-odbc-x86.wxs        |   114 +
 .../cpp/odbc/install/install_amd64.cmd          |    22 +-
 .../platforms/cpp/odbc/install/install_x86.cmd  |    11 +-
 .../odbc/os/linux/src/system/socket_client.cpp  |     9 +-
 .../odbc/os/win/src/system/socket_client.cpp    |     9 +-
 .../src/system/ui/dsn_configuration_window.cpp  |    18 +-
 .../cpp/odbc/os/win/src/system_dsn.cpp          |    17 +-
 .../platforms/cpp/odbc/project/vs/module.def    |     1 -
 .../platforms/cpp/odbc/project/vs/odbc.vcxproj  |     8 +-
 .../cpp/odbc/project/vs/odbc.vcxproj.filters    |     6 +
 .../odbc/src/app/application_data_buffer.cpp    |   448 +-
 .../platforms/cpp/odbc/src/app/parameter.cpp    |   133 +-
 modules/platforms/cpp/odbc/src/column.cpp       |    65 +-
 modules/platforms/cpp/odbc/src/common_types.cpp |     3 +
 .../cpp/odbc/src/config/configuration.cpp       |    29 +-
 .../cpp/odbc/src/config/connection_info.cpp     |   302 +-
 modules/platforms/cpp/odbc/src/connection.cpp   |    42 +-
 .../odbc/src/diagnostic/diagnosable_adapter.cpp |     3 +-
 .../odbc/src/diagnostic/diagnostic_record.cpp   |    72 +-
 .../diagnostic/diagnostic_record_storage.cpp    |    18 +
 modules/platforms/cpp/odbc/src/entry_points.cpp |   151 +-
 modules/platforms/cpp/odbc/src/log.cpp          |    83 +
 .../platforms/cpp/odbc/src/meta/column_meta.cpp |     4 -
 modules/platforms/cpp/odbc/src/odbc.cpp         |   696 +-
 .../odbc/src/query/column_metadata_query.cpp    |    15 +-
 .../platforms/cpp/odbc/src/query/data_query.cpp |    29 +-
 .../cpp/odbc/src/query/foreign_keys_query.cpp   |     2 +-
 .../cpp/odbc/src/query/primary_keys_query.cpp   |     2 +-
 .../odbc/src/query/special_columns_query.cpp    |     2 +-
 .../cpp/odbc/src/query/table_metadata_query.cpp |    14 +-
 .../cpp/odbc/src/query/type_info_query.cpp      |     2 +-
 modules/platforms/cpp/odbc/src/statement.cpp    |   698 +-
 modules/platforms/cpp/odbc/src/type_traits.cpp  |     3 +
 modules/platforms/cpp/odbc/src/utility.cpp      |    53 +-
 modules/platforms/cpp/project/vs/ignite.slnrel  |     3 +
 .../platforms/cpp/project/vs/ignite_x86.slnrel  |     3 +
 .../Apache.Ignite.AspNet.Tests.csproj           |    82 +
 .../Apache.Ignite.AspNet.Tests.snk              |   Bin 0 -> 596 bytes
 .../Apache.Ignite.AspNet.Tests/App.config       |    73 +
 .../ExpiryCacheHolderTest.cs                    |   503 +
 .../IgniteOutputCacheProviderTest.cs            |   172 +
 .../IgniteSessionStateItemCollectionTest.cs     |   267 +
 .../IgniteSessionStateStoreDataTest.cs          |   117 +
 .../IgniteSessionStateStoreProviderTest.cs      |   488 +
 .../Properties/AssemblyInfo.cs                  |    42 +
 .../Apache.Ignite.AspNet.Tests/packages.config  |    22 +
 .../Apache.Ignite.AspNet.csproj                 |    14 +-
 .../Apache.Ignite.AspNet.nuspec                 |     6 +-
 .../Apache.Ignite.AspNet.ruleset                |     3 +
 .../IgniteOutputCacheProvider.cs                |   120 +-
 .../IgniteSessionStateStoreProvider.cs          |   509 +
 .../Apache.Ignite.AspNet/Impl/ConfigUtil.cs     |   115 +
 .../Impl/ExpiryCacheHolder.cs                   |   113 +
 .../Impl/IgniteSessionStateItemCollection.cs    |   534 +
 .../Impl/IgniteSessionStateStoreData.cs         |   116 +
 .../Impl/SessionStateLockResult.cs              |    91 +
 .../Properties/AssemblyInfo.cs                  |    13 +-
 .../Apache.Ignite.Benchmarks.csproj             |     5 +
 .../Properties/AssemblyInfo.cs                  |    40 +-
 .../Apache.Ignite.Core.Tests.NuGet.csproj       |    21 +
 .../EntityFrameworkCacheTest.cs                 |    62 +
 .../Log4NetTest.cs                              |    87 +
 .../Properties/AssemblyInfo.cs                  |    40 +-
 .../packages.config                             |     4 +
 .../Apache.Ignite.Core.Tests.TestDll.csproj     |     5 +
 .../Properties/AssemblyInfo.cs                  |    40 +-
 .../Apache.Ignite.Core.Tests.csproj             |    35 +-
 .../AspNet/IgniteOutputCacheProviderTest.cs     |   172 -
 .../Binary/BinaryBuilderSelfTest.cs             |   159 +-
 .../BinaryBuilderSelfTestArrayIdentity.cs       |    34 +
 .../Binary/BinaryCompactFooterInteropTest.cs    |    31 +-
 .../Binary/BinaryEqualityComparerTest.cs        |   279 +
 .../Binary/BinaryReaderWriterTest.cs            |    29 +
 .../Binary/BinaryStructureTest.cs               |   122 +
 .../Binary/IO/BinaryStreamsTest.cs              |    19 +
 .../Affinity/AffinityFunctionSpringTest.cs      |    38 +-
 .../Cache/Affinity/AffinityFunctionTest.cs      |    33 +-
 .../Cache/CacheAbstractTest.cs                  |   683 +-
 .../Cache/CacheAbstractTransactionalTest.cs     |   904 ++
 .../Cache/CacheConfigurationTest.cs             |    30 +-
 .../Cache/CacheLocalAtomicTest.cs               |     5 -
 .../Cache/CacheLocalTest.cs                     |     6 +-
 .../Cache/CacheMetricsTest.cs                   |   252 +
 .../CachePartitionedAtomicNearEnabledTest.cs    |     5 -
 .../Cache/CachePartitionedAtomicTest.cs         |     5 -
 .../Cache/CachePartitionedNearEnabledTest.cs    |     7 +-
 .../Cache/CachePartitionedTest.cs               |     7 +-
 .../Cache/CacheReplicatedAtomicTest.cs          |     5 -
 .../Cache/CacheReplicatedTest.cs                |     7 +-
 .../Cache/CacheSwapSpaceTest.cs                 |   122 +
 .../Cache/CacheTestAsyncWrapper.cs              |    13 +
 .../Cache/Query/CacheDmlQueriesTest.cs          |   296 +
 .../Cache/Query/CacheLinqTest.cs                |   168 +-
 .../Query/CacheQueriesCodeConfigurationTest.cs  |    17 +-
 .../Cache/Query/CacheQueriesTest.cs             |    58 +-
 .../Cache/Store/CacheParallelLoadStoreTest.cs   |     9 +-
 .../Cache/Store/CacheStoreSessionTest.cs        |    22 +-
 .../Cache/Store/CacheStoreTest.cs               |   363 +-
 .../Cache/Store/CacheTestStore.cs               |    14 +
 .../Cache/Store/NamedNodeCacheStoreTest.cs      |    34 +
 .../Compute/ComputeApiTest.cs                   |    26 +
 .../Dataload/DataStreamerTestTopologyChange.cs  |    27 +-
 .../Examples/Example.cs                         |    11 +-
 .../Examples/ExamplesTest.cs                    |   126 +-
 .../Apache.Ignite.Core.Tests/ExceptionsTest.cs  |    41 +
 .../Apache.Ignite.Core.Tests/ExecutableTest.cs  |    64 +-
 .../IgniteConfigurationSectionTest.cs           |    20 +
 .../IgniteConfigurationSerializerTest.cs        |    94 +-
 .../IgniteConfigurationTest.cs                  |    76 +-
 .../Log/ConcurrentMemoryTarget.cs               |    73 +
 .../Log/Log4NetLoggerTest.cs                    |   188 +
 .../Log/NLogLoggerTest.cs                       |     5 +-
 .../Apache.Ignite.Core.Tests/MessagingTest.cs   |     6 +-
 .../Process/IgniteProcess.cs                    |    21 +-
 .../ProjectFilesTest.cs                         |    98 +-
 .../Properties/AssemblyInfo.cs                  |    40 +-
 .../Apache.Ignite.Core.Tests/ReconnectTest.cs   |   105 +-
 .../Services/ServicesTest.cs                    |    48 +-
 .../Apache.Ignite.Core.Tests/TestRunner.cs      |    37 +-
 .../Apache.Ignite.Core.Tests/TestUtils.cs       |     9 +-
 .../dotnet/Apache.Ignite.Core.Tests/app.config  |     1 +
 .../Apache.Ignite.Core.Tests/custom_app.config  |     1 +
 .../Apache.Ignite.Core.Tests/packages.config    |    22 +-
 .../Apache.Ignite.Core.Schema.nuspec            |     2 +-
 .../Apache.Ignite.Core.csproj                   |    37 +-
 .../Apache.Ignite.Core.nuspec                   |     2 +-
 .../Binary/BinaryArrayEqualityComparer.cs       |   149 +
 .../Binary/BinaryConfiguration.cs               |    29 +-
 .../Binary/BinaryTypeConfiguration.cs           |    14 +
 .../dotnet/Apache.Ignite.Core/Binary/IBinary.cs |     3 +-
 .../Cache/Configuration/CacheConfiguration.cs   |    22 +
 .../Cache/Configuration/QueryEntity.cs          |    33 +-
 .../Cache/Configuration/QueryField.cs           |     6 +
 .../dotnet/Apache.Ignite.Core/Cache/ICache.cs   |    23 +-
 .../Apache.Ignite.Core/Cache/ICacheLock.cs      |     2 +-
 .../Apache.Ignite.Core/Cache/ICacheMetrics.cs   |   244 +-
 .../Apache.Ignite.Core/Cache/Query/QueryBase.cs |    15 +-
 .../Apache.Ignite.Core/Cluster/IClusterGroup.cs |    14 +
 .../Compute/ComputeTaskSplitAdapter.cs          |     2 +-
 .../Apache.Ignite.Core/Compute/ICompute.cs      |     6 +-
 .../Apache.Ignite.Core/IgniteConfiguration.cs   |   124 +-
 .../IgniteConfigurationSection.xsd              |    82 +-
 .../dotnet/Apache.Ignite.Core/Ignition.cs       |    12 +
 .../Apache.Ignite.Core/Impl/Binary/Binary.cs    |    30 +-
 .../Binary/BinaryEqualityComparerSerializer.cs  |    99 +
 .../Impl/Binary/BinaryFieldEqualityComparer.cs  |   138 +
 .../Impl/Binary/BinaryFullTypeDescriptor.cs     |    21 +-
 .../Impl/Binary/BinaryObject.cs                 |    31 +-
 .../Impl/Binary/BinaryObjectBuilder.cs          |    62 +-
 .../Impl/Binary/BinaryObjectHeader.cs           |    23 +-
 .../Impl/Binary/BinaryObjectSchemaHolder.cs     |    22 +
 .../Impl/Binary/BinaryObjectSchemaSerializer.cs |     2 +-
 .../Impl/Binary/BinaryProcessor.cs              |   156 +
 .../Impl/Binary/BinaryReader.cs                 |   152 +-
 .../Binary/BinarySurrogateTypeDescriptor.cs     |     6 +
 .../Impl/Binary/BinarySystemHandlers.cs         |     6 +-
 .../Impl/Binary/BinaryUtils.cs                  |    28 +
 .../Impl/Binary/BinaryWriter.cs                 |    17 +-
 .../Impl/Binary/DateTimeHolder.cs               |    35 +-
 .../Impl/Binary/IBinaryEqualityComparer.cs      |    53 +
 .../Impl/Binary/IBinaryTypeDescriptor.cs        |     5 +
 .../Impl/Binary/Io/BinaryHeapStream.cs          |     9 +
 .../Impl/Binary/Io/BinaryStreamBase.cs          |    17 +-
 .../Impl/Binary/Io/IBinaryStream.cs             |    11 +-
 .../Impl/Binary/Io/IBinaryStreamProcessor.cs    |    36 +
 .../Impl/Binary/Marshaller.cs                   |    33 +-
 .../Impl/Binary/SerializableObjectHolder.cs     |    16 +
 .../Impl/Cache/CacheAffinityImpl.cs             |     5 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheImpl.cs  |   677 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheLock.cs  |    24 +-
 .../Impl/Cache/CacheMetricsImpl.cs              |   617 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheOp.cs    |    47 +-
 .../Impl/Cache/Expiry/ExpiryPolicyFactory.cs    |    46 +
 .../Impl/Cache/Expiry/ExpiryPolicySerializer.cs |   134 +
 .../Impl/Cache/ICacheInternal.cs                |    14 +
 .../Impl/Cache/ICacheLockInternal.cs            |    47 +
 .../Impl/Cache/Query/AbstractQueryCursor.cs     |    10 +-
 .../Continuous/ContinuousQueryHandleImpl.cs     |   117 +-
 .../Impl/Cache/Store/CacheStore.cs              |   108 +-
 .../Impl/Cluster/ClusterGroupImpl.cs            |   150 +-
 .../Impl/Cluster/IClusterGroupEx.cs             |    35 -
 .../Apache.Ignite.Core/Impl/Common/Fnv1Hash.cs  |     2 +-
 .../Apache.Ignite.Core/Impl/Common/Future.cs    |    39 +-
 .../Common/IgniteConfigurationXmlSerializer.cs  |    26 +-
 .../Impl/Common/Listenable.cs                   |    49 +
 .../Impl/Compute/ComputeFunc.cs                 |     5 +-
 .../Impl/Compute/ComputeImpl.cs                 |    50 +-
 .../Impl/Compute/ComputeJob.cs                  |    10 +-
 .../Impl/Compute/ComputeOutFunc.cs              |     5 +-
 .../Impl/Compute/ComputeTaskHolder.cs           |    14 +-
 .../Impl/DataStructures/AtomicLong.cs           |    34 +-
 .../Impl/DataStructures/AtomicReference.cs      |     8 +-
 .../Impl/DataStructures/AtomicSequence.cs       |    26 +-
 .../Impl/Datastream/DataStreamerImpl.cs         |    49 +-
 .../Apache.Ignite.Core/Impl/Events/Events.cs    |   180 +-
 .../Apache.Ignite.Core/Impl/ExceptionUtils.cs   |     7 +-
 .../Impl/Handle/HandleRegistry.cs               |     8 +-
 .../dotnet/Apache.Ignite.Core/Impl/Ignite.cs    |    41 +-
 .../Apache.Ignite.Core/Impl/IgniteProxy.cs      |    15 +-
 .../Apache.Ignite.Core/Impl/IgniteUtils.cs      |     2 +-
 .../Memory/PlatformBigEndianMemoryStream.cs     |    34 +-
 .../Impl/Memory/PlatformMemoryStream.cs         |    16 +
 .../Impl/Messaging/Messaging.cs                 |   113 +-
 .../Apache.Ignite.Core/Impl/PlatformTarget.cs   |   268 +-
 .../Impl/Services/Services.cs                   |   148 +-
 .../Impl/SwapSpace/SwapSpaceSerializer.cs       |    99 +
 .../Transactions/CacheTransactionManager.cs     |   161 +
 .../Impl/Transactions/Transaction.cs            |     8 +
 .../Impl/Transactions/TransactionImpl.cs        |    13 +
 .../Impl/Transactions/TransactionsImpl.cs       |    92 +-
 .../Impl/Unmanaged/IgniteJniNativeMethods.cs    |   288 +-
 .../Impl/Unmanaged/UnmanagedCallbackHandlers.cs |    79 +-
 .../Impl/Unmanaged/UnmanagedCallbackOp.cs       |    86 +
 .../Impl/Unmanaged/UnmanagedCallbacks.cs        |  1260 +-
 .../Impl/Unmanaged/UnmanagedTarget.cs           |     2 +-
 .../Impl/Unmanaged/UnmanagedUtils.cs            |   573 +-
 .../dotnet/Apache.Ignite.Core/NuGet/Install.ps1 |    14 +
 .../NuGet/LINQPad/PutGetExample.linq            |     2 +-
 .../NuGet/LINQPad/QueryExample.linq             |     6 +-
 .../Apache.Ignite.Core/NuGet/Uninstall.ps1      |    14 +
 .../Properties/AssemblyInfo.cs                  |    43 +-
 .../SwapSpace/File/FileSwapSpaceSpi.cs          |   105 +
 .../SwapSpace/ISwapSpaceSpi.cs                  |    35 +
 .../Transactions/ITransactions.cs               |    21 +-
 .../TransactionDeadlockException.cs             |    71 +
 .../Apache.Ignite.EntityFramework.Tests.csproj  |   101 +
 .../Apache.Ignite.EntityFramework.Tests.snk     |   Bin 0 -> 596 bytes
 .../App.config                                  |    71 +
 .../ArrayDbDataReaderTests.cs                   |   192 +
 .../DbCachingPolicyTest.cs                      |    43 +
 .../EntityFrameworkCacheInitializationTest.cs   |   137 +
 .../EntityFrameworkCacheTest.cs                 |  1003 ++
 .../Properties/AssemblyInfo.cs                  |    39 +
 .../packages.config                             |    23 +
 .../Apache.Ignite.EntityFramework.csproj        |   100 +
 .../Apache.Ignite.EntityFramework.nuspec        |    57 +
 .../Apache.Ignite.EntityFramework.snk           |   Bin 0 -> 596 bytes
 .../DbCachingMode.cs                            |    48 +
 .../DbCachingPolicy.cs                          |    72 +
 .../DbQueryInfo.cs                              |    78 +
 .../IDbCachingPolicy.cs                         |    58 +
 .../IgniteDbConfiguration.cs                    |   340 +
 .../Impl/ArrayDbDataReader.cs                   |   310 +
 .../Impl/DataReaderField.cs                     |    74 +
 .../Impl/DataReaderResult.cs                    |    95 +
 .../Impl/DbCache.cs                             |   295 +
 .../Impl/DbCacheKey.cs                          |    92 +
 .../Impl/DbCommandDefinitionProxy.cs            |    51 +
 .../Impl/DbCommandInfo.cs                       |   186 +
 .../Impl/DbCommandProxy.cs                      |   264 +
 .../Impl/DbProviderServicesProxy.cs             |   169 +
 .../Impl/DbTransactionInterceptor.cs            |   134 +
 .../Properties/AssemblyInfo.cs                  |    41 +
 .../packages.config                             |    20 +
 .../Apache.Ignite.Linq.csproj                   |     7 +-
 .../Apache.Ignite.Linq.nuspec                   |     2 +-
 .../Apache.Ignite.Linq/ICacheQueryable.cs       |    32 +-
 .../Impl/CacheQueryExpressionVisitor.cs         |   139 +-
 .../Impl/CacheQueryModelVisitor.cs              |     3 +
 .../Apache.Ignite.Linq/Impl/ExpressionWalker.cs |     8 +
 .../Apache.Ignite.Linq/Impl/MethodVisitor.cs    |    34 +-
 .../NuGet/LINQPad/QueryExample.linq             |     4 +-
 .../Properties/AssemblyInfo.cs                  |    42 +-
 .../Apache.Ignite.Log4Net.csproj                |    81 +
 .../Apache.Ignite.Log4Net.nuspec                |    50 +
 .../Apache.Ignite.Log4Net.snk                   |   Bin 0 -> 596 bytes
 .../IgniteLog4NetLogger.cs                      |   123 +
 .../Properties/AssemblyInfo.cs                  |    40 +
 .../Apache.Ignite.Log4Net/packages.config       |    20 +
 .../Apache.Ignite.NLog.csproj                   |     9 +-
 .../Apache.Ignite.NLog.nuspec                   |     2 +-
 .../Properties/AssemblyInfo.cs                  |     8 +-
 .../dotnet/Apache.Ignite.NLog/packages.config   |    18 +
 modules/platforms/dotnet/Apache.Ignite.sln      |    66 +
 .../dotnet/Apache.Ignite.sln.DotSettings        |     3 +-
 .../Apache.Ignite.sln.TeamCity.DotSettings      |     1 +
 .../dotnet/Apache.Ignite/Apache.Ignite.csproj   |     5 +
 .../Apache.Ignite/Config/ArgsConfigurator.cs    |     7 +-
 .../dotnet/Apache.Ignite/Config/Configurator.cs |    10 +
 .../Apache.Ignite/Properties/AssemblyInfo.cs    |    40 +-
 modules/platforms/dotnet/DEVNOTES.txt           |    12 +-
 modules/platforms/dotnet/README.md              |   154 +
 modules/platforms/dotnet/README.txt             |    13 +-
 modules/platforms/dotnet/build.bat              |    19 +
 modules/platforms/dotnet/build.ps1              |   211 +
 .../Apache.Ignite.Examples.csproj               |    14 +
 .../examples/Apache.Ignite.Examples/App.config  |     3 +
 .../DataStructures/AtomicLongExample.cs         |    65 +
 .../DataStructures/AtomicReferenceExample.cs    |    65 +
 .../DataStructures/AtomicSequenceExample.cs     |    70 +
 .../Datagrid/EntryProcessorExample.cs           |    90 +
 .../Datagrid/LinqExample.cs                     |     6 +-
 .../Datagrid/MultiTieredCacheExample.cs         |   138 +
 .../Datagrid/NearCacheExample.cs                |    87 +
 .../Datagrid/OptimisticTransactionExample.cs    |   110 +
 .../Datagrid/QueryDmlExample.cs                 |   162 +
 .../Datagrid/QueryExample.cs                    |    24 +-
 .../TransactionDeadlockDetectionExample.cs      |   121 +
 .../Datagrid/TransactionExample.cs              |    75 +-
 .../Misc/ClientReconnectExample.cs              |   159 +
 .../Properties/AssemblyInfo.cs                  |    44 +-
 .../Apache.Ignite.ExamplesDll.csproj            |    10 +
 .../Binary/Employee.cs                          |     5 +-
 .../Compute/AverageSalaryJob.cs                 |     5 +-
 .../DataStructures/AtomicLongIncrementAction.cs |    49 +
 .../AtomicReferenceModifyAction.cs              |    61 +
 .../AtomicSequenceIncrementAction.cs            |    49 +
 .../Datagrid/CacheIncrementEntryProcessor.cs    |    45 +
 .../Datagrid/CachePutEntryProcessor.cs          |    45 +
 .../Datagrid/ScanQueryFilter.cs                 |    50 +
 .../Events/LocalListener.cs                     |     2 +-
 .../Properties/AssemblyInfo.cs                  |    42 +-
 .../Services/MapService.cs                      |     2 -
 modules/rest-http/pom.xml                       |     2 +-
 modules/scalar-2.10/pom.xml                     |     4 +-
 modules/scalar/pom.xml                          |     4 +-
 modules/schedule/pom.xml                        |     2 +-
 modules/schema-import-db/pom.xml                |     2 +-
 .../apache/ignite/schema/parser/DbColumn.java   |    16 +-
 .../parser/dialect/DatabaseMetadataDialect.java |     9 +
 .../parser/dialect/JdbcMetadataDialect.java     |    21 +-
 .../parser/dialect/MySQLMetadataDialect.java    |    24 +-
 .../parser/dialect/OracleMetadataDialect.java   |     5 +-
 modules/schema-import/pom.xml                   |     2 +-
 .../ignite/schema/model/PojoDescriptor.java     |    24 +-
 modules/slf4j/pom.xml                           |     2 +-
 .../apache/ignite/logger/slf4j/Slf4jLogger.java |    11 +-
 modules/spark-2.10/pom.xml                      |     2 +-
 modules/spark/pom.xml                           |     2 +-
 .../spark/JavaStandaloneIgniteRDDSelfTest.java  |     3 +-
 modules/spring/pom.xml                          |     2 +-
 .../org/apache/ignite/IgniteSpringBean.java     |    23 +-
 .../util/spring/IgniteSpringHelperImpl.java     |     8 +-
 .../src/test/config/incorrect-store-cache.xml   |     2 +
 .../src/test/config/jdbc-pojo-store-builtin.xml |    23 +-
 .../src/test/config/jdbc-pojo-store-obj.xml     |    23 +-
 modules/spring/src/test/config/node.xml         |     2 +
 modules/spring/src/test/config/node1.xml        |     2 +
 .../test/config/pojo-incorrect-store-cache.xml  |     2 +
 modules/spring/src/test/config/store-cache.xml  |     2 +
 modules/spring/src/test/config/store-cache1.xml |     2 +
 .../jdbc/CacheJdbcBlobStoreFactorySelfTest.java |    12 +-
 .../jdbc/CacheJdbcPojoStoreFactorySelfTest.java |    14 +-
 .../store/jdbc/CachePojoStoreXmlSelfTest.java   |    13 +-
 .../CachePojoStoreXmlWithSqlEscapeSelfTest.java |    28 +
 .../ignite/internal/GridFactorySelfTest.java    |     2 +-
 .../internal/IgniteDynamicCacheConfigTest.java  |     4 +-
 .../p2p/GridP2PUserVersionChangeSelfTest.java   |     7 +-
 .../IgniteStartFromStreamConfigurationTest.java |    18 +-
 .../testsuites/IgniteResourceSelfTestSuite.java |    11 +-
 .../testsuites/IgniteSpringTestSuite.java       |    20 +-
 .../GridSpringTransactionManagerSelfTest.java   |     2 +-
 modules/ssh/pom.xml                             |     2 +-
 modules/storm/pom.xml                           |     2 +-
 modules/tools/pom.xml                           |     2 +-
 .../ignite/tools/classgen/ClassesGenerator.java |    10 +-
 modules/twitter/pom.xml                         |     2 +-
 .../twitter/IgniteTwitterStreamerTest.java      |     4 +-
 modules/urideploy/pom.xml                       |     2 +-
 .../spi/deployment/uri/UriDeploymentSpi.java    |     4 +-
 .../scanners/http/UriDeploymentHttpScanner.java |     8 +-
 .../GridUriDeploymentFileProcessorSelfTest.java |     3 +-
 modules/visor-console-2.10/pom.xml              |     2 +-
 modules/visor-console/pom.xml                   |     2 +-
 .../commands/cache/VisorCacheCommand.scala      |     7 +-
 .../scala/org/apache/ignite/visor/visor.scala   |   117 +-
 .../commands/mem/VisorMemoryCommandSpec.scala   |    33 +
 modules/visor-plugins/pom.xml                   |     2 +-
 modules/web-console/DEVNOTES.txt                |    25 +-
 modules/web-console/backend/.babelrc            |     9 -
 modules/web-console/backend/.eslintrc           |     4 +-
 modules/web-console/backend/.gitignore          |     2 -
 modules/web-console/backend/app/agent.js        |   183 +-
 modules/web-console/backend/app/app.js          |     2 +
 modules/web-console/backend/app/browser.js      |   107 +-
 modules/web-console/backend/app/index.js        |   116 -
 modules/web-console/backend/app/mongo.js        |   312 +-
 modules/web-console/backend/app/mongoose.js     |    29 +
 modules/web-console/backend/app/routes.js       |     5 +-
 modules/web-console/backend/app/settings.js     |    10 +-
 .../backend/config/settings.json.sample         |     7 -
 .../backend/errors/AuthFailedException.js       |     2 +-
 .../backend/errors/DuplicateKeyException.js     |     2 +-
 .../backend/errors/IllegalAccessError.js        |     4 +-
 .../backend/errors/IllegalArgumentException.js  |     2 +-
 .../backend/errors/MissingResourceException.js  |     2 +-
 modules/web-console/backend/errors/index.js     |    14 +-
 modules/web-console/backend/index.js            |    91 +-
 modules/web-console/backend/injector.js         |     2 +-
 modules/web-console/backend/middlewares/host.js |     7 +-
 modules/web-console/backend/package.json        |    23 +-
 .../web-console/backend/routes/activities.js    |    52 +
 modules/web-console/backend/routes/admin.js     |     2 +-
 modules/web-console/backend/routes/agent.js     |    12 +-
 modules/web-console/backend/routes/demo.js      |    25 +-
 .../backend/routes/demo/domains.json            |    15 +-
 modules/web-console/backend/routes/profile.js   |     3 +-
 modules/web-console/backend/routes/public.js    |    70 +-
 .../web-console/backend/services/activities.js  |   136 +
 modules/web-console/backend/services/agents.js  |     3 +-
 modules/web-console/backend/services/auth.js    |    83 +-
 modules/web-console/backend/services/caches.js  |    16 +-
 .../web-console/backend/services/clusters.js    |    19 +-
 modules/web-console/backend/services/domains.js |    14 +-
 modules/web-console/backend/services/igfss.js   |    12 +-
 modules/web-console/backend/services/mails.js   |    16 +-
 .../web-console/backend/services/notebooks.js   |    14 +-
 .../web-console/backend/services/sessions.js    |     8 +-
 modules/web-console/backend/services/spaces.js  |    15 +
 modules/web-console/backend/services/users.js   |    13 +-
 modules/web-console/backend/test/app/db.js      |    66 +
 .../web-console/backend/test/app/httpAgent.js   |    50 +
 .../web-console/backend/test/app/mockgoose.js   |    30 +
 .../web-console/backend/test/data/accounts.json |     5 +-
 .../web-console/backend/test/data/caches.json   |    30 +-
 .../web-console/backend/test/data/clusters.json |    10 +-
 .../web-console/backend/test/data/domains.json  |    10 +
 .../web-console/backend/test/data/igfss.json    |     4 +-
 .../web-console/backend/test/data/spaces.json   |    14 +
 modules/web-console/backend/test/index.js       |    35 +
 modules/web-console/backend/test/injector.js    |    43 +-
 .../web-console/backend/test/routes/clusters.js |    83 +
 .../web-console/backend/test/routes/public.js   |    68 +
 .../backend/test/unit/AuthService.test.js       |   105 +
 .../backend/test/unit/CacheService.test.js      |   143 +-
 .../backend/test/unit/ClusterService.test.js    |   141 +-
 .../backend/test/unit/DomainService.test.js     |   153 +-
 .../backend/test/unit/IgfsService.test.js       |   131 +-
 .../docker/compose/backend/.dockerignore        |     2 +
 .../docker/compose/backend/Dockerfile           |     6 +-
 .../web-console/docker/compose/backend/build.sh |     4 +-
 .../docker/compose/docker-compose.yml           |     5 -
 .../docker/compose/frontend/DockerfileBuild     |     4 +-
 .../docker/compose/frontend/build.sh            |     6 +-
 .../compose/frontend/nginx/web-console.conf     |     9 +
 .../web-console/docker/standalone/.dockerignore |     5 +
 .../web-console/docker/standalone/Dockerfile    |    10 +-
 modules/web-console/docker/standalone/build.sh  |     4 +-
 .../docker/standalone/docker-compose.yml        |     7 +-
 .../docker/standalone/nginx/web-console.conf    |     9 +
 modules/web-console/frontend/.eslintrc          |     6 +-
 modules/web-console/frontend/app/app.config.js  |    21 +-
 modules/web-console/frontend/app/app.js         |    94 +-
 .../activities-user-dialog.controller.js        |    60 +
 .../activities-user-dialog.jade                 |    36 +
 .../components/activities-user-dialog/index.js  |    36 +
 .../form-field-datepicker.jade                  |    55 +
 .../form-field-datepicker.scss                  |    20 +
 .../list-of-registered-users/index.js           |    28 +
 .../list-of-registered-users.categories.js      |    30 +
 .../list-of-registered-users.column-defs.js     |    80 +
 .../list-of-registered-users.controller.js      |   207 +
 .../list-of-registered-users.jade               |    54 +
 .../ui-grid-header/ui-grid-header.jade          |    27 +
 .../ui-grid-header/ui-grid-header.scss          |    84 +
 .../ui-grid-settings/ui-grid-settings.jade      |    33 +
 .../ui-grid-settings/ui-grid-settings.scss      |    70 +
 .../controllers/reset-password.controller.js    |    14 +-
 .../app/core/activities/Activities.data.js      |    39 +
 .../frontend/app/core/admin/Admin.data.js       |    77 +
 modules/web-console/frontend/app/core/index.js  |    25 +
 .../web-console/frontend/app/data/dialects.json |     9 +
 .../frontend/app/data/event-groups.json         |   169 +
 .../frontend/app/data/event-types.json          |   169 -
 modules/web-console/frontend/app/data/i18n.js   |    38 +
 .../frontend/app/data/java-classes.json         |     4 +-
 .../frontend/app/data/jdbc-types.json           |    44 +
 .../frontend/app/data/pom-dependencies.json     |    14 +-
 .../frontend/app/data/sql-keywords.json         |    41 +
 .../frontend/app/decorator/tooltip.js           |    41 +-
 .../app/directives/on-focus-out.directive.js    |    37 +
 .../directives/restore-input-focus.directive.js |    24 +
 .../directives/retain-selection.directive.js    |    67 +
 .../ui-ace-docker/ui-ace-docker.controller.js   |     2 +-
 .../directives/ui-ace-docker/ui-ace-docker.jade |     2 +-
 .../ui-ace-java/ui-ace-java.controller.js       |    78 +-
 .../ui-ace-java/ui-ace-java.directive.js        |   100 +-
 .../ui-ace-pojos/ui-ace-pojos.controller.js     |    14 +-
 .../directives/ui-ace-pojos/ui-ace-pojos.jade   |     2 +-
 .../ui-ace-pom/ui-ace-pom.controller.js         |     4 +-
 .../ui-ace-sharp/ui-ace-sharp.controller.js     |    32 +
 .../ui-ace-sharp/ui-ace-sharp.directive.js      |   133 +
 .../directives/ui-ace-sharp/ui-ace-sharp.jade   |    22 +
 .../ui-ace-spring/ui-ace-spring.controller.js   |    88 +
 .../ui-ace-spring/ui-ace-spring.directive.js    |    66 +
 .../directives/ui-ace-spring/ui-ace-spring.jade |    17 +
 .../ui-ace-xml/ui-ace-xml.controller.js         |    27 -
 .../ui-ace-xml/ui-ace-xml.directive.js          |   147 -
 .../app/directives/ui-ace-xml/ui-ace-xml.jade   |    17 -
 .../frontend/app/filters/default-name.filter.js |    21 +
 .../frontend/app/filters/duration.filter.js     |     3 +
 .../frontend/app/filters/hasPojo.filter.js      |     5 +-
 .../app/filters/uiGridSubcategories.filter.js   |    24 +
 .../frontend/app/helpers/jade/form.jade         |     1 +
 .../helpers/jade/form/form-field-checkbox.jade  |     2 +-
 .../helpers/jade/form/form-field-datalist.jade  |     8 +-
 .../helpers/jade/form/form-field-dropdown.jade  |    11 +-
 .../helpers/jade/form/form-field-feedback.jade  |     5 +-
 .../app/helpers/jade/form/form-field-label.jade |     4 +-
 .../helpers/jade/form/form-field-number.jade    |     9 +-
 .../helpers/jade/form/form-field-password.jade  |    47 +
 .../app/helpers/jade/form/form-field-text.jade  |    27 +-
 .../frontend/app/helpers/jade/mixins.jade       |   380 +-
 .../frontend/app/modules/Demo/Demo.module.js    |   166 -
 .../frontend/app/modules/agent/agent.module.js  |    10 +-
 .../app/modules/branding/branding.provider.js   |     2 +-
 .../configuration/EventGroups.provider.js       |    30 -
 .../modules/configuration/Version.service.js    |    95 +
 .../configuration/configuration.module.js       |    47 +-
 .../generator/AbstractTransformer.js            |   363 +
 .../modules/configuration/generator/Beans.js    |   394 +
 .../generator/ConfigurationGenerator.js         |  1882 +++
 .../configuration/generator/Custom.service.js   |    23 +
 .../configuration/generator/Docker.service.js   |     4 +-
 .../configuration/generator/Java.service.js     |    21 -
 .../generator/JavaTransformer.service.js        |  1750 +++
 .../configuration/generator/Maven.service.js    |   234 +
 .../generator/PlatformGenerator.js              |   522 +
 .../configuration/generator/Pom.service.js      |   226 -
 .../generator/Properties.service.js             |    93 +
 .../configuration/generator/Readme.service.js   |    79 +
 .../generator/SharpTransformer.service.js       |   256 +
 .../generator/SpringTransformer.service.js      |   330 +
 .../configuration/generator/StringBuilder.js    |    76 +
 .../configuration/generator/Xml.service.js      |    21 -
 .../defaults/Cache.platform.service.js          |    56 +
 .../generator/defaults/Cache.service.js         |   131 +
 .../defaults/Cluster.platform.service.js        |    43 +
 .../generator/defaults/Cluster.service.js       |   289 +
 .../generator/defaults/Event-groups.service.js  |    27 +
 .../generator/defaults/IGFS.service.js          |    64 +
 .../frontend/app/modules/demo/Demo.module.js    |   172 +
 .../app/modules/form/field/input/select.scss    |    21 -
 .../app/modules/form/field/input/text.scss      |     1 -
 .../app/modules/form/field/tooltip.directive.js |     2 +-
 .../frontend/app/modules/form/form.module.js    |    10 +-
 .../app/modules/form/group/tooltip.directive.js |     2 +-
 .../app/modules/form/panel/field.directive.js   |     4 +-
 .../app/modules/form/panel/revert.directive.js  |     4 +-
 .../modules/form/services/FormGUID.service.js   |    22 +
 .../validator/java-built-in-class.directive.js  |     6 +-
 .../form/validator/java-identifier.directive.js |     8 +-
 .../form/validator/java-keywords.directive.js   |    17 +-
 .../validator/java-package-name.directive.js    |     4 +-
 .../java-package-specified.directive.js         |    11 +-
 .../modules/form/validator/uuid.directive.js    |    12 +-
 .../frontend/app/modules/nodes/Nodes.service.js |    69 +
 .../modules/nodes/nodes-dialog.controller.js    |    68 +
 .../app/modules/nodes/nodes-dialog.jade         |    35 +
 .../app/modules/nodes/nodes-dialog.scss         |    37 +
 .../frontend/app/modules/nodes/nodes.module.js  |    27 +
 .../frontend/app/modules/sql/Notebook.data.js   |    27 +-
 .../app/modules/sql/Notebook.service.js         |     2 +-
 .../app/modules/sql/scan-filter-input.jade      |    39 -
 .../modules/sql/scan-filter-input.service.js    |    51 -
 .../frontend/app/modules/sql/sql.controller.js  |   424 +-
 .../frontend/app/modules/sql/sql.module.js      |     4 +-
 .../frontend/app/modules/states/admin.state.js  |     2 +-
 .../app/modules/states/configuration.state.js   |     4 +-
 .../states/configuration/caches/affinity.jade   |    82 +
 .../configuration/caches/client-near-cache.jade |    50 +
 .../configuration/caches/concurrency.jade       |     2 +-
 .../states/configuration/caches/general.jade    |     5 +-
 .../states/configuration/caches/memory.jade     |    21 +-
 .../configuration/caches/near-cache-client.jade |    51 +
 .../configuration/caches/near-cache-server.jade |    52 +
 .../configuration/caches/node-filter.jade       |    53 +-
 .../states/configuration/caches/query.jade      |    29 +-
 .../states/configuration/caches/rebalance.jade  |     5 +-
 .../configuration/caches/server-near-cache.jade |    51 -
 .../states/configuration/caches/statistics.jade |     2 +-
 .../states/configuration/caches/store.jade      |   104 +-
 .../states/configuration/clusters/atomic.jade   |     5 +-
 .../configuration/clusters/attributes.jade      |     6 +-
 .../states/configuration/clusters/binary.jade   |    30 +-
 .../configuration/clusters/cache-key-cfg.jade   |    13 +-
 .../configuration/clusters/checkpoint.jade      |    86 +
 .../configuration/clusters/checkpoint/fs.jade   |    66 +
 .../configuration/clusters/checkpoint/jdbc.jade |    48 +
 .../configuration/clusters/checkpoint/s3.jade   |   178 +
 .../configuration/clusters/collision.jade       |     5 +-
 .../clusters/collision/custom.jade              |     4 +-
 .../clusters/collision/fifo-queue.jade          |     2 +-
 .../clusters/collision/job-stealing.jade        |     6 +-
 .../clusters/collision/priority-queue.jade      |     2 +-
 .../configuration/clusters/communication.jade   |     7 +-
 .../configuration/clusters/connector.jade       |     5 +-
 .../configuration/clusters/deployment.jade      |   134 +-
 .../configuration/clusters/discovery.jade       |     5 +-
 .../states/configuration/clusters/events.jade   |    39 +-
 .../states/configuration/clusters/failover.jade |    23 +-
 .../states/configuration/clusters/general.jade  |     5 +-
 .../clusters/general/discovery/cloud.jade       |     2 +-
 .../clusters/general/discovery/google.jade      |     2 +-
 .../clusters/general/discovery/jdbc.jade        |     3 +-
 .../clusters/general/discovery/multicast.jade   |     2 +-
 .../clusters/general/discovery/s3.jade          |     2 +-
 .../clusters/general/discovery/shared.jade      |     2 +-
 .../clusters/general/discovery/vm.jade          |     2 +-
 .../clusters/general/discovery/zookeeper.jade   |     6 +-
 .../bounded-exponential-backoff.jade            |     2 +-
 .../discovery/zookeeper/retrypolicy/custom.jade |     4 +-
 .../retrypolicy/exponential-backoff.jade        |     2 +-
 .../zookeeper/retrypolicy/forever.jade          |     2 +-
 .../zookeeper/retrypolicy/n-times.jade          |     2 +-
 .../zookeeper/retrypolicy/one-time.jade         |     2 +-
 .../zookeeper/retrypolicy/until-elapsed.jade    |     2 +-
 .../states/configuration/clusters/igfs.jade     |     5 +-
 .../configuration/clusters/load-balancing.jade  |   107 +
 .../states/configuration/clusters/logger.jade   |     2 +-
 .../configuration/clusters/logger/custom.jade   |     4 +-
 .../configuration/clusters/logger/log4j.jade    |     2 +-
 .../configuration/clusters/logger/log4j2.jade   |     2 +-
 .../configuration/clusters/marshaller.jade      |     5 +-
 .../states/configuration/clusters/metrics.jade  |     2 +-
 .../states/configuration/clusters/odbc.jade     |    48 +
 .../states/configuration/clusters/ssl.jade      |    11 +-
 .../states/configuration/clusters/swap.jade     |     5 +-
 .../states/configuration/clusters/thread.jade   |     2 +-
 .../states/configuration/clusters/time.jade     |     2 +-
 .../configuration/clusters/transactions.jade    |     8 +-
 .../states/configuration/domains/general.jade   |    18 +-
 .../states/configuration/domains/query.jade     |    66 +-
 .../states/configuration/domains/store.jade     |    27 +-
 .../modules/states/configuration/igfs/dual.jade |     2 +-
 .../states/configuration/igfs/fragmentizer.jade |     2 +-
 .../states/configuration/igfs/general.jade      |     5 +-
 .../modules/states/configuration/igfs/ipc.jade  |     4 +-
 .../modules/states/configuration/igfs/misc.jade |    10 +-
 .../states/configuration/igfs/secondary.jade    |     5 +-
 .../summary/summary-zipper.service.js           |    37 +
 .../configuration/summary/summary.controller.js |   133 +-
 .../configuration/summary/summary.worker.js     |   123 +
 .../app/modules/user/AclRoute.provider.js       |    31 +-
 .../frontend/app/modules/user/Auth.service.js   |    11 +-
 .../frontend/app/modules/user/permissions.js    |     2 +-
 .../frontend/app/modules/user/user.module.js    |     6 +-
 .../app/modules/version/Version.provider.js     |    32 -
 .../app/services/ErrorPopover.service.js        |     5 +-
 .../frontend/app/services/FormUtils.service.js  |     6 +-
 .../frontend/app/services/JavaTypes.service.js  |   222 +-
 .../app/services/LegacyTable.service.js         |    24 +-
 .../app/services/LegacyUtils.service.js         |   172 +-
 .../frontend/app/services/Messages.service.js   |    17 +-
 .../frontend/app/services/SqlTypes.service.js   |    65 +
 modules/web-console/frontend/app/vendor.js      |     4 +-
 .../frontend/controllers/admin-controller.js    |    92 -
 .../frontend/controllers/caches-controller.js   |   155 +-
 .../frontend/controllers/clusters-controller.js |   227 +-
 .../frontend/controllers/domains-controller.js  |   280 +-
 .../frontend/controllers/igfs-controller.js     |    26 +-
 .../frontend/controllers/profile-controller.js  |     8 +-
 .../frontend/generator/generator-common.js      |   612 -
 .../frontend/generator/generator-java.js        |  3534 -----
 .../frontend/generator/generator-optional.js    |    25 -
 .../frontend/generator/generator-properties.js  |   175 -
 .../frontend/generator/generator-readme.js      |    85 -
 .../frontend/generator/generator-xml.js         |  2093 ---
 .../frontend/gulpfile.babel.js/paths.js         |    31 +-
 .../frontend/gulpfile.babel.js/tasks/jade.js    |    21 +-
 .../frontend/gulpfile.babel.js/tasks/test.js    |    92 -
 .../frontend/gulpfile.babel.js/tasks/watch.js   |     6 +-
 .../gulpfile.babel.js/webpack/common.js         |    24 +-
 .../webpack/environments/development.js         |    26 +-
 .../webpack/environments/production.js          |     3 +-
 .../webpack/environments/test.js                |    52 +
 .../frontend/gulpfile.babel.js/webpack/index.js |     4 +-
 .../webpack/plugins/progress.js                 |    82 -
 modules/web-console/frontend/package.json       |   189 +-
 .../frontend/public/images/cache.png            |   Bin 23700 -> 24791 bytes
 .../frontend/public/images/domains.png          |   Bin 23828 -> 22131 bytes
 .../web-console/frontend/public/images/igfs.png |   Bin 14307 -> 14139 bytes
 .../frontend/public/images/query-chart.png      |   Bin 16637 -> 17142 bytes
 .../frontend/public/images/query-metadata.png   |   Bin 32298 -> 39361 bytes
 .../frontend/public/images/query-table.png      |   Bin 29189 -> 28065 bytes
 .../frontend/public/images/summary.png          |   Bin 31997 -> 33650 bytes
 .../stylesheets/_font-awesome-custom.scss       |    67 +
 .../frontend/public/stylesheets/form-field.scss |   145 +
 .../frontend/public/stylesheets/style.scss      |   235 +-
 .../frontend/public/stylesheets/variables.scss  |     1 +
 .../frontend/test/karma.conf.babel.js           |    91 +
 modules/web-console/frontend/test/karma.conf.js |    98 +-
 .../frontend/test/unit/JavaTransformer.test.js  |    57 +
 .../frontend/test/unit/JavaTypes.test.js        |   110 +-
 .../frontend/test/unit/SharpTransformer.test.js |    55 +
 .../test/unit/SpringTransformer.test.js         |    57 +
 .../frontend/test/unit/SqlTypes.test.js         |    51 +
 .../frontend/test/unit/Version.test.js          |    88 +
 .../test/unit/defaultName.filter.test.js        |    38 +
 .../frontend/views/configuration/caches.jade    |    22 +-
 .../frontend/views/configuration/clusters.jade  |    48 +-
 .../views/configuration/domains-import.jade     |   131 +-
 .../frontend/views/configuration/domains.jade   |     8 +-
 .../frontend/views/configuration/igfs.jade      |    14 +-
 .../summary-project-structure.jade              |     2 +-
 .../frontend/views/configuration/summary.jade   |    84 +-
 .../frontend/views/includes/header.jade         |    15 +-
 .../frontend/views/settings/admin.jade          |    61 +-
 .../frontend/views/settings/profile.jade        |     2 +-
 .../frontend/views/sql/cache-metadata.jade      |     2 +-
 .../frontend/views/sql/notebook-new.jade        |     4 +-
 modules/web-console/frontend/views/sql/sql.jade |   223 +-
 .../views/templates/agent-download.jade         |    10 +-
 .../frontend/views/templates/alert.jade         |     2 +-
 .../frontend/views/templates/batch-confirm.jade |     4 +-
 .../frontend/views/templates/clone.jade         |     6 +-
 .../frontend/views/templates/confirm.jade       |     4 +-
 .../frontend/views/templates/demo-info.jade     |     4 +-
 .../views/templates/getting-started.jade        |     4 +-
 .../frontend/views/templates/message.jade       |     4 +-
 .../frontend/views/templates/select.jade        |     4 +-
 modules/web-console/pom.xml                     |     2 +-
 modules/web-console/web-agent/README.txt        |     6 +-
 .../web-agent/bin/ignite-web-agent.bat          |    11 +-
 .../web-agent/bin/ignite-web-agent.sh           |     8 +-
 modules/web-console/web-agent/pom.xml           |     2 +-
 .../console/agent/AgentConfiguration.java       |     5 +-
 .../ignite/console/agent/AgentLauncher.java     |   261 +-
 .../apache/ignite/console/agent/AgentUtils.java |    80 +
 .../console/agent/handlers/AbstractHandler.java |   110 -
 .../agent/handlers/AbstractListener.java        |   104 +
 .../console/agent/handlers/DatabaseHandler.java |   298 -
 .../agent/handlers/DatabaseListener.java        |   316 +
 .../console/agent/handlers/RestHandler.java     |   276 -
 .../console/agent/handlers/RestListener.java    |   280 +
 .../ignite/console/demo/AgentClusterDemo.java   |   476 +-
 .../ignite/console/demo/AgentDemoUtils.java     |    79 +
 .../demo/service/DemoCachesLoadService.java     |   456 +
 .../service/DemoRandomCacheLoadService.java     |   120 +
 .../service/DemoServiceClusterSingleton.java    |    41 +
 .../demo/service/DemoServiceKeyAffinity.java    |    41 +
 .../service/DemoServiceMultipleInstances.java   |    41 +
 .../demo/service/DemoServiceNodeSingleton.java  |    41 +
 modules/web/ignite-appserver-test/pom.xml       |     2 +-
 modules/web/ignite-websphere-test/pom.xml       |     2 +-
 modules/web/pom.xml                             |     2 +-
 .../ignite/cache/websession/WebSessionV2.java   |    28 +-
 .../IgniteWebSessionSelfTestSuite.java          |    68 +-
 .../WebSessionReplicatedSelfTest.java           |    28 +
 .../WebSessionReplicatedV1SelfTest.java         |    28 +
 .../internal/websession/WebSessionSelfTest.java |     8 +-
 .../WebSessionTransactionalSelfTest.java        |    48 +
 .../WebSessionTransactionalV1SelfTest.java      |    28 +
 .../websession/WebSessionV1SelfTest.java        |    28 +
 modules/yardstick/DEVNOTES-standalone.txt       |    15 +
 modules/yardstick/DEVNOTES.txt                  |    20 +
 modules/yardstick/README.txt                    |   117 +-
 .../config/benchmark-bin-identity.properties    |    94 +
 .../config/benchmark-client-mode.properties     |     2 +
 .../config/benchmark-multicast.properties       |    15 +
 .../config/benchmark-sample.properties          |    62 +
 .../config/benchmark-sql-dml.properties         |    72 +
 .../config/benchmark-tx-win.properties          |     2 +
 .../yardstick/config/benchmark-tx.properties    |     2 +
 .../yardstick/config/benchmark-win.properties   |     2 +
 modules/yardstick/config/benchmark.properties   |     2 +
 modules/yardstick/config/ignite-base-config.xml |    73 +-
 .../config/ignite-bin-multicast-config.xml      |    86 +
 modules/yardstick/pom-standalone.xml            |   209 +
 modules/yardstick/pom.xml                       |    16 +-
 .../yardstick/IgniteAbstractBenchmark.java      |    30 +
 .../yardstick/IgniteBenchmarkArguments.java     |    11 +
 .../ignite/yardstick/IgniteBenchmarkUtils.java  |    48 +-
 .../org/apache/ignite/yardstick/IgniteNode.java |    74 +-
 .../apache/ignite/yardstick/PreloadLogger.java  |   155 +
 .../yardstick/cache/CacheEntryEventProbe.java   |     2 +-
 .../cache/IgniteAtomicSequenceBenchmark.java    |    47 +
 .../cache/IgniteBinaryIdentityBenchmark.java    |   108 +
 .../cache/IgniteBinaryIdentityGetBenchmark.java |    34 +
 .../cache/IgniteBinaryIdentityPutBenchmark.java |    35 +
 .../IgniteFieldsBinaryIdentityGetBenchmark.java |    30 +
 .../IgniteFieldsBinaryIdentityPutBenchmark.java |    30 +
 .../cache/IgniteGetAndPutBenchmark.java         |    41 +
 .../cache/IgniteGetAndPutTxBenchmark.java       |    70 +
 .../cache/IgniteInvokeTxBenchmark.java          |    40 +
 .../IgniteLegacyBinaryIdentityGetBenchmark.java |    30 +
 .../IgniteLegacyBinaryIdentityPutBenchmark.java |    30 +
 ...IgnitePutIfAbsentIndexedValue1Benchmark.java |    45 +
 .../cache/IgnitePutRemoveBenchmark.java         |    42 +
 .../cache/IgnitePutRemoveTxBenchmark.java       |    30 +
 .../cache/IgnitePutValue8Benchmark.java         |    42 +
 .../IgniteReplaceIndexedValue1Benchmark.java    |    79 +
 .../cache/dml/IgniteSqlDeleteBenchmark.java     |    83 +
 .../dml/IgniteSqlDeleteFilteredBenchmark.java   |    88 +
 .../IgniteSqlInsertIndexedValue1Benchmark.java  |    48 +
 .../IgniteSqlInsertIndexedValue2Benchmark.java  |    48 +
 .../IgniteSqlInsertIndexedValue8Benchmark.java  |    48 +
 .../cache/dml/IgniteSqlMergeAllBenchmark.java   |    82 +
 .../cache/dml/IgniteSqlMergeBenchmark.java      |    42 +
 .../IgniteSqlMergeIndexedValue1Benchmark.java   |    43 +
 .../IgniteSqlMergeIndexedValue2Benchmark.java   |    43 +
 .../IgniteSqlMergeIndexedValue8Benchmark.java   |    43 +
 .../cache/dml/IgniteSqlMergeQueryBenchmark.java |   116 +
 .../cache/dml/IgniteSqlUpdateBenchmark.java     |    82 +
 .../dml/IgniteSqlUpdateFilteredBenchmark.java   |    88 +
 .../IgniteCacheRandomOperationBenchmark.java    |    25 +-
 .../yardstick/cache/model/SampleValue.java      |     2 +
 .../io/IgniteIoTestAbstractBenchmark.java       |    61 +
 .../io/IgniteIoTestSendAllBenchmark.java        |    32 +
 .../io/IgniteIoTestSendRandomBenchmark.java     |    35 +
 modules/yarn/pom.xml                            |     2 +-
 .../apache/ignite/yarn/ApplicationMaster.java   |     4 +-
 .../org/apache/ignite/yarn/IgniteProvider.java  |     4 +-
 modules/zookeeper/pom.xml                       |     2 +-
 .../tcp/ipfinder/zk/ZookeeperIpFinderTest.java  |     2 +-
 parent/pom.xml                                  |    24 +-
 pom.xml                                         |   115 +-
 2869 files changed, 231662 insertions(+), 135166 deletions(-)
----------------------------------------------------------------------



[08/34] ignite git commit: IGNITE-2539 fix issue, move cleanup code

Posted by sb...@apache.org.
IGNITE-2539 fix issue, move cleanup code


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

Branch: refs/heads/ignite-3727-2
Commit: ccae9b0673ff169be94cfc393dfbd43f4867ffa5
Parents: 6485ae5
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Thu Sep 8 14:57:25 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Thu Sep 8 14:57:25 2016 +0300

----------------------------------------------------------------------
 .../cache/GridCachePartitionExchangeManager.java  | 16 ----------------
 .../GridDhtPartitionsExchangeFuture.java          | 18 +++++++++++++++++-
 2 files changed, 17 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ccae9b06/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
index e6ab046..4dfa179 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
@@ -957,22 +957,6 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana
                 }
             }
         }
-
-        ExchangeFutureSet exchFuts0 = exchFuts;
-
-        if (exchFuts0 != null) {
-            int skipped = 0;
-
-            for (GridDhtPartitionsExchangeFuture fut : exchFuts0.values()) {
-                if (exchFut.exchangeId().topologyVersion().compareTo(fut.exchangeId().topologyVersion()) < 0)
-                    continue;
-
-                skipped++;
-
-                if (skipped > 10)
-                    fut.cleanUp();
-            }
-        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/ccae9b06/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index 80b3768..39af156 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@ -1110,9 +1110,25 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
             return true;
         }
 
+        cleanUpExchFtr();
+
         return dummy;
     }
 
+    private void cleanUpExchFtr() {
+        int skipped = 0;
+
+        for (GridDhtPartitionsExchangeFuture fut : cctx.exchange().exchangeFutures()) {
+            if (exchId.topologyVersion().compareTo(fut.exchangeId().topologyVersion()) < 0)
+                continue;
+
+            skipped++;
+
+            if (skipped > 10)
+                fut.cleanUp();
+        }
+    }
+
     /** {@inheritDoc} */
     @Override public Throwable validateCache(GridCacheContext cctx) {
         Throwable err = error();
@@ -1386,7 +1402,7 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
             if (!crd.equals(node)) {
                 if (log.isDebugEnabled())
                     log.debug("Received full partition map from unexpected node [oldest=" + crd.id() +
-                            ", nodeId=" + node.id() + ']');
+                        ", nodeId=" + node.id() + ']');
 
                 if (node.order() > crd.order())
                     fullMsgs.put(node, msg);


[20/34] ignite git commit: IGNITE-3727 fix notes from jira.

Posted by sb...@apache.org.
IGNITE-3727 fix notes from jira.


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

Branch: refs/heads/ignite-3727-2
Commit: 14cb9f5d3ea788f3cf4a96fe77c346c192173c5c
Parents: e4b44a8
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Tue Sep 13 12:57:59 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Tue Sep 13 12:57:59 2016 +0300

----------------------------------------------------------------------
 .../messaging/IgniteMessagingSendAsyncTest.java | 81 ++++++++------------
 .../ignite/testsuites/IgniteBasicTestSuite.java |  2 +
 2 files changed, 32 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/14cb9f5d/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
index 0187579..d98dedf 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
@@ -19,10 +19,12 @@ package org.apache.ignite.messaging;
 
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteMessaging;
+import org.apache.ignite.lang.IgniteBiInClosure;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Assert;
 
+import java.io.Serializable;
 import java.util.UUID;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicReference;
@@ -30,28 +32,16 @@ import java.util.concurrent.atomic.AtomicReference;
 /**
  *
  */
-public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
-    /**
-     * Ignite instance for test.
-     */
-    private Ignite ignite1;
-
-    private Ignite ignite2;
-
+public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest implements Serializable {
     /**
      * Topic name.
      */
     private final String TOPIC = "topic";
 
     /**
-     * {@inheritDoc}
+     * Message string.
      */
-    @Override protected void beforeTest() throws Exception {
-        super.beforeTest();
-
-        ignite1 = startGrid(1);
-        ignite2 = startGrid(2);
-    }
+    private final String msgStr = "message";
 
     /**
      * {@inheritDoc}
@@ -66,29 +56,26 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
      * Test for check, that if use default mode, local listeners execute
      * in the same thread. 1 node in topology.
      */
-    public void testSendDefaultMode() throws InterruptedException {
-        stopGrid(2);
-
-        final String msgStr = "message";
+    public void testSendDefaultMode() throws Exception {
+        Ignite ignite1 = startGrid(1);
 
-        send(ignite1.message(), msgStr, new ProcedureApply() {
+        send(ignite1.message(), msgStr, new IgniteBiInClosure<String, Thread> () {
             @Override public void apply(String msg, Thread thread) {
                 Assert.assertEquals(Thread.currentThread(), thread);
                 Assert.assertEquals(msgStr, msg);
             }
         });
+
     }
 
     /**
      * Test for check, that if use async mode, local listeners execute
      * in another thread(through pool). 1 node in topology.
      */
-    public void testSendAsyncMode() throws InterruptedException {
-        stopGrid(2);
-
-        final String msgStr = "message";
+    public void testSendAsyncMode() throws Exception {
+        Ignite ignite1 = startGrid(1);
 
-        send(ignite1.message().withAsync(), msgStr, new ProcedureApply() {
+        send(ignite1.message().withAsync(), msgStr,  new IgniteBiInClosure<String, Thread> () {
             @Override public void apply(String msg, Thread thread) {
                 Assert.assertTrue(!Thread.currentThread().equals(thread));
                 Assert.assertEquals(msgStr, msg);
@@ -101,10 +88,11 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
      * in the same thread. 2 node in topology.
      */
     public void testSendDefaultMode2Node() throws Exception {
-        final String msgStr = "message";
+        Ignite ignite1 = startGrid(1);
+        Ignite ignite2 = startGrid(2);
 
-        sendWith2Node(ignite1.message(), msgStr, new ProcedureApply() {
-            @Override public void apply(String msg, Thread thread) {
+        sendWith2Node(ignite2, ignite1.message(), msgStr, new IgniteBiInClosure<String, Thread> () {
+            @Override public  void apply(String msg, Thread thread) {
                 Assert.assertEquals(Thread.currentThread(), thread);
                 Assert.assertEquals(msgStr, msg);
             }
@@ -116,10 +104,11 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
      * in another thread(through pool). 2 node in topology.
      */
     public void testSendAsyncMode2Node() throws Exception {
-        final String msgStr = "message";
+        Ignite ignite1 = startGrid(1);
+        Ignite ignite2 = startGrid(2);
 
-        sendWith2Node(ignite1.message().withAsync(), msgStr, new ProcedureApply() {
-            @Override public void apply(String msg, Thread thread) {
+        sendWith2Node(ignite2, ignite1.message().withAsync(), msgStr,  new IgniteBiInClosure<String, Thread> () {
+            @Override public  void apply(String msg, Thread thread) {
                 Assert.assertTrue(!Thread.currentThread().equals(thread));
                 Assert.assertEquals(msgStr, msg);
             }
@@ -131,10 +120,11 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
      * @param msgStr    Message string.
      * @param cls       Callback for compare result.
      */
-    private void sendWith2Node(
-        final IgniteMessaging igniteMsg,
-        final String msgStr,
-        final ProcedureApply cls
+    public void sendWith2Node(
+            final Ignite ignite2,
+            final IgniteMessaging igniteMsg,
+            final String msgStr,
+            final IgniteBiInClosure<String,Thread>  cls
     ) throws Exception {
         final CountDownLatch latch = new CountDownLatch(1);
 
@@ -142,7 +132,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
             @Override public boolean apply(UUID uuid, String msg) {
                 Assert.assertEquals(msgStr, msg);
                 latch.countDown();
-                return false;
+                return true;
             }
         });
 
@@ -157,9 +147,9 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
      * @param cls       Callback for compare result.
      */
     private void send(
-        IgniteMessaging igniteMsg,
-        String msgStr,
-        ProcedureApply cls
+           final IgniteMessaging igniteMsg,
+           final String msgStr,
+           final IgniteBiInClosure<String,Thread> cls
     ) throws InterruptedException {
         final CountDownLatch latch = new CountDownLatch(1);
 
@@ -171,7 +161,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
                 thread.set(Thread.currentThread());
                 val.set(msgStr);
                 latch.countDown();
-                return false;
+                return true;
             }
         });
 
@@ -181,15 +171,4 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
 
         cls.apply(val.get(), thread.get());
     }
-
-    /**
-     * Only for this test procedure.
-     */
-    private interface ProcedureApply {
-        /**
-         * @param val    Value.
-         * @param thread Thread.
-         */
-        void apply(String val, Thread thread);
-    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/14cb9f5d/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
index 2717b06..3eb7e5f 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
@@ -53,6 +53,7 @@ import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.marshaller.DynamicProxySerializationMultiJvmSelfTest;
 import org.apache.ignite.messaging.GridMessagingNoPeerClassLoadingSelfTest;
 import org.apache.ignite.messaging.GridMessagingSelfTest;
+import org.apache.ignite.messaging.IgniteMessagingSendAsyncTest;
 import org.apache.ignite.messaging.IgniteMessagingWithClientTest;
 import org.apache.ignite.spi.GridSpiLocalHostInjectionTest;
 import org.apache.ignite.startup.properties.NotStringSystemPropertyTest;
@@ -97,6 +98,7 @@ public class IgniteBasicTestSuite extends TestSuite {
         suite.addTest(new TestSuite(GridSelfTest.class));
         suite.addTest(new TestSuite(ClusterGroupHostsSelfTest.class));
         suite.addTest(new TestSuite(IgniteMessagingWithClientTest.class));
+        suite.addTest(new TestSuite(IgniteMessagingSendAsyncTest.class));
 
         GridTestUtils.addTestIfNeeded(suite, ClusterGroupSelfTest.class, ignoredTests);
         GridTestUtils.addTestIfNeeded(suite, GridMessagingSelfTest.class, ignoredTests);


[09/34] ignite git commit: IGNITE-3727 send message, local listeners will execute through thread pool

Posted by sb...@apache.org.
IGNITE-3727 send message, local listeners will execute through thread pool


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

Branch: refs/heads/ignite-3727-2
Commit: 7e6042420b804fffaed771767ba1f00e8bb5413d
Parents: ccae9b0
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Thu Sep 8 15:42:35 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Thu Sep 8 15:42:35 2016 +0300

----------------------------------------------------------------------
 .../managers/communication/GridIoManager.java   | 23 ++++++++++----------
 1 file changed, 12 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/7e604242/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 3fdda30..9d40bf9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -665,8 +665,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
                 case UTILITY_CACHE_POOL:
                 case MARSH_CACHE_POOL:
                 case IDX_POOL:
-                case IGFS_POOL:
-                {
+                case IGFS_POOL: {
                     if (msg.isOrdered())
                         processOrderedMessage(nodeId, msg, plc, msgC);
                     else
@@ -831,7 +830,8 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
                 finally {
                     threadProcessingMessage(false);
 
-                    msgC.run();
+                    if (msgC != null)
+                        msgC.run();
                 }
             }
         };
@@ -1290,7 +1290,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
             if (ordered)
                 processOrderedMessage(locNodeId, ioMsg, plc, null);
             else
-                processRegularMessage0(ioMsg, locNodeId);
+                processRegularMessage(locNodeId, ioMsg, plc, null);
 
             if (ackC != null)
                 ackC.apply(null);
@@ -1540,7 +1540,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         send(node, topic, (byte)-1, msg, plc, true, timeout, skipOnTimeout, ackC);
     }
 
-     /**
+    /**
      * Sends a peer deployable user message.
      *
      * @param nodes Destination nodes.
@@ -1775,7 +1775,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
 
         GridMessageListener lsnrs;
 
-        for (;;) {
+        for (; ; ) {
             lsnrs = listenerPutIfAbsent0(topic, lsnr);
 
             if (lsnrs == null) {
@@ -1888,7 +1888,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
                 msgSets = map.values();
         }
         else {
-            for (;;) {
+            for (; ; ) {
                 GridMessageListener lsnrs = listenerGet0(topic);
 
                 // If removing listener before subscription happened.
@@ -1952,8 +1952,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         if (rmv && log.isDebugEnabled())
             log.debug("Removed message listener [topic=" + topic + ", lsnr=" + lsnr + ']');
 
-        if (lsnr instanceof ArrayListener)
-        {
+        if (lsnr instanceof ArrayListener) {
             for (GridMessageListener childLsnr : ((ArrayListener)lsnr).arr)
                 closeListener(childLsnr);
         }
@@ -1965,6 +1964,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
 
     /**
      * Closes a listener, if applicable.
+     *
      * @param lsnr Listener.
      */
     private void closeListener(GridMessageListener lsnr) {
@@ -2124,7 +2124,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         /**
          * @param l Listener.
          * @return {@code true} if listener was added. Add can fail if this instance is empty and is about to be removed
-         *         from map.
+         * from map.
          */
         synchronized boolean add(GridMessageListener l) {
             GridMessageListener[] arr0 = arr;
@@ -2166,7 +2166,8 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         }
 
         /** {@inheritDoc} */
-        @SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter", "ConstantConditions",
+        @SuppressWarnings({
+            "SynchronizationOnLocalVariableOrMethodParameter", "ConstantConditions",
             "OverlyStrongTypeCast"})
         @Override public void onMessage(UUID nodeId, Object msg) {
             if (!(msg instanceof GridIoUserMessage)) {


[04/34] ignite git commit: IGNITE-3727: update javadoc

Posted by sb...@apache.org.
IGNITE-3727: update javadoc


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

Branch: refs/heads/ignite-3727-2
Commit: cf4cd05f9abdbeae096c6eb2d364dd140b06bbdc
Parents: 1f31fdb
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Mon Sep 5 09:34:49 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Mon Sep 5 09:34:49 2016 +0300

----------------------------------------------------------------------
 .../core/src/main/java/org/apache/ignite/IgniteMessaging.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/cf4cd05f/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
index a9dc043..23b29f3 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
@@ -77,7 +77,7 @@ public interface IgniteMessaging extends IgniteAsyncSupport {
 
     /**
      * Sends given message with specified topic to the nodes in the underlying cluster group.
-     * When you invoke method, all listeners who were registered on the local node{@link #localListen} or {@link #remoteListen}, will be executing in the same thread.
+     * When you invoke method, all listeners who were registered on topic in the local node, will be executing in the same thread.
      *
      * @param topic Topic to send to, {@code null} for default topic.
      * @param msg Message to send.
@@ -88,7 +88,7 @@ public interface IgniteMessaging extends IgniteAsyncSupport {
 
     /**
      * Sends given messages with the specified topic to the nodes in the underlying cluster group.
-     * When you invoke method, all listeners who were registered on local node {@link #localListen} or {@link #remoteListen}, will be executing in the same thread.
+     * When you invoke method, all listeners who were registered on topic in the local node, will be executing in the same thread.
      *
      * @param topic Topic to send to, {@code null} for default topic.
      * @param msgs Messages to send. Order of the sending is undefined. If the method produces


[25/34] ignite git commit: Revert "IGNITE-2539 issues reproduce test"

Posted by sb...@apache.org.
Revert  "IGNITE-2539 issues reproduce test"


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

Branch: refs/heads/ignite-3727-2
Commit: a1f0db9d5d3e63940f158cb30cfaf3d51f558630
Parents: 62f91ab
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Tue Sep 13 14:42:03 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Tue Sep 13 14:42:03 2016 +0300

----------------------------------------------------------------------
 .../ignite/internal/util/IgniteUtils.java       |  41 ----
 .../IssuesIGNITE2539ReproduceTest.java          | 244 -------------------
 2 files changed, 285 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a1f0db9d/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index c002177..93acc75 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -1254,47 +1254,6 @@ public abstract class IgniteUtils {
     }
 
     /**
-     * Performs thread dump and return all available info.
-     */
-    public static GridStringBuilder dumpThreads() {
-        ThreadMXBean mxBean = ManagementFactory.getThreadMXBean();
-
-        GridStringBuilder sb = new GridStringBuilder("Thread dump at ")
-            .a(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss z").format(new Date(U.currentTimeMillis()))).a(NL);
-
-        final Set<Long> deadlockedThreadsIds = getDeadlockedThreadIds(mxBean);
-
-        sb.a(NL);
-
-        if (deadlockedThreadsIds.isEmpty())
-            sb.a("No deadlocked threads detected.");
-        else
-            sb.a("Deadlocked threads detected (see thread dump below) " +
-                "[deadlockedThreadsCnt=" + deadlockedThreadsIds.size() + ']');
-
-        sb.a(NL);
-
-        ThreadInfo[] threadInfos =
-            mxBean.dumpAllThreads(mxBean.isObjectMonitorUsageSupported(), mxBean.isSynchronizerUsageSupported());
-
-        for (ThreadInfo info : threadInfos) {
-            printThreadInfo(info, sb, deadlockedThreadsIds);
-
-            sb.a(NL);
-
-            if (info.getLockedSynchronizers() != null && info.getLockedSynchronizers().length > 0) {
-                printSynchronizersInfo(info.getLockedSynchronizers(), sb);
-
-                sb.a(NL);
-            }
-        }
-
-        sb.a(NL);
-
-        return sb;
-    }
-
-    /**
      * Get deadlocks from the thread bean.
      * @param mxBean the bean
      * @return the set of deadlocked threads (may be empty Set, but never null).

http://git-wip-us.apache.org/repos/asf/ignite/blob/a1f0db9d/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java b/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
deleted file mode 100644
index dc120fb..0000000
--- a/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * 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.cache.affinity.bugreproduce;
-
-import org.apache.ignite.*;
-import org.apache.ignite.cache.*;
-import org.apache.ignite.cache.affinity.*;
-import org.apache.ignite.cache.affinity.rendezvous.*;
-import org.apache.ignite.configuration.*;
-import org.apache.ignite.internal.util.*;
-import org.apache.ignite.internal.util.typedef.internal.*;
-import org.apache.ignite.spi.discovery.tcp.*;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
-import org.apache.ignite.testframework.*;
-import org.apache.ignite.testframework.junits.common.*;
-
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.concurrent.atomic.*;
-
-/**
- * Created by dgovorukhin on 01.09.2016.
- */
-public class IssuesIGNITE2539ReproduceTest extends GridCommonAbstractTest {
-    /** */
-    protected static TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
-
-    /** */
-    private static final int ITERATIONS = 10;
-
-    /** partitioned cache name. */
-    private static final String CACHE_NAME_DHT_PARTITIONED = "cacheP";
-
-    /** replicated cache name. */
-    private static final String CACHE_NAME_DHT_REPLICATED = "cacheR";
-
-    /** Ignite. */
-    private static Ignite ignite1;
-
-    /** Ignite. */
-    private static Ignite ignite2;
-
-    /** Ignite. */
-    private static Ignite ignite3;
-
-    private static final AtomicReference<Throwable> exc = new AtomicReference<>();
-
-    private static final AtomicReference<GridStringBuilder> dump = new AtomicReference<>();
-
-    private static final AtomicReference<Thread> thr = new AtomicReference<>();
-
-    /**
-     * @return Affinity function to test.
-     */
-    private AffinityFunction affinityFunction() {
-        return new RendezvousAffinityFunction();
-    }
-
-    /** {@inheritDoc} */
-    @Override protected void beforeTestsStarted() throws Exception {
-        ignite1 = startGrid(0);
-        ignite2 = startGrid(1);
-        ignite3 = startGrid(2);
-    }
-
-    /** {@inheritDoc} */
-    @Override protected void afterTestsStopped() throws Exception {
-        stopAllGrids();
-    }
-
-    /** {@inheritDoc} */
-    @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
-        IgniteConfiguration iCfg = super.getConfiguration(gridName);
-
-        ((TcpDiscoverySpi)iCfg.getDiscoverySpi()).setIpFinder(ipFinder);
-        iCfg.setRebalanceThreadPoolSize(2);
-
-        return iCfg;
-    }
-
-    /**
-     *
-     */
-    public void testCacheStopping() throws Exception {
-
-        final int delta = 5;
-
-        for (Thread worker : getExchangeWorkerThread()) {
-            worker.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
-                @Override public void uncaughtException(Thread t, Throwable e) {
-                    dump.compareAndSet(null, U.dumpThreads());
-                    exc.compareAndSet(null, e);
-                    thr.compareAndSet(null, t);
-                }
-            });
-        }
-
-        GridTestUtils.runAsync(new Callable<Void>() {
-            @Override public Void call() throws Exception {
-
-                for (int start = 0; Ignition.allGrids().contains(ignite1); start += delta) {
-                    fillWithCache(ignite2, delta, start, affinityFunction());
-
-                    for (String victim : ignite2.cacheNames())
-                        ignite2.getOrCreateCache(victim).put(start, delta);
-
-                    for (String victim : ignite1.cacheNames())
-                        ignite1.destroyCache(victim);
-                }
-                return null;
-            }
-        }, "CacheSerialKiller");
-
-        for (int i = delta; i < ITERATIONS + delta; i++)
-            startGrid(i);
-
-        U.sleep(500);
-
-        for (int i = delta; i < ITERATIONS + delta; i++)
-            stopGrid(i);
-
-        if (exc.get() != null) {
-            log.info(thr.get().getName());
-
-            Throwable e = exc.get();
-            log.error(e.getMessage(), e);
-
-            log.info(dump.toString());
-
-            exc.set(null);
-            dump.set(null);
-            thr.set(null);
-
-            fail("see all log");
-        }
-    }
-
-    /**
-     *
-     */
-    public void testCacheStopping2() throws Exception {
-
-        final int delta = 5;
-
-        int itr = 20;
-
-        for (int j = 0; j < itr; j++) {
-
-            final AtomicReference<Throwable> exc = new AtomicReference<>();
-
-            final AtomicBoolean asyncRun = new AtomicBoolean(true);
-
-            for (Thread worker : getExchangeWorkerThread()) {
-                worker.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
-                    @Override public void uncaughtException(Thread t, Throwable e) {
-                        exc.set(e);
-                    }
-                });
-            }
-
-            Thread thread = new Thread(new Runnable() {
-                @Override public void run() {
-                    for (int start = 0; asyncRun.get(); start += delta) {
-                        fillWithCache(ignite2, delta, start, affinityFunction());
-
-                        for (String victim : ignite2.cacheNames())
-                            ignite2.getOrCreateCache(victim).put(start, delta);
-
-                        for (String victim : ignite1.cacheNames())
-                            ignite1.destroyCache(victim);
-                    }
-                }
-            });
-            thread.start();
-
-            for (int i = delta; i < ITERATIONS + delta; i++)
-                startGrid(i);
-
-            U.sleep(500);
-
-            for (int i = delta; i < ITERATIONS + delta; i++)
-                stopGrid(i);
-
-            asyncRun.set(false);
-
-            thread.join();
-
-            if (exc.get() != null)
-                fail(exc.get().getMessage());
-
-        }
-    }
-
-    /**
-     *
-     */
-    private Iterable<Thread> getExchangeWorkerThread() {
-        Collection<Thread> exhcWorkers = new ArrayList<>();
-        for (Thread t : Thread.getAllStackTraces().keySet()) {
-            if (t.getName().contains("exchange-worker"))
-                exhcWorkers.add(t);
-        }
-        return exhcWorkers;
-    }
-
-    /** Put 2 * {@code iterations} caches inside ignite. */
-    private static void fillWithCache(Ignite ignite, int iterations, int start, AffinityFunction affinityFunction) {
-        for (int i = start; i < iterations + start; i++) {
-            CacheConfiguration<Integer, Integer> cachePCfg = new CacheConfiguration<>();
-
-            cachePCfg.setName(CACHE_NAME_DHT_PARTITIONED + i);
-            cachePCfg.setCacheMode(CacheMode.PARTITIONED);
-            cachePCfg.setBackups(1);
-            cachePCfg.setAffinity(affinityFunction);
-
-            ignite.getOrCreateCache(cachePCfg);
-
-            CacheConfiguration<Integer, Integer> cacheRCfg = new CacheConfiguration<>();
-
-            cacheRCfg.setName(CACHE_NAME_DHT_REPLICATED + i);
-            cacheRCfg.setCacheMode(CacheMode.REPLICATED);
-            cachePCfg.setBackups(0);
-            cachePCfg.setAffinity(affinityFunction);
-
-            ignite.getOrCreateCache(cacheRCfg);
-        }
-    }
-}


[16/34] ignite git commit: IGNITE-3727 test send sync/async and small fix in code

Posted by sb...@apache.org.
IGNITE-3727 test send sync/async and small fix in code


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

Branch: refs/heads/ignite-3727-2
Commit: 8b416e8b2b3ea8f0a56eb9e41098df0b96a59cc9
Parents: e68a4fa
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Fri Sep 9 12:02:19 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Fri Sep 9 12:02:19 2016 +0300

----------------------------------------------------------------------
 .../managers/communication/GridIoManager.java   |   4 +-
 .../messaging/IgniteMessagingSendAsyncTest.java | 140 +++++++++++++++++++
 2 files changed, 142 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/8b416e8b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 1ba649e..6f5421e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -1375,7 +1375,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      */
     public void send(ClusterNode node, GridTopic topic, Message msg, byte plc, boolean async)
         throws IgniteCheckedException {
-        send(node, topic, topic.ordinal(), msg, plc, false, 0, false, null, false);
+        send(node, topic, topic.ordinal(), msg, plc, false, 0, false, null, async);
     }
 
     /**
@@ -1614,7 +1614,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         if (ordered)
             sendOrderedMessage(nodes, TOPIC_COMM_USER, ioMsg, PUBLIC_POOL, timeout, true);
         else if (loc)
-            send(F.first(nodes), TOPIC_COMM_USER, ioMsg, PUBLIC_POOL);
+            send(F.first(nodes), TOPIC_COMM_USER, ioMsg, PUBLIC_POOL, async);
         else {
             ClusterNode locNode = F.find(nodes, null, F.localNode(locNodeId));
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/8b416e8b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
new file mode 100644
index 0000000..6f1188e
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
@@ -0,0 +1,140 @@
+/*
+* 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.messaging;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteMessaging;
+import org.apache.ignite.lang.IgniteBiPredicate;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Assert;
+
+import java.util.UUID;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Created by dgovorukhin on 09.09.2016.
+ */
+public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
+    /**
+     * Ignite instance for test.
+     */
+    private Ignite ignite;
+
+    /**
+     * Topic name.
+     */
+    private final String TOPIC = "topic";
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void beforeTest() throws Exception {
+        super.beforeTest();
+
+        ignite = startGrid(0);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void afterTest() throws Exception {
+        super.afterTest();
+
+        stopGrid(0);
+    }
+
+    /**
+     * Test for check, that if use default mode, local listeners execute
+     * in the same thread.
+     */
+    public void testSendDefaultMode() throws InterruptedException {
+        final String msgStr = "message";
+
+        send(ignite.message(), msgStr, new ProcedureApply() {
+            @Override
+            public void apply(String msg, Thread thread) {
+                Assert.assertEquals(Thread.currentThread(), thread);
+                Assert.assertEquals(msgStr, msg);
+            }
+        });
+
+    }
+
+    /**
+     * Test for check, that if use async mode, local listeners execute
+     * in another thread(through pool).
+     */
+    public void testSendAsyncMode() throws InterruptedException {
+        final String msgStr = "message";
+
+        send(ignite.message().withAsync(), msgStr, new ProcedureApply() {
+            @Override
+            public void apply(String msg, Thread thread) {
+                Assert.assertTrue(!Thread.currentThread().equals(thread));
+                Assert.assertEquals(msgStr, msg);
+            }
+        });
+    }
+
+    /**
+     * @param igniteMsg Ignite message.
+     * @param msgStr    Message string.
+     * @param cls       callback for compare result.
+     */
+    private void send(
+            IgniteMessaging igniteMsg,
+            String msgStr,
+            ProcedureApply cls
+    ) throws InterruptedException {
+        final CountDownLatch latch = new CountDownLatch(1);
+
+        final AtomicReference<Thread> thread = new AtomicReference<>();
+        final AtomicReference<String> val = new AtomicReference<>();
+
+        igniteMsg.localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
+            @Override
+            public boolean apply(UUID uuid, String msgStr) {
+                thread.set(Thread.currentThread());
+                val.set(msgStr);
+                latch.countDown();
+                return false;
+            }
+        });
+
+        igniteMsg.send(TOPIC, msgStr);
+
+        latch.await();
+
+        cls.apply(val.get(), thread.get());
+    }
+
+    /**
+     * only for this test procedure
+     */
+    private interface ProcedureApply {
+
+        /**
+         * @param val    Value.
+         * @param thread Thread.
+         */
+        void apply(String val, Thread thread);
+    }
+
+}


[11/34] ignite git commit: IGNITE-3727 supported sync/async execution for local listener

Posted by sb...@apache.org.
IGNITE-3727 supported sync/async execution for local listener


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

Branch: refs/heads/ignite-3727-2
Commit: a6980abbf5d8ff80ed8a83f479729ef418dfa7c9
Parents: ecd3d93
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Thu Sep 8 20:02:43 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Thu Sep 8 20:02:43 2016 +0300

----------------------------------------------------------------------
 .../ignite/internal/IgniteMessagingImpl.java    |   6 +-
 .../internal/managers/GridManagerAdapter.java   |   2 +-
 .../managers/communication/GridIoManager.java   |  40 +++--
 .../communication/GridIoManagerSelfTest.java    |   6 +-
 ...niteMessagingConfigVariationFullApiTest.java | 177 +++++++++++++++----
 5 files changed, 175 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a6980abb/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java
index 2800777..e586aa2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java
@@ -86,7 +86,7 @@ public class IgniteMessagingImpl extends AsyncSupportAdapter<IgniteMessaging>
             if (snapshot.isEmpty())
                 throw U.emptyTopologyException();
 
-            ctx.io().sendUserMessage(snapshot, msg, topic, false, 0);
+            ctx.io().sendUserMessage(snapshot, msg, topic, false, 0, isAsync());
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);
@@ -111,7 +111,7 @@ public class IgniteMessagingImpl extends AsyncSupportAdapter<IgniteMessaging>
             for (Object msg : msgs) {
                 A.notNull(msg, "msg");
 
-                ctx.io().sendUserMessage(snapshot, msg, topic, false, 0);
+                ctx.io().sendUserMessage(snapshot, msg, topic, false, 0, isAsync());
             }
         }
         catch (IgniteCheckedException e) {
@@ -137,7 +137,7 @@ public class IgniteMessagingImpl extends AsyncSupportAdapter<IgniteMessaging>
             if (timeout == 0)
                 timeout = ctx.config().getNetworkTimeout();
 
-            ctx.io().sendUserMessage(snapshot, msg, topic, true, timeout);
+            ctx.io().sendUserMessage(snapshot, msg, topic, true, timeout, isAsync());
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);

http://git-wip-us.apache.org/repos/asf/ignite/blob/a6980abb/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
index 4fe8ca8..43510f6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/GridManagerAdapter.java
@@ -389,7 +389,7 @@ public abstract class GridManagerAdapter<T extends IgniteSpi> implements GridMan
                             if (msg instanceof Message)
                                 ctx.io().send(node, topic, (Message)msg, SYSTEM_POOL);
                             else
-                                ctx.io().sendUserMessage(Collections.singletonList(node), msg, topic, false, 0);
+                                ctx.io().sendUserMessage(Collections.singletonList(node), msg, topic, false, 0, false);
                         }
                         catch (IgniteCheckedException e) {
                             throw unwrapException(e);

http://git-wip-us.apache.org/repos/asf/ignite/blob/a6980abb/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 9d40bf9..124fba5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -1271,7 +1271,8 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         boolean ordered,
         long timeout,
         boolean skipOnTimeout,
-        IgniteInClosure<IgniteException> ackC
+        IgniteInClosure<IgniteException> ackC,
+        boolean async
     ) throws IgniteCheckedException {
         assert node != null;
         assert topic != null;
@@ -1289,8 +1290,10 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
 
             if (ordered)
                 processOrderedMessage(locNodeId, ioMsg, plc, null);
-            else
+            else if (async)
                 processRegularMessage(locNodeId, ioMsg, plc, null);
+            else
+                processRegularMessage0(ioMsg, locNodeId);
 
             if (ackC != null)
                 ackC.apply(null);
@@ -1346,7 +1349,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         if (node == null)
             throw new IgniteCheckedException("Failed to send message to node (has node left grid?): " + nodeId);
 
-        send(node, topic, topic.ordinal(), msg, plc, false, 0, false, null);
+        send(node, topic, topic.ordinal(), msg, plc, false, 0, false, null, false);
     }
 
     /**
@@ -1358,7 +1361,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      */
     public void send(ClusterNode node, Object topic, Message msg, byte plc)
         throws IgniteCheckedException {
-        send(node, topic, -1, msg, plc, false, 0, false, null);
+        send(node, topic, -1, msg, plc, false, 0, false, null, false);
     }
 
     /**
@@ -1368,9 +1371,9 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      * @param plc Type of processing.
      * @throws IgniteCheckedException Thrown in case of any errors.
      */
-    public void send(ClusterNode node, GridTopic topic, Message msg, byte plc)
+    public void send(ClusterNode node, GridTopic topic, Message msg, byte plc, boolean async)
         throws IgniteCheckedException {
-        send(node, topic, topic.ordinal(), msg, plc, false, 0, false, null);
+        send(node, topic, topic.ordinal(), msg, plc, false, 0, false, null, false);
     }
 
     /**
@@ -1383,7 +1386,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      */
     public void send(ClusterNode node, Object topic, int topicOrd, Message msg, byte plc)
         throws IgniteCheckedException {
-        send(node, topic, topicOrd, msg, plc, false, 0, false, null);
+        send(node, topic, topicOrd, msg, plc, false, 0, false, null, false);
     }
 
     /**
@@ -1405,7 +1408,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
     ) throws IgniteCheckedException {
         assert timeout > 0 || skipOnTimeout;
 
-        send(node, topic, (byte)-1, msg, plc, true, timeout, skipOnTimeout, null);
+        send(node, topic, (byte)-1, msg, plc, true, timeout, skipOnTimeout, null, false);
     }
 
     /**
@@ -1432,7 +1435,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         if (node == null)
             throw new IgniteCheckedException("Failed to send message to node (has node left grid?): " + nodeId);
 
-        send(node, topic, (byte)-1, msg, plc, true, timeout, skipOnTimeout, null);
+        send(node, topic, (byte)-1, msg, plc, true, timeout, skipOnTimeout, null, false);
     }
 
     /**
@@ -1445,7 +1448,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      */
     public void send(ClusterNode node, GridTopic topic, Message msg, byte plc,
         IgniteInClosure<IgniteException> ackC) throws IgniteCheckedException {
-        send(node, topic, topic.ordinal(), msg, plc, false, 0, false, ackC);
+        send(node, topic, topic.ordinal(), msg, plc, false, 0, false, ackC, false);
     }
 
     /**
@@ -1481,7 +1484,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      */
     public void send(ClusterNode node, Object topic, Message msg, byte plc, IgniteInClosure<IgniteException> ackC)
         throws IgniteCheckedException {
-        send(node, topic, -1, msg, plc, false, 0, false, ackC);
+        send(node, topic, -1, msg, plc, false, 0, false, ackC, false);
     }
 
     /**
@@ -1537,7 +1540,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
     ) throws IgniteCheckedException {
         assert timeout > 0 || skipOnTimeout;
 
-        send(node, topic, (byte)-1, msg, plc, true, timeout, skipOnTimeout, ackC);
+        send(node, topic, (byte)-1, msg, plc, true, timeout, skipOnTimeout, ackC, false);
     }
 
     /**
@@ -1548,7 +1551,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      * @throws IgniteCheckedException Thrown in case of any errors.
      */
     public void sendUserMessage(Collection<? extends ClusterNode> nodes, Object msg) throws IgniteCheckedException {
-        sendUserMessage(nodes, msg, null, false, 0);
+        sendUserMessage(nodes, msg, null, false, 0, false);
     }
 
     /**
@@ -1563,7 +1566,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      */
     @SuppressWarnings("ConstantConditions")
     public void sendUserMessage(Collection<? extends ClusterNode> nodes, Object msg,
-        @Nullable Object topic, boolean ordered, long timeout) throws IgniteCheckedException {
+        @Nullable Object topic, boolean ordered, long timeout, boolean async) throws IgniteCheckedException {
         boolean loc = nodes.size() == 1 && F.first(nodes).id().equals(locNodeId);
 
         byte[] serMsg = null;
@@ -1617,10 +1620,11 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
             if (!rmtNodes.isEmpty())
                 send(rmtNodes, TOPIC_COMM_USER, ioMsg, PUBLIC_POOL);
 
-            // Will call local listeners in current thread synchronously, so must go the last
+            // Will call local listeners in current thread synchronously or through pool,
+            // depending async flag, so must go the last
             // to allow remote nodes execute the requested operation in parallel.
             if (locNode != null)
-                send(locNode, TOPIC_COMM_USER, ioMsg, PUBLIC_POOL);
+                send(locNode, TOPIC_COMM_USER, ioMsg, PUBLIC_POOL, async);
         }
     }
 
@@ -1687,7 +1691,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         if (node == null)
             throw new IgniteCheckedException("Failed to send message to node (has node left grid?): " + nodeId);
 
-        send(node, topic, (byte)-1, msg, plc, true, timeout, skipOnTimeout, ackC);
+        send(node, topic, (byte)-1, msg, plc, true, timeout, skipOnTimeout, ackC, false);
     }
 
     /**
@@ -1724,7 +1728,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
             // messages to one node vs. many.
             if (!nodes.isEmpty()) {
                 for (ClusterNode node : nodes)
-                    send(node, topic, topicOrd, msg, plc, ordered, timeout, skipOnTimeout, null);
+                    send(node, topic, topicOrd, msg, plc, ordered, timeout, skipOnTimeout, null, false);
             }
             else if (log.isDebugEnabled())
                 log.debug("Failed to send message to empty nodes collection [topic=" + topic + ", msg=" +

http://git-wip-us.apache.org/repos/asf/ignite/blob/a6980abb/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java
index c2cfa76..f5499d3 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java
@@ -145,7 +145,7 @@ public class GridIoManagerSelfTest extends GridCommonAbstractTest {
         GridIoManager ioMgr = spy(new TestGridIoManager(ctx));
 
         try {
-            ioMgr.sendUserMessage(F.asList(locNode, rmtNode), msg, GridTopic.TOPIC_IGFS, false, 123L);
+            ioMgr.sendUserMessage(F.asList(locNode, rmtNode), msg, GridTopic.TOPIC_IGFS, false, 123L, false);
         }
         catch (IgniteCheckedException ignored) {
             // No-op. We are using mocks so real sending is impossible.
@@ -169,7 +169,7 @@ public class GridIoManagerSelfTest extends GridCommonAbstractTest {
         GridIoManager ioMgr = spy(new TestGridIoManager(ctx));
 
         try {
-            ioMgr.sendUserMessage(F.asList(locNode, rmtNode), msg, GridTopic.TOPIC_IGFS, true, 123L);
+            ioMgr.sendUserMessage(F.asList(locNode, rmtNode), msg, GridTopic.TOPIC_IGFS, true, 123L, false);
         }
         catch (Exception ignored) {
             // No-op. We are using mocks so real sending is impossible.
@@ -196,7 +196,7 @@ public class GridIoManagerSelfTest extends GridCommonAbstractTest {
         }
 
         /** {@inheritDoc} */
-        @Override public void send(ClusterNode node, GridTopic topic, Message msg, byte plc)
+        @Override public void send(ClusterNode node, GridTopic topic, Message msg, byte plc, boolean async)
             throws IgniteCheckedException {
             // No-op.
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/a6980abb/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
index 31b0663..fe85970 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
@@ -58,7 +58,18 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
     public void testLocalServer() throws Exception {
         runInAllDataModes(new TestRunnable() {
             @Override public void run() throws Exception {
-                localServerInternal();
+                localServerInternal(false);
+            }
+        });
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testLocalServerAsync() throws Exception {
+        runInAllDataModes(new TestRunnable() {
+            @Override public void run() throws Exception {
+                localServerInternal(true);
             }
         });
     }
@@ -83,7 +94,21 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
         runInAllDataModes(new TestRunnable() {
             @Override public void run() throws Exception {
-                serverClientMessage();
+                serverClientMessage(false);
+            }
+        });
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testServerClientMessageAsync() throws Exception {
+        if (!testsCfg.withClients())
+            return;
+
+        runInAllDataModes(new TestRunnable() {
+            @Override public void run() throws Exception {
+                serverClientMessage(true);
             }
         });
     }
@@ -97,7 +122,21 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
         runInAllDataModes(new TestRunnable() {
             @Override public void run() throws Exception {
-                clientClientMessage();
+                clientClientMessage(false);
+            }
+        });
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testClientClientMessageAsync() throws Exception {
+        if (!testsCfg.withClients())
+            return;
+
+        runInAllDataModes(new TestRunnable() {
+            @Override public void run() throws Exception {
+                clientClientMessage(false);
             }
         });
     }
@@ -111,7 +150,21 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
         runInAllDataModes(new TestRunnable() {
             @Override public void run() throws Exception {
-                clientServerMessage();
+                clientServerMessage(false);
+            }
+        });
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testClientServerMessageAsync() throws Exception {
+        if (!testsCfg.withClients())
+            return;
+
+        runInAllDataModes(new TestRunnable() {
+            @Override public void run() throws Exception {
+                clientServerMessage(true);
             }
         });
     }
@@ -133,7 +186,18 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
     public void testOrderedMessage() throws Exception {
         runInAllDataModes(new TestRunnable() {
             @Override public void run() throws Exception {
-                orderedMessage();
+                orderedMessage(false);
+            }
+        });
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testOrderedMessageAsync() throws Exception {
+        runInAllDataModes(new TestRunnable() {
+            @Override public void run() throws Exception {
+                orderedMessage(true);
             }
         });
     }
@@ -147,7 +211,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
         runInAllDataModes(new TestRunnable() {
             @Override public void run() throws Exception {
-                clientServerOrderedMessage();
+                clientServerOrderedMessage(false);
             }
         });
     }
@@ -155,13 +219,42 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
     /**
      * @throws Exception If failed.
      */
+    public void testClientServerOrderedMessageAsync() throws Exception {
+        if (!testsCfg.withClients())
+            return;
+
+        runInAllDataModes(new TestRunnable() {
+            @Override public void run() throws Exception {
+                clientServerOrderedMessage(true);
+            }
+        });
+    }
+
+
+    /**
+     * @throws Exception If failed.
+     */
     public void testClientClientOrderedMessage() throws Exception {
         if (!testsCfg.withClients())
             return;
 
         runInAllDataModes(new TestRunnable() {
             @Override public void run() throws Exception {
-                clientClientOrderedMessage();
+                clientClientOrderedMessage(true);
+            }
+        });
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testClientClientOrderedMessageAsync() throws Exception {
+        if (!testsCfg.withClients())
+            return;
+
+        runInAllDataModes(new TestRunnable() {
+            @Override public void run() throws Exception {
+                clientClientOrderedMessage(true);
             }
         });
     }
@@ -175,7 +268,21 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
         runInAllDataModes(new TestRunnable() {
             @Override public void run() throws Exception {
-                serverClientOrderedMessage();
+                serverClientOrderedMessage(false);
+            }
+        });
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testServerClientOrderedMessageAsync() throws Exception {
+        if (!testsCfg.withClients())
+            return;
+
+        runInAllDataModes(new TestRunnable() {
+            @Override public void run() throws Exception {
+                serverClientOrderedMessage(true);
             }
         });
     }
@@ -184,7 +291,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
      * Single server test.
      * @throws Exception If failed.
      */
-    private void localServerInternal() throws Exception {
+    private void localServerInternal(boolean async) throws Exception {
         int messages = MSGS;
 
         Ignite ignite = grid(SERVER_NODE_IDX);
@@ -197,7 +304,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
         try {
             for (int i = 0; i < messages; i++)
-                sendMessage(ignite, grp, value(i));
+                sendMessage(ignite, grp, value(i), async);
 
             assertTrue(LATCH.await(10, TimeUnit.SECONDS));
 
@@ -240,42 +347,43 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
      * Server sends a message and client receives it.
      * @throws Exception If failed.
      */
-    private void serverClientMessage() throws Exception {
+    private void serverClientMessage(boolean async) throws Exception {
         Ignite ignite = grid(SERVER_NODE_IDX);
 
         ClusterGroup grp = ignite.cluster().forClients();
 
         assert grp.nodes().size() > 0;
 
-        registerListenerAndSendMessages(ignite, grp);
+        registerListenerAndSendMessages(ignite, grp, async);
     }
 
     /**
      * Client sends a message and client receives it.
      * @throws Exception If failed.
      */
-    private void clientClientMessage() throws Exception {
+    private void clientClientMessage(boolean async) throws Exception {
         Ignite ignite = grid(CLIENT_NODE_IDX);
 
         ClusterGroup grp = ignite.cluster().forClients();
 
         assert grp.nodes().size() > 0;
 
-        registerListenerAndSendMessages(ignite, grp);
+        registerListenerAndSendMessages(ignite, grp, async);
     }
 
     /**
      * Client sends a message and client receives it.
+     * @param async flag async mode
      * @throws Exception If failed.
      */
-    private void clientServerMessage() throws Exception {
+    private void clientServerMessage(boolean async) throws Exception {
         Ignite ignite = grid(CLIENT_NODE_IDX);
 
         ClusterGroup grp = ignite.cluster().forServers();
 
         assert grp.nodes().size() > 0;
 
-        registerListenerAndSendMessages(ignite, grp);
+        registerListenerAndSendMessages(ignite, grp, async);
     }
 
     /**
@@ -283,7 +391,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
      * @param grp Cluster group.
      * @throws Exception If fail.
      */
-    private void registerListenerAndSendMessages(Ignite ignite, ClusterGroup grp) throws Exception {
+    private void registerListenerAndSendMessages(Ignite ignite, ClusterGroup grp, boolean async) throws Exception {
         int messages = MSGS;
 
         LATCH = new CountDownLatch(grp.nodes().size() * messages);
@@ -292,7 +400,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
         try {
             for (int i = 0; i < messages; i++)
-                sendMessage(ignite, grp, value(i));
+                sendMessage(ignite, grp, value(i), async);
 
             assertTrue(LATCH.await(10, TimeUnit.SECONDS));
 
@@ -338,56 +446,56 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
      *
      * @throws Exception If fail.
      */
-    private void orderedMessage() throws Exception {
+    private void orderedMessage(boolean async) throws Exception {
         Ignite ignite = grid(SERVER_NODE_IDX);
 
         ClusterGroup grp = gridCount() > 1 ? ignite.cluster().forRemotes() : ignite.cluster().forLocal();
 
         assert grp.nodes().size() > 0;
 
-        registerListenerAndSendOrderedMessages(ignite, grp);
+        registerListenerAndSendOrderedMessages(ignite, grp, async);
     }
 
     /**
      *
      * @throws Exception If fail.
      */
-    private void clientServerOrderedMessage() throws Exception {
+    private void clientServerOrderedMessage(boolean async) throws Exception {
         Ignite ignite = grid(CLIENT_NODE_IDX);
 
         ClusterGroup grp = ignite.cluster().forServers();
 
         assert grp.nodes().size() > 0;
 
-        registerListenerAndSendOrderedMessages(ignite, grp);
+        registerListenerAndSendOrderedMessages(ignite, grp, async);
     }
 
     /**
      *
      * @throws Exception If fail.
      */
-    private void clientClientOrderedMessage() throws Exception {
+    private void clientClientOrderedMessage(boolean async) throws Exception {
         Ignite ignite = grid(CLIENT_NODE_IDX);
 
         ClusterGroup grp = ignite.cluster().forClients();
 
         assert grp.nodes().size() > 0;
 
-        registerListenerAndSendOrderedMessages(ignite, grp);
+        registerListenerAndSendOrderedMessages(ignite, grp, async);
     }
 
     /**
      *
      * @throws Exception If fail.
      */
-    private void serverClientOrderedMessage() throws Exception {
+    private void serverClientOrderedMessage(boolean async) throws Exception {
         Ignite ignite = grid(SERVER_NODE_IDX);
 
         ClusterGroup grp = ignite.cluster().forClients();
 
         assert grp.nodes().size() > 0;
 
-        registerListenerAndSendOrderedMessages(ignite, grp);
+        registerListenerAndSendOrderedMessages(ignite, grp, async);
     }
 
     /**
@@ -395,7 +503,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
      * @param grp Cluster group.
      * @throws Exception If fail.
      */
-    private void registerListenerAndSendOrderedMessages(Ignite ignite, ClusterGroup grp) throws Exception {
+    private void registerListenerAndSendOrderedMessages(Ignite ignite, ClusterGroup grp, boolean async) throws Exception {
         int messages = MSGS;
 
         LATCH = new CountDownLatch(grp.nodes().size() * messages);
@@ -403,8 +511,12 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
         UUID opId = ignite.message(grp).remoteListen(MESSAGE_TOPIC, new OrderedMessageListener());
 
         try {
-            for (int i=0; i < messages; i++)
-                ignite.message(grp).sendOrdered(MESSAGE_TOPIC, value(i), 2000);
+            for (int i=0; i < messages; i++){
+                if (async)
+                    ignite.message(grp).withAsync().sendOrdered(MESSAGE_TOPIC, value(i), 2000);
+                else
+                    ignite.message(grp).withAsync().sendOrdered(MESSAGE_TOPIC, value(i), 2000);
+            }
 
             assertTrue(LATCH.await(10, TimeUnit.SECONDS));
 
@@ -420,8 +532,11 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
      * @param grp Cluster group.
      * @param msg Message.
      */
-    private void sendMessage(Ignite nodeSnd, ClusterGroup grp, Object msg) {
-        nodeSnd.message(grp).send(MESSAGE_TOPIC, msg);
+    private void sendMessage(Ignite nodeSnd, ClusterGroup grp, Object msg, boolean async) {
+        if (async)
+            nodeSnd.message(grp).withAsync().send(MESSAGE_TOPIC, msg);
+        else
+            nodeSnd.message(grp).send(MESSAGE_TOPIC, msg);
     }
 
     /**


[26/34] ignite git commit: IGNITE-3727 fix test

Posted by sb...@apache.org.
IGNITE-3727 fix test


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

Branch: refs/heads/ignite-3727-2
Commit: 60b030cdf27dfa6567630f3157e5e370a08834c1
Parents: a1f0db9
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Tue Sep 13 15:43:37 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Tue Sep 13 15:43:37 2016 +0300

----------------------------------------------------------------------
 .../messaging/IgniteMessagingConfigVariationFullApiTest.java       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/60b030cd/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
index fe85970..f66535a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
@@ -515,7 +515,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
                 if (async)
                     ignite.message(grp).withAsync().sendOrdered(MESSAGE_TOPIC, value(i), 2000);
                 else
-                    ignite.message(grp).withAsync().sendOrdered(MESSAGE_TOPIC, value(i), 2000);
+                    ignite.message(grp).sendOrdered(MESSAGE_TOPIC, value(i), 2000);
             }
 
             assertTrue(LATCH.await(10, TimeUnit.SECONDS));


[29/34] ignite git commit: ignite-3727 test fix

Posted by sb...@apache.org.
ignite-3727 test fix


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

Branch: refs/heads/ignite-3727-2
Commit: af46faf58957e55819dd0fe2664b753fa119975a
Parents: c9ed5c6
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Thu Sep 15 11:47:47 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Thu Sep 15 11:47:47 2016 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/messaging/GridMessagingSelfTest.java    | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/af46faf5/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
index 07f9fe4..38e3064 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
@@ -1086,6 +1086,8 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
 
         Assert.assertTrue(starFut.isDone());
 
+        discoSpi.blockCustomEvent();
+
         message(ignite1.cluster().forRemotes()).send(topic, "msg1");
 
         GridTestUtils.waitForCondition(new PA() {


[30/34] ignite git commit: ignite-3727 fix method args

Posted by sb...@apache.org.
ignite-3727 fix method args


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

Branch: refs/heads/ignite-3727-2
Commit: ac58bb3bcc21e055f8eb185b2c4d6dc664177b27
Parents: af46faf
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Thu Sep 15 16:54:20 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Thu Sep 15 16:54:20 2016 +0300

----------------------------------------------------------------------
 .../ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ac58bb3b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java
index 769bdc4..d1b9eaa 100644
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java
@@ -117,7 +117,7 @@ public class HadoopShuffle extends HadoopComponent {
     private void send0(UUID nodeId, Object msg) throws IgniteCheckedException {
         ClusterNode node = ctx.kernalContext().discovery().node(nodeId);
 
-        ctx.kernalContext().io().sendUserMessage(F.asList(node), msg, GridTopic.TOPIC_HADOOP, false, 0);
+        ctx.kernalContext().io().sendUserMessage(F.asList(node), msg, GridTopic.TOPIC_HADOOP, false, 0, false);
     }
 
     /**


[28/34] ignite git commit: ignite-3727 added test for multi-thread sendOrdered

Posted by sb...@apache.org.
ignite-3727  added test for multi-thread sendOrdered


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

Branch: refs/heads/ignite-3727-2
Commit: c9ed5c6583e803110a34fc0126ae4e5af56331b1
Parents: de59444
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Wed Sep 14 12:58:20 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Wed Sep 14 12:58:20 2016 +0300

----------------------------------------------------------------------
 .../messaging/IgniteMessagingSendAsyncTest.java | 191 ++++++++++++++++++-
 1 file changed, 183 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c9ed5c65/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
index 4cfff38..73baeba 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
@@ -18,16 +18,20 @@
 package org.apache.ignite.messaging;
 
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteMessaging;
 import org.apache.ignite.lang.IgniteBiInClosure;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.jsr166.ThreadLocalRandom8;
 import org.junit.Assert;
 
 import java.io.Serializable;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
+import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicReference;
 
@@ -45,6 +49,9 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
      */
     private final String msgStr = "message";
 
+    /** Count threads for multi-thread test */
+    private final int threads = 10;
+
     /**
      * {@inheritDoc}
      */
@@ -183,6 +190,174 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
+     */
+    public void testSendOrderedDefaultModeMultiThreads() throws Exception {
+        Ignite ignite = startGrid(1);
+
+        sendOrderedMultiThreads(ignite.message());
+    }
+
+    /**
+     */
+    public void testSendOrderedAsyncModeMultiThreads() throws Exception {
+        Ignite ignite = startGrid(1);
+
+        sendOrderedMultiThreads(ignite.message().withAsync());
+    }
+
+    /**
+     */
+    public void testSendOrderedDefaultModeMultiThreadsWith2Node() throws Exception {
+        Ignite ignite1 = startGrid(1);
+        Ignite ignite2 = startGrid(2);
+
+        sendOrderedMultiThreadsWith2Node(ignite2, ignite1.message());
+    }
+
+    /**
+     */
+    public void testSendOrderedAsyncModeMultiThreadsWith2Node() throws Exception {
+        Ignite ignite1 = startGrid(1);
+        Ignite ignite2 = startGrid(2);
+
+        sendOrderedMultiThreadsWith2Node(ignite2, ignite1.message().withAsync());
+    }
+
+    /**
+     * @param ignite2 Ignite 2.
+     * @param ignMsg IgniteMessage.
+     */
+    private void sendOrderedMultiThreadsWith2Node(
+            final Ignite ignite2,
+            final IgniteMessaging ignMsg
+    ) throws InterruptedException {
+        final ConcurrentMap<String, List<String>> expMsg = Maps.newConcurrentMap();
+        final ConcurrentMap<String, List<String>> actlMsg = Maps.newConcurrentMap();
+
+        final List<String> msgs = orderedMsg();
+
+        sendOrderedMultiThreadsWith2Node(ignite2, ignMsg, expMsg, actlMsg, msgs);
+
+    }
+
+
+    /**
+     * @param ignMsg IgniteMessage.
+     */
+    private void sendOrderedMultiThreads(
+            final IgniteMessaging ignMsg
+    ) throws InterruptedException {
+        final ConcurrentMap<String, List<String>> expMsg = Maps.newConcurrentMap();
+        final ConcurrentMap<String, List<String>> actlMsg = Maps.newConcurrentMap();
+
+        final List<String> msgs = orderedMsg();
+
+        sendOrderedMultiThreads(ignMsg, expMsg, actlMsg, msgs);
+
+    }
+
+    /**
+     * @param ignite2 Ignite 2.
+     * @param ignMsg Ignite for send message.
+     * @param expMsg Expected messages map.
+     * @param actlMsg Actual message map.
+     * @param msgs List msgs.
+     */
+    private void sendOrderedMultiThreadsWith2Node(
+            final Ignite ignite2,
+            final IgniteMessaging ignMsg,
+            final ConcurrentMap<String, List<String>> expMsg,
+            final ConcurrentMap<String, List<String>> actlMsg,
+            final List<String> msgs
+    ) throws InterruptedException {
+        final CountDownLatch latch = new CountDownLatch(threads * msgs.size());
+
+        final ConcurrentMap<String, List<String>> actlMsgNode2 = Maps.newConcurrentMap();
+
+        ignite2.message().localListen(TOPIC, new IgniteBiPredicate<UUID, Message>() {
+            @Override public boolean apply(UUID uuid, Message msg) {
+                actlMsgNode2.putIfAbsent(msg.threadName, Lists.<String>newArrayList());
+                actlMsgNode2.get(msg.threadName).add(msg.message);
+                latch.countDown();
+                return true;
+            }
+        });
+
+        sendOrderedMultiThreads(ignMsg, expMsg, actlMsg, msgs);
+
+        latch.await();
+
+        assertEquals(expMsg.size(), actlMsgNode2.size());
+
+        for (Map.Entry<String, List<String>> entry : expMsg.entrySet())
+            assertTrue(actlMsgNode2.get(entry.getKey()).equals(entry.getValue()));
+    }
+
+    /**
+     * @param ignMsg Ignite for send message.
+     * @param expMsg Expected messages map.
+     * @param actlMsg Actual message map.
+     * @param msgs List msgs.
+     */
+    private void sendOrderedMultiThreads(
+            final IgniteMessaging ignMsg,
+            final ConcurrentMap<String, List<String>> expMsg,
+            final ConcurrentMap<String, List<String>> actlMsg,
+            final List<String> msgs
+    ) throws InterruptedException {
+        final CountDownLatch latch = new CountDownLatch(threads * msgs.size());
+
+        ignMsg.localListen(TOPIC, new IgniteBiPredicate<UUID, Message>() {
+            @Override public boolean apply(UUID uuid, Message msg) {
+                actlMsg.putIfAbsent(msg.threadName, Lists.<String>newArrayList());
+                actlMsg.get(msg.threadName).add(msg.message);
+                latch.countDown();
+                return true;
+            }
+        });
+
+        for (int i = 0; i < threads; i++)
+            new Thread(new Runnable() {
+                @Override public void run() {
+                    String thdName = Thread.currentThread().getName();
+                    List<String> exp = Lists.newArrayList();
+                    expMsg.put(thdName, exp);
+
+                    for (String msg : msgs) {
+                        exp.add(msg);
+                        ignMsg.sendOrdered(TOPIC, new Message(thdName, msg), 1000);
+                    }
+
+                }
+            }).start();
+
+        latch.await();
+
+        assertEquals(expMsg.size(), actlMsg.size());
+
+        for (Map.Entry<String, List<String>> entry : expMsg.entrySet())
+            assertTrue(actlMsg.get(entry.getKey()).equals(entry.getValue()));
+    }
+
+    /**
+     */
+    private class Message implements Serializable{
+        /** Thread name. */
+        private String threadName;
+        /** Message. */
+        private String message;
+
+        /**
+         * @param threadName Thread name.
+         * @param msg Message.
+         */
+        private Message(String threadName, String msg) {
+            this.threadName = threadName;
+            this.message = msg;
+        }
+    }
+
+    /**
      * @param igniteMsg Ignite message.
      * @param msgStr    Message string.
      * @param cls       Callback for compare result.
@@ -277,22 +452,22 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
      * @param msgs  messages for send.
      * @param cls Callback for compare result.
      */
-    private void sendOrdered(
+    private<T> void sendOrdered(
             final IgniteMessaging igniteMsg,
-            final List<String> msgs,
-            final IgniteBiInClosure<List<String>,List<Thread>> cls
+            final List<T> msgs,
+            final IgniteBiInClosure<List<T>,List<Thread>> cls
     ) throws InterruptedException {
 
         final CountDownLatch latch = new CountDownLatch(msgs.size());
 
-        final List<String> received = Lists.newArrayList();
+        final List<T> received = Lists.newArrayList();
         final List<Thread> threads = Lists.newArrayList();
 
-        for (String msg : msgs)
+        for (T msg : msgs)
             igniteMsg.sendOrdered(TOPIC, msg, 1000);
 
-        igniteMsg.localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
-            @Override public boolean apply(UUID uuid, String s) {
+        igniteMsg.localListen(TOPIC, new IgniteBiPredicate<UUID, T>() {
+            @Override public boolean apply(UUID uuid, T s) {
                 received.add(s);
                 threads.add(Thread.currentThread());
                 latch.countDown();
@@ -312,7 +487,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
         final List<String> msgs = Lists.newArrayList();
 
         for (int i = 0; i < 1000; i++)
-            msgs.add("" + i);
+            msgs.add("" + ThreadLocalRandom8.current().nextInt());
 
         return msgs;
     }


[10/34] ignite git commit: IGNITE-2539 fix code version pre 1.8 now 1.7

Posted by sb...@apache.org.
IGNITE-2539 fix code version pre 1.8 now 1.7


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

Branch: refs/heads/ignite-3727-2
Commit: ecd3d93e69e4ffaceec49052181ad7a80b321152
Parents: 7e60424
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Thu Sep 8 19:08:32 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Thu Sep 8 19:08:32 2016 +0300

----------------------------------------------------------------------
 .../affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ecd3d93e/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java b/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
index c39ebf0..72854f7 100644
--- a/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
@@ -145,9 +145,9 @@ public class IssuesIGNITE2539ReproduceTest extends GridCommonAbstractTest {
 
         for (int j = 0; j < itr; j++) {
 
-            AtomicReference<Throwable> exc = new AtomicReference<>();
+            final AtomicReference<Throwable> exc = new AtomicReference<>();
 
-            AtomicBoolean asyncRun = new AtomicBoolean(true);
+            final AtomicBoolean asyncRun = new AtomicBoolean(true);
 
             for (Thread worker : getExchangeWorkerThread()) {
                 worker.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {


[34/34] ignite git commit: Merge remote-tracking branch 'remotes/origin/master' into ignite-3727-2

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/master' into ignite-3727-2

# Conflicts:
#	modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/HadoopShuffle.java


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

Branch: refs/heads/ignite-3727-2
Commit: 68f2d38e3fda3adedc522d363bb02c2100a9a084
Parents: 91e8340
Author: sboikov <sb...@gridgain.com>
Authored: Tue Feb 14 16:08:26 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Feb 14 16:08:26 2017 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/IgniteMessaging.java |  10 +-
 .../ignite/internal/IgniteMessagingImpl.java    |   2 +-
 .../managers/communication/GridIoManager.java   |   3 +-
 ...niteMessagingConfigVariationFullApiTest.java |  20 +-
 .../messaging/IgniteMessagingSendAsyncTest.java | 230 +++++++++++--------
 5 files changed, 164 insertions(+), 101 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/68f2d38e/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
index b0cbe1d..d769eb2f 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteMessaging.java
@@ -77,8 +77,9 @@ public interface IgniteMessaging extends IgniteAsyncSupport {
 
     /**
      * Sends given message with specified topic to the nodes in the underlying cluster group.
-     * When you invoke method, all listeners who were registered on topic in the local node, will executing in the same thread
-     * by default, or if you use {@link #withAsync()}, listeners will execute through thread pool, and current thread will not be block.
+     * When you invoke method, all listeners who were registered on topic in the local node, will executing in
+     * the same thread by default, or if you use {@link #withAsync()}, listeners will execute
+     * through thread pool, and current thread will not be block.
      *
      * @param topic Topic to send to, {@code null} for default topic.
      * @param msg Message to send.
@@ -89,8 +90,9 @@ public interface IgniteMessaging extends IgniteAsyncSupport {
 
     /**
      * Sends given messages with the specified topic to the nodes in the underlying cluster group.
-     * When you invoke method, all listeners who were registered on topic in the local node, will executing in the same thread
-     * by default, or if you use {@link #withAsync()}, listeners will execute through thread pool, and current thread will not be block.
+     * When you invoke method, all listeners who were registered on topic in the local node, will executing
+     * in the same thread by default, or if you use {@link #withAsync()}, listeners will execute
+     * through thread pool, and current thread will not be block.
      *
      * @param topic Topic to send to, {@code null} for default topic.
      * @param msgs Messages to send. Order of the sending is undefined. If the method produces

http://git-wip-us.apache.org/repos/asf/ignite/blob/68f2d38e/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java
index e586aa2..541fad4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteMessagingImpl.java
@@ -137,7 +137,7 @@ public class IgniteMessagingImpl extends AsyncSupportAdapter<IgniteMessaging>
             if (timeout == 0)
                 timeout = ctx.config().getNetworkTimeout();
 
-            ctx.io().sendUserMessage(snapshot, msg, topic, true, timeout, isAsync());
+            ctx.io().sendUserMessage(snapshot, msg, topic, true, timeout, false);
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);

http://git-wip-us.apache.org/repos/asf/ignite/blob/68f2d38e/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index cda1321..50a4efe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -685,7 +685,8 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
                 case UTILITY_CACHE_POOL:
                 case MARSH_CACHE_POOL:
                 case IDX_POOL:
-                case IGFS_POOL: {
+                case IGFS_POOL:
+                {
                     if (msg.isOrdered())
                         processOrderedMessage(nodeId, msg, plc, msgC);
                     else

http://git-wip-us.apache.org/repos/asf/ignite/blob/68f2d38e/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
index f66535a..c6b46d2 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/messaging/IgniteMessagingConfigVariationFullApiTest.java
@@ -289,6 +289,8 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
     /**
      * Single server test.
+     *
+     * @param async Async message send flag.
      * @throws Exception If failed.
      */
     private void localServerInternal(boolean async) throws Exception {
@@ -345,6 +347,8 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
     /**
      * Server sends a message and client receives it.
+     *
+     * @param async Async message send flag.
      * @throws Exception If failed.
      */
     private void serverClientMessage(boolean async) throws Exception {
@@ -359,6 +363,8 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
     /**
      * Client sends a message and client receives it.
+     *
+     * @param async Async message send flag.
      * @throws Exception If failed.
      */
     private void clientClientMessage(boolean async) throws Exception {
@@ -373,7 +379,8 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
 
     /**
      * Client sends a message and client receives it.
-     * @param async flag async mode
+     *
+     * @param async Async message send flag.
      * @throws Exception If failed.
      */
     private void clientServerMessage(boolean async) throws Exception {
@@ -389,6 +396,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
     /**
      * @param ignite Ignite.
      * @param grp Cluster group.
+     * @param async Async message send flag.
      * @throws Exception If fail.
      */
     private void registerListenerAndSendMessages(Ignite ignite, ClusterGroup grp, boolean async) throws Exception {
@@ -443,7 +451,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
     }
 
     /**
-     *
+     * @param async Async message send flag.
      * @throws Exception If fail.
      */
     private void orderedMessage(boolean async) throws Exception {
@@ -457,7 +465,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
     }
 
     /**
-     *
+     * @param async Async message send flag.
      * @throws Exception If fail.
      */
     private void clientServerOrderedMessage(boolean async) throws Exception {
@@ -471,7 +479,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
     }
 
     /**
-     *
+     * @param async Async message send flag.
      * @throws Exception If fail.
      */
     private void clientClientOrderedMessage(boolean async) throws Exception {
@@ -485,7 +493,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
     }
 
     /**
-     *
+     * @param async Async message send flag.
      * @throws Exception If fail.
      */
     private void serverClientOrderedMessage(boolean async) throws Exception {
@@ -501,6 +509,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
     /**
      * @param ignite Ignite.
      * @param grp Cluster group.
+     * @param async Async message send flag.
      * @throws Exception If fail.
      */
     private void registerListenerAndSendOrderedMessages(Ignite ignite, ClusterGroup grp, boolean async) throws Exception {
@@ -531,6 +540,7 @@ public class IgniteMessagingConfigVariationFullApiTest extends IgniteConfigVaria
      * @param nodeSnd Sender Ignite node.
      * @param grp Cluster group.
      * @param msg Message.
+     * @param async Async message send flag.
      */
     private void sendMessage(Ignite nodeSnd, ClusterGroup grp, Object msg, boolean async) {
         if (async)

http://git-wip-us.apache.org/repos/asf/ignite/blob/68f2d38e/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
index 73baeba..75e7d22 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
@@ -19,14 +19,6 @@ package org.apache.ignite.messaging;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteMessaging;
-import org.apache.ignite.lang.IgniteBiInClosure;
-import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-import org.jsr166.ThreadLocalRandom8;
-import org.junit.Assert;
-
 import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
@@ -34,36 +26,54 @@ import java.util.UUID;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicReference;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteMessaging;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.lang.IgniteBiInClosure;
+import org.apache.ignite.lang.IgniteBiPredicate;
+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;
+import org.jsr166.ThreadLocalRandom8;
+import org.junit.Assert;
 
 /**
  *
  */
 public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest implements Serializable {
-    /**
-     * Topic name.
-     */
+    /** */
+    private static final TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+
+    /** Threads number for multi-thread tests. */
+    private static final int THREADS = 10;
+
+    /** */
     private final String TOPIC = "topic";
 
-    /**
-     * Message string.
-     */
+    /** */
     private final String msgStr = "message";
 
-    /** Count threads for multi-thread test */
-    private final int threads = 10;
+    /** {@inheritDoc} */
+    @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+        IgniteConfiguration cfg = super.getConfiguration(gridName);
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override protected void afterTest() throws Exception {
-        super.afterTest();
+        ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(ipFinder);
+
+        return cfg;
+    }
 
+    /** {@inheritDoc} */
+    @Override protected void afterTest() throws Exception {
         stopAllGrids();
+
+        super.afterTest();
     }
 
     /**
-     * Test for check, that if use default mode, local listeners execute
-     * in the same thread. 1 node in topology.
+     * Checks if use default mode, local listeners execute in the same thread, 1 node in topology.
+     *
+     * @throws Exception If failed.
      */
     public void testSendDefaultMode() throws Exception {
         Ignite ignite1 = startGrid(1);
@@ -77,8 +87,9 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * Test for check, that if use async mode, local listeners execute
-     * in another thread(through pool). 1 node in topology.
+     * Checks if use async mode, local listeners execute in another thread, 1 node in topology.
+     *
+     * @throws Exception If failed.
      */
     public void testSendAsyncMode() throws Exception {
         Ignite ignite1 = startGrid(1);
@@ -92,14 +103,15 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * Test for check, that if use default mode, local listeners execute
-     * in the same thread. 2 node in topology.
+     * Checks if use default mode, local listeners execute in the same thread, 2 nodes in topology.
+     *
+     * @throws Exception If failed.
      */
-    public void testSendDefaultMode2Node() throws Exception {
+    public void testSendDefaultMode2Nodes() throws Exception {
         Ignite ignite1 = startGrid(1);
         Ignite ignite2 = startGrid(2);
 
-        sendWith2Node(ignite2, ignite1.message(), msgStr, new IgniteBiInClosure<String, Thread> () {
+        sendWith2Nodes(ignite2, ignite1.message(), msgStr, new IgniteBiInClosure<String, Thread> () {
             @Override public  void apply(String msg, Thread thread) {
                 Assert.assertEquals(Thread.currentThread(), thread);
                 Assert.assertEquals(msgStr, msg);
@@ -108,14 +120,15 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * Test for check, that if use async mode, local listeners execute
-     * in another thread(through pool). 2 node in topology.
+     * Checks if use async mode, local listeners execute in another thread, 2 nodes in topology.
+     *
+     * @throws Exception If failed.
      */
     public void testSendAsyncMode2Node() throws Exception {
         Ignite ignite1 = startGrid(1);
         Ignite ignite2 = startGrid(2);
 
-        sendWith2Node(ignite2, ignite1.message().withAsync(), msgStr,  new IgniteBiInClosure<String, Thread> () {
+        sendWith2Nodes(ignite2, ignite1.message().withAsync(), msgStr,  new IgniteBiInClosure<String, Thread> () {
             @Override public  void apply(String msg, Thread thread) {
                 Assert.assertTrue(!Thread.currentThread().equals(thread));
                 Assert.assertEquals(msgStr, msg);
@@ -124,12 +137,14 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * Test for check, that SendOrdered work in our thread pool. 1 node in topology.
+     * Checks that sendOrdered works in thread pool, 1 node in topology.
+     *
+     * @throws Exception If failed.
      */
     public void testSendOrderedDefaultMode() throws Exception {
         Ignite ignite1 = startGrid(1);
 
-        final List<String> msgs = orderedMsg();
+        final List<String> msgs = orderedMessages();
 
         sendOrdered(ignite1.message(), msgs, new IgniteBiInClosure< List<String>,  List<Thread>> () {
             @Override public void apply(List<String> received, List<Thread> threads) {
@@ -140,12 +155,14 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * Test for check, that SendOrdered work in our thread pool. 1 node in topology.
+     * Checks that sendOrdered work in thread pool, 1 node in topology.
+     *
+     * @throws Exception If failed.
      */
     public void testSendOrderedAsyncMode() throws Exception {
         Ignite ignite1 = startGrid(1);
 
-        final List<String> msgs = orderedMsg();
+        final List<String> msgs = orderedMessages();
 
         sendOrdered(ignite1.message().withAsync(), msgs, new IgniteBiInClosure< List<String>,  List<Thread>> () {
             @Override public void apply(List<String> received, List<Thread> threads) {
@@ -156,13 +173,15 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * Test for check, that SendOrdered work in our thread pool. 2 node in topology.
+     * Checks that sendOrdered work in thread pool, 2 nodes in topology.
+     *
+     * @throws Exception If failed.
      */
     public void testSendOrderedDefaultMode2Node() throws Exception {
         Ignite ignite1 = startGrid(1);
         Ignite ignite2 = startGrid(2);
 
-        final List<String> msgs = orderedMsg();
+        final List<String> msgs = orderedMessages();
 
         sendOrderedWith2Node(ignite2, ignite1.message(), msgs, new IgniteBiInClosure<List<String>, List<Thread>>() {
             @Override public void apply(List<String> received, List<Thread> threads) {
@@ -173,13 +192,15 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * Test for check, that SendOrdered work in our thread pool. 2 node in topology.
+     * Checks that sendOrdered work in thread pool, 2 nodes in topology.
+     *
+     * @throws Exception If failed.
      */
     public void testSendOrderedAsyncMode2Node() throws Exception {
         Ignite ignite1 = startGrid(1);
         Ignite ignite2 = startGrid(2);
 
-        final List<String> msgs = orderedMsg();
+        final List<String> msgs = orderedMessages();
 
         sendOrderedWith2Node(ignite2, ignite1.message().withAsync(), msgs, new IgniteBiInClosure<List<String>, List<Thread>>() {
             @Override public void apply(List<String> received, List<Thread> threads) {
@@ -190,6 +211,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
+     * @throws Exception If failed.
      */
     public void testSendOrderedDefaultModeMultiThreads() throws Exception {
         Ignite ignite = startGrid(1);
@@ -198,6 +220,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
+     * @throws Exception If failed.
      */
     public void testSendOrderedAsyncModeMultiThreads() throws Exception {
         Ignite ignite = startGrid(1);
@@ -206,6 +229,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
+     * @throws Exception If failed.
      */
     public void testSendOrderedDefaultModeMultiThreadsWith2Node() throws Exception {
         Ignite ignite1 = startGrid(1);
@@ -215,6 +239,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
+     * @throws Exception If failed.
      */
     public void testSendOrderedAsyncModeMultiThreadsWith2Node() throws Exception {
         Ignite ignite1 = startGrid(1);
@@ -224,44 +249,45 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * @param ignite2 Ignite 2.
+     * @param ignite2 Second node.
      * @param ignMsg IgniteMessage.
+     * @throws Exception If failed.
      */
     private void sendOrderedMultiThreadsWith2Node(
             final Ignite ignite2,
             final IgniteMessaging ignMsg
-    ) throws InterruptedException {
+    ) throws Exception {
         final ConcurrentMap<String, List<String>> expMsg = Maps.newConcurrentMap();
         final ConcurrentMap<String, List<String>> actlMsg = Maps.newConcurrentMap();
 
-        final List<String> msgs = orderedMsg();
+        final List<String> msgs = orderedMessages();
 
         sendOrderedMultiThreadsWith2Node(ignite2, ignMsg, expMsg, actlMsg, msgs);
 
     }
 
-
     /**
-     * @param ignMsg IgniteMessage.
+     * @param ignMsg IgniteMessaging.
+     * @throws Exception If failed.
      */
     private void sendOrderedMultiThreads(
             final IgniteMessaging ignMsg
-    ) throws InterruptedException {
+    ) throws Exception {
         final ConcurrentMap<String, List<String>> expMsg = Maps.newConcurrentMap();
         final ConcurrentMap<String, List<String>> actlMsg = Maps.newConcurrentMap();
 
-        final List<String> msgs = orderedMsg();
+        final List<String> msgs = orderedMessages();
 
         sendOrderedMultiThreads(ignMsg, expMsg, actlMsg, msgs);
-
     }
 
     /**
-     * @param ignite2 Ignite 2.
+     * @param ignite2 Second node.
      * @param ignMsg Ignite for send message.
      * @param expMsg Expected messages map.
      * @param actlMsg Actual message map.
-     * @param msgs List msgs.
+     * @param msgs List of messages.
+     * @throws Exception If failed.
      */
     private void sendOrderedMultiThreadsWith2Node(
             final Ignite ignite2,
@@ -269,16 +295,19 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
             final ConcurrentMap<String, List<String>> expMsg,
             final ConcurrentMap<String, List<String>> actlMsg,
             final List<String> msgs
-    ) throws InterruptedException {
-        final CountDownLatch latch = new CountDownLatch(threads * msgs.size());
+    ) throws Exception {
+        final CountDownLatch latch = new CountDownLatch(THREADS * msgs.size());
 
         final ConcurrentMap<String, List<String>> actlMsgNode2 = Maps.newConcurrentMap();
 
         ignite2.message().localListen(TOPIC, new IgniteBiPredicate<UUID, Message>() {
             @Override public boolean apply(UUID uuid, Message msg) {
                 actlMsgNode2.putIfAbsent(msg.threadName, Lists.<String>newArrayList());
-                actlMsgNode2.get(msg.threadName).add(msg.message);
+
+                actlMsgNode2.get(msg.threadName).add(msg.msg);
+
                 latch.countDown();
+
                 return true;
             }
         });
@@ -297,34 +326,41 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
      * @param ignMsg Ignite for send message.
      * @param expMsg Expected messages map.
      * @param actlMsg Actual message map.
-     * @param msgs List msgs.
+     * @param msgs List of messages.
+     * @throws Exception If failed.
      */
     private void sendOrderedMultiThreads(
             final IgniteMessaging ignMsg,
             final ConcurrentMap<String, List<String>> expMsg,
             final ConcurrentMap<String, List<String>> actlMsg,
             final List<String> msgs
-    ) throws InterruptedException {
-        final CountDownLatch latch = new CountDownLatch(threads * msgs.size());
+    ) throws Exception {
+        final CountDownLatch latch = new CountDownLatch(THREADS * msgs.size());
 
         ignMsg.localListen(TOPIC, new IgniteBiPredicate<UUID, Message>() {
             @Override public boolean apply(UUID uuid, Message msg) {
                 actlMsg.putIfAbsent(msg.threadName, Lists.<String>newArrayList());
-                actlMsg.get(msg.threadName).add(msg.message);
+
+                actlMsg.get(msg.threadName).add(msg.msg);
+
                 latch.countDown();
+
                 return true;
             }
         });
 
-        for (int i = 0; i < threads; i++)
+        for (int i = 0; i < THREADS; i++)
             new Thread(new Runnable() {
                 @Override public void run() {
                     String thdName = Thread.currentThread().getName();
+
                     List<String> exp = Lists.newArrayList();
+
                     expMsg.put(thdName, exp);
 
                     for (String msg : msgs) {
                         exp.add(msg);
+
                         ignMsg.sendOrdered(TOPIC, new Message(thdName, msg), 1000);
                     }
 
@@ -340,40 +376,26 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     */
-    private class Message implements Serializable{
-        /** Thread name. */
-        private String threadName;
-        /** Message. */
-        private String message;
-
-        /**
-         * @param threadName Thread name.
-         * @param msg Message.
-         */
-        private Message(String threadName, String msg) {
-            this.threadName = threadName;
-            this.message = msg;
-        }
-    }
-
-    /**
+     * @param ignite2 Second node.
      * @param igniteMsg Ignite message.
      * @param msgStr    Message string.
      * @param cls       Callback for compare result.
+     * @throws Exception If failed.
      */
-    private void sendWith2Node(
+    private void sendWith2Nodes(
             final Ignite ignite2,
             final IgniteMessaging igniteMsg,
             final String msgStr,
-            final IgniteBiInClosure<String,Thread>  cls
+            final IgniteBiInClosure<String, Thread>  cls
     ) throws Exception {
         final CountDownLatch latch = new CountDownLatch(1);
 
         ignite2.message().localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
             @Override public boolean apply(UUID uuid, String msg) {
                 Assert.assertEquals(msgStr, msg);
+
                 latch.countDown();
+
                 return true;
             }
         });
@@ -384,15 +406,16 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * @param igniteMsg Ignite message.
+     * @param igniteMsg Ignite messaging.
      * @param msgStr    Message string.
      * @param cls       Callback for compare result.
+     * @throws Exception If failed.
      */
     private void send(
            final IgniteMessaging igniteMsg,
            final String msgStr,
-           final IgniteBiInClosure<String,Thread> cls
-    ) throws InterruptedException {
+           final IgniteBiInClosure<String, Thread> cls
+    ) throws Exception {
         final CountDownLatch latch = new CountDownLatch(1);
 
         final AtomicReference<Thread> thread = new AtomicReference<>();
@@ -401,8 +424,11 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
         igniteMsg.localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
             @Override public boolean apply(UUID uuid, String msgStr) {
                 thread.set(Thread.currentThread());
+
                 val.set(msgStr);
+
                 latch.countDown();
+
                 return true;
             }
         });
@@ -415,18 +441,18 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * @param ignite2 Ignite 2.
+     * @param ignite2 Second node.
      * @param igniteMsg Ignite message.
      * @param msgs messages for send.
      * @param cls  Callback for compare result.
+     * @throws Exception If failed.
      */
     private void sendOrderedWith2Node(
             final Ignite ignite2,
             final IgniteMessaging igniteMsg,
             final List<String> msgs,
-            final IgniteBiInClosure<List<String>,List<Thread>> cls
+            final IgniteBiInClosure<List<String>, List<Thread>> cls
     ) throws Exception {
-
         final CountDownLatch latch = new CountDownLatch(msgs.size());
 
         final List<String> received = Lists.newArrayList();
@@ -434,7 +460,9 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
         ignite2.message().localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
             @Override public boolean apply(UUID uuid, String msg) {
                 received.add(msg);
+
                 latch.countDown();
+
                 return true;
             }
         });
@@ -444,20 +472,19 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
         latch.await();
 
         assertTrue(msgs.equals(received));
-
     }
 
     /**
      * @param igniteMsg Ignite message.
      * @param msgs  messages for send.
      * @param cls Callback for compare result.
+     * @throws Exception If failed.
      */
     private<T> void sendOrdered(
             final IgniteMessaging igniteMsg,
             final List<T> msgs,
             final IgniteBiInClosure<List<T>,List<Thread>> cls
-    ) throws InterruptedException {
-
+    ) throws Exception {
         final CountDownLatch latch = new CountDownLatch(msgs.size());
 
         final List<T> received = Lists.newArrayList();
@@ -469,8 +496,11 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
         igniteMsg.localListen(TOPIC, new IgniteBiPredicate<UUID, T>() {
             @Override public boolean apply(UUID uuid, T s) {
                 received.add(s);
+
                 threads.add(Thread.currentThread());
+
                 latch.countDown();
+
                 return true;
             }
         });
@@ -481,14 +511,34 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest impleme
     }
 
     /**
-     * @return List ordered messages
+     * @return List of ordered messages
      */
-    private List<String> orderedMsg() {
+    private List<String> orderedMessages() {
         final List<String> msgs = Lists.newArrayList();
 
         for (int i = 0; i < 1000; i++)
-            msgs.add("" + ThreadLocalRandom8.current().nextInt());
+            msgs.add(String.valueOf(ThreadLocalRandom8.current().nextInt()));
 
         return msgs;
     }
+
+    /**
+     *
+     */
+    private static class Message implements Serializable{
+        /** Thread name. */
+        private final String threadName;
+
+        /** Message. */
+        private final String msg;
+
+        /**
+         * @param threadName Thread name.
+         * @param msg Message.
+         */
+        private Message(String threadName, String msg) {
+            this.threadName = threadName;
+            this.msg = msg;
+        }
+    }
 }


[23/34] ignite git commit: Revert "IGNITE-1678 code + test+ benchmark config"

Posted by sb...@apache.org.
Revert "IGNITE-1678  code + test+ benchmark config"

This reverts commit 784958bf6e0e8e81191af498f6a993b2bfd78204.


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

Branch: refs/heads/ignite-3727-2
Commit: 980df4ea1be385867c69d2fa977f22d808701aca
Parents: 21e0093
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Tue Sep 13 14:27:08 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Tue Sep 13 14:27:08 2016 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/IgniteAtomicSequence.java |  15 -
 .../configuration/AtomicConfiguration.java      |  25 -
 .../datastructures/DataStructuresProcessor.java | 111 ++--
 .../GridCacheAtomicSequenceImpl.java            | 384 +++++++-----
 ...AtomicSequenceMultiThreadedAbstractTest.java | 579 -------------------
 .../GridCacheSequenceApiSelfAbstractTest.java   | 101 +---
 ...titionedAtomicSequenceMultiThreadedTest.java | 313 +++++++++-
 ...GridCachePartitionedSequenceApiSelfTest.java |   4 -
 ...plicatedAtomicSequenceMultiThreadedTest.java |  33 --
 .../GridCacheReplicatedSequenceApiSelfTest.java |   4 -
 .../IgniteCacheDataStructuresSelfTestSuite.java |   2 -
 .../cache/IgniteAtomicSequenceBenchmark.java    |  45 --
 12 files changed, 625 insertions(+), 991 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java b/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java
index aa1cbdf..a1e1392 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteAtomicSequence.java
@@ -118,21 +118,6 @@ public interface IgniteAtomicSequence extends Closeable {
     public void batchSize(int size);
 
     /**
-     * Gets local reserve percentage for this atomic sequence. When a reserve percentage of a batch size
-     * is reached when sequence starts a new reservation in background.
-     *
-     * @return Sequence reserve pecentage.
-     */
-    public int reservePercentage();
-
-    /**
-     * Sets local reserve percentage for this atomic sequence.
-     *
-     * @param percentage Reserve pecentage. Must be between 0 and 100.
-     */
-    public void reservePercentage(int percentage);
-
-    /**
      * Gets status of atomic sequence.
      *
      * @return {@code true} if atomic sequence was removed from cache, {@code false} otherwise.

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
index ad96b73..6649b5e 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/AtomicConfiguration.java
@@ -36,9 +36,6 @@ public class AtomicConfiguration {
     /** Default atomic sequence reservation size. */
     public static final int DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE = 1000;
 
-    /** Default atomic sequence reservation size. */
-    public static final int DFLT_ATOMIC_SEQUENCE_RESERVE_PERCENTAGE = 80;
-
     /** Default batch size for all cache's sequences. */
     private int seqReserveSize = DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE;
 
@@ -48,9 +45,6 @@ public class AtomicConfiguration {
     /** Number of backups. */
     private int backups = DFLT_BACKUPS;
 
-    /** Atomic sequence reservation percentage. */
-    private int atomicSeqReservePercentage = DFLT_ATOMIC_SEQUENCE_RESERVE_PERCENTAGE;
-
     /**
      * @return Number of backup nodes.
      */
@@ -104,25 +98,6 @@ public class AtomicConfiguration {
         this.seqReserveSize = seqReserveSize;
     }
 
-    /**
-     * Gets reserve percentage for configuration. When a reserve percentage of a batch size
-     * is reached when sequence starts a new reservation in background.
-     *
-     * @return Atomic sequence reservation percentage.
-     */
-    public int getAtomicSequenceReservePercentage() {
-        return atomicSeqReservePercentage;
-    }
-
-    /**
-     * Sets reserve percentage for configuration.
-     * *
-     * @param atomicSeqReservePercentage Atomic sequence reservation percentage.
-     */
-    public void setAtomicSequenceReservePercentage(int atomicSeqReservePercentage) {
-        this.atomicSeqReservePercentage = atomicSeqReservePercentage;
-    }
-
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(AtomicConfiguration.class, this);

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
index eb81ca2..1cad22f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
@@ -36,7 +36,6 @@ import javax.cache.event.EventType;
 import javax.cache.processor.EntryProcessor;
 import javax.cache.processor.EntryProcessorException;
 import javax.cache.processor.MutableEntry;
-
 import org.apache.ignite.IgniteAtomicLong;
 import org.apache.ignite.IgniteAtomicReference;
 import org.apache.ignite.IgniteAtomicSequence;
@@ -358,9 +357,9 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                     if (seqVal == null && !create)
                         return null;
 
-        /*            // We should use offset because we already reserved left side of range.
+                    // We should use offset because we already reserved left side of range.
                     long off = atomicCfg.getAtomicSequenceReserveSize() > 1 ?
-                        atomicCfg.getAtomicSequenceReserveSize() - 1 : 1;*/
+                        atomicCfg.getAtomicSequenceReserveSize() - 1 : 1;
 
                     long upBound;
                     long locCntr;
@@ -368,16 +367,18 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                     if (seqVal == null) {
                         locCntr = initVal;
 
-                        upBound = locCntr + atomicCfg.getAtomicSequenceReserveSize();
+                        upBound = locCntr + off;
 
-                        seqVal = new GridCacheAtomicSequenceValue(upBound);
+                        // Global counter must be more than reserved region.
+                        seqVal = new GridCacheAtomicSequenceValue(upBound + 1);
                     }
                     else {
                         locCntr = seqVal.get();
 
-                        upBound = locCntr + atomicCfg.getAtomicSequenceReserveSize();
+                        upBound = locCntr + off;
 
-                        seqVal.set(upBound);
+                        // Global counter must be more than reserved region.
+                        seqVal.set(upBound + 1);
                     }
 
                     // Update global counter.
@@ -389,7 +390,6 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                         seqView,
                         dsCacheCtx,
                         atomicCfg.getAtomicSequenceReserveSize(),
-                        atomicCfg.getAtomicSequenceReservePercentage(),
                         locCntr,
                         upBound);
 
@@ -448,7 +448,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * Gets an atomic long from cache or creates one if it's not cached.
      *
      * @param name Name of atomic long.
-     * @param initVal Initial value for atomic long. If atomic long already cached, {@code initVal} will be ignored.
+     * @param initVal Initial value for atomic long. If atomic long already cached, {@code initVal}
+     *        will be ignored.
      * @param create If {@code true} atomic long will be created in case it is not in cache.
      * @return Atomic long.
      * @throws IgniteCheckedException If loading failed.
@@ -525,7 +526,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         final DataStructureInfo dsInfo,
         final boolean create,
         Class<? extends T> cls)
-        throws IgniteCheckedException {
+        throws IgniteCheckedException
+    {
         Map<String, DataStructureInfo> dsMap = utilityCache.get(DATA_STRUCTURES_KEY);
 
         if (!create && (dsMap == null || !dsMap.containsKey(dsInfo.name)))
@@ -605,7 +607,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         String name,
         DataStructureType type,
         @Nullable final IgniteInClosureX<T> afterRmv)
-        throws IgniteCheckedException {
+        throws IgniteCheckedException
+    {
         Map<String, DataStructureInfo> dsMap = utilityCache.get(DATA_STRUCTURES_KEY);
 
         if (dsMap == null || !dsMap.containsKey(name))
@@ -653,8 +656,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * Gets an atomic reference from cache or creates one if it's not cached.
      *
      * @param name Name of atomic reference.
-     * @param initVal Initial value for atomic reference. If atomic reference already cached, {@code initVal} will be
-     * ignored.
+     * @param initVal Initial value for atomic reference. If atomic reference already cached, {@code initVal}
+     *        will be ignored.
      * @param create If {@code true} atomic reference will be created in case it is not in cache.
      * @return Atomic reference.
      * @throws IgniteCheckedException If loading failed.
@@ -663,7 +666,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
     public final <T> IgniteAtomicReference<T> atomicReference(final String name,
         final T initVal,
         final boolean create)
-        throws IgniteCheckedException {
+        throws IgniteCheckedException
+    {
         A.notNull(name, "name");
 
         awaitInitialization();
@@ -757,10 +761,10 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * Gets an atomic stamped from cache or creates one if it's not cached.
      *
      * @param name Name of atomic stamped.
-     * @param initVal Initial value for atomic stamped. If atomic stamped already cached, {@code initVal} will be
-     * ignored.
-     * @param initStamp Initial stamp for atomic stamped. If atomic stamped already cached, {@code initStamp} will be
-     * ignored.
+     * @param initVal Initial value for atomic stamped. If atomic stamped already cached, {@code initVal}
+     *        will be ignored.
+     * @param initStamp Initial stamp for atomic stamped. If atomic stamped already cached, {@code initStamp}
+     *        will be ignored.
      * @param create If {@code true} atomic stamped will be created in case it is not in cache.
      * @return Atomic stamped.
      * @throws IgniteCheckedException If loading failed.
@@ -1001,7 +1005,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
     @Nullable private <T> T getCollection(final IgniteClosureX<GridCacheContext, T> c,
         final DataStructureInfo dsInfo,
         boolean create)
-        throws IgniteCheckedException {
+        throws IgniteCheckedException
+    {
         awaitInitialization();
 
         Map<String, DataStructureInfo> dsMap = utilityCache.get(DATA_STRUCTURES_KEY);
@@ -1078,7 +1083,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
     @Nullable private static IgniteCheckedException validateDataStructure(
         @Nullable Map<String, DataStructureInfo> dsMap,
         DataStructureInfo info,
-        boolean create) {
+        boolean create)
+    {
         if (dsMap == null)
             return null;
 
@@ -1096,17 +1102,20 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      *
      * @param name Name of the latch.
      * @param cnt Initial count.
-     * @param autoDel {@code True} to automatically delete latch from cache when its count reaches zero.
-     * @param create If {@code true} latch will be created in case it is not in cache, if it is {@code false} all
-     * parameters except {@code name} are ignored.
-     * @return Count down latch for the given name or {@code null} if it is not found and {@code create} is false.
+     * @param autoDel {@code True} to automatically delete latch from cache when
+     *      its count reaches zero.
+     * @param create If {@code true} latch will be created in case it is not in cache,
+     *      if it is {@code false} all parameters except {@code name} are ignored.
+     * @return Count down latch for the given name or {@code null} if it is not found and
+     *      {@code create} is false.
      * @throws IgniteCheckedException If operation failed.
      */
     public IgniteCountDownLatch countDownLatch(final String name,
         final int cnt,
         final boolean autoDel,
         final boolean create)
-        throws IgniteCheckedException {
+        throws IgniteCheckedException
+    {
         A.notNull(name, "name");
 
         awaitInitialization();
@@ -1192,12 +1201,12 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                 try (IgniteInternalTx tx = CU.txStartInternal(dsCacheCtx, dsView, PESSIMISTIC, REPEATABLE_READ)) {
                     // Check correctness type of removable object.
                     GridCacheCountDownLatchValue val =
-                        cast(dsView.get(key), GridCacheCountDownLatchValue.class);
+                            cast(dsView.get(key), GridCacheCountDownLatchValue.class);
 
                     if (val != null) {
                         if (val.get() > 0) {
                             throw new IgniteCheckedException("Failed to remove count down latch " +
-                                "with non-zero count: " + val.get());
+                                    "with non-zero count: " + val.get());
                         }
 
                         dsView.remove(key);
@@ -1223,9 +1232,10 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * @param name Name of the semaphore.
      * @param cnt Initial count.
      * @param failoverSafe {@code True} FailoverSafe parameter.
-     * @param create If {@code true} semaphore will be created in case it is not in cache, if it is {@code false} all
-     * parameters except {@code name} are ignored.
-     * @return Semaphore for the given name or {@code null} if it is not found and {@code create} is false.
+     * @param create If {@code true} semaphore will be created in case it is not in cache,
+     *      if it is {@code false} all parameters except {@code name} are ignored.
+     * @return Semaphore for the given name or {@code null} if it is not found and
+     *      {@code create} is false.
      * @throws IgniteCheckedException If operation failed.
      */
     public IgniteSemaphore semaphore(final String name, final int cnt, final boolean failoverSafe, final boolean create)
@@ -1341,11 +1351,11 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
      * @param failoverSafe Flag indicating behaviour in case of failure.
      * @param fair Flag indicating fairness policy of this lock.
      * @param create If {@code true} reentrant lock will be created in case it is not in cache.
-     * @return ReentrantLock for the given name or {@code null} if it is not found and {@code create} is false.
+     * @return ReentrantLock for the given name or {@code null} if it is not found and
+     *      {@code create} is false.
      * @throws IgniteCheckedException If operation failed.
      */
-    public IgniteLock reentrantLock(final String name, final boolean failoverSafe, final boolean fair,
-        final boolean create)
+    public IgniteLock reentrantLock(final String name, final boolean failoverSafe, final boolean fair, final boolean create)
         throws IgniteCheckedException {
         A.notNull(name, "name");
 
@@ -1522,7 +1532,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         /** {@inheritDoc} */
         @Override public void onUpdated(
             Iterable<CacheEntryEvent<? extends GridCacheInternalKey, ? extends GridCacheInternal>> evts)
-            throws CacheEntryListenerException {
+            throws CacheEntryListenerException
+        {
             for (CacheEntryEvent<? extends GridCacheInternalKey, ? extends GridCacheInternal> evt : evts) {
                 if (evt.getEventType() == EventType.CREATED || evt.getEventType() == EventType.UPDATED) {
                     GridCacheInternal val0 = evt.getValue();
@@ -1592,8 +1603,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                         }
                         else if (sem != null) {
                             U.error(log, "Failed to cast object " +
-                                "[expected=" + IgniteSemaphore.class.getSimpleName() +
-                                ", actual=" + sem.getClass() + ", value=" + sem + ']');
+                                    "[expected=" + IgniteSemaphore.class.getSimpleName() +
+                                    ", actual=" + sem.getClass() + ", value=" + sem + ']');
                         }
                     }
                     else if (val0 instanceof GridCacheLockState) {
@@ -1750,18 +1761,6 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         if (atomicCfg == null)
             throw new IgniteException("Atomic data structure can not be created, " +
                 "need to provide IgniteAtomicConfiguration.");
-
-        if (atomicCfg.getAtomicSequenceReserveSize() <= 0)
-            throw new IgniteException(
-                "Atomic sequence can not be created, " +
-                    "reserve size must be more than 0, but atomicSequenceReserveSize: " + atomicCfg.getAtomicSequenceReserveSize()
-            );
-
-        if (atomicCfg.getAtomicSequenceReservePercentage() > 100)
-            throw new IgniteException(
-                "Atomic sequence can not be created, reserve percentage must have value " +
-                    "between 0 and 100, but atomicSequenceReservePercentage: " + atomicCfg.getAtomicSequenceReservePercentage()
-            );
     }
 
     /**
@@ -1780,7 +1779,7 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
                 col.cfg.getBackups() == cfg.getBackups() &&
                 col.cfg.getOffHeapMaxMemory() == cfg.getOffHeapMaxMemory() &&
                 ((col.cfg.getNodeFilter() == null && cfg.getNodeFilter() == null) ||
-                    (col.cfg.getNodeFilter() != null && col.cfg.getNodeFilter().equals(cfg.getNodeFilter()))))
+                (col.cfg.getNodeFilter() != null && col.cfg.getNodeFilter().equals(cfg.getNodeFilter()))))
                 return col.cacheName;
         }
 
@@ -1789,8 +1788,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
 
     /**
      * @param c Closure to run.
-     * @return Closure return value.
      * @throws IgniteCheckedException If failed.
+     * @return Closure return value.
      */
     private static <T> T retryTopologySafe(IgniteOutClosureX<T> c) throws IgniteCheckedException {
         for (int i = 0; i < GridCacheAdapter.MAX_RETRIES; i++) {
@@ -2145,7 +2144,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         @Override public IgniteCheckedException process(
             MutableEntry<CacheDataStructuresConfigurationKey, Map<String, DataStructureInfo>> entry,
             Object... args)
-            throws EntryProcessorException {
+            throws EntryProcessorException
+        {
             Map<String, DataStructureInfo> map = entry.getValue();
 
             if (map == null) {
@@ -2223,7 +2223,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         /** {@inheritDoc} */
         @Override public T2<String, IgniteCheckedException> process(
             MutableEntry<CacheDataStructuresConfigurationKey, Map<String, DataStructureInfo>> entry,
-            Object... args) {
+            Object... args)
+        {
             Map<String, DataStructureInfo> map = entry.getValue();
 
             CollectionInfo colInfo = (CollectionInfo)info.info;
@@ -2302,7 +2303,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         /** {@inheritDoc} */
         @Override public String process(
             MutableEntry<CacheDataStructuresCacheKey, List<CacheCollectionInfo>> entry,
-            Object... args) {
+            Object... args)
+        {
             List<CacheCollectionInfo> list = entry.getValue();
 
             if (list == null) {
@@ -2378,7 +2380,8 @@ public final class DataStructuresProcessor extends GridProcessorAdapter {
         /** {@inheritDoc} */
         @Override public T2<Boolean, IgniteCheckedException> process(
             MutableEntry<CacheDataStructuresConfigurationKey, Map<String, DataStructureInfo>> entry,
-            Object... args) {
+            Object... args)
+        {
             Map<String, DataStructureInfo> map = entry.getValue();
 
             if (map == null)

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
index 77bbb41..7474f46 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
@@ -17,21 +17,36 @@
 
 package org.apache.ignite.internal.processors.datastructures;
 
-import org.apache.ignite.*;
-import org.apache.ignite.internal.*;
-import org.apache.ignite.internal.processors.cache.*;
-import org.apache.ignite.internal.processors.cache.transactions.*;
-import org.apache.ignite.internal.util.future.*;
-import org.apache.ignite.internal.util.typedef.internal.*;
-import org.apache.ignite.lang.*;
-
-import java.io.*;
-import java.util.concurrent.*;
-import java.util.concurrent.locks.*;
-
-import static org.apache.ignite.internal.util.typedef.internal.CU.*;
-import static org.apache.ignite.transactions.TransactionConcurrency.*;
-import static org.apache.ignite.transactions.TransactionIsolation.*;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.ObjectStreamException;
+import java.util.concurrent.Callable;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.processors.cache.GridCacheContext;
+import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
+import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
+import org.apache.ignite.internal.util.future.GridFinishedFuture;
+import org.apache.ignite.internal.util.typedef.internal.A;
+import org.apache.ignite.internal.util.typedef.internal.CU;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteBiTuple;
+import org.jetbrains.annotations.Nullable;
+
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.ignite.internal.util.typedef.internal.CU.retryTopologySafe;
+import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
+import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
 
 /**
  * Cache sequence implementation.
@@ -72,32 +87,26 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
     /** Local value of sequence. */
     private long locVal;
 
-    /** Upper bound of local counter. */
-    private long upBound; // TODO should be not included
+    /**  Upper bound of local counter. */
+    private long upBound;
 
-    /** Reserved bottom bound of local counter (included). */
-    private long reservedBottomBound;
-
-    /** Reserved upper bound of local counter (not included). */
-    private long reservedUpBound;
-
-    /** A limit after which a new reservation should be done. */
-    private long newReservationLine;
-
-    /** Whether reserveFuture already processed or not. */
-    private boolean isReserveFutResultsProcessed = true;
-
-    /** default 80% */
-    private volatile int percentage;
-
-    /** Sequence batch size */
+    /**  Sequence batch size */
     private volatile int batchSize;
 
     /** Synchronization lock. */
     private final Lock lock = new ReentrantLock();
 
-    /** Reservation future. */
-    private IgniteInternalFuture<?> reservationFut = new GridFinishedFuture<>();
+    /** Await condition. */
+    private Condition cond = lock.newCondition();
+
+    /** Callable for execution {@link #incrementAndGet} operation in async and sync mode.  */
+    private final Callable<Long> incAndGetCall = internalUpdate(1, true);
+
+    /** Callable for execution {@link #getAndIncrement} operation in async and sync mode.  */
+    private final Callable<Long> getAndIncCall = internalUpdate(1, false);
+
+    /** Add and get cache call guard. */
+    private final AtomicBoolean updateGuard = new AtomicBoolean();
 
     /**
      * Empty constructor required by {@link Externalizable}.
@@ -122,15 +131,13 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         IgniteInternalCache<GridCacheInternalKey, GridCacheAtomicSequenceValue> seqView,
         GridCacheContext ctx,
         int batchSize,
-        int percentage,
         long locVal,
-        long upBound) {
+        long upBound)
+    {
         assert key != null;
         assert seqView != null;
         assert ctx != null;
-        assert batchSize > 0 : "BatchSize: " + batchSize;
         assert locVal <= upBound;
-        assert percentage >= 0 && percentage <= 100 : "Percentage: " + percentage;
 
         this.batchSize = batchSize;
         this.ctx = ctx;
@@ -139,9 +146,6 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         this.upBound = upBound;
         this.locVal = locVal;
         this.name = name;
-        this.percentage = percentage;
-
-        newReservationLine = locVal + (batchSize * percentage / 100);
 
         log = ctx.logger(getClass());
     }
@@ -168,7 +172,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
     /** {@inheritDoc} */
     @Override public long incrementAndGet() {
         try {
-            return internalUpdate(1, true);
+            return internalUpdate(1, incAndGetCall, true);
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);
@@ -178,7 +182,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
     /** {@inheritDoc} */
     @Override public long getAndIncrement() {
         try {
-            return internalUpdate(1, false);
+            return internalUpdate(1, getAndIncCall, false);
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);
@@ -190,7 +194,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         A.ensure(l > 0, " Parameter mustn't be less then 1: " + l);
 
         try {
-            return internalUpdate(l, true);
+            return internalUpdate(l, null, true);
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);
@@ -202,7 +206,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         A.ensure(l > 0, " Parameter mustn't be less then 1: " + l);
 
         try {
-            return internalUpdate(l, false);
+            return internalUpdate(l, null, false);
         }
         catch (IgniteCheckedException e) {
             throw U.convertException(e);
@@ -213,134 +217,162 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
      * Synchronous sequence update operation. Will add given amount to the sequence value.
      *
      * @param l Increment amount.
+     * @param updateCall Cache call that will update sequence reservation count in accordance with l.
      * @param updated If {@code true}, will return sequence value after update, otherwise will return sequence value
-     * prior to update.
+     *      prior to update.
      * @return Sequence value.
      * @throws IgniteCheckedException If update failed.
      */
     @SuppressWarnings("SignalWithoutCorrespondingAwait")
-    private long internalUpdate(final long l, final boolean updated) throws IgniteCheckedException {
+    private long internalUpdate(long l, @Nullable Callable<Long> updateCall, boolean updated) throws IgniteCheckedException {
+        checkRemoved();
+
         assert l > 0;
 
-        while (true) {
-            checkRemoved();
+        lock.lock();
 
-            lock.lock(); // TODO locks here?
+        try {
+            // If reserved range isn't exhausted.
+            if (locVal + l <= upBound) {
+                long curVal = locVal;
 
-            try {
-                if (locVal + l >= newReservationLine && isReserveFutResultsProcessed && reservationFut.isDone())
-                    reservationFut = runAsyncReservation(0);
+                locVal += l;
 
-                // If reserved range isn't exhausted.
-                if (locVal + l < upBound) {
-                    long curVal = locVal;
+                return updated ? locVal : curVal;
+            }
+        }
+        finally {
+            lock.unlock();
+        }
 
-                    locVal += l;
+        if (updateCall == null)
+            updateCall = internalUpdate(l, updated);
 
-                    return updated ? locVal : curVal;
+        while (true) {
+            if (updateGuard.compareAndSet(false, true)) {
+                try {
+                    // This call must be outside lock.
+                    return CU.outTx(updateCall, ctx);
                 }
+                finally {
+                    lock.lock();
 
-                if (!isReserveFutResultsProcessed && reservationFut.isDone()) {
-                    isReserveFutResultsProcessed = true;
+                    try {
+                        updateGuard.set(false);
 
-                    if (locVal + l < reservedUpBound) {
-                        long curVal = locVal;
+                        cond.signalAll();
+                    }
+                    finally {
+                        lock.unlock();
+                    }
+                }
+            }
+            else {
+                lock.lock();
 
-                        locVal = (locVal + l < reservedBottomBound) ? reservedBottomBound : locVal + l;
+                try {
+                    while (locVal >= upBound && updateGuard.get())
+                        U.await(cond, 500, MILLISECONDS);
 
-                        upBound = reservedUpBound;
+                    checkRemoved();
 
-                        return updated ? locVal : curVal;
-                    }
-                    else {
-                        long diff = locVal + l - reservedUpBound;
+                    // If reserved range isn't exhausted.
+                    if (locVal + l <= upBound) {
+                        long curVal = locVal;
 
-                        long off = (diff / batchSize) * batchSize;
+                        locVal += l;
 
-                        reservationFut = runAsyncReservation(off);
+                        return updated ? locVal : curVal;
                     }
                 }
+                finally {
+                    lock.unlock();
+                }
             }
-            finally {
-                lock.unlock();
-            }
-
-            // If reserved range is exhausted.
-            reservationFut.get();
         }
     }
 
     /**
-     * Runs async reservation of new range for current node.
+     * Asynchronous sequence update operation. Will add given amount to the sequence value.
      *
-     * @param off Offset.
-     * @return Future.
+     * @param l Increment amount.
+     * @param updateCall Cache call that will update sequence reservation count in accordance with l.
+     * @param updated If {@code true}, will return sequence value after update, otherwise will return sequence value
+     *      prior to update.
+     * @return Future indicating sequence value.
+     * @throws IgniteCheckedException If update failed.
      */
-    private IgniteInternalFuture<?> runAsyncReservation(final long off) {
-        assert off >= 0 : "Offset: " + off;
-
-        return ctx.kernalContext().closure().runLocalSafe(new Runnable() {
-            @Override public void run() {
-                Callable<Void> reserveCall = retryTopologySafe(new Callable<Void>() {
-                    @Override public Void call() throws Exception {
-                        try (IgniteInternalTx tx = CU.txStartInternal(ctx, seqView, PESSIMISTIC, REPEATABLE_READ)) {
-                            GridCacheAtomicSequenceValue seq = seqView.get(key);
-
-                            checkRemoved();
-
-                            assert seq != null;
+    @SuppressWarnings("SignalWithoutCorrespondingAwait")
+    private IgniteInternalFuture<Long> internalUpdateAsync(long l, @Nullable Callable<Long> updateCall, boolean updated)
+        throws IgniteCheckedException {
+        checkRemoved();
 
-                            long newUpBound = -1;
+        A.ensure(l > 0, " Parameter mustn't be less then 1: " + l);
 
-                            lock.lock();
+        lock.lock();
 
-                            try {
-                                assert isReserveFutResultsProcessed;
+        try {
+            // If reserved range isn't exhausted.
+            if (locVal + l <= upBound) {
+                long curVal = locVal;
 
-                                isReserveFutResultsProcessed = false;
+                locVal += l;
 
-                                long curGlobalVal = seq.get();
+                return new GridFinishedFuture<>(updated ? locVal : curVal);
+            }
+        }
+        finally {
+            lock.unlock();
+        }
 
-                                reservedBottomBound = curGlobalVal + off;
+        if (updateCall == null)
+            updateCall = internalUpdate(l, updated);
 
-                                newUpBound = reservedBottomBound + batchSize;
+        while (true) {
+            if (updateGuard.compareAndSet(false, true)) {
+                try {
+                    // This call must be outside lock.
+                    return ctx.closures().callLocalSafe(updateCall, true);
+                }
+                finally {
+                    lock.lock();
 
-                                reservedUpBound = newUpBound;
+                    try {
+                        updateGuard.set(false);
 
-                                newReservationLine = reservedBottomBound + (batchSize * percentage / 100);
-                            }
-                            finally {
-                                lock.unlock();
-                            }
+                        cond.signalAll();
+                    }
+                    finally {
+                        lock.unlock();
+                    }
+                }
+            }
+            else {
+                lock.lock();
 
-                            seq.set(newUpBound);
+                try {
+                    while (locVal >= upBound && updateGuard.get())
+                        U.await(cond, 500, MILLISECONDS);
 
-                            seqView.put(key, seq);
+                    checkRemoved();
 
-                            tx.commit();
-                        }
-                        catch (Error | Exception e) {
-                            U.error(log, "Failed to get and add: " + this, e);
+                    // If reserved range isn't exhausted.
+                    if (locVal + l <= upBound) {
+                        long curVal = locVal;
 
-                            throw e;
-                        }
+                        locVal += l;
 
-                        return null;
+                        return new GridFinishedFuture<>(updated ? locVal : curVal);
                     }
-                });
-
-                try {
-                    CU.outTx(reserveCall, ctx);
                 }
-                catch (IgniteCheckedException e) {
-                    throw new IgniteException(e);
+                finally {
+                    lock.unlock();
                 }
             }
-        }, /*sys pool*/ false);
+        }
     }
 
-    /**
-     * Get local batch size for this sequences.
+    /** Get local batch size for this sequences.
      *
      * @return Sequence batch size.
      */
@@ -366,25 +398,6 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         }
     }
 
-    /** {@inheritDoc} */
-    @Override public int reservePercentage() {
-        return percentage;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void reservePercentage(int percentage) {
-        A.ensure(percentage >= 0 && percentage <= 100, "Invalid reserve percentage: " + percentage);
-
-        lock.lock();
-
-        try {
-            this.percentage = percentage;
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
     /**
      * Check removed status.
      *
@@ -452,6 +465,89 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
         }
     }
 
+    /**
+     * Method returns callable for execution all update operations in async and sync mode.
+     *
+     * @param l Value will be added to sequence.
+     * @param updated If {@code true}, will return updated value, if {@code false}, will return previous value.
+     * @return Callable for execution in async and sync mode.
+     */
+    @SuppressWarnings("TooBroadScope")
+    private Callable<Long> internalUpdate(final long l, final boolean updated) {
+        return retryTopologySafe(new Callable<Long>() {
+            @Override public Long call() throws Exception {
+                try (IgniteInternalTx tx = CU.txStartInternal(ctx, seqView, PESSIMISTIC, REPEATABLE_READ)) {
+                    GridCacheAtomicSequenceValue seq = seqView.get(key);
+
+                    checkRemoved();
+
+                    assert seq != null;
+
+                    long curLocVal;
+
+                    long newUpBound;
+
+                    lock.lock();
+
+                    try {
+                        curLocVal = locVal;
+
+                        // If local range was already reserved in another thread.
+                        if (locVal + l <= upBound) {
+                            long retVal = locVal;
+
+                            locVal += l;
+
+                            return updated ? locVal : retVal;
+                        }
+
+                        long curGlobalVal = seq.get();
+
+                        long newLocVal;
+
+                        /* We should use offset because we already reserved left side of range.*/
+                        long off = batchSize > 1 ? batchSize - 1 : 1;
+
+                        // Calculate new values for local counter, global counter and upper bound.
+                        if (curLocVal + l >= curGlobalVal) {
+                            newLocVal = curLocVal + l;
+
+                            newUpBound = newLocVal + off;
+                        }
+                        else {
+                            newLocVal = curGlobalVal;
+
+                            newUpBound = newLocVal + off;
+                        }
+
+                        locVal = newLocVal;
+                        upBound = newUpBound;
+
+                        if (updated)
+                            curLocVal = newLocVal;
+                    }
+                    finally {
+                        lock.unlock();
+                    }
+
+                    // Global counter must be more than reserved upper bound.
+                    seq.set(newUpBound + 1);
+
+                    seqView.put(key, seq);
+
+                    tx.commit();
+
+                    return curLocVal;
+                }
+                catch (Error | Exception e) {
+                    U.error(log, "Failed to get and add: " + this, e);
+
+                    throw e;
+                }
+            }
+        });
+    }
+
     /** {@inheritDoc} */
     @Override public void writeExternal(ObjectOutput out) throws IOException {
         out.writeObject(ctx.kernalContext());

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicSequenceMultiThreadedAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicSequenceMultiThreadedAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicSequenceMultiThreadedAbstractTest.java
deleted file mode 100644
index 10b57e8..0000000
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheAtomicSequenceMultiThreadedAbstractTest.java
+++ /dev/null
@@ -1,579 +0,0 @@
-/*
- * 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.datastructures;
-
-import java.util.Random;
-import java.util.UUID;
-import org.apache.ignite.IgniteAtomicSequence;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.configuration.AtomicConfiguration;
-import org.apache.ignite.internal.processors.datastructures.GridCacheAtomicSequenceImpl;
-import org.apache.ignite.internal.util.lang.GridAbsPredicate;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.testframework.GridTestUtils;
-
-/**
- * Cache partitioned multi-threaded tests.
- */
-public abstract class GridCacheAtomicSequenceMultiThreadedAbstractTest extends IgniteAtomicsAbstractTest {
-    /** Number of threads for multithreaded test. */
-    private static final int THREAD_NUM = 30;
-
-    /** Number of iterations per thread for multithreaded test. */
-    private static final int ITERATION_NUM = 10000;
-
-    /** {@inheritDoc} */
-    @Override protected int gridCount() {
-        return 1;
-    }
-
-    /** {@inheritDoc} */
-    @Override protected AtomicConfiguration atomicConfiguration() {
-        AtomicConfiguration cfg = super.atomicConfiguration();
-
-        cfg.setBackups(1);
-        cfg.setAtomicSequenceReserveSize(10);
-
-        return cfg;
-    }
-
-    /** @throws Exception If failed. */
-    public void testValues() throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
-
-        // Local reservations.
-        assertEquals(1, seq.incrementAndGet());
-        assertEquals(1, seq.getAndIncrement()); // Seq = 2
-        assertEquals(3L, seq.incrementAndGet());
-        assertEquals(3L, seq.getAndIncrement()); // Seq=4
-
-        assertEquals(4, seq.getAndAdd(3));
-        assertEquals(9, seq.addAndGet(2));
-
-        assertEquals(new Long(9L), U.field(seq, "locVal"));
-        assertEquals(new Long(10L), U.field(seq, "upBound"));
-
-        // Cache calls.
-        assertEquals(10, seq.incrementAndGet());
-
-        assertEquals(new Long(10L), U.field(seq, "locVal"));
-        assertEquals(new Long(20L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(19L), U.field(seq, "locVal"));
-        assertEquals(new Long(20L), U.field(seq, "upBound"));
-
-        assertEquals(20L, seq.incrementAndGet());
-
-        assertEquals(new Long(20L), U.field(seq, "locVal"));
-        assertEquals(new Long(30L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(29L), U.field(seq, "locVal"));
-        assertEquals(new Long(30L), U.field(seq, "upBound"));
-
-        assertEquals(29, seq.getAndIncrement());
-
-        assertEquals(new Long(30L), U.field(seq, "locVal"));
-        assertEquals(new Long(40L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(39L), U.field(seq, "locVal"));
-        assertEquals(new Long(40L), U.field(seq, "upBound"));
-
-        assertEquals(39L, seq.getAndIncrement());
-
-        assertEquals(new Long(40L), U.field(seq, "locVal"));
-        assertEquals(new Long(50L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(49L), U.field(seq, "locVal"));
-        assertEquals(new Long(50L), U.field(seq, "upBound"));
-
-        assertEquals(50, seq.addAndGet(1));
-
-        assertEquals(new Long(50L), U.field(seq, "locVal"));
-        assertEquals(new Long(60L), U.field(seq, "upBound"));
-
-        seq.addAndGet(9);
-
-        assertEquals(new Long(59L), U.field(seq, "locVal"));
-        assertEquals(new Long(60L), U.field(seq, "upBound"));
-
-        assertEquals(59, seq.getAndAdd(1));
-
-        assertEquals(new Long(60L), U.field(seq, "locVal"));
-        assertEquals(new Long(70L), U.field(seq, "upBound"));
-    }
-
-    /** @throws Exception If failed. */
-    public void testValues2() throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 10, true);
-
-        assertSeqFields(seq, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-
-        assertEquals(17, seq.addAndGet(7));
-
-        assertSeqFields(seq, /*locVal*/ 17, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-
-        assertEquals(18, seq.incrementAndGet());
-
-        GridTestUtils.waitForCondition(new GridAbsPredicate() {
-            @Override public boolean apply() {
-                return !F.eq(U.field(seq, "isReserveFutResultsProcessed"), true);
-            }
-        }, 1000);
-
-        assertSeqFields(seq, /*locVal*/ 18, /*upBound*/ 20, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-
-        assertEquals(19, seq.incrementAndGet());
-
-        assertSeqFields(seq, /*locVal*/ 19, /*upBound*/ 20, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-
-        assertEquals(20, seq.incrementAndGet());
-
-        assertSeqFields(seq, /*locVal*/ 20, /*upBound*/ 30, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-    }
-
-    /** @throws Exception If failed. */
-    public void testValuesPercentage50() throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
-
-        seq.reservePercentage(50);
-
-        assertSeqFields(seq, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-
-        // Exhaust a first reserved range to get recalculated values according to new reserve percentage.
-        assertEquals(10, seq.addAndGet(10));
-
-        assertSeqFields(seq, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 15, /*resBottomBound*/ 10, /*resUpBound*/ 20);
-
-        assertEquals(15, seq.addAndGet(5));
-
-        GridTestUtils.waitForCondition(new GridAbsPredicate() {
-            @Override public boolean apply() {
-                return !F.eq(U.field(seq, "isReserveFutResultsProcessed"), true);
-            }
-        }, 1000);
-
-        assertSeqFields(seq, /*locVal*/ 15, /*upBound*/ 20, /*resBound*/ 25, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-    }
-
-    /** @throws Exception If failed. */
-    public void testValuesPercentage0() throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
-
-        seq.reservePercentage(0);
-
-        assertSeqFields(seq, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-
-        // Exhaust a first reserved range to get recalculated values according to new reserve percentage.
-        assertEquals(10, seq.addAndGet(10));
-
-        assertSeqFields(seq, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 10, /*resBottomBound*/ 10, /*resUpBound*/ 20);
-
-        assertEquals(11, seq.addAndGet(1));
-
-        GridTestUtils.waitForCondition(new GridAbsPredicate() {
-            @Override public boolean apply() {
-                return !F.eq(U.field(seq, "isReserveFutResultsProcessed"), true);
-            }
-        }, 1000);
-
-        assertSeqFields(seq, /*locVal*/ 11, /*upBound*/ 20, /*resBound*/ 20, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-
-        assertEquals(12, seq.incrementAndGet());
-
-        assertSeqFields(seq, /*locVal*/ 12, /*upBound*/ 20, /*resBound*/ 20, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-
-        assertEquals(20, seq.addAndGet(8));
-
-        assertSeqFields(seq, /*locVal*/ 20, /*upBound*/ 30, /*resBound*/ 20, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-    }
-
-    /** @throws Exception If failed. */
-    public void testValuesPercentage100() throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
-
-        seq.reservePercentage(100);
-
-        assertSeqFields(seq, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-
-        // Exhaust a first reserved range to get recalculated values according to new reserve percentage.
-        assertEquals(10, seq.addAndGet(10));
-
-        assertSeqFields(seq, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 20, /*resBottomBound*/ 10, /*resUpBound*/ 20);
-
-        assertEquals(19, seq.addAndGet(9));
-
-        assertSeqFields(seq, /*locVal*/ 19, /*upBound*/ 20, /*resBound*/ 20, /*resBottomBound*/ 10, /*resUpBound*/ 20);
-
-        assertEquals(20, seq.incrementAndGet());
-
-        assertSeqFields(seq, /*locVal*/ 20, /*upBound*/ 30, /*resBound*/ 30, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-    }
-
-    /** @throws Exception If failed. */
-    public void testValuesDoubleReservation() throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
-
-        assertSeqFields(seq, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-
-        assertEquals(30, seq.addAndGet(30));
-    }
-
-    /** @throws Exception If failed. */
-    public void testValues2Nodes() throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        startGrid(1);
-
-        try {
-            final GridCacheAtomicSequenceImpl seq1 = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
-            final GridCacheAtomicSequenceImpl seq2 = (GridCacheAtomicSequenceImpl)grid(1).atomicSequence(seqName, 0, false);
-
-            assertSeqFields(seq1, /*locVal*/ 0, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-            assertSeqFields(seq2, /*locVal*/ 10, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-
-            assertEquals(1, seq1.incrementAndGet());
-            assertEquals(11, seq2.incrementAndGet());
-
-            assertSeqFields(seq1, /*locVal*/ 1, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-            assertSeqFields(seq2, /*locVal*/ 11, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-
-            assertEquals(7, seq1.addAndGet(6));
-            assertEquals(17, seq2.addAndGet(6));
-
-            assertSeqFields(seq1, /*locVal*/ 7, /*upBound*/ 10, /*resBound*/ 8, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-            assertSeqFields(seq2, /*locVal*/ 17, /*upBound*/ 20, /*resBound*/ 18, /*resBottomBound*/ 0, /*resUpBound*/ 0);
-
-            // New reservation (reverse order)
-            assertEquals(18, seq2.incrementAndGet());
-
-            assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicate() {
-                @Override public boolean apply() {
-                    return !F.eq(U.field(seq2, "isReserveFutResultsProcessed"), true);
-                }
-            }, 1000));
-
-            assertEquals(8, seq1.incrementAndGet());
-
-            assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicate() {
-                @Override public boolean apply() {
-                    return !F.eq(U.field(seq1, "isReserveFutResultsProcessed"), true);
-                }
-            }, 1000));
-
-            assertSeqFields(seq1, /*locVal*/ 8, /*upBound*/ 10, /*resBound*/ 38, /*resBottomBound*/ 30, /*resUpBound*/ 40);
-            assertSeqFields(seq2, /*locVal*/ 18, /*upBound*/ 20, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-
-            assertEquals(30, seq1.addAndGet(7));
-            assertEquals(20, seq2.addAndGet(2));
-
-            assertSeqFields(seq1, /*locVal*/ 30, /*upBound*/ 40, /*resBound*/ 38, /*resBottomBound*/ 30, /*resUpBound*/ 40);
-            assertSeqFields(seq2, /*locVal*/ 20, /*upBound*/ 30, /*resBound*/ 28, /*resBottomBound*/ 20, /*resUpBound*/ 30);
-        }
-        finally {
-            stopGrid(1);
-        }
-    }
-
-    /**
-     * @param seq Sequence.
-     * @param locVal Local value.
-     * @param upBound Up bound.
-     * @param newReservationLine Reservation bnound.
-     * @param reservedBottomBound Reservation bottom bound.
-     * @param reservedUpBound Reservation up bound.
-     */
-    private void assertSeqFields(GridCacheAtomicSequenceImpl seq, long locVal, long upBound, long newReservationLine,
-        long reservedBottomBound, long reservedUpBound) {
-        assertEquals(new Long(locVal), U.field(seq, "locVal"));
-        assertEquals(new Long(upBound), U.field(seq, "upBound"));
-        assertEquals(new Long(newReservationLine), U.field(seq, "newReservationLine"));
-        assertEquals(new Long(reservedBottomBound), U.field(seq, "reservedBottomBound"));
-        assertEquals(new Long(reservedUpBound), U.field(seq, "reservedUpBound"));
-    }
-
-    /** @throws Exception If failed. */
-    public void testValues2NodesDoubleReservation() throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        startGrid(1);
-
-        try {
-            final GridCacheAtomicSequenceImpl seq1 = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
-            final GridCacheAtomicSequenceImpl seq2 = (GridCacheAtomicSequenceImpl)grid(1).atomicSequence(seqName, 0, false);
-
-            assertEquals(1, seq1.incrementAndGet());
-            assertEquals(11, seq2.incrementAndGet());
-
-            assertEquals(new Long(1L), U.field(seq1, "locVal"));
-            assertEquals(new Long(10L), U.field(seq1, "upBound"));
-            assertEquals(new Long(11L), U.field(seq2, "locVal"));
-            assertEquals(new Long(20L), U.field(seq2, "upBound"));
-
-            assertEquals(31, seq2.addAndGet(20));
-
-            assertEquals(new Long(1L), U.field(seq1, "locVal"));
-            assertEquals(new Long(10L), U.field(seq1, "upBound"));
-            assertEquals(new Long(31L), U.field(seq2, "locVal"));
-            assertEquals(new Long(40L), U.field(seq2, "upBound"));
-
-            // Jump
-            assertEquals(40, seq1.addAndGet(23));
-        }
-        finally {
-            stopGrid(1);
-        }
-    }
-
-    /** @throws Exception If failed. */
-    public void testUpdatedSync() throws Exception {
-        checkUpdate(true);
-    }
-
-    /** @throws Exception If failed. */
-    public void testPreviousSync() throws Exception {
-        checkUpdate(false);
-    }
-
-    /** @throws Exception If failed. */
-    public void testIncrementAndGet() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.incrementAndGet();
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testIncrementAndGet2Nodes() throws Exception {
-        startGrid(1);
-
-        try {
-            String seqName = UUID.randomUUID().toString();
-
-            final IgniteAtomicSequence seq1 = grid(0).atomicSequence(seqName, 0L, true);
-            final IgniteAtomicSequence seq2 = grid(1).atomicSequence(seqName, 0L, true);
-
-            multithreaded(new Runnable() {
-                @Override public void run() {
-                    for (int i = 0; i < ITERATION_NUM; i++) {
-                        if (i % 2 == 0)
-                            seq1.incrementAndGet();
-                        else
-                            seq2.incrementAndGet();
-                    }
-                }
-            }, THREAD_NUM);
-
-            long seq1Val = seq1.get();
-            long seq2Val = seq2.get();
-
-            assertEquals(ITERATION_NUM * THREAD_NUM + (seq1Val < seq2Val ? 0 : 10), seq1Val);
-            assertEquals(ITERATION_NUM * THREAD_NUM + (seq1Val < seq2Val ? 10 : 0), seq2Val);
-        }
-        finally {
-            stopGrid(1);
-        }
-    }
-
-    /** @throws Exception If failed. */
-    public void testGetAndIncrement() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.getAndIncrement();
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testAddAndGet() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.addAndGet(5);
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(5 * ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testGetAndAdd() throws Exception {
-        checkGetAndAdd(5);
-    }
-
-    /** @throws Exception If failed. */
-    public void testGetAndAdd2() throws Exception {
-        checkGetAndAdd(3);
-    }
-
-    /**
-     * @param val Value.
-     * @throws Exception If failed.
-     */
-    private void checkGetAndAdd(final int val) throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.getAndAdd(val);
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(val * ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testMixed1() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.incrementAndGet();
-                t.getAndIncrement();
-                t.incrementAndGet();
-                t.getAndIncrement();
-                t.getAndAdd(3);
-                t.addAndGet(3);
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(10 * ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /** @throws Exception If failed. */
-    public void testMixed2() throws Exception {
-        // Random sequence names.
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
-            @Override public void apply(IgniteAtomicSequence t) {
-                t.getAndAdd(2);
-                t.addAndGet(3);
-                t.addAndGet(5);
-                t.getAndAdd(7);
-            }
-        }, seq, ITERATION_NUM, THREAD_NUM);
-
-        assertEquals(17 * ITERATION_NUM * THREAD_NUM, seq.get());
-    }
-
-    /**
-     * Executes given closure in a given number of threads given number of times.
-     *
-     * @param c Closure to execute.
-     * @param seq Sequence to pass into closure.
-     * @param cnt Count of iterations per thread.
-     * @param threadCnt Thread count.
-     * @throws Exception If failed.
-     */
-    protected void runSequenceClosure(final GridInUnsafeClosure<IgniteAtomicSequence> c,
-        final IgniteAtomicSequence seq, final int cnt, final int threadCnt) throws Exception {
-        multithreaded(new Runnable() {
-            @Override public void run() {
-                try {
-                    for (int i = 0; i < cnt; i++)
-                        c.apply(seq);
-                }
-                catch (IgniteCheckedException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }, threadCnt);
-    }
-
-    /**
-     * @param updated Whether use updated values.
-     * @throws Exception If failed.
-     */
-    @SuppressWarnings("IfMayBeConditional")
-    private void checkUpdate(boolean updated) throws Exception {
-        String seqName = UUID.randomUUID().toString();
-
-        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
-
-        long curVal = 0;
-
-        Random r = new Random();
-
-        for (int i = 0; i < ITERATION_NUM; i++) {
-            long delta = r.nextInt(10) + 1;
-
-            long retVal = updated ? seq.addAndGet(delta) : seq.getAndAdd(delta);
-
-            assertEquals(updated ? curVal + delta : curVal, retVal);
-
-            curVal += delta;
-        }
-    }
-
-    /**
-     * Closure that throws exception.
-     *
-     * @param <E> Closure argument type.
-     */
-    private abstract static class GridInUnsafeClosure<E> {
-        public abstract void apply(E p) throws IgniteCheckedException;
-    }
-}

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java
index e7a477f..d988b2c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheSequenceApiSelfAbstractTest.java
@@ -18,12 +18,12 @@
 package org.apache.ignite.internal.processors.cache.datastructures;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Random;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.Callable;
-
 import org.apache.ignite.IgniteAtomicSequence;
 import org.apache.ignite.configuration.AtomicConfiguration;
 import org.apache.ignite.configuration.CacheConfiguration;
@@ -36,7 +36,6 @@ import org.apache.ignite.internal.processors.datastructures.GridCacheInternalKey
 import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.transactions.Transaction;
-import org.eclipse.jetty.util.ConcurrentHashSet;
 import org.jetbrains.annotations.Nullable;
 
 import static org.apache.ignite.cache.CacheMode.PARTITIONED;
@@ -120,7 +119,7 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
             assertEquals(BATCH_SIZE, seq.batchSize());
         }
 
-        assertEquals(gridCount(), G.allGrids().size());
+        assertEquals(1, G.allGrids().size());
     }
 
     /** {@inheritDoc} */
@@ -309,29 +308,9 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      * @throws Exception If failed.
      */
     public void testMultiThreadedSequenceIntegrity() throws Exception {
-        multiThreadedSequenceIntegrity(/*batchSize*/ 1, /*percentage*/ 30, /*initVal*/0);
-        multiThreadedSequenceIntegrity(/*batchSize*/ 7, /*percentage*/ 0, /*initVal*/-1500);
-        multiThreadedSequenceIntegrity(/*batchSize*/ 3, /*percentage*/ 100, /*initVal*/345);
-    }
-
-    /**
-     * @throws Exception If failed.
-     */
-    public void testMultiNodeSequenceIntegrity() throws Exception {
-        if (gridCount() < 2)
-            return;
-
-        multiNodeSequenceIntegrity(/*batchSize*/ 1, /*percentage*/ 80, /*initVal*/0);
-        multiNodeSequenceIntegrity(/*batchSize*/ 1, /*percentage*/ 0, /*initVal*/-11);
-        multiNodeSequenceIntegrity(/*batchSize*/ 1, /*percentage*/ 100, /*initVal*/183);
-
-        multiNodeSequenceIntegrity(/*batchSize*/ 7, /*percentage*/ 20, /*initVal*/83);
-        multiNodeSequenceIntegrity(/*batchSize*/ 7, /*percentage*/ 0, /*initVal*/-17);
-        multiNodeSequenceIntegrity(/*batchSize*/ 7, /*percentage*/ 100, /*initVal*/11);
-
-        multiNodeSequenceIntegrity(/*batchSize*/ 11, /*percentage*/ 50, /*initVal*/-7);
-        multiNodeSequenceIntegrity(/*batchSize*/ 11, /*percentage*/ 0, /*initVal*/55);
-        multiNodeSequenceIntegrity(/*batchSize*/ 11, /*percentage*/ 100, /*initVal*/22);
+        multiThreadedSequenceIntegrity(1, 0);
+        multiThreadedSequenceIntegrity(7, -1500);
+        multiThreadedSequenceIntegrity(3, 345);
     }
 
     /**
@@ -385,8 +364,8 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      * Sequence get and increment.
      *
      * @param seq Sequence for test.
-     * @return Result of operation.
      * @throws Exception If failed.
+     * @return Result of operation.
      */
     private long getAndIncrement(IgniteAtomicSequence seq) throws Exception {
         long locSeqVal = seq.get();
@@ -402,8 +381,8 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      * Sequence add and increment
      *
      * @param seq Sequence for test.
-     * @return Result of operation.
      * @throws Exception If failed.
+     * @return Result of operation.
      */
     private long incrementAndGet(IgniteAtomicSequence seq) throws Exception {
         long locSeqVal = seq.get();
@@ -420,8 +399,8 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      *
      * @param seq Sequence for test.
      * @param l Number of added elements.
-     * @return Result of operation.
      * @throws Exception If failed.
+     * @return Result of operation.
      */
     private long addAndGet(IgniteAtomicSequence seq, long l) throws Exception {
         long locSeqVal = seq.get();
@@ -438,8 +417,8 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
      *
      * @param seq Sequence for test.
      * @param l Number of added elements.
-     * @return Result of operation.
      * @throws Exception If failed.
+     * @return Result of operation.
      */
     private long getAndAdd(IgniteAtomicSequence seq, long l) throws Exception {
         long locSeqVal = seq.get();
@@ -452,10 +431,10 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
     }
 
     /**
-     * Sequence integrity.
+     *  Sequence integrity.
      *
      * @param batchSize Sequence batch size.
-     * @param initVal Sequence initial value.
+     * @param initVal  Sequence initial value.
      * @throws Exception If test fail.
      */
     private void sequenceIntegrity(int batchSize, long initVal) throws Exception {
@@ -486,24 +465,24 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
     }
 
     /**
-     * Multi-threaded integrity.
+     *  Multi-threaded integrity.
      *
      * @param batchSize Sequence batch size.
-     * @param initVal Sequence initial value.
+     * @param initVal  Sequence initial value.
      * @throws Exception If test fail.
      */
-    private void multiThreadedSequenceIntegrity(int batchSize, int percentage, long initVal) throws Exception {
+    private void multiThreadedSequenceIntegrity(int batchSize, long initVal) throws Exception {
         // Random sequence names.
         String locSeqName = UUID.randomUUID().toString();
 
         // Sequence.
-        final IgniteAtomicSequence locSeq = grid().atomicSequence(locSeqName, initVal, true);
+        final IgniteAtomicSequence locSeq = grid().atomicSequence(locSeqName, initVal,
+            true);
 
         locSeq.batchSize(batchSize);
-        locSeq.reservePercentage(percentage);
 
         // Result set.
-        final Set<Long> resSet = new ConcurrentHashSet<>();
+        final Set<Long> resSet = Collections.synchronizedSet(new HashSet<Long>());
 
         // Get sequence value and try to put it result set.
         for (int i = 0; i < MAX_LOOPS_NUM; i++) {
@@ -542,6 +521,7 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
 
             resSet.add(val);
 
+
             if (i % 100 == 0)
                 info("Finished iteration 2: " + i);
         }
@@ -559,51 +539,6 @@ public abstract class GridCacheSequenceApiSelfAbstractTest extends IgniteAtomics
     }
 
     /**
-     * Multi-threaded integrity.
-     *
-     * @param batchSize Sequence batch size.
-     * @param initVal Sequence initial value.
-     * @throws Exception If test fail.
-     */
-    private void multiNodeSequenceIntegrity(int batchSize, int percentage, long initVal) throws Exception {
-        // Random sequence names.
-        String locSeqName = UUID.randomUUID().toString();
-
-        // Sequences.
-        final IgniteAtomicSequence[] locSeqs = new IgniteAtomicSequence[3];
-
-        for (int i = 0; i < locSeqs.length; i++) {
-            locSeqs[i] = grid(i).atomicSequence(locSeqName, initVal, true);
-
-            locSeqs[i].batchSize(batchSize);
-
-            locSeqs[i].reservePercentage(percentage);
-        }
-
-        final Set<Long> resSet = new ConcurrentHashSet<>();
-
-        multithreaded(
-            new Callable() {
-                @Nullable @Override public Object call() throws Exception {
-                    // Get sequence value and try to put it result set.
-                    for (int i = 0; i < MAX_LOOPS_NUM; i++) {
-                        Long val = locSeqs[i % locSeqs.length].getAndIncrement();
-
-                        assert !resSet.contains(val) : "Element already in set : " + val;
-
-                        resSet.add(val);
-                    }
-
-                    return null;
-                }
-            }, THREAD_NUM);
-
-        assert resSet.size() == MAX_LOOPS_NUM * THREAD_NUM;
-
-        removeSequence(locSeqName);
-    }
-
-    /**
      * Test sequence integrity.
      *
      * @param seq Sequence for test.

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java
index ac38fd5..945650d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedAtomicSequenceMultiThreadedTest.java
@@ -17,17 +17,324 @@
 
 package org.apache.ignite.internal.processors.cache.datastructures.partitioned;
 
+import java.util.Random;
+import java.util.UUID;
+import org.apache.ignite.IgniteAtomicSequence;
+import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.internal.processors.cache.datastructures.GridCacheAtomicSequenceMultiThreadedAbstractTest;
+import org.apache.ignite.configuration.AtomicConfiguration;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteAtomicsAbstractTest;
+import org.apache.ignite.internal.processors.datastructures.GridCacheAtomicSequenceImpl;
+import org.apache.ignite.internal.util.typedef.internal.U;
 
 import static org.apache.ignite.cache.CacheMode.PARTITIONED;
 
 /**
  * Cache partitioned multi-threaded tests.
  */
-public class GridCachePartitionedAtomicSequenceMultiThreadedTest extends GridCacheAtomicSequenceMultiThreadedAbstractTest {
+public class GridCachePartitionedAtomicSequenceMultiThreadedTest extends IgniteAtomicsAbstractTest {
+    /** Number of threads for multithreaded test. */
+    private static final int THREAD_NUM = 30;
+
+    /** Number of iterations per thread for multithreaded test. */
+    private static final int ITERATION_NUM = 4000;
+
     /** {@inheritDoc} */
     @Override protected CacheMode atomicsCacheMode() {
         return PARTITIONED;
     }
-}
+
+    /** {@inheritDoc} */
+    @Override protected int gridCount() {
+        return 1;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected AtomicConfiguration atomicConfiguration() {
+        AtomicConfiguration cfg = super.atomicConfiguration();
+
+        cfg.setBackups(1);
+        cfg.setAtomicSequenceReserveSize(10);
+
+        return cfg;
+    }
+
+    /** @throws Exception If failed. */
+    public void testValues() throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        final GridCacheAtomicSequenceImpl seq = (GridCacheAtomicSequenceImpl)grid(0).atomicSequence(seqName, 0, true);
+
+        // Local reservations.
+        assertEquals(1, seq.incrementAndGet());
+        assertEquals(1, seq.getAndIncrement()); // Seq = 2
+        assertEquals(3L, seq.incrementAndGet());
+        assertEquals(3L, seq.getAndIncrement()); // Seq=4
+
+        assertEquals(4, seq.getAndAdd(3));
+        assertEquals(9, seq.addAndGet(2));
+
+        assertEquals(new Long(9L), U.field(seq, "locVal"));
+        assertEquals(new Long(9L), U.field(seq, "upBound"));
+
+        // Cache calls.
+        assertEquals(10, seq.incrementAndGet());
+
+        assertEquals(new Long(10L), U.field(seq, "locVal"));
+        assertEquals(new Long(19L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(19L), U.field(seq, "locVal"));
+        assertEquals(new Long(19L), U.field(seq, "upBound"));
+
+        assertEquals(20L, seq.incrementAndGet());
+
+        assertEquals(new Long(20L), U.field(seq, "locVal"));
+        assertEquals(new Long(29L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(29L), U.field(seq, "locVal"));
+        assertEquals(new Long(29L), U.field(seq, "upBound"));
+
+        assertEquals(29, seq.getAndIncrement());
+
+        assertEquals(new Long(30L), U.field(seq, "locVal"));
+        assertEquals(new Long(39L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(39L), U.field(seq, "locVal"));
+        assertEquals(new Long(39L), U.field(seq, "upBound"));
+
+        assertEquals(39L, seq.getAndIncrement());
+
+        assertEquals(new Long(40L), U.field(seq, "locVal"));
+        assertEquals(new Long(49L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(49L), U.field(seq, "locVal"));
+        assertEquals(new Long(49L), U.field(seq, "upBound"));
+
+        assertEquals(50, seq.addAndGet(1));
+
+        assertEquals(new Long(50L), U.field(seq, "locVal"));
+        assertEquals(new Long(59L), U.field(seq, "upBound"));
+
+        seq.addAndGet(9);
+
+        assertEquals(new Long(59L), U.field(seq, "locVal"));
+        assertEquals(new Long(59L), U.field(seq, "upBound"));
+
+        assertEquals(59, seq.getAndAdd(1));
+
+        assertEquals(new Long(60L), U.field(seq, "locVal"));
+        assertEquals(new Long(69L), U.field(seq, "upBound"));
+    }
+
+    /** @throws Exception If failed. */
+    public void testUpdatedSync() throws Exception {
+        checkUpdate(true);
+    }
+
+    /** @throws Exception If failed. */
+    public void testPreviousSync() throws Exception {
+        checkUpdate(false);
+    }
+
+    /** @throws Exception If failed. */
+    public void testIncrementAndGet() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.incrementAndGet();
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testIncrementAndGetAsync() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.incrementAndGet();
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testGetAndIncrement() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.getAndIncrement();
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testGetAndIncrementAsync() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.getAndIncrement();
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testAddAndGet() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.addAndGet(5);
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(5 * ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testGetAndAdd() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.getAndAdd(5);
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(5 * ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testMixed1() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.incrementAndGet();
+                t.getAndIncrement();
+                t.incrementAndGet();
+                t.getAndIncrement();
+                t.getAndAdd(3);
+                t.addAndGet(3);
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(10 * ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /** @throws Exception If failed. */
+    public void testMixed2() throws Exception {
+        // Random sequence names.
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        runSequenceClosure(new GridInUnsafeClosure<IgniteAtomicSequence>() {
+            @Override public void apply(IgniteAtomicSequence t) {
+                t.getAndAdd(2);
+                t.addAndGet(3);
+                t.addAndGet(5);
+                t.getAndAdd(7);
+            }
+        }, seq, ITERATION_NUM, THREAD_NUM);
+
+        assertEquals(17 * ITERATION_NUM * THREAD_NUM, seq.get());
+    }
+
+    /**
+     * Executes given closure in a given number of threads given number of times.
+     *
+     * @param c Closure to execute.
+     * @param seq Sequence to pass into closure.
+     * @param cnt Count of iterations per thread.
+     * @param threadCnt Thread count.
+     * @throws Exception If failed.
+     */
+    protected void runSequenceClosure(final GridInUnsafeClosure<IgniteAtomicSequence> c,
+        final IgniteAtomicSequence seq, final int cnt, final int threadCnt) throws Exception {
+        multithreaded(new Runnable() {
+            @Override public void run() {
+                try {
+                    for (int i = 0; i < cnt; i++)
+                        c.apply(seq);
+                }
+                catch (IgniteCheckedException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }, threadCnt);
+    }
+
+    /**
+     * @param updated Whether use updated values.
+     * @throws Exception If failed.
+     */
+    @SuppressWarnings("IfMayBeConditional")
+    private void checkUpdate(boolean updated) throws Exception {
+        String seqName = UUID.randomUUID().toString();
+
+        final IgniteAtomicSequence seq = grid(0).atomicSequence(seqName, 0L, true);
+
+        long curVal = 0;
+
+        Random r = new Random();
+
+        for (int i = 0; i < ITERATION_NUM; i++) {
+            long delta = r.nextInt(10) + 1;
+
+            long retVal = updated ? seq.addAndGet(delta) : seq.getAndAdd(delta);
+
+            assertEquals(updated ? curVal + delta : curVal, retVal);
+
+            curVal += delta;
+        }
+    }
+
+    /**
+     * Closure that throws exception.
+     *
+     * @param <E> Closure argument type.
+     */
+    private abstract static class GridInUnsafeClosure<E> {
+        public abstract void apply(E p) throws IgniteCheckedException;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/980df4ea/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java
index ae03348..adc2ab3 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/partitioned/GridCachePartitionedSequenceApiSelfTest.java
@@ -40,8 +40,4 @@ public class GridCachePartitionedSequenceApiSelfTest extends GridCacheSequenceAp
 
         return atomicCfg;
     }
-
-    @Override protected int gridCount() {
-        return 3;
-    }
 }
\ No newline at end of file


[12/34] ignite git commit: IGNITE-3727 license header

Posted by sb...@apache.org.
IGNITE-3727 license header


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

Branch: refs/heads/ignite-3727-2
Commit: 271619d5d50aadd6f6de418725d81f53819953f2
Parents: a6980ab
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Thu Sep 8 20:10:39 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Thu Sep 8 20:10:39 2016 +0300

----------------------------------------------------------------------
 .../IssuesIGNITE2539ReproduceTest.java             | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/271619d5/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java b/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
index 72854f7..dc120fb 100644
--- a/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/cache/affinity/bugreproduce/IssuesIGNITE2539ReproduceTest.java
@@ -1,3 +1,20 @@
+/*
+ * 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.cache.affinity.bugreproduce;
 
 import org.apache.ignite.*;


[17/34] ignite git commit: IGNITE-3727 update test, added 2 new cases

Posted by sb...@apache.org.
IGNITE-3727 update test, added 2 new cases


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

Branch: refs/heads/ignite-3727-2
Commit: 190a5c99fae2fe16afea5a59ba5fd6ca6aef900c
Parents: 8b416e8
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Fri Sep 9 12:26:24 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Fri Sep 9 12:26:24 2016 +0300

----------------------------------------------------------------------
 .../messaging/IgniteMessagingSendAsyncTest.java | 83 ++++++++++++++++++--
 1 file changed, 75 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/190a5c99/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
index 6f1188e..91ac6e2 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
@@ -33,7 +33,9 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
     /**
      * Ignite instance for test.
      */
-    private Ignite ignite;
+    private Ignite ignite1;
+
+    private Ignite ignite2;
 
     /**
      * Topic name.
@@ -47,7 +49,8 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
     protected void beforeTest() throws Exception {
         super.beforeTest();
 
-        ignite = startGrid(0);
+        ignite1 = startGrid(1);
+        ignite2 = startGrid(2);
     }
 
     /**
@@ -57,17 +60,19 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
     protected void afterTest() throws Exception {
         super.afterTest();
 
-        stopGrid(0);
+        stopAllGrids();
     }
 
     /**
      * Test for check, that if use default mode, local listeners execute
-     * in the same thread.
+     * in the same thread. 1 node in topology.
      */
     public void testSendDefaultMode() throws InterruptedException {
+        stopGrid(2);
+
         final String msgStr = "message";
 
-        send(ignite.message(), msgStr, new ProcedureApply() {
+        send(ignite1.message(), msgStr, new ProcedureApply() {
             @Override
             public void apply(String msg, Thread thread) {
                 Assert.assertEquals(Thread.currentThread(), thread);
@@ -79,12 +84,46 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
 
     /**
      * Test for check, that if use async mode, local listeners execute
-     * in another thread(through pool).
+     * in another thread(through pool). 1 node in topology.
      */
     public void testSendAsyncMode() throws InterruptedException {
+        stopGrid(2);
+
+        final String msgStr = "message";
+
+        send(ignite1.message().withAsync(), msgStr, new ProcedureApply() {
+            @Override
+            public void apply(String msg, Thread thread) {
+                Assert.assertTrue(!Thread.currentThread().equals(thread));
+                Assert.assertEquals(msgStr, msg);
+            }
+        });
+    }
+
+    /**
+     * Test for check, that if use default mode, local listeners execute
+     * in the same thread. 2 node in topology.
+     */
+    public void testSendDefaultMode2Node() throws Exception {
+        final String msgStr = "message";
+
+        sendWith2Node(ignite1.message(), msgStr, new ProcedureApply() {
+            @Override
+            public void apply(String msg, Thread thread) {
+                Assert.assertEquals(Thread.currentThread(), thread);
+                Assert.assertEquals(msgStr, msg);
+            }
+        });
+    }
+
+    /**
+     * Test for check, that if use async mode, local listeners execute
+     * in another thread(through pool). 2 node in topology.
+     */
+    public void testSendAsyncMode2Node() throws Exception {
         final String msgStr = "message";
 
-        send(ignite.message().withAsync(), msgStr, new ProcedureApply() {
+        sendWith2Node(ignite1.message().withAsync(), msgStr, new ProcedureApply() {
             @Override
             public void apply(String msg, Thread thread) {
                 Assert.assertTrue(!Thread.currentThread().equals(thread));
@@ -96,7 +135,35 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
     /**
      * @param igniteMsg Ignite message.
      * @param msgStr    Message string.
-     * @param cls       callback for compare result.
+     * @param cls       Callback for compare result.
+     */
+    public void sendWith2Node(
+            final IgniteMessaging igniteMsg,
+            final String msgStr,
+            final ProcedureApply cls
+    ) throws Exception {
+
+        final CountDownLatch latch = new CountDownLatch(1);
+
+        ignite2.message().localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
+            @Override
+            public boolean apply(UUID uuid, String msg) {
+                Assert.assertEquals(msgStr, msg);
+                latch.countDown();
+                return false;
+            }
+        });
+
+        send(igniteMsg, msgStr, cls);
+
+        latch.await();
+    }
+
+
+    /**
+     * @param igniteMsg Ignite message.
+     * @param msgStr    Message string.
+     * @param cls       Callback for compare result.
      */
     private void send(
             IgniteMessaging igniteMsg,


[05/34] ignite git commit: IGNITE-1678 code + test+ benchmark config

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedAtomicSequenceMultiThreadedTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedAtomicSequenceMultiThreadedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedAtomicSequenceMultiThreadedTest.java
new file mode 100644
index 0000000..5a5f013
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedAtomicSequenceMultiThreadedTest.java
@@ -0,0 +1,33 @@
+/*
+ * 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.datastructures.replicated;
+
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.internal.processors.cache.datastructures.GridCacheAtomicSequenceMultiThreadedAbstractTest;
+
+import static org.apache.ignite.cache.CacheMode.REPLICATED;
+
+/**
+ * Cache partitioned multi-threaded tests.
+ */
+public class GridCacheReplicatedAtomicSequenceMultiThreadedTest extends GridCacheAtomicSequenceMultiThreadedAbstractTest {
+    /** {@inheritDoc} */
+    @Override protected CacheMode atomicsCacheMode() {
+        return REPLICATED;
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java
index 31b8fad..d13c525 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/replicated/GridCacheReplicatedSequenceApiSelfTest.java
@@ -30,4 +30,8 @@ public class GridCacheReplicatedSequenceApiSelfTest extends GridCacheSequenceApi
     @Override protected CacheMode atomicsCacheMode() {
         return REPLICATED;
     }
+
+    @Override protected int gridCount() {
+        return 3;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
index d62369c..66a7b00 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
@@ -72,6 +72,7 @@ import org.apache.ignite.internal.processors.cache.datastructures.partitioned.Ig
 import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedSemaphoreSelfTest;
 import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedSetNoBackupsSelfTest;
 import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicReferenceApiSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicSequenceMultiThreadedTest;
 import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicStampedApiSelfTest;
 import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedDataStructuresFailoverSelfTest;
 import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedQueueApiSelfTest;
@@ -166,6 +167,7 @@ public class IgniteCacheDataStructuresSelfTestSuite extends TestSuite {
         suite.addTest(new TestSuite(IgniteReplicatedAtomicLongApiSelfTest.class));
 
         suite.addTest(new TestSuite(GridCachePartitionedAtomicSequenceMultiThreadedTest.class));
+        suite.addTest(new TestSuite(GridCacheReplicatedAtomicSequenceMultiThreadedTest.class));
 
         suite.addTest(new TestSuite(GridCachePartitionedAtomicStampedApiSelfTest.class));
         suite.addTest(new TestSuite(GridCacheReplicatedAtomicStampedApiSelfTest.class));

http://git-wip-us.apache.org/repos/asf/ignite/blob/784958bf/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteAtomicSequenceBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteAtomicSequenceBenchmark.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteAtomicSequenceBenchmark.java
new file mode 100644
index 0000000..4b2f085
--- /dev/null
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteAtomicSequenceBenchmark.java
@@ -0,0 +1,45 @@
+/*
+ * 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.yardstick.cache;
+
+import java.util.Map;
+import org.apache.ignite.IgniteAtomicSequence;
+import org.apache.ignite.yardstick.IgniteAbstractBenchmark;
+import org.yardstickframework.BenchmarkConfiguration;
+
+/**
+ * Ignite atomic sequence benchmark.
+ */
+public class IgniteAtomicSequenceBenchmark extends IgniteAbstractBenchmark {
+    /** Cache. */
+    private IgniteAtomicSequence seq;
+
+    /** {@inheritDoc} */
+    @Override public void setUp(BenchmarkConfiguration cfg) throws Exception {
+        super.setUp(cfg);
+
+        seq = ignite().atomicSequence("benchSequence", 0, true);
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean test(Map<Object, Object> ctx) throws Exception {
+        seq.incrementAndGet();
+
+        return true;
+    }
+}


[02/34] ignite git commit: IGNITE-613: particular solved problem, check all node for result

Posted by sb...@apache.org.
IGNITE-613: particular solved problem, check all node for result


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

Branch: refs/heads/ignite-3727-2
Commit: bb899bdbb253ac51c2ee3cc89e51ec4ab6e88157
Parents: 4e6605f
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Wed Aug 31 16:43:34 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Wed Aug 31 16:43:34 2016 +0300

----------------------------------------------------------------------
 .../IgniteCacheReplicatedQuerySelfTest.java     | 25 ++++++++++++--------
 1 file changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/bb899bdb/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
index e462cce..85a70f3 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
@@ -30,9 +30,8 @@ import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.CountDownLatch;
 import javax.cache.Cache;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteException;
+
+import org.apache.ignite.*;
 import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.query.QueryCursor;
 import org.apache.ignite.cache.query.SqlQuery;
@@ -285,7 +284,7 @@ public class IgniteCacheReplicatedQuerySelfTest extends IgniteCacheAbstractQuery
      */
     private ConcurrentMap<UUID,
         Map<Long, GridFutureAdapter<GridCloseableIterator<IgniteBiTuple<CacheKey, CacheValue>>>>>
-        distributedQueryManagerQueryItersMap(Ignite g) {
+    distributedQueryManagerQueryItersMap(Ignite g) {
         GridCacheContext ctx = ((IgniteKernal)g).internalCache().context();
 
         Field qryItersField = ReflectionUtils.findField(ctx.queries().getClass(), "qryIters");
@@ -355,8 +354,6 @@ public class IgniteCacheReplicatedQuerySelfTest extends IgniteCacheAbstractQuery
      * @throws Exception If failed.
      */
     public void testNodeLeft() throws Exception {
-        fail("https://issues.apache.org/jira/browse/IGNITE-613");
-
         Ignite g = startGrid("client");
 
         try {
@@ -375,10 +372,12 @@ public class IgniteCacheReplicatedQuerySelfTest extends IgniteCacheAbstractQuery
 
             assertEquals(0, (int)q.iterator().next().getKey());
 
-            ConcurrentMap<UUID, ConcurrentMap<Long, ?>> map = U.field(((IgniteH2Indexing)U.field(U.field(
-                grid(0).context(), "qryProc"), "idx")).mapQueryExecutor(), "qryRess");
+            //need to check all node, where was query execution
+            ConcurrentMap<UUID, ConcurrentMap<Long, ?>> mapNode1 = qryResultMap(0);
+            ConcurrentMap<UUID, ConcurrentMap<Long, ?>> mapNode2 = qryResultMap(1);
+            ConcurrentMap<UUID, ConcurrentMap<Long, ?>> mapNode3 = qryResultMap(2);
 
-            assertEquals(1, map.size());
+            assertEquals(1, mapNode1.size() + mapNode2.size() + mapNode3.size());
 
             final UUID nodeId = g.cluster().localNode().id();
 
@@ -397,13 +396,19 @@ public class IgniteCacheReplicatedQuerySelfTest extends IgniteCacheAbstractQuery
 
             latch.await();
 
-            assertEquals(0, map.size());
+            assertEquals(0, mapNode1.size());
+            assertEquals(0, mapNode2.size());
+            assertEquals(0, mapNode3.size());
         }
         finally {
             stopGrid("client");
         }
     }
 
+    private ConcurrentMap<UUID, ConcurrentMap<Long, ?>> qryResultMap(int node) {
+        return U.field(((IgniteH2Indexing)U.field((Object)U.field(grid(node).context(), "qryProc"), "idx")).mapQueryExecutor(), "qryRess");
+    }
+
     /**
      * @param cache Cache.
      * @throws Exception If check failed.


[31/34] ignite git commit: ignite-3727 import updates

Posted by sb...@apache.org.
ignite-3727 import updates


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

Branch: refs/heads/ignite-3727-2
Commit: 000bb8e40105329173bb5ca911b88abf29499a92
Parents: ac58bb3
Author: Dmitriy Govorukhin <dg...@gridgain.com>
Authored: Thu Dec 15 11:11:47 2016 +0300
Committer: Dmitriy Govorukhin <dg...@gridgain.com>
Committed: Thu Dec 15 11:11:47 2016 +0300

----------------------------------------------------------------------
 .../ignite/messaging/GridMessagingSelfTest.java | 21 +++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/000bb8e4/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
index 38e3064..a166c3d 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
@@ -24,26 +24,33 @@ import java.io.ObjectOutput;
 import java.io.Serializable;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentLinkedDeque;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.ignite.*;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteMessaging;
 import org.apache.ignite.cluster.ClusterGroup;
 import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.managers.discovery.*;
-import org.apache.ignite.internal.processors.continuous.*;
+import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.processors.continuous.StartRoutineDiscoveryMessage;
+import org.apache.ignite.internal.processors.continuous.StopRoutineDiscoveryMessage;
 import org.apache.ignite.internal.util.GridConcurrentHashSet;
 import org.apache.ignite.internal.util.typedef.P2;
 import org.apache.ignite.internal.util.typedef.PA;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteFuture;
-import org.apache.ignite.resources.IgniteInstanceResource;
-import org.apache.ignite.spi.discovery.*;
+import org.apache.ignite.resources.IgniteInstanceResource;;
+import org.apache.ignite.spi.discovery.DiscoverySpiCustomMessage;
 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;


[19/34] ignite git commit: ignite-3727 minor

Posted by sb...@apache.org.
ignite-3727 minor


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

Branch: refs/heads/ignite-3727-2
Commit: e4b44a811e8d3145023252d76155deb286ed2d1c
Parents: 9cdc754
Author: sboikov <sb...@gridgain.com>
Authored: Mon Sep 12 23:23:07 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon Sep 12 23:23:07 2016 +0300

----------------------------------------------------------------------
 .../managers/communication/GridIoManager.java   |  9 +--
 .../ignite/messaging/GridMessagingSelfTest.java |  4 +
 .../messaging/IgniteMessagingSendAsyncTest.java | 78 +++++++++-----------
 3 files changed, 41 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e4b44a81/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 6f5421e..3d9238a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -1782,7 +1782,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
 
         GridMessageListener lsnrs;
 
-        for (; ; ) {
+        for (;;) {
             lsnrs = listenerPutIfAbsent0(topic, lsnr);
 
             if (lsnrs == null) {
@@ -1895,7 +1895,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
                 msgSets = map.values();
         }
         else {
-            for (; ; ) {
+            for (;;) {
                 GridMessageListener lsnrs = listenerGet0(topic);
 
                 // If removing listener before subscription happened.
@@ -2131,7 +2131,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         /**
          * @param l Listener.
          * @return {@code true} if listener was added. Add can fail if this instance is empty and is about to be removed
-         * from map.
+         *         from map.
          */
         synchronized boolean add(GridMessageListener l) {
             GridMessageListener[] arr0 = arr;
@@ -2173,8 +2173,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         }
 
         /** {@inheritDoc} */
-        @SuppressWarnings({
-            "SynchronizationOnLocalVariableOrMethodParameter", "ConstantConditions",
+        @SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter", "ConstantConditions",
             "OverlyStrongTypeCast"})
         @Override public void onMessage(UUID nodeId, Object msg) {
             if (!(msg instanceof GridIoUserMessage)) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/e4b44a81/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
index c6ce0dc..07f9fe4 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
@@ -1066,6 +1066,8 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
 
         Assert.assertNotNull(starFut);
 
+        U.sleep(500);
+
         Assert.assertFalse(starFut.isDone());
 
         discoSpi.stopBlock();
@@ -1108,6 +1110,8 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest implements Ser
             }
         }, IllegalStateException.class, null);
 
+        U.sleep(500);
+
         Assert.assertFalse(stopFut.isDone());
 
         discoSpi.stopBlock();

http://git-wip-us.apache.org/repos/asf/ignite/blob/e4b44a81/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
index 91ac6e2..0187579 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/IgniteMessagingSendAsyncTest.java
@@ -1,19 +1,20 @@
 /*
-* 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.
-*/
+ * 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.messaging;
 
 import org.apache.ignite.Ignite;
@@ -27,7 +28,7 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicReference;
 
 /**
- * Created by dgovorukhin on 09.09.2016.
+ *
  */
 public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
     /**
@@ -45,8 +46,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
     /**
      * {@inheritDoc}
      */
-    @Override
-    protected void beforeTest() throws Exception {
+    @Override protected void beforeTest() throws Exception {
         super.beforeTest();
 
         ignite1 = startGrid(1);
@@ -56,8 +56,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
     /**
      * {@inheritDoc}
      */
-    @Override
-    protected void afterTest() throws Exception {
+    @Override protected void afterTest() throws Exception {
         super.afterTest();
 
         stopAllGrids();
@@ -73,13 +72,11 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
         final String msgStr = "message";
 
         send(ignite1.message(), msgStr, new ProcedureApply() {
-            @Override
-            public void apply(String msg, Thread thread) {
+            @Override public void apply(String msg, Thread thread) {
                 Assert.assertEquals(Thread.currentThread(), thread);
                 Assert.assertEquals(msgStr, msg);
             }
         });
-
     }
 
     /**
@@ -92,8 +89,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
         final String msgStr = "message";
 
         send(ignite1.message().withAsync(), msgStr, new ProcedureApply() {
-            @Override
-            public void apply(String msg, Thread thread) {
+            @Override public void apply(String msg, Thread thread) {
                 Assert.assertTrue(!Thread.currentThread().equals(thread));
                 Assert.assertEquals(msgStr, msg);
             }
@@ -108,8 +104,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
         final String msgStr = "message";
 
         sendWith2Node(ignite1.message(), msgStr, new ProcedureApply() {
-            @Override
-            public void apply(String msg, Thread thread) {
+            @Override public void apply(String msg, Thread thread) {
                 Assert.assertEquals(Thread.currentThread(), thread);
                 Assert.assertEquals(msgStr, msg);
             }
@@ -124,8 +119,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
         final String msgStr = "message";
 
         sendWith2Node(ignite1.message().withAsync(), msgStr, new ProcedureApply() {
-            @Override
-            public void apply(String msg, Thread thread) {
+            @Override public void apply(String msg, Thread thread) {
                 Assert.assertTrue(!Thread.currentThread().equals(thread));
                 Assert.assertEquals(msgStr, msg);
             }
@@ -137,17 +131,15 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
      * @param msgStr    Message string.
      * @param cls       Callback for compare result.
      */
-    public void sendWith2Node(
-            final IgniteMessaging igniteMsg,
-            final String msgStr,
-            final ProcedureApply cls
+    private void sendWith2Node(
+        final IgniteMessaging igniteMsg,
+        final String msgStr,
+        final ProcedureApply cls
     ) throws Exception {
-
         final CountDownLatch latch = new CountDownLatch(1);
 
         ignite2.message().localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
-            @Override
-            public boolean apply(UUID uuid, String msg) {
+            @Override public boolean apply(UUID uuid, String msg) {
                 Assert.assertEquals(msgStr, msg);
                 latch.countDown();
                 return false;
@@ -159,16 +151,15 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
         latch.await();
     }
 
-
     /**
      * @param igniteMsg Ignite message.
      * @param msgStr    Message string.
      * @param cls       Callback for compare result.
      */
     private void send(
-            IgniteMessaging igniteMsg,
-            String msgStr,
-            ProcedureApply cls
+        IgniteMessaging igniteMsg,
+        String msgStr,
+        ProcedureApply cls
     ) throws InterruptedException {
         final CountDownLatch latch = new CountDownLatch(1);
 
@@ -176,8 +167,7 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
         final AtomicReference<String> val = new AtomicReference<>();
 
         igniteMsg.localListen(TOPIC, new IgniteBiPredicate<UUID, String>() {
-            @Override
-            public boolean apply(UUID uuid, String msgStr) {
+            @Override public boolean apply(UUID uuid, String msgStr) {
                 thread.set(Thread.currentThread());
                 val.set(msgStr);
                 latch.countDown();
@@ -193,15 +183,13 @@ public class IgniteMessagingSendAsyncTest extends GridCommonAbstractTest {
     }
 
     /**
-     * only for this test procedure
+     * Only for this test procedure.
      */
     private interface ProcedureApply {
-
         /**
          * @param val    Value.
          * @param thread Thread.
          */
         void apply(String val, Thread thread);
     }
-
 }


[18/34] ignite git commit: merge from master

Posted by sb...@apache.org.
merge from master


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

Branch: refs/heads/ignite-3727-2
Commit: 9cdc754aaa367573dfc713230057e7094f678148
Parents: 190a5c9 04514fe
Author: sboikov <sb...@gridgain.com>
Authored: Mon Sep 12 22:46:48 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon Sep 12 22:46:48 2016 +0300

----------------------------------------------------------------------
 .../scripts/recreate-cassandra-artifacts.bat    |   32 +-
 .../java/org/apache/ignite/IgniteCache.java     |   15 +
 .../store/jdbc/dialect/SQLServerDialect.java    |    2 +-
 .../ignite/configuration/OdbcConfiguration.java |   98 +-
 .../local/LocalIgfsSecondaryFileSystem.java     |   53 +-
 .../apache/ignite/internal/GridLoggerProxy.java |    3 +-
 .../org/apache/ignite/internal/IgnitionEx.java  |   17 +-
 .../ignite/internal/binary/BinaryContext.java   |    3 +
 .../internal/binary/BinaryMarshaller.java       |   28 +-
 .../internal/binary/BinaryReaderExImpl.java     |   24 +
 .../internal/binary/BinaryReaderHandles.java    |    2 +-
 .../internal/binary/BinaryWriterExImpl.java     |   18 +
 .../binary/builder/BinaryObjectBuilderImpl.java |    2 +-
 .../client/GridClientConfiguration.java         |    1 -
 .../internal/cluster/ClusterGroupAdapter.java   |    2 +-
 .../cluster/ClusterNodeLocalMapImpl.java        |    3 +-
 .../processors/cache/CacheLazyEntry.java        |    2 +
 .../EntryProcessorResourceInjectorProxy.java    |  105 +
 .../processors/cache/GridCacheAdapter.java      |    2 +-
 .../processors/cache/GridCacheContext.java      |    2 +-
 .../processors/cache/GridCacheMapEntry.java     |   32 +-
 .../GridCachePartitionExchangeManager.java      |    7 +
 .../processors/cache/GridCacheProcessor.java    |    5 +-
 .../processors/cache/GridCacheTtlManager.java   |   24 +-
 .../processors/cache/IgniteCacheProxy.java      |  153 +-
 .../binary/CacheObjectBinaryProcessorImpl.java  |   40 +-
 .../GridDistributedTxPrepareRequest.java        |    4 +-
 .../distributed/dht/GridDhtLockFuture.java      |   53 +-
 .../distributed/dht/GridDhtTxFinishFuture.java  |    4 +-
 .../cache/distributed/dht/GridDhtTxLocal.java   |   26 +-
 .../distributed/dht/GridDhtTxPrepareFuture.java |  101 +-
 .../dht/GridDhtTxPrepareRequest.java            |    4 +-
 .../GridNearAtomicAbstractUpdateFuture.java     |   69 +
 .../GridNearAtomicSingleUpdateFuture.java       |   87 +-
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |   76 +-
 .../colocated/GridDhtColocatedLockFuture.java   |   37 +-
 .../distributed/near/GridNearLockFuture.java    |   90 +-
 ...arOptimisticSerializableTxPrepareFuture.java |   13 +-
 .../near/GridNearOptimisticTxPrepareFuture.java |  263 +-
 ...ridNearOptimisticTxPrepareFutureAdapter.java |    5 +-
 .../GridNearPessimisticTxPrepareFuture.java     |    8 +-
 .../near/GridNearTxFinishFuture.java            |    5 +-
 .../cache/distributed/near/GridNearTxLocal.java |   16 +-
 .../near/GridNearTxPrepareRequest.java          |    4 +-
 .../local/atomic/GridLocalAtomicCache.java      |   18 +-
 .../processors/cache/query/CacheQuery.java      |   11 +-
 .../query/GridCacheDistributedQueryManager.java |   22 +-
 .../cache/query/GridCacheLocalQueryManager.java |    3 +-
 .../cache/query/GridCacheQueryAdapter.java      |   69 +-
 .../cache/query/GridCacheQueryBean.java         |    8 +-
 .../cache/query/GridCacheQueryInfo.java         |    8 +-
 .../cache/query/GridCacheQueryManager.java      |  125 +-
 .../cache/query/GridCacheQueryRequest.java      |    6 +-
 .../cache/query/GridCacheSqlQuery.java          |   11 +-
 .../cache/transactions/IgniteInternalTx.java    |    3 +-
 .../cache/transactions/IgniteTxAdapter.java     |   37 +-
 .../cache/transactions/IgniteTxHandler.java     |   11 +-
 .../transactions/IgniteTxLocalAdapter.java      |   24 +-
 .../cache/transactions/IgniteTxManager.java     |   86 +-
 .../cache/transactions/IgniteTxStateImpl.java   |   11 +-
 .../cache/transactions/TxDeadlockDetection.java |   51 +-
 .../datastreamer/DataStreamerImpl.java          |   88 +-
 .../processors/igfs/IgfsDataManager.java        |    2 +-
 .../internal/processors/igfs/IgfsImpl.java      |  216 +-
 .../local/LocalFileSystemSizeVisitor.java       |   60 +
 .../processors/odbc/OdbcMessageParser.java      |   10 +-
 .../processors/odbc/OdbcNioListener.java        |    2 +-
 .../internal/processors/odbc/OdbcProcessor.java |   54 +-
 .../processors/odbc/OdbcRequestHandler.java     |   59 +-
 .../odbc/escape/OdbcEscapeParseResult.java      |   73 +
 .../processors/odbc/escape/OdbcEscapeToken.java |   61 +
 .../processors/odbc/escape/OdbcEscapeType.java  |  112 +
 .../processors/odbc/escape/OdbcEscapeUtils.java |  392 ++
 .../query/PlatformAbstractQueryCursor.java      |   11 +-
 .../cache/query/PlatformFieldsQueryCursor.java  |    6 +
 .../processors/resource/GridResourceIoc.java    |  438 ++-
 .../resource/GridResourceProcessor.java         |  396 +-
 .../service/GridServiceProcessor.java           |   18 +-
 .../processors/task/GridTaskWorker.java         |    2 +-
 .../ignite/internal/util/IgniteUtils.java       |   60 +-
 .../util/future/GridCompoundFuture.java         |   10 +
 .../util/offheap/unsafe/GridUnsafeLru.java      |   30 +-
 .../visor/event/VisorGridDiscoveryEventV2.java  |   80 +
 .../visor/node/VisorNodeDataCollectorJob.java   |   10 +-
 .../internal/visor/util/VisorEventMapper.java   |   96 +-
 .../internal/visor/util/VisorTaskUtils.java     |   22 +-
 .../ignite/marshaller/AbstractMarshaller.java   |   41 +-
 .../AbstractNodeNameAwareMarshaller.java        |  142 +
 .../ignite/marshaller/MarshallerUtils.java      |   58 +
 .../ignite/marshaller/jdk/JdkMarshaller.java    |   40 +-
 .../optimized/OptimizedMarshaller.java          |   12 +-
 .../sharedfs/SharedFsCheckpointSpi.java         |    7 +-
 .../ignite/spi/discovery/tcp/ClientImpl.java    |   18 +-
 .../ignite/spi/discovery/tcp/ServerImpl.java    |   29 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |   20 +-
 .../ignite/stream/socket/SocketStreamer.java    |   18 +-
 .../ignite/internal/ClusterGroupSelfTest.java   |    2 +-
 .../internal/GridEventStorageSelfTest.java      |   97 +-
 .../binary/BinaryMarshallerSelfTest.java        |   38 +
 .../BinaryObjectBuilderAdditionalSelfTest.java  |   14 +
 .../cache/GridCacheAbstractFullApiSelfTest.java |  393 +-
 .../cache/GridCacheAbstractSelfTest.java        |  140 +-
 .../cache/GridLocalIgniteSerializationTest.java |  378 ++
 .../cache/IgniteTxConfigCacheSelfTest.java      |   91 +-
 .../GridCacheTransformEventSelfTest.java        |   66 +-
 .../IgniteTxTimeoutAbstractTest.java            |    8 +-
 ...tionedMultiNodeLongTxTimeoutFullApiTest.java |   34 +
 ...nabledMultiNodeLongTxTimeoutFullApiTest.java |   41 +
 ...ePartitionedBasicStoreMultiNodeSelfTest.java |    2 +
 .../GridCacheRebalancingOrderingTest.java       |  916 +++++
 .../IgniteCacheExpiryPolicyAbstractTest.java    |   14 +-
 .../local/GridCacheLocalTxTimeoutSelfTest.java  |    5 +-
 .../GridCacheQueryTransformerSelfTest.java      |  575 +++
 .../transactions/DepthFirstSearchTest.java      |  100 +-
 .../TxDeadlockDetectionNoHangsTest.java         |  246 ++
 .../transactions/TxDeadlockDetectionTest.java   |   13 +-
 ...timisticDeadlockDetectionCrossCacheTest.java |  257 ++
 .../TxOptimisticDeadlockDetectionTest.java      |  574 +++
 ...simisticDeadlockDetectionCrossCacheTest.java |  165 +-
 .../TxPessimisticDeadlockDetectionTest.java     |   50 +-
 .../igfs/IgfsAbstractBaseSelfTest.java          | 1066 ++++++
 .../processors/igfs/IgfsAbstractSelfTest.java   | 1043 +-----
 ...SecondaryFileSystemDualAbstractSelfTest.java |  206 +-
 .../processors/igfs/IgfsMaxSizeSelfTest.java    |  122 +
 .../processors/igfs/IgfsProcessorSelfTest.java  |   11 +-
 .../processors/igfs/IgfsProxySelfTest.java      |   32 +
 .../processors/igfs/IgfsStreamsSelfTest.java    |    2 +-
 .../odbc/OdbcEscapeSequenceSelfTest.java        |  778 ++++
 .../odbc/OdbcProcessorValidationSelfTest.java   |   37 +-
 .../spi/discovery/tcp/TcpDiscoverySelfTest.java |    2 +-
 .../multijvm/IgniteCacheProcessProxy.java       |    6 +
 .../ignite/testsuites/IgniteBasicTestSuite.java |    4 +
 .../IgniteCacheFullApiSelfTestSuite.java        |    4 +
 .../ignite/testsuites/IgniteIgfsTestSuite.java  |    3 +
 .../TxDeadlockDetectionTestSuite.java           |    6 +
 .../query/h2/opt/GridH2ValueCacheObject.java    |    8 -
 ...niteBinaryObjectLocalQueryArgumentsTest.java |   28 +
 ...aryObjectQueryArgumentsOffheapLocalTest.java |   28 +
 ...teBinaryObjectQueryArgumentsOffheapTest.java |   30 +
 .../IgniteBinaryObjectQueryArgumentsTest.java   |  472 ++-
 .../IgniteCacheReplicatedQuerySelfTest.java     |   49 +-
 .../query/h2/sql/GridQueryParsingTest.java      |    2 +-
 .../IgniteCacheQuerySelfTestSuite.java          |   11 +
 .../kafka/connect/IgniteSinkConnector.java      |    9 +
 .../kafka/connect/IgniteSourceConnector.java    |    9 +
 .../kafka/connect/IgniteSinkConnectorTest.java  |   15 +-
 .../connect/IgniteSourceConnectorTest.java      |   14 +-
 .../osgi-karaf/src/main/resources/features.xml  |   12 +-
 .../ignite/impl/binary/binary_reader_impl.h     |    2 +-
 .../common/include/ignite/common/concurrent.h   |    5 +-
 .../cpp/common/include/ignite/common/utils.h    |    7 +
 .../cpp/common/include/ignite/ignite_error.h    |   11 +-
 .../cpp/common/os/win/src/common/utils.cpp      |   20 +
 .../cpp/common/src/common/big_integer.cpp       |    1 -
 .../platforms/cpp/common/src/ignite_error.cpp   |    2 +-
 .../cpp/core-test/src/cache_query_test.cpp      |  300 +-
 modules/platforms/cpp/core/Makefile.am          |    1 +
 modules/platforms/cpp/core/include/Makefile.am  |    1 +
 .../include/ignite/cache/query/query_cursor.h   |    6 +-
 .../ignite/cache/query/query_fields_cursor.h    |    4 +-
 .../cpp/core/include/ignite/ignition.h          |    2 +-
 .../ignite/impl/cache/query/query_batch.h       |  148 +
 .../impl/cache/query/query_fields_row_impl.h    |   30 +-
 .../ignite/impl/cache/query/query_impl.h        |   30 +-
 .../platforms/cpp/core/project/vs/core.vcxproj  |    2 +
 .../cpp/core/project/vs/core.vcxproj.filters    |    6 +
 modules/platforms/cpp/core/src/ignition.cpp     |    8 +-
 .../core/src/impl/cache/query/query_batch.cpp   |   52 +
 .../core/src/impl/cache/query/query_impl.cpp    |  180 +-
 modules/platforms/cpp/odbc-test/Makefile.am     |   11 +
 .../odbc-test/config/queries-test-noodbc.xml    |   48 +-
 .../cpp/odbc-test/config/queries-test.xml       |   50 +-
 .../platforms/cpp/odbc-test/include/Makefile.am |    4 +-
 .../odbc-test/include/sql_test_suite_fixture.h  |  197 +
 .../cpp/odbc-test/include/test_utils.h          |   45 +
 .../cpp/odbc-test/project/vs/odbc-test.vcxproj  |   14 +
 .../project/vs/odbc-test.vcxproj.filters        |   42 +
 .../cpp/odbc-test/src/configuration_test.cpp    |   20 +-
 .../cpp/odbc-test/src/queries_test.cpp          |   73 +-
 .../src/sql_aggregate_functions_test.cpp        |  249 ++
 .../src/sql_date_time_functions_test.cpp        |  213 ++
 .../src/sql_numeric_functions_test.cpp          |  309 ++
 .../cpp/odbc-test/src/sql_operators_test.cpp    |  214 ++
 .../cpp/odbc-test/src/sql_outer_join_test.cpp   |  498 +++
 .../odbc-test/src/sql_string_functions_test.cpp |  354 ++
 .../odbc-test/src/sql_system_functions_test.cpp |   47 +
 .../odbc-test/src/sql_test_suite_fixture.cpp    |  288 ++
 .../cpp/odbc-test/src/sql_types_test.cpp        |   60 +
 .../src/sql_value_expressions_test.cpp          |   94 +
 .../platforms/cpp/odbc-test/src/test_utils.cpp  |   36 +
 modules/platforms/cpp/odbc/Makefile.am          |    1 +
 modules/platforms/cpp/odbc/include/Makefile.am  |    1 +
 .../platforms/cpp/odbc/include/ignite/odbc.h    |    1 -
 .../include/ignite/odbc/config/configuration.h  |  129 +-
 .../cpp/odbc/include/ignite/odbc/connection.h   |    7 -
 .../ignite/odbc/diagnostic/diagnostic_record.h  |    2 +-
 .../cpp/odbc/include/ignite/odbc/dsn_config.h   |   61 +
 .../odbc/include/ignite/odbc/protocol_version.h |   20 +-
 .../cpp/odbc/include/ignite/odbc/result_page.h  |    3 -
 .../include/ignite/odbc/system/odbc_constants.h |    4 -
 .../odbc/system/ui/dsn_configuration_window.h   |  160 +
 .../ignite/odbc/system/ui/custom_window.h       |  189 +
 .../win/include/ignite/odbc/system/ui/window.h  |  201 +
 .../odbc/os/win/src/system/ui/custom_window.cpp |  184 +
 .../src/system/ui/dsn_configuration_window.cpp  |  326 ++
 .../cpp/odbc/os/win/src/system/ui/window.cpp    |  192 +
 .../cpp/odbc/os/win/src/system_dsn.cpp          |  218 ++
 .../platforms/cpp/odbc/project/vs/odbc.vcxproj  |   25 +-
 .../cpp/odbc/project/vs/odbc.vcxproj.filters    |   30 +
 modules/platforms/cpp/odbc/src/column.cpp       |   14 +-
 .../cpp/odbc/src/config/configuration.cpp       |   27 +-
 .../cpp/odbc/src/config/connection_info.cpp     |   75 +-
 modules/platforms/cpp/odbc/src/connection.cpp   |    2 +-
 .../odbc/src/diagnostic/diagnostic_record.cpp   |    2 +-
 .../diagnostic/diagnostic_record_storage.cpp    |    2 +-
 modules/platforms/cpp/odbc/src/dsn_config.cpp   |  123 +
 modules/platforms/cpp/odbc/src/entry_points.cpp |    8 -
 modules/platforms/cpp/odbc/src/odbc.cpp         |   88 +-
 .../platforms/cpp/odbc/src/protocol_version.cpp |   23 +-
 .../platforms/cpp/odbc/src/query/data_query.cpp |    8 +-
 modules/platforms/cpp/odbc/src/utility.cpp      |   14 +-
 .../Apache.Ignite.Core.Tests.TestDll.csproj     |    5 -
 .../Cache/Affinity/AffinityFunctionContext.cs   |    4 +-
 .../Apache.Ignite.Core/Events/DiscoveryEvent.cs |    4 +-
 .../Apache.Ignite.Core/Events/EventReader.cs    |    6 +-
 .../Impl/Binary/DateTimeHolder.cs               |    4 +-
 .../Impl/Binary/Marshaller.cs                   |   36 +-
 .../Impl/Binary/SerializableObjectHolder.cs     |    6 +-
 .../Affinity/AffinityFunctionSerializer.cs      |    2 +-
 .../Impl/Cache/CacheEntryFilterHolder.cs        |   10 +-
 .../Impl/Cache/CacheEntryProcessorHolder.cs     |    8 +-
 .../Continuous/ContinuousQueryFilterHolder.cs   |    8 +-
 .../Impl/Cache/Query/FieldsQueryCursor.cs       |    3 +
 .../Impl/Compute/Closure/ComputeActionJob.cs    |    6 +-
 .../Impl/Compute/Closure/ComputeFuncJob.cs      |    8 +-
 .../Impl/Compute/Closure/ComputeOutFuncJob.cs   |    9 +-
 .../Impl/Compute/ComputeFunc.cs                 |    9 +-
 .../Impl/Compute/ComputeJob.cs                  |   10 +-
 .../Impl/Compute/ComputeJobHolder.cs            |    8 +-
 .../Impl/Compute/ComputeOutFunc.cs              |    8 +-
 .../Impl/Datastream/StreamReceiverHolder.cs     |    2 +-
 .../Apache.Ignite.Core/Impl/IgniteUtils.cs      |    5 +-
 .../Impl/Messaging/MessageListenerHolder.cs     |    8 +-
 .../Apache.Ignite.Linq.csproj                   |    5 -
 .../Apache.Ignite.NLog.csproj                   |    5 -
 .../dotnet/Apache.Ignite/Apache.Ignite.csproj   |    5 -
 .../GridTransformSpringInjectionSelfTest.java   |  186 +
 .../testsuites/IgniteSpringTestSuite.java       |    7 +-
 modules/storm/README.txt                        |    2 +-
 modules/storm/pom.xml                           |    2 +-
 .../ignite/stream/storm/StormStreamer.java      |   10 +-
 .../storm/StormIgniteStreamerSelfTest.java      |   20 +-
 .../ignite/stream/storm/TestStormSpout.java     |   10 +-
 .../ignite/visor/commands/VisorConsole.scala    |    1 +
 .../commands/cache/VisorCacheCommand.scala      |   33 +-
 .../commands/cache/VisorCacheResetCommand.scala |  129 +
 .../cache/VisorCacheResetCommandSpec.scala      |  114 +
 modules/web-agent/.gitignore                    |    2 -
 modules/web-agent/README.txt                    |   88 -
 .../web-agent/assembly/release-web-agent.xml    |   72 -
 modules/web-agent/bin/ignite-web-agent.bat      |   70 -
 modules/web-agent/bin/ignite-web-agent.sh       |   87 -
 modules/web-agent/demo/README.txt               |    4 -
 modules/web-agent/demo/db-init.sql              |  102 -
 modules/web-agent/jdbc-drivers/README.txt       |   10 -
 modules/web-agent/logs/README.txt               |    5 -
 modules/web-agent/pom.xml                       |  189 -
 .../console/agent/AgentConfiguration.java       |  268 --
 .../ignite/console/agent/AgentLauncher.java     |  344 --
 .../apache/ignite/console/agent/AgentUtils.java |  111 -
 .../console/agent/handlers/AbstractHandler.java |  110 -
 .../console/agent/handlers/DatabaseHandler.java |  298 --
 .../console/agent/handlers/RestHandler.java     |  276 --
 .../ignite/console/demo/AgentClusterDemo.java   |  638 ----
 .../ignite/console/demo/AgentMetadataDemo.java  |   92 -
 .../apache/ignite/console/demo/model/Car.java   |  152 -
 .../ignite/console/demo/model/Country.java      |  152 -
 .../ignite/console/demo/model/Department.java   |  152 -
 .../ignite/console/demo/model/Employee.java     |  356 --
 .../ignite/console/demo/model/Parking.java      |  152 -
 .../src/main/resources/log4j.properties         |   53 -
 modules/web-console/.gitignore                  |    6 +
 modules/web-console/DEVNOTES.txt                |   22 +-
 modules/web-console/backend/.babelrc            |    9 +
 modules/web-console/backend/.eslintrc           |  188 +
 modules/web-console/backend/.gitignore          |    8 +
 .../web-console/backend/agent_dists/README.txt  |    7 +
 modules/web-console/backend/app/agent.js        |  753 ++++
 modules/web-console/backend/app/app.js          |   61 +
 modules/web-console/backend/app/browser.js      |  404 ++
 modules/web-console/backend/app/configure.js    |   86 +
 modules/web-console/backend/app/index.js        |  116 +
 modules/web-console/backend/app/mongo.js        |  673 ++++
 modules/web-console/backend/app/nconf.js        |   48 +
 modules/web-console/backend/app/routes.js       |   64 +
 modules/web-console/backend/app/settings.js     |   80 +
 .../backend/config/settings.json.sample         |   30 +
 .../backend/errors/AppErrorException.js         |   36 +
 .../backend/errors/AuthFailedException.js       |   30 +
 .../backend/errors/DuplicateKeyException.js     |   28 +
 .../backend/errors/IllegalAccessError.js        |   29 +
 .../backend/errors/IllegalArgumentException.js  |   29 +
 .../backend/errors/MissingResourceException.js  |   30 +
 .../backend/errors/ServerErrorException.js      |   36 +
 modules/web-console/backend/errors/index.js     |   39 +
 modules/web-console/backend/index.js            |   19 +
 modules/web-console/backend/injector.js         |   30 +
 modules/web-console/backend/middlewares/api.js  |   44 +
 modules/web-console/backend/middlewares/host.js |   39 +
 modules/web-console/backend/middlewares/user.js |   36 +
 modules/web-console/backend/package.json        |   71 +
 modules/web-console/backend/routes/admin.js     |   84 +
 modules/web-console/backend/routes/agent.js     |   53 +
 modules/web-console/backend/routes/caches.js    |   65 +
 modules/web-console/backend/routes/clusters.js  |   64 +
 .../web-console/backend/routes/configuration.js |   41 +
 modules/web-console/backend/routes/demo.js      |  133 +
 .../web-console/backend/routes/demo/caches.json |   87 +
 .../backend/routes/demo/clusters.json           |   50 +
 .../backend/routes/demo/domains.json            |  307 ++
 .../web-console/backend/routes/demo/igfss.json  |   10 +
 modules/web-console/backend/routes/domains.js   |   76 +
 modules/web-console/backend/routes/igfss.js     |   65 +
 modules/web-console/backend/routes/notebooks.js |   80 +
 modules/web-console/backend/routes/profile.js   |   73 +
 modules/web-console/backend/routes/public.js    |  168 +
 modules/web-console/backend/services/agents.js  |   82 +
 modules/web-console/backend/services/auth.js    |   47 +
 modules/web-console/backend/services/caches.js  |  144 +
 .../web-console/backend/services/clusters.js    |  141 +
 .../backend/services/configurations.js          |   59 +
 modules/web-console/backend/services/domains.js |  187 +
 modules/web-console/backend/services/igfss.js   |  136 +
 modules/web-console/backend/services/mails.js   |  131 +
 .../web-console/backend/services/notebooks.js   |  104 +
 .../web-console/backend/services/sessions.js    |   63 +
 modules/web-console/backend/services/spaces.js  |   75 +
 modules/web-console/backend/services/users.js   |  229 ++
 .../backend/test/config/settings.json           |   20 +
 .../web-console/backend/test/data/accounts.json |   18 +
 .../web-console/backend/test/data/caches.json   |   87 +
 .../web-console/backend/test/data/clusters.json |   50 +
 .../web-console/backend/test/data/domains.json  |  307 ++
 .../web-console/backend/test/data/igfss.json    |   10 +
 modules/web-console/backend/test/injector.js    |   31 +
 .../backend/test/unit/CacheService.test.js      |  192 +
 .../backend/test/unit/ClusterService.test.js    |  190 +
 .../backend/test/unit/DomainService.test.js     |  198 +
 .../backend/test/unit/IgfsService.test.js       |  190 +
 .../docker/compose/backend/.dockerignore        |    1 +
 .../docker/compose/backend/Dockerfile           |   30 +
 .../web-console/docker/compose/backend/build.sh |   57 +
 .../docker/compose/docker-compose.yml           |   59 +
 .../docker/compose/frontend/.dockerignore       |    3 +
 .../docker/compose/frontend/Dockerfile          |   32 +
 .../docker/compose/frontend/DockerfileBuild     |   30 +
 .../docker/compose/frontend/build.sh            |   59 +
 .../docker/compose/frontend/nginx/nginx.conf    |   57 +
 .../compose/frontend/nginx/web-console.conf     |   59 +
 .../web-console/docker/standalone/.dockerignore |    2 +
 .../web-console/docker/standalone/Dockerfile    |   87 +
 modules/web-console/docker/standalone/build.sh  |   59 +
 .../docker/standalone/docker-compose.yml        |   41 +
 .../web-console/docker/standalone/entrypoint.sh |   23 +
 .../docker/standalone/nginx/nginx.conf          |   55 +
 .../docker/standalone/nginx/web-console.conf    |   54 +
 modules/web-console/frontend/.babelrc           |    9 +
 modules/web-console/frontend/.eslintrc          |  202 +
 modules/web-console/frontend/.gitignore         |    7 +
 modules/web-console/frontend/app/app.config.js  |   86 +
 modules/web-console/frontend/app/app.js         |  270 ++
 .../frontend/app/controllers/auth.controller.js |   30 +
 .../controllers/reset-password.controller.js    |   50 +
 .../web-console/frontend/app/data/colors.json   |   22 +
 .../frontend/app/data/countries.json            |   94 +
 .../frontend/app/data/demo-info.json            |   14 +
 .../frontend/app/data/event-types.json          |  169 +
 .../frontend/app/data/getting-started.json      |  109 +
 .../frontend/app/data/java-classes.json         |   19 +
 .../frontend/app/data/java-keywords.json        |   55 +
 .../frontend/app/data/java-primitives.json      |    9 +
 .../frontend/app/data/pom-dependencies.json     |   20 +
 .../frontend/app/decorator/select.js            |   77 +
 .../frontend/app/decorator/tooltip.js           |   56 +
 .../app/directives/auto-focus.directive.js      |   26 +
 .../app/directives/bs-affix-update.directive.js |   34 +
 .../app/directives/centered/centered.css        |   37 +
 .../directives/centered/centered.directive.js   |   26 +
 .../directives/copy-to-clipboard.directive.js   |   29 +
 .../hide-on-state-change.directive.js           |   31 +
 .../information/information.directive.js        |   30 +
 .../app/directives/information/information.jade |   20 +
 .../app/directives/information/information.scss |   56 +
 .../frontend/app/directives/match.directive.js  |   27 +
 .../app/directives/on-click-focus.directive.js  |   26 +
 .../directives/on-enter-focus-move.directive.js |   29 +
 .../app/directives/on-enter.directive.js        |   32 +
 .../app/directives/on-escape.directive.js       |   32 +
 .../ui-ace-docker/ui-ace-docker.controller.js   |   33 +
 .../ui-ace-docker/ui-ace-docker.directive.js    |   46 +
 .../directives/ui-ace-docker/ui-ace-docker.jade |   31 +
 .../ui-ace-java/ui-ace-java.controller.js       |   32 +
 .../ui-ace-java/ui-ace-java.directive.js        |  147 +
 .../app/directives/ui-ace-java/ui-ace-java.jade |   22 +
 .../ui-ace-pojos/ui-ace-pojos.controller.js     |   95 +
 .../ui-ace-pojos/ui-ace-pojos.directive.js      |   46 +
 .../directives/ui-ace-pojos/ui-ace-pojos.jade   |   40 +
 .../ui-ace-pom/ui-ace-pom.controller.js         |   33 +
 .../ui-ace-pom/ui-ace-pom.directive.js          |   41 +
 .../app/directives/ui-ace-pom/ui-ace-pom.jade   |   17 +
 .../app/directives/ui-ace-tabs.directive.js     |   24 +
 .../ui-ace-xml/ui-ace-xml.controller.js         |   27 +
 .../ui-ace-xml/ui-ace-xml.directive.js          |  147 +
 .../app/directives/ui-ace-xml/ui-ace-xml.jade   |   17 +
 .../frontend/app/filters/byName.filter.js       |   23 +
 .../app/filters/domainsValidation.filter.js     |   33 +
 .../frontend/app/filters/duration.filter.js     |   38 +
 .../frontend/app/filters/hasPojo.filter.js      |   18 +
 .../frontend/app/helpers/jade/form.jade         |   27 +
 .../helpers/jade/form/form-field-checkbox.jade  |   38 +
 .../helpers/jade/form/form-field-datalist.jade  |   51 +
 .../app/helpers/jade/form/form-field-down.jade  |   18 +
 .../helpers/jade/form/form-field-dropdown.jade  |   50 +
 .../helpers/jade/form/form-field-feedback.jade  |   29 +
 .../app/helpers/jade/form/form-field-label.jade |   23 +
 .../helpers/jade/form/form-field-number.jade    |   52 +
 .../app/helpers/jade/form/form-field-text.jade  |   47 +
 .../app/helpers/jade/form/form-field-up.jade    |   18 +
 .../app/helpers/jade/form/form-group.jade       |   23 +
 .../frontend/app/helpers/jade/mixins.jade       |  541 +++
 .../frontend/app/modules/Demo/Demo.module.js    |  166 +
 .../frontend/app/modules/ace.module.js          |  269 ++
 .../frontend/app/modules/agent/agent.module.js  |  341 ++
 .../app/modules/branding/branding.module.js     |   45 +
 .../app/modules/branding/branding.provider.js   |  111 +
 .../app/modules/branding/features.directive.js  |   35 +
 .../app/modules/branding/footer.directive.js    |   34 +
 .../modules/branding/header-logo.directive.js   |   34 +
 .../app/modules/branding/header-logo.jade       |   18 +
 .../modules/branding/header-title.directive.js  |   35 +
 .../branding/powered-by-apache.directive.js     |   35 +
 .../app/modules/branding/powered-by-apache.jade |   18 +
 .../app/modules/branding/terms.directive.js     |   30 +
 .../configuration/EventGroups.provider.js       |   30 +
 .../modules/configuration/Sidebar.provider.js   |   39 +
 .../configuration/configuration.module.js       |   41 +
 .../configuration/generator/Docker.service.js   |   78 +
 .../configuration/generator/Java.service.js     |   21 +
 .../configuration/generator/Pom.service.js      |  226 ++
 .../configuration/generator/Xml.service.js      |   21 +
 .../modules/configuration/sidebar.directive.js  |   30 +
 .../modules/dialog/dialog-content.directive.js  |   31 +
 .../modules/dialog/dialog-title.directive.js    |   31 +
 .../app/modules/dialog/dialog.controller.js     |   40 +
 .../app/modules/dialog/dialog.directive.js      |   32 +
 .../app/modules/dialog/dialog.factory.js        |   32 +
 .../frontend/app/modules/dialog/dialog.jade     |   26 +
 .../app/modules/dialog/dialog.module.js         |   32 +
 .../field/bs-select-placeholder.directive.js    |   47 +
 .../app/modules/form/field/down.directive.js    |   39 +
 .../app/modules/form/field/feedback.scss        |   37 +
 .../frontend/app/modules/form/field/field.scss  |   43 +
 .../field/form-control-feedback.directive.js    |   40 +
 .../form/field/input/autofocus.directive.js     |   30 +
 .../app/modules/form/field/input/select.scss    |   21 +
 .../app/modules/form/field/input/text.scss      |   41 +
 .../app/modules/form/field/label.directive.js   |   47 +
 .../app/modules/form/field/tooltip.directive.js |   49 +
 .../app/modules/form/field/up.directive.js      |   39 +
 .../frontend/app/modules/form/form.module.js    |   96 +
 .../app/modules/form/group/add.directive.js     |   40 +
 .../app/modules/form/group/tooltip.directive.js |   40 +
 .../app/modules/form/panel/chevron.directive.js |   53 +
 .../app/modules/form/panel/field.directive.js   |   69 +
 .../app/modules/form/panel/panel.directive.js   |   37 +
 .../app/modules/form/panel/revert.directive.js  |   54 +
 .../form/validator/ipaddress.directive.js       |   86 +
 .../validator/java-built-in-class.directive.js  |   31 +
 .../form/validator/java-identifier.directive.js |   31 +
 .../form/validator/java-keywords.directive.js   |   42 +
 .../validator/java-package-name.directive.js    |   31 +
 .../java-package-specified.directive.js         |   34 +
 .../form/validator/property-unique.directive.js |   47 +
 .../property-value-specified.directive.js       |   31 +
 .../modules/form/validator/unique.directive.js  |   49 +
 .../modules/form/validator/uuid.directive.js    |   37 +
 .../getting-started/GettingStarted.provider.js  |  112 +
 .../frontend/app/modules/loading/loading.css    |   73 +
 .../app/modules/loading/loading.directive.js    |   51 +
 .../frontend/app/modules/loading/loading.jade   |   23 +
 .../app/modules/loading/loading.module.js       |   26 +
 .../app/modules/loading/loading.service.js      |   48 +
 .../app/modules/navbar/Navbar.provider.js       |   28 +
 .../app/modules/navbar/Userbar.provider.js      |   28 +
 .../app/modules/navbar/navbar.directive.js      |   30 +
 .../app/modules/navbar/navbar.module.js         |   33 +
 .../app/modules/navbar/userbar.directive.js     |   48 +
 .../frontend/app/modules/socket.module.js       |   41 +
 .../frontend/app/modules/sql/Notebook.data.js   |  157 +
 .../app/modules/sql/Notebook.service.js         |   74 +
 .../app/modules/sql/notebook.controller.js      |   60 +
 .../app/modules/sql/scan-filter-input.jade      |   39 +
 .../modules/sql/scan-filter-input.service.js    |   51 +
 .../frontend/app/modules/sql/sql.controller.js  | 1632 ++++++++
 .../frontend/app/modules/sql/sql.module.js      |   60 +
 .../frontend/app/modules/states/admin.state.js  |   35 +
 .../app/modules/states/configuration.state.js   |   97 +
 .../configuration/Configuration.resource.js     |   42 +
 .../configuration/caches/concurrency.jade       |   65 +
 .../states/configuration/caches/general.jade    |   66 +
 .../states/configuration/caches/memory.jade     |  102 +
 .../configuration/caches/node-filter.jade       |  108 +
 .../states/configuration/caches/query.jade      |   95 +
 .../states/configuration/caches/rebalance.jade  |   65 +
 .../configuration/caches/server-near-cache.jade |   51 +
 .../states/configuration/caches/statistics.jade |   39 +
 .../states/configuration/caches/store.jade      |  244 ++
 .../states/configuration/clusters/atomic.jade   |   53 +
 .../configuration/clusters/attributes.jade      |   57 +
 .../states/configuration/clusters/binary.jade   |   77 +
 .../configuration/clusters/cache-key-cfg.jade   |   53 +
 .../configuration/clusters/collision.jade       |   62 +
 .../clusters/collision/custom.jade              |   24 +
 .../clusters/collision/fifo-queue.jade          |   27 +
 .../clusters/collision/job-stealing.jade        |   63 +
 .../clusters/collision/priority-queue.jade      |   42 +
 .../configuration/clusters/communication.jade   |   99 +
 .../configuration/clusters/connector.jade       |  103 +
 .../configuration/clusters/deployment.jade      |  113 +
 .../configuration/clusters/discovery.jade       |   87 +
 .../states/configuration/clusters/events.jade   |   37 +
 .../states/configuration/clusters/failover.jade |   72 +
 .../states/configuration/clusters/general.jade  |   73 +
 .../clusters/general/discovery/cloud.jade       |  134 +
 .../clusters/general/discovery/google.jade      |   38 +
 .../clusters/general/discovery/jdbc.jade        |   32 +
 .../clusters/general/discovery/multicast.jade   |   99 +
 .../clusters/general/discovery/s3.jade          |   27 +
 .../clusters/general/discovery/shared.jade      |   23 +
 .../clusters/general/discovery/vm.jade          |   79 +
 .../clusters/general/discovery/zookeeper.jade   |   83 +
 .../bounded-exponential-backoff.jade            |   27 +
 .../discovery/zookeeper/retrypolicy/custom.jade |   24 +
 .../retrypolicy/exponential-backoff.jade        |   27 +
 .../zookeeper/retrypolicy/forever.jade          |   22 +
 .../zookeeper/retrypolicy/n-times.jade          |   25 +
 .../zookeeper/retrypolicy/one-time.jade         |   23 +
 .../zookeeper/retrypolicy/until-elapsed.jade    |   25 +
 .../states/configuration/clusters/igfs.jade     |   37 +
 .../states/configuration/clusters/logger.jade   |   66 +
 .../configuration/clusters/logger/custom.jade   |   25 +
 .../configuration/clusters/logger/log4j.jade    |   50 +
 .../configuration/clusters/logger/log4j2.jade   |   39 +
 .../configuration/clusters/marshaller.jade      |   75 +
 .../states/configuration/clusters/metrics.jade  |   51 +
 .../states/configuration/clusters/ssl.jade      |  109 +
 .../states/configuration/clusters/swap.jade     |   71 +
 .../states/configuration/clusters/thread.jade   |   48 +
 .../states/configuration/clusters/time.jade     |   47 +
 .../configuration/clusters/transactions.jade    |   69 +
 .../states/configuration/domains/general.jade   |   46 +
 .../states/configuration/domains/query.jade     |  170 +
 .../states/configuration/domains/store.jade     |  126 +
 .../modules/states/configuration/igfs/dual.jade |   42 +
 .../states/configuration/igfs/fragmentizer.jade |   43 +
 .../states/configuration/igfs/general.jade      |   54 +
 .../modules/states/configuration/igfs/ipc.jade  |   60 +
 .../modules/states/configuration/igfs/misc.jade |  108 +
 .../states/configuration/igfs/secondary.jade    |   44 +
 .../configuration/preview-panel.directive.js    |  239 ++
 .../summary/summary-tabs.directive.js           |   50 +
 .../configuration/summary/summary.controller.js |  365 ++
 .../frontend/app/modules/states/errors.state.js |   43 +
 .../frontend/app/modules/states/logout.state.js |   35 +
 .../app/modules/states/password.state.js        |   46 +
 .../app/modules/states/profile.state.js         |   35 +
 .../frontend/app/modules/states/signin.state.js |   43 +
 .../app/modules/user/AclRoute.provider.js       |   47 +
 .../frontend/app/modules/user/Auth.service.js   |   56 +
 .../frontend/app/modules/user/User.service.js   |   51 +
 .../frontend/app/modules/user/permissions.js    |   28 +
 .../frontend/app/modules/user/user.module.js    |   73 +
 .../app/modules/version/Version.provider.js     |   32 +
 .../app/services/ChartColors.service.js         |   22 +
 .../frontend/app/services/Clone.service.js      |   64 +
 .../frontend/app/services/Confirm.service.js    |   68 +
 .../app/services/ConfirmBatch.service.js        |   92 +
 .../app/services/CopyToClipboard.service.js     |   50 +
 .../frontend/app/services/Countries.service.js  |   31 +
 .../app/services/ErrorPopover.service.js        |  126 +
 .../frontend/app/services/Focus.service.js      |   33 +
 .../frontend/app/services/FormUtils.service.js  |  435 +++
 .../app/services/InetAddress.service.js         |   53 +
 .../frontend/app/services/JavaTypes.service.js  |   93 +
 .../app/services/LegacyTable.service.js         |  209 ++
 .../app/services/LegacyUtils.service.js         |  572 +++
 .../frontend/app/services/Messages.service.js   |   63 +
 .../app/services/ModelNormalizer.service.js     |   59 +
 .../app/services/UnsavedChangesGuard.service.js |   38 +
 modules/web-console/frontend/app/vendor.js      |   55 +
 .../frontend/controllers/admin-controller.js    |   92 +
 .../frontend/controllers/caches-controller.js   |  524 +++
 .../frontend/controllers/clusters-controller.js |  689 ++++
 .../frontend/controllers/domains-controller.js  | 1792 +++++++++
 .../frontend/controllers/igfs-controller.js     |  416 +++
 .../frontend/controllers/profile-controller.js  |   94 +
 .../frontend/generator/generator-common.js      |  612 +++
 .../frontend/generator/generator-java.js        | 3534 ++++++++++++++++++
 .../frontend/generator/generator-optional.js    |   25 +
 .../frontend/generator/generator-properties.js  |  175 +
 .../frontend/generator/generator-readme.js      |   85 +
 .../frontend/generator/generator-xml.js         | 2093 +++++++++++
 .../frontend/gulpfile.babel.js/index.js         |   26 +
 .../frontend/gulpfile.babel.js/paths.js         |   74 +
 .../frontend/gulpfile.babel.js/tasks/build.js   |   21 +
 .../frontend/gulpfile.babel.js/tasks/bundle.js  |   32 +
 .../frontend/gulpfile.babel.js/tasks/clean.js   |   32 +
 .../frontend/gulpfile.babel.js/tasks/copy.js    |   33 +
 .../gulpfile.babel.js/tasks/ignite-modules.js   |   55 +
 .../frontend/gulpfile.babel.js/tasks/jade.js    |   40 +
 .../frontend/gulpfile.babel.js/tasks/test.js    |   92 +
 .../frontend/gulpfile.babel.js/tasks/watch.js   |   31 +
 .../gulpfile.babel.js/webpack/common.js         |  189 +
 .../webpack/environments/development.js         |   69 +
 .../webpack/environments/production.js          |   45 +
 .../frontend/gulpfile.babel.js/webpack/index.js |   32 +
 .../webpack/plugins/progress.js                 |   82 +
 .../frontend/ignite_modules/README.txt          |    6 +
 .../frontend/ignite_modules/index.js            |   27 +
 modules/web-console/frontend/package.json       |  125 +
 modules/web-console/frontend/public/favicon.ico |  Bin 0 -> 1150 bytes
 .../frontend/public/images/cache.png            |  Bin 0 -> 23700 bytes
 .../frontend/public/images/cluster.png          |  Bin 0 -> 29376 bytes
 .../frontend/public/images/docker.png           |  Bin 0 -> 521 bytes
 .../frontend/public/images/domains.png          |  Bin 0 -> 23828 bytes
 .../web-console/frontend/public/images/igfs.png |  Bin 0 -> 14307 bytes
 .../frontend/public/images/ignite-logo.png      |  Bin 0 -> 1982 bytes
 .../frontend/public/images/ignite-logo@2x.png   |  Bin 0 -> 3325 bytes
 .../frontend/public/images/ignite-puzzle.png    |  Bin 0 -> 71974 bytes
 .../web-console/frontend/public/images/java.png |  Bin 0 -> 170 bytes
 .../frontend/public/images/pb-ignite.png        |  Bin 0 -> 3493 bytes
 .../frontend/public/images/pb-ignite@2x.png     |  Bin 0 -> 8558 bytes
 .../frontend/public/images/query-chart.png      |  Bin 0 -> 16637 bytes
 .../frontend/public/images/query-metadata.png   |  Bin 0 -> 32298 bytes
 .../frontend/public/images/query-table.png      |  Bin 0 -> 29189 bytes
 .../frontend/public/images/summary.png          |  Bin 0 -> 31997 bytes
 .../web-console/frontend/public/images/xml.png  |  Bin 0 -> 232 bytes
 .../public/stylesheets/_bootstrap-custom.scss   |   65 +
 .../stylesheets/_bootstrap-variables.scss       |  891 +++++
 .../stylesheets/_font-awesome-custom.scss       |   32 +
 .../public/stylesheets/blocks/error.scss        |   31 +
 .../frontend/public/stylesheets/style.scss      | 2171 +++++++++++
 .../frontend/public/stylesheets/variables.scss  |   28 +
 .../frontend/test/e2e/exampe.test.js            |   40 +
 modules/web-console/frontend/test/karma.conf.js |  113 +
 .../frontend/test/protractor.conf.js            |   50 +
 .../frontend/test/unit/JavaTypes.test.js        |   69 +
 .../frontend/test/unit/UserAuth.test.js         |   35 +
 modules/web-console/frontend/views/403.jade     |   22 +
 modules/web-console/frontend/views/404.jade     |   22 +
 modules/web-console/frontend/views/base.jade    |   22 +
 .../frontend/views/configuration/caches.jade    |   53 +
 .../frontend/views/configuration/clusters.jade  |   66 +
 .../views/configuration/domains-import.jade     |  223 ++
 .../frontend/views/configuration/domains.jade   |   66 +
 .../frontend/views/configuration/igfs.jade      |   51 +
 .../frontend/views/configuration/sidebar.jade   |   29 +
 .../summary-project-structure.jade              |   27 +
 .../views/configuration/summary-tabs.jade       |   25 +
 .../frontend/views/configuration/summary.jade   |  122 +
 .../frontend/views/includes/footer.jade         |   23 +
 .../frontend/views/includes/header.jade         |   51 +
 modules/web-console/frontend/views/index.jade   |   47 +
 modules/web-console/frontend/views/reset.jade   |   48 +
 .../frontend/views/settings/admin.jade          |   76 +
 .../frontend/views/settings/profile.jade        |   76 +
 modules/web-console/frontend/views/signin.jade  |  163 +
 .../frontend/views/sql/cache-metadata.jade      |   40 +
 .../frontend/views/sql/chart-settings.jade      |   40 +
 .../frontend/views/sql/notebook-new.jade        |   31 +
 .../frontend/views/sql/paragraph-rate.jade      |   31 +
 modules/web-console/frontend/views/sql/sql.jade |  193 +
 .../views/templates/agent-download.jade         |   48 +
 .../frontend/views/templates/alert.jade         |   21 +
 .../frontend/views/templates/batch-confirm.jade |   32 +
 .../frontend/views/templates/clone.jade         |   37 +
 .../frontend/views/templates/confirm.jade       |   31 +
 .../frontend/views/templates/demo-info.jade     |   45 +
 .../frontend/views/templates/dropdown.jade      |   24 +
 .../views/templates/getting-started.jade        |   32 +
 .../frontend/views/templates/message.jade       |   26 +
 .../frontend/views/templates/pagination.jade    |   32 +
 .../frontend/views/templates/select.jade        |   26 +
 .../views/templates/validation-error.jade       |   25 +
 modules/web-console/pom.xml                     |   33 +-
 modules/web-console/src/main/js/.babelrc        |    3 -
 modules/web-console/src/main/js/.eslintrc       |  202 -
 modules/web-console/src/main/js/.gitignore      |    9 -
 .../web-console/src/main/js/app/app.config.js   |   86 -
 modules/web-console/src/main/js/app/app.js      |  274 --
 .../main/js/app/controllers/auth.controller.js  |   30 -
 .../js/app/controllers/notebooks.controller.js  |   69 -
 .../controllers/reset-password.controller.js    |   51 -
 .../src/main/js/app/data/colors.json            |   22 -
 .../src/main/js/app/data/countries.json         |   94 -
 .../src/main/js/app/data/demo-info.json         |   14 -
 .../src/main/js/app/data/event-types.json       |  169 -
 .../src/main/js/app/data/getting-started.json   |  109 -
 .../src/main/js/app/data/java-classes.json      |   18 -
 .../src/main/js/app/data/java-keywords.json     |   55 -
 .../src/main/js/app/data/java-primitives.json   |    9 -
 .../src/main/js/app/data/pom-dependencies.json  |   20 -
 .../src/main/js/app/decorator/select.js         |   77 -
 .../src/main/js/app/decorator/tooltip.js        |   56 -
 .../js/app/directives/auto-focus.directive.js   |   26 -
 .../app/directives/bs-affix-update.directive.js |   34 -
 .../js/app/directives/centered/centered.css     |   37 -
 .../directives/centered/centered.directive.js   |   26 -
 .../directives/copy-to-clipboard.directive.js   |   29 -
 .../hide-on-state-change.directive.js           |   31 -
 .../information/information.directive.js        |   30 -
 .../app/directives/information/information.jade |   20 -
 .../app/directives/information/information.scss |   56 -
 .../main/js/app/directives/match.directive.js   |   27 -
 .../app/directives/on-click-focus.directive.js  |   26 -
 .../directives/on-enter-focus-move.directive.js |   29 -
 .../js/app/directives/on-enter.directive.js     |   32 -
 .../js/app/directives/on-escape.directive.js    |   32 -
 .../ui-ace-docker/ui-ace-docker.controller.js   |   33 -
 .../ui-ace-docker/ui-ace-docker.directive.js    |   46 -
 .../directives/ui-ace-docker/ui-ace-docker.jade |   31 -
 .../ui-ace-java/ui-ace-java.controller.js       |   32 -
 .../ui-ace-java/ui-ace-java.directive.js        |  133 -
 .../app/directives/ui-ace-java/ui-ace-java.jade |   22 -
 .../ui-ace-pojos/ui-ace-pojos.controller.js     |   95 -
 .../ui-ace-pojos/ui-ace-pojos.directive.js      |   46 -
 .../directives/ui-ace-pojos/ui-ace-pojos.jade   |   40 -
 .../ui-ace-pom/ui-ace-pom.controller.js         |   33 -
 .../ui-ace-pom/ui-ace-pom.directive.js          |   41 -
 .../app/directives/ui-ace-pom/ui-ace-pom.jade   |   17 -
 .../js/app/directives/ui-ace-tabs.directive.js  |   23 -
 .../ui-ace-xml/ui-ace-xml.controller.js         |   27 -
 .../ui-ace-xml/ui-ace-xml.directive.js          |  133 -
 .../app/directives/ui-ace-xml/ui-ace-xml.jade   |   17 -
 .../src/main/js/app/filters/byName.filter.js    |   23 -
 .../js/app/filters/domainsValidation.filter.js  |   33 -
 .../src/main/js/app/filters/hasPojo.filter.js   |   18 -
 .../src/main/js/app/helpers/jade/mixins.jade    |  588 ---
 .../src/main/js/app/modules/Demo/Demo.module.js |  166 -
 .../js/app/modules/Version/Version.provider.js  |   32 -
 .../src/main/js/app/modules/ace.module.js       |  269 --
 .../main/js/app/modules/agent/agent.module.js   |  323 --
 .../js/app/modules/branding/branding.module.js  |   45 -
 .../app/modules/branding/branding.provider.js   |  111 -
 .../app/modules/branding/features.directive.js  |   35 -
 .../js/app/modules/branding/footer.directive.js |   34 -
 .../modules/branding/header-logo.directive.js   |   34 -
 .../js/app/modules/branding/header-logo.jade    |   18 -
 .../modules/branding/header-title.directive.js  |   35 -
 .../branding/powered-by-apache.directive.js     |   35 -
 .../app/modules/branding/powered-by-apache.jade |   18 -
 .../js/app/modules/branding/terms.directive.js  |   30 -
 .../configuration/EventGroups.provider.js       |   30 -
 .../modules/configuration/Sidebar.provider.js   |   39 -
 .../configuration/configuration.module.js       |   41 -
 .../configuration/generator/Docker.service.js   |   78 -
 .../configuration/generator/Java.service.js     |   21 -
 .../configuration/generator/Pom.service.js      |  210 --
 .../configuration/generator/Xml.service.js      |   21 -
 .../modules/configuration/sidebar.directive.js  |   30 -
 .../modules/dialog/dialog-content.directive.js  |   31 -
 .../modules/dialog/dialog-title.directive.js    |   31 -
 .../js/app/modules/dialog/dialog.controller.js  |   40 -
 .../js/app/modules/dialog/dialog.directive.js   |   32 -
 .../js/app/modules/dialog/dialog.factory.js     |   32 -
 .../src/main/js/app/modules/dialog/dialog.jade  |   26 -
 .../main/js/app/modules/dialog/dialog.module.js |   32 -
 .../field/bs-select-placeholder.directive.js    |   47 -
 .../js/app/modules/form/field/down.directive.js |   43 -
 .../modules/form/field/dropdown.directive.js    |   83 -
 .../js/app/modules/form/field/dropdown.jade     |   61 -
 .../main/js/app/modules/form/field/field.css    |   23 -
 .../app/modules/form/field/field.directive.js   |   44 -
 .../main/js/app/modules/form/field/field.jade   |   27 -
 .../field/form-control-feedback.directive.js    |   40 -
 .../form/field/input/autofocus.directive.js     |   30 -
 .../form/field/input/checkbox.directive.js      |   66 -
 .../app/modules/form/field/input/checkbox.jade  |   30 -
 .../form/field/input/datalist.directive.js      |  122 -
 .../app/modules/form/field/input/datalist.jade  |   51 -
 .../form/field/input/number.directive.js        |   76 -
 .../js/app/modules/form/field/input/number.jade |   50 -
 .../js/app/modules/form/field/input/text.css    |   41 -
 .../modules/form/field/input/text.directive.js  |  126 -
 .../js/app/modules/form/field/input/text.jade   |   48 -
 .../app/modules/form/field/label.directive.js   |   47 -
 .../app/modules/form/field/tooltip.directive.js |   49 -
 .../js/app/modules/form/field/up.directive.js   |   44 -
 .../src/main/js/app/modules/form/form.module.js |  101 -
 .../js/app/modules/form/group/add.directive.js  |   40 -
 .../app/modules/form/group/group.directive.js   |   81 -
 .../main/js/app/modules/form/group/group.jade   |   21 -
 .../app/modules/form/group/table.directive.js   |   29 -
 .../main/js/app/modules/form/group/table.jade   |   17 -
 .../app/modules/form/group/tooltip.directive.js |   40 -
 .../app/modules/form/panel/chevron.directive.js |   53 -
 .../app/modules/form/panel/panel.directive.js   |   37 -
 .../app/modules/form/panel/revert.directive.js  |   53 -
 .../form/validator/ipaddress.directive.js       |   86 -
 .../validator/java-built-in-class.directive.js  |   31 -
 .../form/validator/java-identifier.directive.js |   31 -
 .../form/validator/java-keywords.directive.js   |   42 -
 .../validator/java-package-name.directive.js    |   31 -
 .../java-package-specified.directive.js         |   34 -
 .../form/validator/property-unique.directive.js |   47 -
 .../property-value-specified.directive.js       |   31 -
 .../modules/form/validator/unique.directive.js  |   49 -
 .../getting-started/GettingStarted.provider.js  |  112 -
 .../src/main/js/app/modules/loading/loading.css |   73 -
 .../js/app/modules/loading/loading.directive.js |   51 -
 .../main/js/app/modules/loading/loading.jade    |   23 -
 .../js/app/modules/loading/loading.module.js    |   26 -
 .../js/app/modules/loading/loading.service.js   |   48 -
 .../js/app/modules/navbar/Navbar.provider.js    |   28 -
 .../js/app/modules/navbar/Userbar.provider.js   |   28 -
 .../js/app/modules/navbar/navbar.directive.js   |   30 -
 .../main/js/app/modules/navbar/navbar.module.js |   33 -
 .../js/app/modules/navbar/userbar.directive.js  |   48 -
 .../query-notebooks/query-notebooks.module.js   |  115 -
 .../src/main/js/app/modules/socket.module.js    |   41 -
 .../main/js/app/modules/states/admin.state.js   |   34 -
 .../app/modules/states/configuration.state.js   |  226 --
 .../caches/concurrency.directive.js             |   27 -
 .../configuration/caches/concurrency.jade       |   65 -
 .../configuration/caches/general.directive.js   |   27 -
 .../states/configuration/caches/general.jade    |   65 -
 .../configuration/caches/memory.directive.js    |   27 -
 .../states/configuration/caches/memory.jade     |   88 -
 .../configuration/caches/query.directive.js     |   27 -
 .../states/configuration/caches/query.jade      |   93 -
 .../configuration/caches/rebalance.directive.js |   27 -
 .../states/configuration/caches/rebalance.jade  |   65 -
 .../caches/server-near-cache.directive.js       |   27 -
 .../configuration/caches/server-near-cache.jade |   45 -
 .../caches/statistics.directive.js              |   27 -
 .../states/configuration/caches/statistics.jade |   37 -
 .../configuration/caches/store.directive.js     |   27 -
 .../states/configuration/caches/store.jade      |  271 --
 .../configuration/clusters/atomic.directive.js  |   27 -
 .../states/configuration/clusters/atomic.jade   |   53 -
 .../clusters/attributes.directive.js            |   27 -
 .../configuration/clusters/attributes.jade      |   58 -
 .../configuration/clusters/binary.directive.js  |   27 -
 .../states/configuration/clusters/binary.jade   |  100 -
 .../clusters/collision.directive.js             |   27 -
 .../configuration/clusters/collision.jade       |   60 -
 .../clusters/collision/custom.directive.js      |   27 -
 .../clusters/collision/custom.jade              |   24 -
 .../clusters/collision/fifo-queue.directive.js  |   27 -
 .../clusters/collision/fifo-queue.jade          |   28 -
 .../collision/job-stealing.directive.js         |   27 -
 .../clusters/collision/job-stealing.jade        |   64 -
 .../collision/priority-queue.directive.js       |   27 -
 .../clusters/collision/priority-queue.jade      |   43 -
 .../clusters/communication.directive.js         |   27 -
 .../configuration/clusters/communication.jade   |   96 -
 .../clusters/connector.directive.js             |   27 -
 .../configuration/clusters/connector.jade       |  103 -
 .../clusters/deployment.directive.js            |   27 -
 .../configuration/clusters/deployment.jade      |  119 -
 .../clusters/discovery.directive.js             |   27 -
 .../configuration/clusters/discovery.jade       |   83 -
 .../configuration/clusters/events.directive.js  |   27 -
 .../states/configuration/clusters/events.jade   |   37 -
 .../clusters/failover.directive.js              |   27 -
 .../states/configuration/clusters/failover.jade |   82 -
 .../configuration/clusters/general.directive.js |   27 -
 .../states/configuration/clusters/general.jade  |   68 -
 .../general/discovery/cloud.directive.js        |   27 -
 .../clusters/general/discovery/cloud.jade       |  127 -
 .../general/discovery/google.directive.js       |   27 -
 .../clusters/general/discovery/google.jade      |   38 -
 .../general/discovery/jdbc.directive.js         |   27 -
 .../clusters/general/discovery/jdbc.jade        |   24 -
 .../general/discovery/multicast.directive.js    |   27 -
 .../clusters/general/discovery/multicast.jade   |  109 -
 .../clusters/general/discovery/s3.directive.js  |   27 -
 .../clusters/general/discovery/s3.jade          |   27 -
 .../general/discovery/shared.directive.js       |   27 -
 .../clusters/general/discovery/shared.jade      |   23 -
 .../clusters/general/discovery/vm.directive.js  |   27 -
 .../clusters/general/discovery/vm.jade          |   90 -
 .../general/discovery/zookeeper.directive.js    |   27 -
 .../clusters/general/discovery/zookeeper.jade   |   74 -
 .../bounded-exponential-backoff.directive.js    |   27 -
 .../bounded-exponential-backoff.jade            |   27 -
 .../zookeeper/retrypolicy/custom.directive.js   |   27 -
 .../discovery/zookeeper/retrypolicy/custom.jade |   24 -
 .../exponential-backoff.directive.js            |   27 -
 .../retrypolicy/exponential-backoff.jade        |   27 -
 .../zookeeper/retrypolicy/forever.directive.js  |   27 -
 .../zookeeper/retrypolicy/forever.jade          |   22 -
 .../zookeeper/retrypolicy/n-times.directive.js  |   27 -
 .../zookeeper/retrypolicy/n-times.jade          |   25 -
 .../zookeeper/retrypolicy/one-time.directive.js |   27 -
 .../zookeeper/retrypolicy/one-time.jade         |   23 -
 .../retrypolicy/until-elapsed.directive.js      |   27 -
 .../zookeeper/retrypolicy/until-elapsed.jade    |   25 -
 .../configuration/clusters/igfs.directive.js    |   27 -
 .../states/configuration/clusters/igfs.jade     |   37 -
 .../configuration/clusters/logger.directive.js  |   27 -
 .../states/configuration/clusters/logger.jade   |   65 -
 .../clusters/logger/custom.directive.js         |   27 -
 .../configuration/clusters/logger/custom.jade   |   24 -
 .../clusters/logger/log4j.directive.js          |   27 -
 .../configuration/clusters/logger/log4j.jade    |   49 -
 .../clusters/logger/log4j2.directive.js         |   27 -
 .../configuration/clusters/logger/log4j2.jade   |   38 -
 .../clusters/marshaller.directive.js            |   27 -
 .../configuration/clusters/marshaller.jade      |   69 -
 .../configuration/clusters/metrics.directive.js |   27 -
 .../states/configuration/clusters/metrics.jade  |   50 -
 .../configuration/clusters/ssl.directive.js     |   27 -
 .../states/configuration/clusters/ssl.jade      |  108 -
 .../configuration/clusters/swap.directive.js    |   27 -
 .../states/configuration/clusters/swap.jade     |   67 -
 .../configuration/clusters/thread.directive.js  |   27 -
 .../states/configuration/clusters/thread.jade   |   48 -
 .../configuration/clusters/time.directive.js    |   27 -
 .../states/configuration/clusters/time.jade     |   47 -
 .../clusters/transactions.directive.js          |   27 -
 .../configuration/clusters/transactions.jade    |   59 -
 .../configuration/domains/general.directive.js  |   27 -
 .../states/configuration/domains/general.jade   |   46 -
 .../configuration/domains/query.directive.js    |   27 -
 .../states/configuration/domains/query.jade     |  169 -
 .../configuration/domains/store.directive.js    |   27 -
 .../states/configuration/domains/store.jade     |  126 -
 .../states/configuration/igfs/dual.directive.js |   27 -
 .../modules/states/configuration/igfs/dual.jade |   42 -
 .../igfs/fragmentizer.directive.js              |   27 -
 .../states/configuration/igfs/fragmentizer.jade |   43 -
 .../configuration/igfs/general.directive.js     |   27 -
 .../states/configuration/igfs/general.jade      |   53 -
 .../states/configuration/igfs/ipc.directive.js  |   27 -
 .../modules/states/configuration/igfs/ipc.jade  |   57 -
 .../states/configuration/igfs/misc.directive.js |   27 -
 .../modules/states/configuration/igfs/misc.jade |  108 -
 .../configuration/igfs/secondary.directive.js   |   27 -
 .../states/configuration/igfs/secondary.jade    |   44 -
 .../configuration/preview-panel.directive.js    |  239 --
 .../summary/summary-tabs.directive.js           |   50 -
 .../configuration/summary/summary.controller.js |  359 --
 .../configuration/summary/summary.resource.js   |   40 -
 .../main/js/app/modules/states/logout.state.js  |   36 -
 .../js/app/modules/states/password.state.js     |   46 -
 .../main/js/app/modules/states/profile.state.js |   34 -
 .../main/js/app/modules/states/signin.state.js  |   53 -
 .../src/main/js/app/modules/states/sql.state.js |   46 -
 .../main/js/app/modules/user/Auth.service.js    |   76 -
 .../main/js/app/modules/user/User.service.js    |   65 -
 .../src/main/js/app/modules/user/user.module.js |   28 -
 .../main/js/app/services/ChartColors.service.js |   22 -
 .../src/main/js/app/services/Clone.service.js   |   64 -
 .../src/main/js/app/services/Confirm.service.js |   70 -
 .../js/app/services/ConfirmBatch.service.js     |   92 -
 .../js/app/services/CopyToClipboard.service.js  |   50 -
 .../main/js/app/services/Countries.service.js   |   31 -
 .../src/main/js/app/services/Focus.service.js   |   33 -
 .../main/js/app/services/InetAddress.service.js |   53 -
 .../main/js/app/services/JavaTypes.service.js   |   84 -
 .../main/js/app/services/LegacyTable.service.js |  205 -
 .../main/js/app/services/LegacyUtils.service.js |  948 -----
 .../main/js/app/services/Messages.service.js    |   63 -
 .../js/app/services/ModelNormalizer.service.js  |   59 -
 .../app/services/UnsavedChangesGuard.service.js |   38 -
 modules/web-console/src/main/js/app/vendor.js   |   54 -
 .../src/main/js/controllers/admin-controller.js |   91 -
 .../main/js/controllers/caches-controller.js    |  470 ---
 .../main/js/controllers/clusters-controller.js  |  626 ----
 .../main/js/controllers/domains-controller.js   | 1746 ---------
 .../src/main/js/controllers/igfs-controller.js  |  401 --
 .../main/js/controllers/profile-controller.js   |   91 -
 .../src/main/js/controllers/sql-controller.js   | 1588 --------
 .../src/main/js/generator/generator-common.js   |  611 ---
 .../src/main/js/generator/generator-java.js     | 3404 -----------------
 .../src/main/js/generator/generator-optional.js |   25 -
 .../main/js/generator/generator-properties.js   |  150 -
 .../src/main/js/generator/generator-readme.js   |   85 -
 .../src/main/js/generator/generator-xml.js      | 1978 ----------
 .../src/main/js/gulpfile.babel.js/index.js      |   26 -
 .../src/main/js/gulpfile.babel.js/paths.js      |   70 -
 .../main/js/gulpfile.babel.js/tasks/build.js    |   21 -
 .../main/js/gulpfile.babel.js/tasks/bundle.js   |   32 -
 .../main/js/gulpfile.babel.js/tasks/clean.js    |   32 -
 .../src/main/js/gulpfile.babel.js/tasks/copy.js |   33 -
 .../gulpfile.babel.js/tasks/ignite-modules.js   |   55 -
 .../src/main/js/gulpfile.babel.js/tasks/jade.js |   40 -
 .../main/js/gulpfile.babel.js/tasks/watch.js    |   31 -
 .../main/js/gulpfile.babel.js/webpack/common.js |  192 -
 .../webpack/environments/development.js         |   64 -
 .../webpack/environments/production.js          |   45 -
 .../main/js/gulpfile.babel.js/webpack/index.js  |   32 -
 .../webpack/plugins/progress.js                 |   82 -
 .../src/main/js/ignite_modules/README.txt       |    6 -
 .../src/main/js/ignite_modules/index.js         |   27 -
 modules/web-console/src/main/js/package.json    |  128 -
 .../web-console/src/main/js/public/favicon.ico  |  Bin 1150 -> 0 bytes
 .../src/main/js/public/images/cache.png         |  Bin 23700 -> 0 bytes
 .../src/main/js/public/images/cluster.png       |  Bin 29376 -> 0 bytes
 .../src/main/js/public/images/docker.png        |  Bin 521 -> 0 bytes
 .../src/main/js/public/images/domains.png       |  Bin 23828 -> 0 bytes
 .../src/main/js/public/images/igfs.png          |  Bin 14307 -> 0 bytes
 .../src/main/js/public/images/ignite-logo.png   |  Bin 1982 -> 0 bytes
 .../main/js/public/images/ignite-logo@2x.png    |  Bin 3325 -> 0 bytes
 .../src/main/js/public/images/ignite-puzzle.png |  Bin 71974 -> 0 bytes
 .../src/main/js/public/images/java.png          |  Bin 170 -> 0 bytes
 .../src/main/js/public/images/pb-ignite.png     |  Bin 3493 -> 0 bytes
 .../src/main/js/public/images/pb-ignite@2x.png  |  Bin 8558 -> 0 bytes
 .../src/main/js/public/images/query-chart.png   |  Bin 16637 -> 0 bytes
 .../main/js/public/images/query-metadata.png    |  Bin 32298 -> 0 bytes
 .../src/main/js/public/images/query-table.png   |  Bin 29189 -> 0 bytes
 .../src/main/js/public/images/summary.png       |  Bin 31997 -> 0 bytes
 .../src/main/js/public/images/xml.png           |  Bin 232 -> 0 bytes
 .../public/stylesheets/_bootstrap-custom.scss   |   65 -
 .../stylesheets/_bootstrap-variables.scss       |  891 -----
 .../stylesheets/_font-awesome-custom.scss       |   32 -
 .../src/main/js/public/stylesheets/style.scss   | 2156 -----------
 .../main/js/public/stylesheets/variables.scss   |   28 -
 modules/web-console/src/main/js/serve.js        |  116 -
 modules/web-console/src/main/js/serve/agent.js  |  714 ----
 .../src/main/js/serve/agent_dists/README.txt    |    7 -
 modules/web-console/src/main/js/serve/app.js    |   42 -
 .../web-console/src/main/js/serve/browser.js    |  378 --
 .../main/js/serve/config/settings.json.sample   |   26 -
 .../web-console/src/main/js/serve/configure.js  |   84 -
 modules/web-console/src/main/js/serve/mail.js   |   75 -
 modules/web-console/src/main/js/serve/mongo.js  |  676 ----
 .../src/main/js/serve/routes/admin.js           |  126 -
 .../src/main/js/serve/routes/agent.js           |   81 -
 .../src/main/js/serve/routes/caches.js          |  132 -
 .../src/main/js/serve/routes/clusters.js        |  146 -
 .../src/main/js/serve/routes/demo.js            |  135 -
 .../src/main/js/serve/routes/demo/caches.json   |   87 -
 .../src/main/js/serve/routes/demo/clusters.json |   50 -
 .../src/main/js/serve/routes/demo/domains.json  |  307 --
 .../src/main/js/serve/routes/demo/igfss.json    |   10 -
 .../src/main/js/serve/routes/domains.js         |  195 -
 .../src/main/js/serve/routes/igfs.js            |  122 -
 .../src/main/js/serve/routes/notebooks.js       |  121 -
 .../src/main/js/serve/routes/profile.js         |  102 -
 .../src/main/js/serve/routes/public.js          |  235 --
 .../src/main/js/serve/routes/routes.js          |  103 -
 .../web-console/src/main/js/serve/settings.js   |   84 -
 modules/web-console/src/main/js/views/base.jade |   22 -
 .../src/main/js/views/configuration/caches.jade |   52 -
 .../main/js/views/configuration/clusters.jade   |   64 -
 .../js/views/configuration/domains-import.jade  |  211 --
 .../main/js/views/configuration/domains.jade    |   66 -
 .../src/main/js/views/configuration/igfs.jade   |   51 -
 .../main/js/views/configuration/sidebar.jade    |   29 -
 .../summary-project-structure.jade              |   27 -
 .../js/views/configuration/summary-tabs.jade    |   25 -
 .../main/js/views/configuration/summary.jade    |  152 -
 .../src/main/js/views/includes/footer.jade      |   23 -
 .../src/main/js/views/includes/header.jade      |   51 -
 .../web-console/src/main/js/views/index.jade    |   48 -
 .../web-console/src/main/js/views/reset.jade    |   48 -
 .../src/main/js/views/settings/admin.jade       |   76 -
 .../src/main/js/views/settings/profile.jade     |   76 -
 .../web-console/src/main/js/views/signin.jade   |  163 -
 .../src/main/js/views/sql/cache-metadata.jade   |   40 -
 .../src/main/js/views/sql/chart-settings.jade   |   40 -
 .../src/main/js/views/sql/notebook-new.jade     |   31 -
 .../src/main/js/views/sql/paragraph-rate.jade   |   31 -
 .../web-console/src/main/js/views/sql/sql.jade  |  201 -
 .../main/js/views/templates/agent-download.jade |   48 -
 .../src/main/js/views/templates/alert.jade      |   21 -
 .../main/js/views/templates/batch-confirm.jade  |   32 -
 .../src/main/js/views/templates/clone.jade      |   31 -
 .../src/main/js/views/templates/confirm.jade    |   31 -
 .../src/main/js/views/templates/demo-info.jade  |   45 -
 .../src/main/js/views/templates/dropdown.jade   |   21 -
 .../js/views/templates/getting-started.jade     |   32 -
 .../src/main/js/views/templates/message.jade    |   26 -
 .../src/main/js/views/templates/pagination.jade |   32 -
 .../src/main/js/views/templates/select.jade     |   26 -
 .../js/views/templates/validation-error.jade    |   25 -
 modules/web-console/src/test/js/routes/agent.js |   94 -
 modules/web-console/web-agent/.gitignore        |    2 +
 modules/web-console/web-agent/README.txt        |   88 +
 .../web-agent/assembly/release-web-agent.xml    |   66 +
 .../web-agent/bin/ignite-web-agent.bat          |   70 +
 .../web-agent/bin/ignite-web-agent.sh           |   87 +
 modules/web-console/web-agent/demo/README.txt   |    4 +
 modules/web-console/web-agent/demo/db-init.sql  |  102 +
 .../web-agent/jdbc-drivers/README.txt           |   10 +
 modules/web-console/web-agent/logs/README.txt   |    5 +
 modules/web-console/web-agent/pom.xml           |  199 +
 .../console/agent/AgentConfiguration.java       |  268 ++
 .../ignite/console/agent/AgentLauncher.java     |  344 ++
 .../apache/ignite/console/agent/AgentUtils.java |  111 +
 .../console/agent/handlers/AbstractHandler.java |  110 +
 .../console/agent/handlers/DatabaseHandler.java |  298 ++
 .../console/agent/handlers/RestHandler.java     |  276 ++
 .../ignite/console/demo/AgentClusterDemo.java   |  641 ++++
 .../ignite/console/demo/AgentMetadataDemo.java  |   92 +
 .../apache/ignite/console/demo/model/Car.java   |  152 +
 .../ignite/console/demo/model/Country.java      |  152 +
 .../ignite/console/demo/model/Department.java   |  152 +
 .../ignite/console/demo/model/Employee.java     |  356 ++
 .../ignite/console/demo/model/Parking.java      |  152 +
 .../src/main/resources/log4j.properties         |   53 +
 .../IgniteInvokeWithInjectionBenchmark.java     |   74 +
 .../IgniteInvokeWithInjectionTxBenchmark.java   |   30 +
 parent/pom.xml                                  |    4 +-
 pom.xml                                         |    2 +-
 1117 files changed, 61336 insertions(+), 44728 deletions(-)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/ignite/blob/9cdc754a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------


[15/34] ignite git commit: IGNITE-3727 GridIO javadoc update

Posted by sb...@apache.org.
IGNITE-3727 GridIO javadoc update


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

Branch: refs/heads/ignite-3727-2
Commit: e68a4fa2f25c9533dd38bbe25a6a98b804b5ca35
Parents: e3855a3
Author: DmitriyGovorukhin <dg...@gridgain.com>
Authored: Fri Sep 9 11:17:41 2016 +0300
Committer: DmitriyGovorukhin <dg...@gridgain.com>
Committed: Fri Sep 9 11:17:41 2016 +0300

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


http://git-wip-us.apache.org/repos/asf/ignite/blob/e68a4fa2/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 124fba5..1ba649e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -1260,6 +1260,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      * @param timeout Timeout.
      * @param skipOnTimeout Whether message can be skipped on timeout.
      * @param ackC Ack closure.
+     * @param async Async flag.
      * @throws IgniteCheckedException Thrown in case of any errors.
      */
     private void send(
@@ -1369,6 +1370,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      * @param topic Topic to send the message to.
      * @param msg Message to send.
      * @param plc Type of processing.
+     * @param async Async flag.
      * @throws IgniteCheckedException Thrown in case of any errors.
      */
     public void send(ClusterNode node, GridTopic topic, Message msg, byte plc, boolean async)
@@ -1562,6 +1564,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
      * @param topic Message topic to use.
      * @param ordered Is message ordered?
      * @param timeout Message timeout in milliseconds for ordered messages.
+     * @param async Async flag.
      * @throws IgniteCheckedException Thrown in case of any errors.
      */
     @SuppressWarnings("ConstantConditions")