You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/04/05 16:06:59 UTC

[1/2] ignite git commit: IGNITE-6083 Null value has appeared in entry processor, but entry exists

Repository: ignite
Updated Branches:
  refs/heads/ignite-6083 [created] cbf65cb44


IGNITE-6083 Null value has appeared in entry processor, but entry exists


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

Branch: refs/heads/ignite-6083
Commit: 038249d718b44a602efa5f8fdae39c2757c09f99
Parents: 9d9d8a8
Author: voipp <al...@gmail.com>
Authored: Tue Feb 27 13:57:51 2018 +0300
Committer: voipp <al...@gmail.com>
Committed: Tue Mar 27 18:29:56 2018 +0300

----------------------------------------------------------------------
 .../cache/distributed/near/GridNearTxLocal.java |   3 +
 .../transactions/IgniteTxLocalAdapter.java      |   2 +
 ...teCacheEntryProcessorSequentialCallTest.java | 311 +++++++++++++++++++
 .../ignite/testsuites/IgniteCacheTestSuite.java |   2 +
 4 files changed, 318 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/038249d7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index a3fddaf..4d9bfe3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -1271,6 +1271,9 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
                         keepBinary,
                         CU.isNearEnabled(cacheCtx));
 
+                    if (op == TRANSFORM && txEntry.value() == null && old != null)
+                        txEntry.value(cacheCtx.toCacheObject(old), false, false);
+
                     if (enlisted != null)
                         enlisted.add(cacheKey);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/038249d7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 8dec59a..8613600 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -1112,6 +1112,8 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig
 
                         if (txEntry.op() == TRANSFORM) {
                             if (computeInvoke) {
+                                txEntry.readValue(v);
+
                                 GridCacheVersion ver;
 
                                 try {

http://git-wip-us.apache.org/repos/asf/ignite/blob/038249d7/modules/core/src/test/java/org/apache/ignite/cache/IgniteCacheEntryProcessorSequentialCallTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/IgniteCacheEntryProcessorSequentialCallTest.java b/modules/core/src/test/java/org/apache/ignite/cache/IgniteCacheEntryProcessorSequentialCallTest.java
new file mode 100644
index 0000000..592449d
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/cache/IgniteCacheEntryProcessorSequentialCallTest.java
@@ -0,0 +1,311 @@
+/*
+ * 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;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.CountDownLatch;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.apache.ignite.transactions.Transaction;
+import org.apache.ignite.transactions.TransactionConcurrency;
+import org.apache.ignite.transactions.TransactionIsolation;
+import javax.cache.processor.EntryProcessorException;
+import javax.cache.processor.MutableEntry;
+import org.apache.ignite.transactions.TransactionOptimisticException;
+
+/**
+ */
+public class IgniteCacheEntryProcessorSequentialCallTest extends GridCommonAbstractTest {
+    /** {@inheritDoc} */
+    @Override protected void beforeTestsStarted() throws Exception {
+        startGrids(2);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        stopAllGrids();
+    }
+
+    /** {@inheritDoc} */
+    @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+        IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+        CacheConfiguration cacheCfg = new CacheConfiguration("cache");
+
+        cacheCfg.setCacheMode(CacheMode.PARTITIONED);
+        cacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
+        cacheCfg.setRebalanceMode(CacheRebalanceMode.SYNC);
+        cacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
+        cacheCfg.setMaxConcurrentAsyncOperations(0);
+        cacheCfg.setBackups(0);
+
+        cfg.setCacheConfiguration(cacheCfg);
+
+        return cfg;
+    }
+
+    /**
+     *
+     */
+    public void testOptimisticSerializableTxInvokeSequentialCall() throws Exception {
+        transactionInvokeSequentialCallOnPrimaryNode(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.SERIALIZABLE);
+
+        transactionInvokeSequentialCallOnNearNode(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.SERIALIZABLE);
+    }
+
+    /**
+     *
+     */
+    public void testOptimisticRepeatableReadTxInvokeSequentialCall() throws Exception {
+        transactionInvokeSequentialCallOnPrimaryNode(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.REPEATABLE_READ);
+
+        transactionInvokeSequentialCallOnNearNode(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.REPEATABLE_READ);
+    }
+
+    /**
+     *
+     */
+    public void testOptimisticReadCommittedTxInvokeSequentialCall() throws Exception {
+        transactionInvokeSequentialCallOnPrimaryNode(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.READ_COMMITTED);
+
+        transactionInvokeSequentialCallOnNearNode(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.READ_COMMITTED);
+    }
+
+    /**
+     *
+     */
+    public void testPessimisticSerializableTxInvokeSequentialCall() throws Exception {
+        transactionInvokeSequentialCallOnPrimaryNode(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.SERIALIZABLE);
+
+        transactionInvokeSequentialCallOnNearNode(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.SERIALIZABLE);
+    }
+
+    /**
+     *
+     */
+    public void testPessimisticRepeatableReadTxInvokeSequentialCall() throws Exception {
+        transactionInvokeSequentialCallOnPrimaryNode(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.REPEATABLE_READ);
+
+        transactionInvokeSequentialCallOnNearNode(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.REPEATABLE_READ);
+    }
+
+    /**
+     *
+     */
+    public void testPessimisticReadCommittedTxInvokeSequentialCall() throws Exception {
+        transactionInvokeSequentialCallOnPrimaryNode(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.READ_COMMITTED);
+
+        transactionInvokeSequentialCallOnNearNode(TransactionConcurrency.PESSIMISTIC, TransactionIsolation.READ_COMMITTED);
+    }
+
+    /**
+     * Test for sequential entry processor invoking not null value on primary cache.
+     * In this test entry processor gets value from local node.
+     *
+     * @param transactionConcurrency Transaction concurrency.
+     * @param transactionIsolation Transaction isolation.
+     */
+    public void transactionInvokeSequentialCallOnPrimaryNode(TransactionConcurrency transactionConcurrency,
+        TransactionIsolation transactionIsolation) throws Exception {
+        TestKey key = new TestKey(1L);
+        TestValue val = new TestValue();
+        val.value("1");
+
+        Ignite primaryIgnite;
+
+        if (ignite(0).affinity("cache").isPrimary(ignite(0).cluster().localNode(), key))
+            primaryIgnite = ignite(0);
+        else
+            primaryIgnite = ignite(1);
+
+        IgniteCache<TestKey, TestValue> cache = primaryIgnite.cache("cache");
+
+        cache.put(key, val);
+
+        NotNullCacheEntryProcessor cacheEntryProcessor = new NotNullCacheEntryProcessor();
+
+        try (Transaction transaction = primaryIgnite.transactions().txStart(transactionConcurrency,
+            transactionIsolation)) {
+
+            cache.invoke(key, cacheEntryProcessor);
+            cache.invoke(key, cacheEntryProcessor);
+
+            transaction.commit();
+        }
+
+        cache.remove(key);
+    }
+
+    /**
+     * Test for sequential entry processor invoking not null value on near cache.
+     * In this test entry processor fetches value from remote node.
+     *
+     * @param transactionConcurrency Transaction concurrency.
+     * @param transactionIsolation Transaction isolation.
+     */
+    public void transactionInvokeSequentialCallOnNearNode(TransactionConcurrency transactionConcurrency,
+        TransactionIsolation transactionIsolation) throws Exception {
+        TestKey key = new TestKey(1L);
+        TestValue val = new TestValue();
+        val.value("1");
+
+        Ignite nearIgnite;
+        Ignite primaryIgnite;
+
+        if (ignite(0).affinity("cache").isPrimary(ignite(0).cluster().localNode(), key)) {
+            primaryIgnite = ignite(0);
+
+            nearIgnite = ignite(1);
+        }
+        else {
+            primaryIgnite = ignite(1);
+
+            nearIgnite = ignite(0);
+        }
+
+        primaryIgnite.cache("cache").put(key, val);
+
+        IgniteCache<TestKey, TestValue> nearCache = nearIgnite.cache("cache");
+
+        NotNullCacheEntryProcessor cacheEntryProcessor = new NotNullCacheEntryProcessor();
+
+        try (Transaction transaction = nearIgnite.transactions().txStart(transactionConcurrency,
+            transactionIsolation)) {
+
+            nearCache.invoke(key, cacheEntryProcessor);
+            nearCache.invoke(key, cacheEntryProcessor);
+
+            transaction.commit();
+        }
+
+        primaryIgnite.cache("cache").remove(key);
+    }
+
+    /**
+     * Test for sequential entry processor invocation. During transaction value is changed externally, which leads to
+     * optimistic conflict exception.
+     */
+    public void testTxInvokeSequentialOptimisticConflict() throws Exception {
+        TestKey key = new TestKey(1L);
+
+        IgniteCache<TestKey, TestValue> cache = ignite(0).cache("cache");
+
+        CountDownLatch latch = new CountDownLatch(1);
+
+        cache.put(key, new TestValue("1"));
+
+        multithreadedAsync(new Runnable() {
+            @Override public void run() {
+                try {
+                    latch.await();
+                }
+                catch (InterruptedException e) {
+                    fail();
+                }
+
+                cache.put(key, new TestValue("2"));
+            }
+        }, 1);
+
+        Transaction tx = ignite(0).transactions().txStart(TransactionConcurrency.OPTIMISTIC, TransactionIsolation.SERIALIZABLE);
+
+        cache.invoke(key, new NotNullCacheEntryProcessor());
+
+        latch.countDown();
+
+        Thread.sleep(1_000);
+
+        cache.invoke(key, new NotNullCacheEntryProcessor());
+
+        GridTestUtils.assertThrowsWithCause(new Callable<Object>() {
+            @Override public Object call() throws Exception {
+                tx.commit();
+
+                return null;
+            }
+        }, TransactionOptimisticException.class);
+
+        cache.remove(key);
+    }
+
+    /**
+     * Cache entry processor checking whether entry has got non-null value.
+     */
+    public static class NotNullCacheEntryProcessor implements CacheEntryProcessor<TestKey, TestValue, Object> {
+        /** {@inheritDoc} */
+        public Object process(MutableEntry entry, Object... arguments) throws EntryProcessorException {
+            assertNotNull(entry.getValue());
+
+            return null;
+        }
+    }
+
+    /**
+     *
+     */
+    public static class TestKey {
+        /** Value. */
+        private final Long val;
+
+        /**
+         * @param val Value.
+         */
+        public TestKey(Long val) {
+            this.val = val;
+        }
+    }
+
+    /**
+     *
+     */
+    public static class TestValue {
+        /** Value. */
+        private String val;
+
+        /**
+         * Default constructor.
+         */
+        public TestValue() {
+        }
+
+        /**
+         * @param val Value.
+         */
+        public TestValue(String val) {
+            this.val = val;
+        }
+
+        /**
+         * @return Value.
+         */
+        public String value() {
+            return val;
+        }
+
+        /**
+         * @param val New value.
+         */
+        public void value(String val) {
+            this.val = val;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/038249d7/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
index bb397f7..21bd13e 100755
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
@@ -19,6 +19,7 @@ package org.apache.ignite.testsuites;
 
 import java.util.Set;
 import junit.framework.TestSuite;
+import org.apache.ignite.cache.IgniteCacheEntryProcessorSequentialCallTest;
 import org.apache.ignite.cache.IgniteWarmupClosureSelfTest;
 import org.apache.ignite.cache.store.CacheStoreReadFromBackupTest;
 import org.apache.ignite.cache.store.CacheTransactionalStoreReadFromBackupTest;
@@ -189,6 +190,7 @@ public class IgniteCacheTestSuite extends TestSuite {
         suite.addTestSuite(IgniteCacheTxNearEnabledInvokeTest.class);
         suite.addTestSuite(IgniteCacheTxLocalInvokeTest.class);
         suite.addTestSuite(IgniteCrossCacheTxStoreSelfTest.class);
+        suite.addTestSuite(IgniteCacheEntryProcessorSequentialCallTest.class);
 
         // TODO GG-11148: include test when implemented.
         // Test fails due to incorrect handling of CacheConfiguration#getCopyOnRead() and


[2/2] ignite git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-6083

Posted by ag...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-6083


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

Branch: refs/heads/ignite-6083
Commit: cbf65cb44fab3bc725ab22fc8c43ab517a2a0175
Parents: 038249d a064702
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Thu Apr 5 19:06:43 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Thu Apr 5 19:06:43 2018 +0300

----------------------------------------------------------------------
 assembly/release-fabric-base.xml                |     1 +
 examples/README-LGPL.txt                        |     1 +
 examples/README.txt                             |     1 +
 examples/sql/world.sql                          |  5354 ++++++
 .../examples/client/ClientPutGetExample.java    |    69 +
 .../AlgorithmSpecificDatasetExample.java        |    12 +-
 .../ml/dataset/CacheBasedDatasetExample.java    |     3 +-
 .../ml/dataset/LocalDatasetExample.java         |     3 +-
 .../ml/knn/KNNClassificationExample.java        |   272 +
 .../KNNClassificationExample.java               |   154 -
 .../ml/knn/classification/package-info.java     |    22 -
 .../ml/knn/regression/KNNRegressionExample.java |   155 -
 .../ml/knn/regression/package-info.java         |    22 -
 .../examples/ml/nn/MLPGroupTrainerExample.java  |   140 -
 .../examples/ml/nn/MLPLocalTrainerExample.java  |   161 -
 .../examples/ml/nn/MLPTrainerExample.java       |   167 +
 .../ml/preprocessing/NormalizationExample.java  |     3 +-
 ...nWithLSQRTrainerAndNormalizationExample.java |     5 +-
 ...dLinearRegressionWithLSQRTrainerExample.java |     5 +-
 .../binary/SVMBinaryClassificationExample.java  |     6 +-
 .../SVMMultiClassClassificationExample.java     |    11 +-
 .../examples/ml/trees/DecisionTreesExample.java |     6 +-
 .../ignite/examples/sql/SqlJdbcCopyExample.java |    70 +-
 examples/src/main/resources/cityBulkLoad.csv    |     3 -
 examples/src/main/resources/personBulkLoad.csv  |     4 -
 examples/src/main/resources/sql/city.csv        |  4079 +++++
 .../thin/JdbcThinBulkLoadAbstractSelfTest.java  |   207 +-
 .../thin/JdbcThinWalModeChangeSelfTest.java     |     9 +-
 modules/core/pom.xml                            |     7 -
 .../java/org/apache/ignite/IgniteState.java     |     7 +-
 .../apache/ignite/IgniteSystemProperties.java   |     5 +-
 .../main/java/org/apache/ignite/Ignition.java   |    19 +
 .../ignite/binary/BinaryTypeConfiguration.java  |     6 +-
 .../client/ClientAuthenticationException.java   |    45 +
 .../org/apache/ignite/client/ClientCache.java   |   356 +
 .../ignite/client/ClientCacheConfiguration.java |   656 +
 .../client/ClientConnectionException.java       |    45 +
 .../apache/ignite/client/ClientException.java   |    77 +
 .../org/apache/ignite/client/IgniteClient.java  |    91 +
 .../java/org/apache/ignite/client/SslMode.java  |    26 +
 .../org/apache/ignite/client/SslProtocol.java   |    28 +
 .../configuration/BinaryConfiguration.java      |     6 +-
 .../configuration/CacheConfiguration.java       |    37 +
 .../configuration/ClientConfiguration.java      |   400 +
 .../configuration/IgniteConfiguration.java      |    26 +
 .../apache/ignite/failure/FailureContext.java   |    65 +
 .../apache/ignite/failure/FailureHandler.java   |    39 +
 .../org/apache/ignite/failure/FailureType.java  |    32 +
 .../ignite/failure/NoOpFailureHandler.java      |    30 +
 .../failure/RestartProcessFailureHandler.java   |    45 +
 .../ignite/failure/StopNodeFailureHandler.java  |    43 +
 .../failure/StopNodeOrHaltFailureHandler.java   |   102 +
 .../org/apache/ignite/failure/package-info.java |    22 +
 .../ignite/internal/GridKernalContext.java      |    27 +-
 .../ignite/internal/GridKernalContextImpl.java  |    27 +-
 .../apache/ignite/internal/IgniteKernal.java    |     3 +
 .../org/apache/ignite/internal/IgnitionEx.java  |    15 +-
 .../apache/ignite/internal/NodeInvalidator.java |    53 -
 .../ignite/internal/NodeStoppingException.java  |     7 +
 .../binary/BinaryCachingMetadataHandler.java    |    11 +-
 .../internal/binary/BinaryClassDescriptor.java  |    12 +
 .../ignite/internal/binary/BinaryContext.java   |    17 +
 .../internal/binary/BinaryMetadataHandler.java  |     8 +
 .../binary/BinaryNoopMetadataHandler.java       |     6 +
 .../ignite/internal/binary/BinaryUtils.java     |     4 +-
 .../internal/client/thin/ClientBinary.java      |   167 +
 .../client/thin/ClientBinaryMarshaller.java     |   112 +
 .../internal/client/thin/ClientCacheEntry.java  |    62 +
 .../internal/client/thin/ClientChannel.java     |    45 +
 .../client/thin/ClientChannelConfiguration.java |   242 +
 .../internal/client/thin/ClientError.java       |    71 +
 .../client/thin/ClientFieldsQueryCursor.java    |    40 +
 .../client/thin/ClientFieldsQueryPager.java     |    81 +
 .../internal/client/thin/ClientOperation.java   |    72 +
 .../client/thin/ClientProtocolError.java        |    40 +
 .../internal/client/thin/ClientQueryCursor.java |    94 +
 .../internal/client/thin/ClientQueryPager.java  |    60 +
 .../internal/client/thin/ClientServerError.java |    47 +
 .../internal/client/thin/ClientUtils.java       |   602 +
 .../internal/client/thin/FieldsQueryPager.java  |    30 +
 .../internal/client/thin/GenericQueryPager.java |   139 +
 .../internal/client/thin/ProtocolVersion.java   |   100 +
 .../ignite/internal/client/thin/QueryPager.java |    36 +
 .../internal/client/thin/ReliableChannel.java   |   207 +
 .../ignite/internal/client/thin/Result.java     |    60 +
 .../internal/client/thin/TcpClientCache.java    |   504 +
 .../internal/client/thin/TcpClientChannel.java  |   586 +
 .../internal/client/thin/TcpIgniteClient.java   |   411 +
 .../discovery/GridDiscoveryManager.java         |    46 +-
 .../pagemem/wal/IgniteWriteAheadLogManager.java |    13 +-
 .../internal/pagemem/wal/StorageException.java  |     2 +-
 .../affinity/GridAffinityAssignmentCache.java   |    51 +-
 .../processors/bulkload/BulkLoadCsvFormat.java  |     1 -
 .../pipeline/CsvLineProcessorBlock.java         |     5 +-
 .../cache/CacheAffinitySharedManager.java       |    37 +-
 .../processors/cache/GridCacheContext.java      |     4 +
 .../processors/cache/GridCacheMapEntry.java     |     4 +-
 .../GridCachePartitionExchangeManager.java      |    46 +-
 .../processors/cache/GridCacheProcessor.java    |     2 +-
 .../binary/CacheObjectBinaryProcessorImpl.java  |     4 +
 .../GridDistributedTxRemoteAdapter.java         |     2 +-
 .../dht/atomic/GridDhtAtomicCache.java          |     4 +-
 .../dht/preloader/GridDhtPartitionDemander.java |   159 +-
 .../cache/distributed/near/GridNearTxLocal.java |    23 +-
 .../GridCacheDatabaseSharedManager.java         |    42 +-
 .../persistence/GridCacheOffheapManager.java    |    17 +-
 .../persistence/file/FilePageStoreManager.java  |    22 +-
 .../persistence/metastorage/MetaStorage.java    |    30 +-
 .../pagemem/CheckpointMetricsTracker.java       |    28 +
 .../cache/persistence/pagemem/PageMemoryEx.java |     3 +-
 .../persistence/pagemem/PageMemoryImpl.java     |     5 +-
 .../wal/FileWriteAheadLogManager.java           |    37 +-
 .../wal/FsyncModeFileWriteAheadLogManager.java  |    19 +-
 .../wal/reader/StandaloneGridKernalContext.java |    18 +-
 .../continuous/CacheContinuousQueryManager.java |    21 +-
 .../cache/transactions/IgniteTxAdapter.java     |     2 +-
 .../transactions/IgniteTxLocalAdapter.java      |   166 +-
 .../transactions/IgniteTxLocalStateAdapter.java |     8 +-
 .../continuous/GridContinuousProcessor.java     |   124 +-
 .../datastreamer/DataStreamerImpl.java          |    43 +-
 .../datastructures/DataStructuresProcessor.java |    32 +
 .../processors/failure/FailureProcessor.java    |   113 +
 .../processors/failure/package-info.java        |    22 +
 .../odbc/ClientListenerNioListener.java         |    15 +-
 .../odbc/jdbc/JdbcBulkLoadBatchRequest.java     |     5 +-
 .../client/ClientConnectionContext.java         |    54 +-
 .../platform/client/ClientRequestHandler.java   |    18 +-
 .../platform/client/ClientResourceRegistry.java |    10 +-
 .../platform/client/ClientStatus.java           |     3 +
 .../sql/command/SqlBulkLoadCommand.java         |     1 +
 .../internal/util/future/GridFutureAdapter.java |    12 +-
 .../ignite/mxbean/ClusterMetricsMXBean.java     |     6 +-
 .../spi/discovery/tcp/TcpDiscoverySpiMBean.java |     3 +-
 .../startup/cmdline/CommandLineStartup.java     |     5 +-
 .../client/ClientCacheConfigurationTest.java    |   100 +
 .../ignite/client/ClientConfigurationTest.java  |    69 +
 .../org/apache/ignite/client/Comparers.java     |   112 +
 .../java/org/apache/ignite/client/Config.java   |    61 +
 .../apache/ignite/client/FunctionalTest.java    |   390 +
 .../apache/ignite/client/IgniteBinaryTest.java  |   221 +
 .../java/org/apache/ignite/client/LoadTest.java |   133 +
 .../ignite/client/LocalIgniteCluster.java       |   193 +
 .../java/org/apache/ignite/client/Person.java   |    65 +
 .../apache/ignite/client/ReliabilityTest.java   |   186 +
 .../failure/FailureHandlerTriggeredTest.java    |   131 +
 .../failure/StopNodeFailureHandlerTest.java     |    74 +
 .../StopNodeOrHaltFailureHandlerTest.java       |   100 +
 .../binary/TestCachingMetadataHandler.java      |     9 +-
 .../cache/CacheNearReaderUpdateTest.java        |    29 +-
 ...cheTransactionalAbstractMetricsSelfTest.java |    87 +-
 .../WalModeChangeCommonAbstractSelfTest.java    |    41 +-
 ...eAbstractDataStructuresFailoverSelfTest.java |    19 +-
 .../IgniteCountDownLatchAbstractSelfTest.java   |    10 +-
 .../SemaphoreFailoverNoWaitingAcquirerTest.java |   134 +
 .../IgnitePdsCacheRebalancingAbstractTest.java  |     1 -
 .../IgnitePdsCorruptedStoreTest.java            |   209 +-
 ...gnitePdsRecoveryAfterFileCorruptionTest.java |     4 +-
 .../IgnitePdsRemoveDuringRebalancingTest.java   |     3 +-
 ...ckpointSimulationWithRealCpDisabledTest.java |    10 +-
 .../file/IgnitePdsDiskErrorsRecoveringTest.java |    15 +-
 .../db/wal/IgniteWalSerializerVersionTest.java  |     2 +-
 .../cache/persistence/db/wal/WalPathsTest.java  |    86 +
 .../persistence/pagemem/NoOpWALManager.java     |     2 +-
 .../RobinHoodBackwardShiftHashMapTest.java      |     9 +-
 .../internal/sql/SqlParserBulkLoadSelfTest.java |     6 +-
 ...GridTcpCommunicationSpiRecoverySelfTest.java |    24 +
 .../tcp/TcpClientDiscoverySpiSelfTest.java      |     2 -
 .../ignite/testframework/GridTestUtils.java     |   133 +-
 .../testframework/junits/GridAbstractTest.java  |    60 +-
 .../IgniteConfigVariationsAbstractTest.java     |     6 +
 .../ignite/testsuites/IgniteBasicTestSuite.java |    11 +-
 .../IgniteCacheDataStructuresSelfTestSuite.java |     2 +
 modules/core/src/test/resources/client.jks      |   Bin 0 -> 3232 bytes
 modules/core/src/test/resources/server.jks      |   Bin 0 -> 3230 bytes
 modules/core/src/test/resources/trust.jks       |   Bin 0 -> 2432 bytes
 modules/direct-io/pom.xml                       |    14 -
 .../processors/query/h2/H2RowCache.java         |    21 +-
 .../processors/query/h2/H2RowCacheRegistry.java |     2 +-
 .../processors/query/h2/IgniteH2Indexing.java   |     1 +
 .../query/h2/opt/GridH2QueryContext.java        |    30 +-
 .../processors/query/h2/opt/GridH2Table.java    |    14 +-
 .../query/h2/twostep/GridMapQueryExecutor.java  |    22 +-
 .../query/h2/twostep/MapQueryLazyWorker.java    |     7 +-
 .../query/h2/twostep/MapQueryResult.java        |     2 +-
 .../apache/ignite/client/ClientTestSuite.java   |    40 +
 .../ignite/client/FunctionalQueryTest.java      |   169 +
 .../ignite/client/IgniteBinaryQueryTest.java    |   130 +
 .../org/apache/ignite/client/SecurityTest.java  |   228 +
 .../IgniteCacheQueryH2IndexingLeakTest.java     |     6 +-
 .../cache/index/H2RowCacheSelfTest.java         |    69 +-
 .../IgnitePdsWithIndexingCoreTestSuite.java     |     2 +
 .../org/apache/ignite/ml/DatasetTrainer.java    |    42 -
 .../ignite/ml/dataset/DatasetFactory.java       |   126 +-
 .../ml/dataset/primitive/SimpleDataset.java     |     6 +-
 .../builder/data/SimpleDatasetDataBuilder.java  |    19 +-
 .../data/SimpleLabeledDatasetDataBuilder.java   |    44 +-
 .../primitive/data/SimpleDatasetData.java       |    12 +-
 .../data/SimpleLabeledDatasetData.java          |    22 +-
 .../classification/KNNClassificationModel.java  |   260 +
 .../KNNClassificationTrainer.java               |    60 +
 .../ml/knn/classification/KNNModelFormat.java   |    88 +
 .../ml/knn/classification/KNNStrategy.java      |    29 +
 .../ml/knn/classification/package-info.java     |    22 +
 .../apache/ignite/ml/knn/models/KNNModel.java   |   233 -
 .../ignite/ml/knn/models/KNNModelFormat.java    |    96 -
 .../ignite/ml/knn/models/KNNStrategy.java       |    27 -
 .../ignite/ml/knn/models/package-info.java      |    22 -
 .../ml/knn/partitions/KNNPartitionContext.java  |    28 +
 .../ignite/ml/knn/partitions/package-info.java  |    22 +
 .../regression/KNNMultipleLinearRegression.java |    83 -
 .../ignite/ml/knn/regression/package-info.java  |    22 -
 .../ml/math/distances/DistanceMeasure.java      |    12 +
 .../ml/math/distances/EuclideanDistance.java    |    10 +
 .../ml/math/distances/HammingDistance.java      |     5 +
 .../ml/math/distances/ManhattanDistance.java    |     5 +
 .../LinSysPartitionDataBuilderOnHeap.java       |    21 +-
 .../math/isolve/LinSysPartitionDataOnHeap.java  |    20 +-
 .../ignite/ml/math/isolve/lsqr/LSQROnHeap.java  |    25 +-
 .../ignite/ml/nn/LabeledVectorsCache.java       |    63 -
 .../ml/nn/MLPGroupUpdateTrainerCacheInput.java  |   157 -
 .../org/apache/ignite/ml/nn/MLPTrainer.java     |   193 +
 .../ignite/ml/nn/MultilayerPerceptron.java      |    14 +-
 .../ml/nn/initializers/RandomInitializer.java   |    16 +
 .../AbstractMLPGroupUpdateTrainerInput.java     |    60 -
 .../ml/nn/trainers/distributed/MLPCache.java    |    91 -
 .../distributed/MLPGroupTrainingCacheValue.java |    48 -
 .../distributed/MLPGroupUpdateTrainer.java      |   377 -
 .../MLPGroupUpdateTrainerDataCache.java         |    77 -
 .../MLPGroupUpdateTrainerLocalContext.java      |   117 -
 .../MLPGroupUpdateTrainingContext.java          |    64 -
 .../distributed/MLPGroupUpdateTrainingData.java |   103 -
 .../MLPGroupUpdateTrainingLoopData.java         |   126 -
 .../trainers/distributed/MLPMetaoptimizer.java  |    76 -
 .../nn/trainers/distributed/package-info.java   |    22 -
 .../nn/trainers/local/MLPLocalBatchTrainer.java |    78 -
 .../ml/nn/trainers/local/package-info.java      |    22 -
 .../ignite/ml/nn/trainers/package-info.java     |    22 -
 .../NesterovParameterUpdate.java                |    16 +-
 .../NesterovUpdateCalculator.java               |    11 +-
 .../ParameterUpdateCalculator.java              |     3 +-
 .../updatecalculators/RPropParameterUpdate.java |     3 +
 .../RPropUpdateCalculator.java                  |     3 +
 .../SimpleGDParameterUpdate.java                |     3 +
 .../SimpleGDUpdateCalculator.java               |     3 +
 .../linear/LinearRegressionLSQRTrainer.java     |    61 +-
 .../partition/LabelPartitionContext.java        |    28 +
 .../LabelPartitionDataBuilderOnHeap.java        |    66 +
 .../partition/LabelPartitionDataOnHeap.java     |    45 +
 ...abeledDatasetPartitionDataBuilderOnHeap.java |    86 +
 .../SVMLinearBinaryClassificationTrainer.java   |    16 +-
 ...VMLinearMultiClassClassificationTrainer.java |    27 +-
 .../ml/svm/SVMPartitionDataBuilderOnHeap.java   |    86 -
 .../ml/svm/multi/LabelPartitionContext.java     |    28 -
 .../multi/LabelPartitionDataBuilderOnHeap.java  |    66 -
 .../ml/svm/multi/LabelPartitionDataOnHeap.java  |    45 -
 .../ignite/ml/svm/multi/package-info.java       |    22 -
 .../ignite/ml/trainers/DatasetTrainer.java      |    43 +
 .../ml/trainers/MultiLabelDatasetTrainer.java   |    28 +
 .../ml/trainers/SingleLabelDatasetTrainer.java  |    28 +
 .../ml/trainers/group/UpdatesStrategy.java      |     3 +-
 .../ml/trainers/local/LocalBatchTrainer.java    |   178 -
 .../trainers/local/LocalBatchTrainerInput.java  |    42 -
 .../ignite/ml/trainers/local/package-info.java  |    22 -
 .../org/apache/ignite/ml/util/MnistUtils.java   |    95 +-
 .../org/apache/ignite/ml/LocalModelsTest.java   |    30 +-
 .../org/apache/ignite/ml/knn/BaseKNNTest.java   |     3 -
 .../ignite/ml/knn/KNNClassificationTest.java    |   160 +-
 .../ml/knn/KNNMultipleLinearRegressionTest.java |   157 -
 .../org/apache/ignite/ml/knn/KNNTestSuite.java  |     1 -
 .../ignite/ml/knn/LabeledDatasetTest.java       |     1 -
 .../ml/math/isolve/lsqr/LSQROnHeapTest.java     |     9 +-
 .../ignite/ml/nn/MLPGroupTrainerTest.java       |   148 -
 .../ignite/ml/nn/MLPLocalTrainerTest.java       |    97 -
 .../java/org/apache/ignite/ml/nn/MLPTest.java   |    12 +-
 .../org/apache/ignite/ml/nn/MLPTestSuite.java   |     4 +-
 .../ignite/ml/nn/MLPTrainerIntegrationTest.java |   187 +
 .../org/apache/ignite/ml/nn/MLPTrainerTest.java |   198 +
 .../ml/nn/SimpleMLPLocalBatchTrainerInput.java  |    99 -
 .../MLPTrainerMnistIntegrationTest.java         |   131 +
 .../ml/nn/performance/MLPTrainerMnistTest.java  |   101 +
 .../ml/nn/performance/MnistDistributed.java     |   154 -
 .../ignite/ml/nn/performance/MnistLocal.java    |    95 -
 .../ml/nn/performance/MnistMLPTestUtil.java     |    48 +-
 .../linear/LinearRegressionLSQRTrainerTest.java |    10 +-
 .../ignite/ml/svm/SVMBinaryTrainerTest.java     |     6 +-
 .../ignite/ml/svm/SVMMultiClassTrainerTest.java |     6 +-
 .../ColumnDecisionTreeTrainerBenchmark.java     |     8 +-
 .../trees/columntrees.manualrun.properties      |     2 +-
 .../cpp/core/src/impl/cache/cache_impl.cpp      |   155 +-
 .../platforms/cpp/odbc/project/vs/odbc.vcxproj  |     4 +-
 .../platforms/cpp/odbc/src/ssl/ssl_gateway.cpp  |     8 +-
 .../ApiParity/CacheConfigurationParityTest.cs   |     3 +-
 .../ApiParity/IgniteConfigurationParityTest.cs  |     3 +-
 .../Cache/DataStorageMetricsTest.cs             |     2 +-
 .../Client/ClientConnectionTest.cs              |     5 +-
 .../repository/query/IgniteQueryGenerator.java  |    19 +-
 .../IgniteSpringDataQueriesSelfTest.java        |     9 +
 .../springdata/misc/PersonRepository.java       |     4 +
 modules/sqlline/bin/sqlline.bat                 |     3 +-
 modules/web-console/backend/app/apiServer.js    |     9 +-
 modules/web-console/backend/app/routes.js       |     5 +-
 modules/web-console/backend/app/schemas.js      |    10 +-
 .../backend/errors/AppErrorException.js         |     2 -
 .../backend/errors/AuthFailedException.js       |     2 +-
 .../backend/errors/IllegalAccessError.js        |     3 +-
 .../backend/errors/IllegalArgumentException.js  |     1 -
 .../backend/errors/MissingResourceException.js  |     2 +-
 .../backend/errors/ServerErrorException.js      |     1 -
 modules/web-console/backend/middlewares/api.js  |    15 +-
 modules/web-console/backend/middlewares/demo.js |    31 +
 .../1502249492000-invalidate_rename.js          |    28 +
 .../migrations/1502432624000-cache-index.js     |    32 +
 .../migrations/1504672035000-igfs-index.js      |    32 +
 .../migrations/1505114649000-models-index.js    |    32 +
 .../1508395969410-init-registered-date.js       |     7 +-
 .../migrations/1516948939797-migrate-configs.js |   346 +
 .../backend/migrations/migration-utils.js       |   153 +
 .../backend/migrations/recreate-index.js        |    30 -
 modules/web-console/backend/routes/caches.js    |    12 +
 modules/web-console/backend/routes/clusters.js  |    46 +-
 .../web-console/backend/routes/configuration.js |    12 +-
 modules/web-console/backend/routes/domains.js   |     6 +
 modules/web-console/backend/routes/igfss.js     |    12 +
 modules/web-console/backend/services/caches.js  |    78 +-
 .../web-console/backend/services/clusters.js    |   153 +-
 .../backend/services/configurations.js          |    12 +
 modules/web-console/backend/services/domains.js |    96 +-
 modules/web-console/backend/services/igfss.js   |    44 +-
 .../web-console/backend/services/sessions.js    |     2 +-
 modules/web-console/backend/services/spaces.js  |     2 +-
 .../backend/test/unit/CacheService.test.js      |    45 +-
 .../backend/test/unit/ClusterService.test.js    |   233 +-
 .../backend/test/unit/DomainService.test.js     |     5 +
 .../docker/compose/backend/Dockerfile           |     2 +-
 .../docker/compose/frontend/DockerfileBuild     |     2 +-
 .../web-console/docker/standalone/Dockerfile    |     2 +-
 modules/web-console/e2e/docker-compose.yml      |     2 +-
 .../e2e/testcafe/components/ListEditable.js     |    83 +
 .../e2e/testcafe/components/PanelCollapsible.js |    28 +
 .../e2e/testcafe/components/Table.js            |    56 +
 .../e2e/testcafe/components/confirmation.js     |    16 +-
 .../components/pageAdvancedConfiguration.js     |    29 +
 .../testcafe/components/pageConfiguration.js    |    21 +
 .../testcafe/fixtures/auth/forgot-password.js   |     6 +-
 .../e2e/testcafe/fixtures/auth/signup.js        |     2 +-
 .../testcafe/fixtures/configuration/basic.js    |    89 +
 .../testcafe/fixtures/configuration/overview.js |   147 +
 .../e2e/testcafe/fixtures/menu-smoke.js         |     2 +-
 .../fixtures/user-profile/credentials.js        |    34 +-
 .../testcafe/fixtures/user-profile/profile.js   |    60 +-
 modules/web-console/e2e/testcafe/package.json   |     2 +-
 .../PageConfigurationAdvancedCluster.js         |    28 +
 .../page-models/PageConfigurationBasic.js       |    68 +
 .../page-models/PageConfigurationOverview.js    |    36 +
 .../pageConfigurationAdvancedIGFS.js            |    21 +
 .../pageConfigurationAdvancedModels.js          |    28 +
 .../e2e/testcafe/page-models/pageProfile.js     |    40 +
 modules/web-console/e2e/testcafe/roles.js       |     1 -
 modules/web-console/e2e/testenv/Dockerfile      |     2 +-
 modules/web-console/frontend/.babelrc           |     2 +-
 modules/web-console/frontend/.eslintrc          |     3 +-
 modules/web-console/frontend/.gitignore         |     5 +
 modules/web-console/frontend/app/app.config.js  |    33 +-
 modules/web-console/frontend/app/app.d.ts       |    29 +
 modules/web-console/frontend/app/app.js         |    37 +-
 .../app/components/bs-select-menu/style.scss    |     4 +-
 .../directives.js                               |    53 +
 .../expose-ignite-form-field-control/index.js   |    23 +
 .../grid-column-selector/template.pug           |     1 +
 .../components/grid-item-selected/controller.js |     2 +-
 .../app/components/ignite-icon/directive.js     |     2 +-
 .../app/components/ignite-icon/style.scss       |     8 +-
 .../list-editable-add-item-button/component.js  |    86 +
 .../component.spec.js                           |    72 +
 .../has-items-template.pug                      |    23 +
 .../list-editable-add-item-button/index.js      |    24 +
 .../no-items-template.pug                       |    18 +
 .../list-editable-add-item-button/style.scss    |    21 +
 .../list-editable-cols/cols.directive.js        |     5 +-
 .../list-editable-cols/cols.style.scss          |    16 +-
 .../list-editable-cols/cols.template.pug        |     2 +-
 .../components/list-editable-cols/index.js      |     3 +-
 .../list-editable-cols/row.directive.js         |     4 +-
 .../list-editable-one-way/directive.js          |    54 +
 .../components/list-editable-one-way/index.js   |    24 +
 .../list-editable-save-on-changes/directives.js |    76 +
 .../list-editable-save-on-changes/index.js      |    24 +
 .../list-editable-transclude/directive.js       |     3 +
 .../app/components/list-editable/controller.js  |    59 +-
 .../app/components/list-editable/index.js       |     8 +-
 .../app/components/list-editable/style.scss     |    31 +-
 .../app/components/list-editable/template.pug   |     9 +-
 .../list-of-registered-users/column-defs.js     |    16 +-
 .../list-of-registered-users/controller.js      |    14 +-
 .../components/cache-edit-form/component.js     |    32 +
 .../components/cache-edit-form/controller.js    |   103 +
 .../components/cache-edit-form/index.js         |    21 +
 .../components/cache-edit-form/style.scss       |    20 +
 .../components/cache-edit-form/template.tpl.pug |    46 +
 .../components/cluster-edit-form/component.js   |    31 +
 .../components/cluster-edit-form/controller.js  |   116 +
 .../components/cluster-edit-form/index.js       |    21 +
 .../components/cluster-edit-form/style.scss     |    20 +
 .../cluster-edit-form/template.tpl.pug          |    87 +
 .../components/igfs-edit-form/component.js      |    30 +
 .../components/igfs-edit-form/controller.js     |    57 +
 .../components/igfs-edit-form/index.js          |    21 +
 .../components/igfs-edit-form/style.scss        |    20 +
 .../components/igfs-edit-form/template.tpl.pug  |    38 +
 .../components/model-edit-form/component.js     |    31 +
 .../components/model-edit-form/controller.js    |   187 +
 .../components/model-edit-form/index.js         |    21 +
 .../components/model-edit-form/style.scss       |    20 +
 .../components/model-edit-form/template.tpl.pug |    32 +
 .../page-configure-advanced-caches/component.js |    25 +
 .../controller.js                               |   174 +
 .../page-configure-advanced-caches/index.js     |    23 +
 .../page-configure-advanced-caches/template.pug |    57 +
 .../component.js                                |    25 +
 .../controller.js                               |    51 +
 .../page-configure-advanced-cluster/index.js    |    23 +
 .../template.pug                                |    25 +
 .../page-configure-advanced-igfs/component.js   |    25 +
 .../page-configure-advanced-igfs/controller.js  |   139 +
 .../page-configure-advanced-igfs/index.js       |    23 +
 .../page-configure-advanced-igfs/template.pug   |    51 +
 .../page-configure-advanced-models/component.js |    26 +
 .../controller.js                               |   171 +
 .../hasIndex.template.pug                       |    23 +
 .../page-configure-advanced-models/index.js     |    23 +
 .../keyCell.template.pug                        |    21 +
 .../page-configure-advanced-models/style.scss   |    37 +
 .../page-configure-advanced-models/template.pug |    51 +
 .../valueCell.template.pug                      |    18 +
 .../page-configure-advanced/controller.js       |    15 +-
 .../components/page-configure-advanced/index.js |    23 +-
 .../page-configure-advanced/service.js          |    31 -
 .../page-configure-advanced/style.scss          |   136 +-
 .../page-configure-advanced/template.pug        |    14 +-
 .../components/pcbScaleNumber.js                |    46 -
 .../page-configure-basic/controller.js          |   242 +-
 .../page-configure-basic/controller.spec.js     |    19 +-
 .../components/page-configure-basic/index.js    |    11 +-
 .../mixins/pcb-form-field-size.pug              |    71 -
 .../components/page-configure-basic/reducer.js  |    17 +-
 .../page-configure-basic/reducer.spec.js        |     2 +-
 .../components/page-configure-basic/service.js  |   134 -
 .../page-configure-basic/service.spec.js        |   323 -
 .../components/page-configure-basic/style.scss  |   131 +-
 .../page-configure-basic/template.pug           |   281 +-
 .../page-configure-overview/component.js        |    25 +
 .../pco-grid-column-categories/directive.js     |    67 +
 .../page-configure-overview/controller.js       |   163 +
 .../components/page-configure-overview/index.js |    26 +
 .../page-configure-overview/style.scss          |    33 +
 .../page-configure-overview/template.pug        |    40 +
 .../app/components/page-configure/component.js  |     5 +-
 .../button-download-project/component.js        |    36 +
 .../components/button-download-project/index.js |    23 +
 .../button-download-project/template.pug        |    22 +
 .../button-import-models/component.js           |    37 +
 .../components/button-import-models/index.js    |    23 +
 .../components/button-import-models/style.scss  |    25 +
 .../button-import-models/template.pug           |    20 +
 .../button-preview-project/component.js         |    36 +
 .../components/button-preview-project/index.js  |    23 +
 .../button-preview-project/template.pug         |    22 +
 .../page-configure/components/fakeUICanExit.js  |    48 +
 .../components/formUICanExitGuard.js            |    59 +
 .../components/modal-import-models/component.js |  1151 ++
 .../components/modal-import-models/index.js     |    31 +
 .../component.js                                |    27 +
 .../selected-items-amount-indicator/style.scss  |    24 +
 .../template.pug                                |    17 +
 .../components/modal-import-models/service.js   |    56 +
 .../step-indicator/component.js                 |    35 +
 .../step-indicator/style.scss                   |   101 +
 .../step-indicator/template.pug                 |    31 +
 .../components/modal-import-models/style.scss   |    53 +
 .../tables-action-cell/component.js             |    62 +
 .../tables-action-cell/style.scss               |    49 +
 .../tables-action-cell/template.pug             |    45 +
 .../modal-import-models/template.tpl.pug        |   181 +
 .../modal-preview-project/component.js          |    31 +
 .../modal-preview-project/controller.js         |   120 +
 .../components/modal-preview-project/index.js   |    27 +
 .../components/modal-preview-project/service.js |    52 +
 .../components/modal-preview-project/style.scss |    67 +
 .../modal-preview-project/template.pug          |    47 +
 .../components/pc-form-field-size/component.js  |    41 +
 .../components/pc-form-field-size/controller.js |   131 +
 .../components/pc-form-field-size/index.js      |    23 +
 .../components/pc-form-field-size/style.scss    |    52 +
 .../components/pc-form-field-size/template.pug  |    61 +
 .../components/pc-items-table/component.js      |    45 +
 .../components/pc-items-table/controller.js     |   125 +
 .../components/pc-items-table/decorator.js      |    34 +
 .../components/pc-items-table/index.js          |    25 +
 .../components/pc-items-table/style.scss        |    71 +
 .../components/pc-items-table/template.pug      |    49 +
 .../components/pc-ui-grid-filters/directive.js  |    62 +
 .../components/pc-ui-grid-filters/index.js      |    43 +
 .../components/pc-ui-grid-filters/style.scss    |    22 +
 .../components/pc-ui-grid-filters/template.pug  |    39 +
 .../components/pcIsInCollection.js              |    41 +
 .../page-configure/components/pcValidation.js   |   193 +
 .../app/components/page-configure/controller.js |    35 +-
 .../components/page-configure/defaultNames.js   |    23 +
 .../app/components/page-configure/index.d.ts    |   151 +
 .../app/components/page-configure/index.js      |   136 +-
 .../app/components/page-configure/reducer.js    |   353 +-
 .../components/page-configure/reducer.spec.js   |    21 +-
 .../page-configure/reduxDevtoolsIntegration.js  |    75 +
 .../services/ConfigChangesGuard.js              |   100 +
 .../services/ConfigChangesGuard.spec.js         |    40 +
 .../services/ConfigSelectionManager.js          |    93 +
 .../services/ConfigurationDownload.js           |    23 +-
 .../services/ConfigurationDownload.spec.js      |     2 +-
 .../page-configure/services/ConfigureState.js   |    90 +-
 .../page-configure/services/PageConfigure.js    |    86 +-
 .../services/PageConfigure.spec.js              |   244 +
 .../page-configure/store/actionCreators.js      |   170 +
 .../page-configure/store/actionTypes.js         |    31 +
 .../components/page-configure/store/effects.js  |   664 +
 .../page-configure/store/selectors.js           |   170 +
 .../app/components/page-configure/style.scss    |   285 +-
 .../app/components/page-configure/template.pug  |    43 +-
 .../transitionHooks/errorState.js               |    55 +
 .../page-configure/types/uirouter.d.ts          |    20 +
 .../app/components/page-landing/index.js        |     4 +-
 .../app/components/page-profile/controller.js   |    25 +-
 .../app/components/page-profile/style.scss      |     2 +-
 .../app/components/page-profile/template.pug    |    32 +-
 .../components/queries-notebook/controller.js   |    27 +-
 .../queries-notebook/template.tpl.pug           |     4 +-
 .../queries-notebooks-list/controller.js        |     8 +-
 .../queries-notebooks-list/template.tpl.pug     |     2 +-
 .../components/panel-collapsible/component.js   |    39 +
 .../components/panel-collapsible/controller.js  |    52 +
 .../app/components/panel-collapsible/index.js   |    25 +
 .../components/panel-collapsible/index.spec.js  |   140 +
 .../app/components/panel-collapsible/style.scss |    79 +
 .../components/panel-collapsible/template.pug   |    24 +
 .../panel-collapsible/transcludeDirective.js    |    51 +
 .../app/components/version-picker/style.scss    |     3 +-
 .../app/components/version-picker/template.pug  |    14 +-
 .../app/core/activities/Activities.data.d.ts    |    37 +
 .../app/core/activities/Activities.data.js      |    10 +-
 .../frontend/app/data/getting-started.json      |    17 -
 modules/web-console/frontend/app/data/i18n.js   |    18 +-
 .../app/directives/on-focus-out.directive.js    |   100 +-
 .../app/directives/ui-ace-java/index.js         |    26 +
 .../ui-ace-java/ui-ace-java.controller.js       |   108 +-
 .../ui-ace-java/ui-ace-java.directive.js        |    43 +-
 .../ui-ace-pojos/ui-ace-pojos.controller.js     |     4 +-
 .../app/directives/ui-ace-spring/index.js       |    26 +
 .../ui-ace-spring/ui-ace-spring.controller.js   |   104 +-
 .../ui-ace-spring/ui-ace-spring.directive.js    |    46 +-
 .../app/directives/ui-ace.controller.js         |   123 +
 .../frontend/app/filters/id8.filter.js          |     8 +-
 .../frontend/app/helpers/jade/form.pug          |     2 -
 .../helpers/jade/form/form-field-checkbox.pug   |    43 +-
 .../helpers/jade/form/form-field-datalist.pug   |    25 +-
 .../helpers/jade/form/form-field-dropdown.pug   |    34 +-
 .../helpers/jade/form/form-field-feedback.pug   |    16 +-
 .../app/helpers/jade/form/form-field-label.pug  |     8 +-
 .../app/helpers/jade/form/form-field-number.pug |    41 +-
 .../helpers/jade/form/form-field-password.pug   |    26 +-
 .../app/helpers/jade/form/form-field-text.pug   |    28 +-
 .../app/helpers/jade/form/form-group.pug        |    23 -
 .../frontend/app/helpers/jade/mixins.pug        |   400 +-
 .../app/modules/agent/AgentManager.service.js   |    13 +-
 .../modules/configuration/generator/Beans.js    |    60 +-
 .../generator/ConfigurationGenerator.js         |    43 +-
 .../generator/JavaTransformer.service.js        |    24 +-
 .../generator/PlatformGenerator.js              |     8 +-
 .../generator/SpringTransformer.service.js      |     2 +-
 .../frontend/app/modules/demo/Demo.module.js    |     6 +-
 .../field/bs-select-placeholder.directive.js    |    20 +-
 .../frontend/app/modules/form/form.module.js    |     6 -
 .../app/modules/form/panel/chevron.directive.js |    17 +-
 .../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/java-identifier.directive.js |     5 +-
 .../modules/form/validator/unique.directive.js  |    78 +-
 .../modules/nodes/nodes-dialog.controller.js    |     2 +-
 .../app/modules/states/configuration.state.js   |   283 +-
 .../states/configuration/caches/affinity.pug    |    91 +-
 .../configuration/caches/client-near-cache.pug  |    50 -
 .../states/configuration/caches/concurrency.pug |    88 +-
 .../states/configuration/caches/general.pug     |   163 +-
 .../states/configuration/caches/memory.pug      |   242 +-
 .../configuration/caches/near-cache-client.pug  |    59 +-
 .../configuration/caches/near-cache-server.pug  |    61 +-
 .../states/configuration/caches/node-filter.pug |    57 +-
 .../states/configuration/caches/query.pug       |   207 +-
 .../states/configuration/caches/rebalance.pug   |    92 +-
 .../states/configuration/caches/statistics.pug  |    33 +-
 .../states/configuration/caches/store.pug       |   477 +-
 .../states/configuration/clusters/atomic.pug    |   108 +-
 .../configuration/clusters/attributes.pug       |    57 +-
 .../states/configuration/clusters/binary.pug    |   115 +-
 .../configuration/clusters/cache-key-cfg.pug    |    75 +-
 .../configuration/clusters/checkpoint.pug       |   110 +-
 .../configuration/clusters/checkpoint/fs.pug    |    66 +-
 .../configuration/clusters/checkpoint/jdbc.pug  |    51 +-
 .../configuration/clusters/checkpoint/s3.pug    |   138 +-
 .../configuration/clusters/client-connector.pug |   112 +-
 .../states/configuration/clusters/collision.pug |    79 +-
 .../configuration/clusters/collision/custom.pug |     9 +-
 .../clusters/collision/fifo-queue.pug           |    15 +-
 .../clusters/collision/job-stealing.pug         |    74 +-
 .../clusters/collision/priority-queue.pug       |    45 +-
 .../configuration/clusters/communication.pug    |   192 +-
 .../states/configuration/clusters/connector.pug |   160 +-
 .../configuration/clusters/data-storage.pug     |   521 +-
 .../configuration/clusters/deployment.pug       |   383 +-
 .../states/configuration/clusters/discovery.pug |   145 +-
 .../states/configuration/clusters/events.pug    |    78 +-
 .../states/configuration/clusters/failover.pug  |   125 +-
 .../states/configuration/clusters/general.pug   |   116 +-
 .../clusters/general/discovery/cloud.pug        |   144 +-
 .../clusters/general/discovery/google.pug       |    12 +-
 .../clusters/general/discovery/jdbc.pug         |    25 +-
 .../clusters/general/discovery/kubernetes.pug   |    12 +-
 .../clusters/general/discovery/multicast.pug    |   101 +-
 .../clusters/general/discovery/s3.pug           |    28 +-
 .../clusters/general/discovery/shared.pug       |     8 +-
 .../clusters/general/discovery/vm.pug           |    95 +-
 .../clusters/general/discovery/zookeeper.pug    |    93 +-
 .../retrypolicy/bounded-exponential-backoff.pug |    13 +-
 .../discovery/zookeeper/retrypolicy/custom.pug  |     3 +-
 .../retrypolicy/exponential-backoff.pug         |    13 +-
 .../discovery/zookeeper/retrypolicy/forever.pug |     3 +-
 .../discovery/zookeeper/retrypolicy/n-times.pug |     9 +-
 .../zookeeper/retrypolicy/one-time.pug          |     6 +-
 .../zookeeper/retrypolicy/until-elapsed.pug     |     9 +-
 .../states/configuration/clusters/hadoop.pug    |   150 +-
 .../states/configuration/clusters/igfs.pug      |    32 +-
 .../configuration/clusters/load-balancing.pug   |   178 +-
 .../states/configuration/clusters/logger.pug    |    84 +-
 .../configuration/clusters/logger/custom.pug    |     9 +-
 .../configuration/clusters/logger/log4j.pug     |    59 +-
 .../configuration/clusters/logger/log4j2.pug    |    37 +-
 .../configuration/clusters/marshaller.pug       |   111 +-
 .../states/configuration/clusters/memory.pug    |   243 +-
 .../states/configuration/clusters/metrics.pug   |    57 +-
 .../states/configuration/clusters/misc.pug      |    84 +-
 .../states/configuration/clusters/odbc.pug      |    87 +-
 .../configuration/clusters/persistence.pug      |   122 +-
 .../states/configuration/clusters/service.pug   |   131 +-
 .../configuration/clusters/sql-connector.pug    |    74 +-
 .../states/configuration/clusters/ssl.pug       |   149 +-
 .../states/configuration/clusters/swap.pug      |   102 +-
 .../states/configuration/clusters/thread.pug    |   190 +-
 .../states/configuration/clusters/time.pug      |    52 +-
 .../configuration/clusters/transactions.pug     |    94 +-
 .../states/configuration/domains/general.pug    |    63 +-
 .../states/configuration/domains/query.pug      |   395 +-
 .../states/configuration/domains/store.pug      |   192 +-
 .../modules/states/configuration/igfs/dual.pug  |    42 +-
 .../states/configuration/igfs/fragmentizer.pug  |    36 +-
 .../states/configuration/igfs/general.pug       |    87 +-
 .../modules/states/configuration/igfs/ipc.pug   |    71 +-
 .../modules/states/configuration/igfs/misc.pug  |   189 +-
 .../states/configuration/igfs/secondary.pug     |    56 +-
 .../summary/summary-tabs.directive.js           |    50 -
 .../summary/summary-zipper.service.js           |     4 +-
 .../configuration/summary/summary.controller.js |   350 -
 .../configuration/summary/summary.worker.js     |    17 +-
 .../frontend/app/primitives/btn/index.scss      |    21 +
 .../frontend/app/primitives/checkbox/index.scss |    52 +
 .../app/primitives/datepicker/index.pug         |     8 +-
 .../frontend/app/primitives/dropdown/index.pug  |     6 +-
 .../frontend/app/primitives/file/index.pug      |     2 +-
 .../app/primitives/form-field/index.scss        |    96 +-
 .../frontend/app/primitives/index.js            |     1 +
 .../frontend/app/primitives/modal/index.scss    |     1 +
 .../frontend/app/primitives/radio/index.pug     |    12 +-
 .../frontend/app/primitives/tabs/index.scss     |    10 +-
 .../app/primitives/timepicker/index.pug         |     8 +-
 .../frontend/app/primitives/tooltip/index.pug   |     3 +-
 .../frontend/app/primitives/ui-grid/index.scss  |    34 +-
 .../web-console/frontend/app/services/Caches.js |   206 +-
 .../frontend/app/services/Clusters.js           |   483 +-
 .../frontend/app/services/Confirm.service.js    |    38 +
 .../app/services/ConfirmBatch.service.js        |   125 +-
 .../app/services/ErrorPopover.service.js        |    12 +-
 .../frontend/app/services/FormUtils.service.js  |    21 +-
 .../web-console/frontend/app/services/IGFSs.js  |    77 +
 .../frontend/app/services/JavaTypes.service.js  |    27 +-
 .../app/services/LegacyUtils.service.js         |     2 +
 .../frontend/app/services/Messages.service.js   |     6 +-
 .../web-console/frontend/app/services/Models.js |   181 +
 .../frontend/app/services/Version.service.js    |     1 +
 .../web-console/frontend/app/services/index.js  |     2 +
 modules/web-console/frontend/app/utils/id8.js   |    20 +
 .../frontend/app/utils/lodashMixins.js          |    23 +
 .../frontend/app/utils/uniqueName.js            |    27 +
 modules/web-console/frontend/app/vendor.js      |     1 +
 .../frontend/controllers/caches-controller.js   |   653 -
 .../frontend/controllers/clusters-controller.js |  1044 --
 .../frontend/controllers/domains-controller.js  |  1897 ---
 .../frontend/controllers/igfs-controller.js     |   415 -
 modules/web-console/frontend/package-lock.json  | 14619 +++++++++++++++++
 modules/web-console/frontend/package.json       |    84 +-
 .../frontend/public/images/checkbox-active.svg  |     2 +-
 .../frontend/public/images/collapse.svg         |     3 +
 .../frontend/public/images/expand.svg           |     3 +
 .../frontend/public/images/icons/collapse.svg   |     2 +-
 .../frontend/public/images/icons/expand.svg     |     2 +-
 .../frontend/public/images/icons/index.js       |     9 +-
 .../frontend/public/images/icons/plus.svg       |     5 +-
 .../frontend/public/images/icons/structure.svg  |     3 +
 .../frontend/public/stylesheets/style.scss      |   120 +-
 .../frontend/test/check-doc-links/Dockerfile    |     4 +-
 .../test/check-doc-links/check-doc-links.js     |    17 +-
 modules/web-console/frontend/test/ci/Dockerfile |     3 +
 .../frontend/test/karma.conf.babel.js           |     8 +
 modules/web-console/frontend/tsconfig.json      |     6 +-
 modules/web-console/frontend/views/base2.pug    |     4 +-
 .../frontend/views/configuration/caches.tpl.pug |    55 -
 .../views/configuration/clusters.tpl.pug        |    95 -
 .../views/configuration/domains-import.tpl.pug  |   182 -
 .../views/configuration/domains.tpl.pug         |    65 -
 .../frontend/views/configuration/igfs.tpl.pug   |    54 -
 .../summary-project-structure.tpl.pug           |    28 -
 .../views/configuration/summary-tabs.pug        |    25 -
 .../views/configuration/summary.tpl.pug         |    87 -
 .../frontend/views/includes/header-left.pug     |     8 +-
 .../views/templates/batch-confirm.tpl.pug       |    29 +-
 .../frontend/views/templates/confirm.tpl.pug    |     2 +-
 .../frontend/webpack/webpack.common.js          |    24 +-
 .../frontend/webpack/webpack.dev.babel.js       |     7 +-
 .../frontend/webpack/webpack.prod.babel.js      |    32 +-
 .../frontend/webpack/webpack.test.js            |    17 +-
 .../ignite/yardstick/ml/knn/Datasets.java       |   453 -
 .../knn/IgniteKNNClassificationBenchmark.java   |    73 -
 .../ml/knn/IgniteKNNRegressionBenchmark.java    |    82 -
 .../ignite/yardstick/ml/knn/package-info.java   |    22 -
 parent/pom.xml                                  |     1 +
 742 files changed, 56481 insertions(+), 17853 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/cbf65cb4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------

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