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 2015/10/12 19:15:17 UTC

[13/17] ignite git commit: Merge branch master into ignite-1.4.2

Merge branch master into ignite-1.4.2


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

Branch: refs/heads/master
Commit: 4ee154c808ac0d7384cdfc0dfc5c1ef5733e7e1b
Parents: 6afc2fc 1223525
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Mon Oct 12 12:28:00 2015 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Oct 12 12:28:00 2015 +0300

----------------------------------------------------------------------
 examples/pom.xml                                |   2 +-
 examples/schema-import/pom.xml                  |   5 +-
 .../computegrid/ComputeClosureExample.java      |   2 +-
 .../socket/WordsSocketStreamerServer.java       |   5 +-
 modules/aop/pom.xml                             |   2 +-
 modules/apache-license-gen/README.txt           |  33 +
 modules/apache-license-gen/pom.xml              |   2 +-
 modules/aws/pom.xml                             |   2 +-
 modules/clients/pom.xml                         |   2 +-
 .../JettyRestProcessorAbstractSelfTest.java     | 252 ++++-
 modules/cloud/pom.xml                           |   2 +-
 .../TcpDiscoveryCloudIpFinderSelfTest.java      |   2 +
 modules/codegen/pom.xml                         |   2 +-
 modules/core/pom.xml                            |   2 +-
 .../org/apache/ignite/IgniteAtomicLong.java     |  15 +-
 .../apache/ignite/IgniteAtomicReference.java    |   9 +-
 .../org/apache/ignite/IgniteAtomicSequence.java |   9 +-
 .../org/apache/ignite/IgniteAtomicStamped.java  |  13 +-
 .../org/apache/ignite/IgniteFileSystem.java     |   4 +-
 .../apache/ignite/IgniteSystemProperties.java   |   3 +
 .../configuration/CacheConfiguration.java       |   2 +-
 .../ignite/configuration/TopologyValidator.java |  38 +-
 .../java/org/apache/ignite/igfs/IgfsPath.java   |   2 +-
 .../apache/ignite/internal/IgniteKernal.java    |  70 +-
 .../managers/discovery/CustomEventListener.java |   4 +-
 .../discovery/GridDiscoveryManager.java         | 541 ++++++++++-
 .../cache/DynamicCacheChangeRequest.java        |  19 +
 .../cache/DynamicCacheDescriptor.java           |  36 +
 .../processors/cache/GridCacheContext.java      |   2 +-
 .../processors/cache/GridCacheEventManager.java |  12 +-
 .../cache/GridCacheExplicitLockSpan.java        |  13 +-
 .../processors/cache/GridCacheIoManager.java    |  76 +-
 .../processors/cache/GridCacheMessage.java      |   7 -
 .../cache/GridCacheMvccCandidate.java           |   5 +-
 .../processors/cache/GridCacheMvccManager.java  |  67 +-
 .../GridCachePartitionExchangeManager.java      |  92 +-
 .../processors/cache/GridCacheProcessor.java    | 157 ++-
 .../cache/GridCacheSharedContext.java           |  32 -
 .../processors/cache/GridCacheSwapManager.java  |   4 +-
 .../processors/cache/GridCacheUtils.java        |   8 -
 .../distributed/GridDistributedCacheEntry.java  |   2 +-
 .../dht/GridDhtAffinityAssignmentRequest.java   |   5 -
 .../dht/GridDhtAffinityAssignmentResponse.java  |   5 -
 .../cache/distributed/dht/GridDhtGetFuture.java |   4 +-
 .../distributed/dht/GridDhtLockRequest.java     |  10 +-
 .../distributed/dht/GridDhtTxFinishRequest.java |   5 -
 .../distributed/dht/GridDhtTxPrepareFuture.java |   6 +-
 .../dht/GridDhtTxPrepareRequest.java            |   7 +-
 .../dht/GridPartitionedGetFuture.java           |   5 +-
 .../dht/atomic/GridDhtAtomicUpdateFuture.java   |   5 +
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |  17 +-
 .../dht/colocated/GridDhtColocatedCache.java    |  12 +-
 .../colocated/GridDhtColocatedLockFuture.java   |  27 +-
 .../dht/preloader/GridDhtForceKeysRequest.java  |   5 -
 .../dht/preloader/GridDhtForceKeysResponse.java |   5 -
 .../GridDhtPartitionDemandMessage.java          |   5 -
 .../GridDhtPartitionSupplyMessage.java          |   5 -
 .../GridDhtPartitionsAbstractMessage.java       |   5 -
 .../dht/preloader/GridDhtPreloader.java         |   8 +-
 .../distributed/near/GridNearGetFuture.java     |   2 +
 .../distributed/near/GridNearLockFuture.java    |  11 +-
 .../near/GridNearOptimisticTxPrepareFuture.java |  24 +-
 .../near/GridNearTxFinishFuture.java            |   4 +-
 .../cache/distributed/near/GridNearTxLocal.java |  21 +-
 .../cache/local/GridLocalCacheEntry.java        |   2 +-
 .../cache/query/GridCacheQueryManager.java      |  74 +-
 .../cache/query/GridCacheSqlIndexMetadata.java  |   7 +-
 .../cache/query/GridCacheSqlMetadata.java       |  22 +-
 .../continuous/CacheContinuousQueryHandler.java |  10 +-
 .../transactions/IgniteTxLocalAdapter.java      |  35 +-
 .../continuous/GridContinuousProcessor.java     |  17 +-
 .../datastructures/DataStructuresProcessor.java |  54 +-
 .../internal/processors/igfs/IgfsFileInfo.java  |  15 +-
 .../internal/processors/igfs/IgfsImpl.java      | 208 +---
 .../processors/igfs/IgfsMetaManager.java        | 594 ++++++++++--
 .../processors/rest/GridRestCommand.java        |   8 +-
 .../processors/rest/GridRestProcessor.java      | 411 +++++++-
 .../handlers/cache/GridCacheCommandHandler.java | 364 +++----
 .../handlers/query/QueryCommandHandler.java     | 195 ++--
 .../top/GridTopologyCommandHandler.java         | 160 ++-
 .../rest/request/RestQueryRequest.java          | 175 ++++
 .../rest/request/RestSqlQueryRequest.java       | 125 ---
 .../ignite/internal/util/GridArgumentCheck.java |   5 +-
 .../ignite/internal/util/IgniteUtils.java       |   2 +-
 .../util/nio/GridNioRecoveryDescriptor.java     |   4 +-
 .../org/apache/ignite/stream/StreamAdapter.java | 104 +-
 .../stream/StreamMultipleTupleExtractor.java    |  38 +
 .../stream/StreamSingleTupleExtractor.java      |  40 +
 .../ignite/stream/StreamTupleExtractor.java     |  20 +-
 .../ignite/stream/socket/SocketStreamer.java    |   3 +-
 .../core/src/main/resources/ignite.properties   |   2 +-
 .../ignite/igfs/IgfsFragmentizerSelfTest.java   |   2 +-
 .../internal/GridUpdateNotifierSelfTest.java    |   1 +
 .../IgniteClientReconnectAbstractTest.java      |  35 +-
 .../IgniteClientReconnectCacheTest.java         | 154 +++
 .../GridDiscoveryManagerAliveCacheSelfTest.java |   2 +
 .../processors/cache/CrossCacheLockTest.java    | 142 +++
 .../GridCacheAbstractFailoverSelfTest.java      |   3 +
 .../GridCacheAbstractRemoveFailureTest.java     |   3 +
 .../GridCacheDeploymentOffHeapSelfTest.java     |  15 +
 .../GridCacheFinishPartitionsSelfTest.java      |   5 +-
 .../GridCacheVariableTopologySelfTest.java      |   3 +-
 ...IgniteCacheAtomicPutAllFailoverSelfTest.java |   4 +
 .../cache/IgniteCacheCreateRestartSelfTest.java |   3 +
 .../cache/IgniteCacheEntryListenerTxTest.java   |   4 +
 .../IgniteCacheP2pUnmarshallingErrorTest.java   |   7 +
 ...CacheP2pUnmarshallingRebalanceErrorTest.java |  12 +-
 .../cache/IgniteCachePutAllRestartTest.java     |   4 +-
 .../cache/IgniteDynamicCacheFilterTest.java     | 150 +++
 .../IgniteTxExceptionAbstractSelfTest.java      |   3 +
 ...omicOffheapQueueCreateMultiNodeSelfTest.java |   5 -
 ...ionedAtomicQueueCreateMultiNodeSelfTest.java |   9 +-
 ...artitionedOffHeapValuesQueueApiSelfTest.java |   4 +
 ...PartitionedQueueCreateMultiNodeSelfTest.java |  16 +-
 ...nedQueueFailoverDataConsistencySelfTest.java |   5 -
 ...GridCachePartitionedSetFailoverSelfTest.java |   4 +
 ...acheAsyncOperationsFailoverAbstractTest.java |  11 +
 .../CacheGetFutureHangsSelfTest.java            | 159 ++-
 .../CachePutAllFailoverAbstractTest.java        |  11 +
 .../IgniteCacheAtomicNodeRestartTest.java       |   8 +
 ...niteCacheClientNodeChangingTopologyTest.java |   6 +-
 .../IgniteCacheCreatePutMultiNodeSelfTest.java  | 151 +++
 .../distributed/IgniteCacheCreatePutTest.java   | 125 +++
 .../IgniteCachePutGetRestartAbstractTest.java   |   3 +
 .../IgniteCacheSizeFailoverTest.java            |   3 +
 .../IgniteTxPreloadAbstractTest.java            |  43 +-
 .../GridCacheColocatedTxExceptionSelfTest.java  |   5 -
 .../dht/GridNearCacheTxNodeFailureSelfTest.java |   4 +
 ...gniteAtomicLongChangingTopologySelfTest.java | 186 +++-
 .../IgniteCacheCrossCacheTxFailoverTest.java    |   3 +
 .../IgniteCrossCacheTxNearEnabledSelfTest.java  |  28 +
 .../dht/IgniteCrossCacheTxSelfTest.java         | 213 ++++
 ...ledFairAffinityMultiNodeFullApiSelfTest.java |   4 +
 .../near/GridCacheNearTxExceptionSelfTest.java  |   9 +-
 .../near/NearCacheMultithreadedUpdateTest.java  | 217 +++++
 .../GridCacheReplicatedInvalidateSelfTest.java  | 249 -----
 .../GridCacheReplicatedTxExceptionSelfTest.java |   5 -
 .../replicated/GridReplicatedTxPreloadTest.java |   2 -
 ...eCacheExpiryPolicyWithStoreAbstractTest.java |   5 +-
 .../GridCacheLocalTxExceptionSelfTest.java      |   5 -
 ...bledFairAffinityMultiJvmFullApiSelfTest.java |   5 +
 ...tomicNearEnabledMultiJvmFullApiSelfTest.java |   5 +
 .../DataStreamerMultiThreadedSelfTest.java      |   4 +-
 .../DataStreamerMultinodeCreateCacheTest.java   |   2 +
 .../processors/igfs/IgfsAbstractSelfTest.java   | 378 ++++++--
 .../igfs/IgfsClientCacheSelfTest.java           |  15 +-
 .../igfs/IgfsMetaManagerSelfTest.java           | 100 +-
 .../processors/igfs/IgfsMetricsSelfTest.java    |   2 +-
 .../processors/igfs/IgfsProcessorSelfTest.java  |  29 +-
 .../igfs/UniversalFileSystemAdapter.java        |   1 -
 .../tcp/TcpClientDiscoverySpiSelfTest.java      |   2 +
 .../stream/socket/SocketStreamerSelfTest.java   | 112 ++-
 .../multijvm/IgniteCacheProcessProxy.java       | 965 +++++++++++++++++++
 .../IgniteCacheFailoverTestSuite.java           |   4 -
 .../IgniteCacheFailoverTestSuite3.java          |  28 +-
 .../testsuites/IgniteCacheTestSuite3.java       |   2 -
 .../testsuites/IgniteCacheTestSuite4.java       |  22 +
 modules/extdata/p2p/pom.xml                     |   2 +-
 .../extdata/uri/modules/uri-dependency/pom.xml  |   2 +-
 modules/extdata/uri/pom.xml                     |   2 +-
 modules/gce/pom.xml                             |   2 +-
 modules/geospatial/pom.xml                      |   2 +-
 modules/hadoop/pom.xml                          |   2 +-
 .../processors/hadoop/igfs/HadoopIgfsUtils.java |  36 +
 .../ignite/igfs/Hadoop1DualAbstractTest.java    |   5 +
 ...oopFileSystemUniversalFileSystemAdapter.java |   4 +-
 .../HadoopIgfs20FileSystemAbstractSelfTest.java |   7 +-
 .../IgniteHadoopFileSystemAbstractSelfTest.java |   5 +-
 .../testsuites/IgniteHadoopTestSuite.java       |  19 +-
 modules/hibernate/pom.xml                       |   2 +-
 modules/indexing/pom.xml                        |   2 +-
 .../processors/query/h2/sql/GridSqlArray.java   |  52 +
 .../processors/query/h2/sql/GridSqlElement.java |   2 +-
 .../query/h2/sql/GridSqlFunction.java           |  60 +-
 .../query/h2/sql/GridSqlFunctionType.java       |   3 +
 .../query/h2/sql/GridSqlPlaceholder.java        |   7 +-
 .../query/h2/sql/GridSqlQueryParser.java        |  84 +-
 .../processors/query/h2/sql/GridSqlType.java    |  29 +-
 .../query/h2/sql/GridQueryParsingTest.java      |  27 +
 modules/jcl/pom.xml                             |   2 +-
 modules/jms11/pom.xml                           |   2 +-
 modules/jta/pom.xml                             |   2 +-
 modules/kafka/pom.xml                           |   2 +-
 modules/log4j/pom.xml                           |   2 +-
 modules/log4j2/pom.xml                          |   2 +-
 modules/mesos/pom.xml                           |   2 +-
 modules/mqtt/pom.xml                            | 114 +++
 .../apache/ignite/stream/mqtt/MqttStreamer.java | 611 ++++++++++++
 .../stream/mqtt/IgniteMqttStreamerTest.java     | 553 +++++++++++
 .../mqtt/IgniteMqttStreamerTestSuite.java       |  34 +
 modules/platform/pom.xml                        |   2 +-
 .../platform/src/main/cpp/common/configure.ac   |   2 +-
 .../src/main/cpp/core-test/configure.ac         |   2 +-
 modules/platform/src/main/cpp/core/configure.ac |   2 +-
 .../Properties/AssemblyInfo.cs                  |   6 +-
 .../Apache.Ignite/Properties/AssemblyInfo.cs    |   6 +-
 .../Properties/AssemblyInfo.cs                  |   6 +-
 .../Properties/AssemblyInfo.cs                  |   6 +-
 modules/rest-http/pom.xml                       |   2 +-
 .../http/jetty/GridJettyJsonConfig.java         | 158 ++-
 .../http/jetty/GridJettyRestHandler.java        | 186 ++--
 modules/scalar-2.10/pom.xml                     |   2 +-
 modules/scalar/pom.xml                          |   2 +-
 modules/schedule/pom.xml                        |   2 +-
 modules/schema-import/pom.xml                   |   2 +-
 modules/slf4j/pom.xml                           |   2 +-
 modules/spark-2.10/pom.xml                      |   2 +-
 modules/spark/pom.xml                           |   2 +-
 modules/spring/pom.xml                          |   2 +-
 modules/ssh/pom.xml                             |   2 +-
 modules/tools/pom.xml                           |   2 +-
 modules/urideploy/pom.xml                       |   2 +-
 modules/visor-console-2.10/pom.xml              |   2 +-
 modules/visor-console/pom.xml                   |   2 +-
 .../visor/commands/kill/VisorKillCommand.scala  |   2 +-
 .../scala/org/apache/ignite/visor/visor.scala   |   1 -
 modules/visor-plugins/pom.xml                   |   2 +-
 modules/web/pom.xml                             |   2 +-
 .../config/benchmark-put-indexed-val.properties |   2 +-
 modules/yardstick/pom.xml                       |  12 +-
 modules/yarn/pom.xml                            |   2 +-
 modules/zookeeper/pom.xml                       |   2 +-
 pom.xml                                         |   3 +-
 223 files changed, 8182 insertions(+), 2112 deletions(-)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandMessage.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplyMessage.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
index 02c6a26,d89e397..ddce314
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
@@@ -426,963 -427,963 +427,1927 @@@ public class IgniteCacheProcessProxy<K
       *
       */
      private static class GetConfigurationTask<K, V, C extends Configuration<K, V>> extends CacheTaskAdapter<K, V, C> {
+         /** Clazz. */
+         private final Class<C> clazz;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param clazz Clazz.
+          */
+         public GetConfigurationTask(String cacheName, boolean async, Class<C> clazz) {
+             super(cacheName, async);
+             this.clazz = clazz;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public C call() throws Exception {
+             return cache().getConfiguration(clazz);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class LocalLoadCacheTask<K, V> extends CacheTaskAdapter<K, V, Void> {
+         /** Predicate. */
+         private final IgniteBiPredicate<K, V> p;
+ 
+         /** Args. */
+         private final Object[] args;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param p P.
+          * @param args Args.
+          */
+         public LocalLoadCacheTask(String cacheName, boolean async, IgniteBiPredicate<K, V> p, Object[] args) {
+             super(cacheName, async);
+             this.p = p;
+             this.args = args;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             cache().localLoadCache(p, args);
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class GetAndPutIfAbsentTask<K, V> extends CacheTaskAdapter<K, V, V> {
+         /** Key. */
+         private final K key;
+ 
+         /** Value. */
+         private final V val;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param val Value.
+          */
+         public GetAndPutIfAbsentTask(String cacheName, boolean async, K key, V val) {
+             super(cacheName, async);
+             this.key = key;
+             this.val = val;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public V call() throws Exception {
+             return cache().getAndPutIfAbsent(key, val);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class IsLocalLockedTask<K> extends CacheTaskAdapter<K, Void, Boolean> {
+         /** Key. */
+         private final K key;
+ 
+         /** By current thread. */
+         private final boolean byCurrThread;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param byCurrThread By current thread.
+          */
+         public IsLocalLockedTask(String cacheName, boolean async, K key, boolean byCurrThread) {
+             super(cacheName, async);
+             this.key = key;
+             this.byCurrThread = byCurrThread;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Boolean call() throws Exception {
+             return cache().isLocalLocked(key, byCurrThread);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class LocalEntriesTask<K, V> extends CacheTaskAdapter<K, V, Iterable<Entry<K, V>>> {
+         /** Peek modes. */
+         private final CachePeekMode[] peekModes;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param peekModes Peek modes.
+          */
+         public LocalEntriesTask(String cacheName, boolean async, CachePeekMode[] peekModes) {
+             super(cacheName, async);
+             this.peekModes = peekModes;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Iterable<Entry<K, V>> call() throws Exception {
+             Collection<Entry<K, V>> res = new ArrayList<>();
+ 
+             for (Entry<K, V> e : cache().localEntries(peekModes))
+                 res.add(new CacheEntryImpl<>(e.getKey(), e.getValue()));
+ 
+             return res;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class LocalEvictTask<K> extends CacheTaskAdapter<K, Void, Void> {
+         /** Keys. */
+         private final Collection<? extends K> keys;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param keys Keys.
+          */
+         public LocalEvictTask(String cacheName, boolean async, Collection<? extends K> keys) {
+             super(cacheName, async);
+             this.keys = keys;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             cache().localEvict(keys);
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class LocalPeekTask<K, V> extends CacheTaskAdapter<K, V, V> {
+         /** Key. */
+         private final K key;
+ 
+         /** Peek modes. */
+         private final CachePeekMode[] peekModes;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param peekModes Peek modes.
+          */
+         public LocalPeekTask(String cacheName, boolean async, K key, CachePeekMode[] peekModes) {
+             super(cacheName, async);
+             this.key = key;
+             this.peekModes = peekModes;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public V call() throws Exception {
+             return cache().localPeek(key, peekModes);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class SizeTask extends CacheTaskAdapter<Void, Void, Integer> {
+         /** Peek modes. */
+         private final CachePeekMode[] peekModes;
+ 
+         /** Local. */
+         private final boolean loc;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param peekModes Peek modes.
+          * @param loc Local.
+          */
+         public SizeTask(String cacheName, boolean async, CachePeekMode[] peekModes, boolean loc) {
+             super(cacheName, async);
+             this.loc = loc;
+             this.peekModes = peekModes;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Integer call() throws Exception {
+             return loc ? cache().localSize(peekModes) : cache().size(peekModes);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class GetTask<K, V> extends CacheTaskAdapter<K, V, V> {
+         /** Key. */
+         private final K key;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          */
+         public GetTask(String cacheName, boolean async, K key) {
+             super(cacheName, async);
+             this.key = key;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public V call() throws Exception {
+             return cache().get(key);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class RemoveAllTask<K, V> extends CacheTaskAdapter<K, V, Void> {
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          */
+         public RemoveAllTask(String cacheName, boolean async) {
+             super(cacheName, async);
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             IgniteCache<K, V> cache = cache();
+ 
+             cache.removeAll();
+ 
+             if (async)
+                 cache.future().get();
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class PutTask<K, V> extends CacheTaskAdapter<K, V, Void> {
+         /** Key. */
+         private final K key;
+ 
+         /** Value. */
+         private final V val;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param val Value.
+          */
+         public PutTask(String cacheName, boolean async, K key, V val) {
+             super(cacheName, async);
+             this.key = key;
+             this.val = val;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             cache().put(key, val);
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class ContainsKeyTask<K> extends CacheTaskAdapter<K, Object, Boolean> {
+         /** Key. */
+         private final K key;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          */
+         public ContainsKeyTask(String cacheName, boolean async, K key) {
+             super(cacheName, async);
+             this.key = key;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Boolean call() throws Exception {
+             return cache().containsKey(key);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class ClearTask extends CacheTaskAdapter<Object, Object, Void> {
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          */
+         public ClearTask(String cacheName, boolean async) {
+             super(cacheName, async);
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             cache().clear();
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class IteratorTask<K, V> extends CacheTaskAdapter<K, V, Collection<Entry<K, V>>> {
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          */
+         public IteratorTask(String cacheName, boolean async) {
+             super(cacheName, async);
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Collection<Entry<K, V>> call() throws Exception {
+             Collection<Entry<K, V>> res = new ArrayList<>();
+ 
+             for (Entry<K, V> o : cache())
+                 res.add(o);
+ 
+             return res;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class ReplaceTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
+         /** Key. */
+         private final K key;
+ 
+         /** Value. */
+         private final V val;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param val Value.
+          */
+         public ReplaceTask(String cacheName, boolean async, K key, V val) {
+             super(cacheName, async);
+             this.key = key;
+             this.val = val;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Boolean call() throws Exception {
+             return cache().replace(key, val);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class GetNameTask extends CacheTaskAdapter<Void, Void, String> {
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          */
+         public GetNameTask(String cacheName, boolean async) {
+             super(cacheName, async);
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public String call() throws Exception {
+             return cache().getName();
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class RemoveTask<K> extends CacheTaskAdapter<K, Void, Boolean> {
+         /** Key. */
+         private final K key;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          */
+         public RemoveTask(String cacheName, boolean async, K key) {
+             super(cacheName, async);
+             this.key = key;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Boolean call() throws Exception {
+             return cache().remove(key);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class PutAllTask<K, V> extends CacheTaskAdapter<K, V, Void> {
+         /** Map. */
+         private final Map<? extends K, ? extends V> map;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param map Map.
+          */
+         public PutAllTask(String cacheName, boolean async, Map<? extends K, ? extends V> map) {
+             super(cacheName, async);
+             this.map = map;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             cache().putAll(map);
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class RemoveAllKeysTask<K> extends CacheTaskAdapter<K, Void, Void> {
+         /** Keys. */
+         private final Set<? extends K> keys;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param keys Keys.
+          */
+         public RemoveAllKeysTask(String cacheName, boolean async, Set<? extends K> keys) {
+             super(cacheName, async);
+             this.keys = keys;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             cache().removeAll(keys);
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class GetAllTask<K, V> extends CacheTaskAdapter<K, V, Map<K, V>> {
+         /** Keys. */
+         private final Set<? extends K> keys;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param keys Keys.
+          */
+         public GetAllTask(String cacheName, boolean async, Set<? extends K> keys) {
+             super(cacheName, async);
+             this.keys = keys;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Map<K, V> call() throws Exception {
+             return cache().getAll(keys);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class GetAllOutTxTask<K, V> extends CacheTaskAdapter<K, V, Map<K, V>> {
+         /** Keys. */
+         private final Set<? extends K> keys;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param keys Keys.
+          */
+         public GetAllOutTxTask(String cacheName, boolean async, Set<? extends K> keys) {
+             super(cacheName, async);
+             this.keys = keys;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Map<K, V> call() throws Exception {
+             return cache().getAllOutTx(keys);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class ContainsKeysTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
+         /** Keys. */
+         private final Set<? extends K> keys;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param keys Keys.
+          */
+         public ContainsKeysTask(String cacheName, boolean async, Set<? extends K> keys) {
+             super(cacheName, async);
+             this.keys = keys;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Boolean call() throws Exception {
+             return cache().containsKeys(keys);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class GetAndPutTask<K, V> extends CacheTaskAdapter<K, V, V> {
+         /** Key. */
+         private final K key;
+ 
+         /** Value. */
+         private final V val;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param val Value.
+          */
+         public GetAndPutTask(String cacheName, boolean async, K key, V val) {
+             super(cacheName, async);
+             this.key = key;
+             this.val = val;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public V call() throws Exception {
+             return cache().getAndPut(key, val);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class PutIfAbsentTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
+         /** Key. */
+         private final K key;
+ 
+         /** Value. */
+         private final V val;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param val Value.
+          */
+         public PutIfAbsentTask(String cacheName, boolean async, K key, V val) {
+             super(cacheName, async);
+             this.key = key;
+             this.val = val;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Boolean call() throws Exception {
+             return cache().putIfAbsent(key, val);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class RemoveIfExistsTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
+         /** Key. */
+         private final K key;
+ 
+         /** Old value. */
+         private final V oldVal;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param oldVal Old value.
+          */
+         public RemoveIfExistsTask(String cacheName, boolean async, K key, V oldVal) {
+             super(cacheName, async);
+             this.key = key;
+             this.oldVal = oldVal;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Boolean call() throws Exception {
+             return cache().remove(key, oldVal);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class GetAndRemoveTask<K, V> extends CacheTaskAdapter<K, V, V> {
+         /** Key. */
+         private final K key;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          */
+         public GetAndRemoveTask(String cacheName, boolean async, K key) {
+             super(cacheName, async);
+             this.key = key;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public V call() throws Exception {
+             return cache().getAndRemove(key);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class ReplaceIfExistsTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
+         /** Key. */
+         private final K key;
+ 
+         /** Old value. */
+         private final V oldVal;
+ 
+         /** New value. */
+         private final V newVal;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param oldVal Old value.
+          * @param newVal New value.
+          */
+         public ReplaceIfExistsTask(String cacheName, boolean async, K key, V oldVal, V newVal) {
+             super(cacheName, async);
+             this.key = key;
+             this.oldVal = oldVal;
+             this.newVal = newVal;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Boolean call() throws Exception {
+             return cache().replace(key, oldVal, newVal);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class GetAndReplaceTask<K, V> extends CacheTaskAdapter<K, V, V> {
+         /** Key. */
+         private final K key;
+ 
+         /** Value. */
+         private final V val;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param val Value.
+          */
+         public GetAndReplaceTask(String cacheName, boolean async, K key, V val) {
+             super(cacheName, async);
+             this.key = key;
+             this.val = val;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public V call() throws Exception {
+             return cache().getAndReplace(key, val);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class ClearKeyTask<K> extends CacheTaskAdapter<K, Void, Void> {
+         /** Key. */
+         private final K key;
+ 
+         /** Local. */
+         private final boolean loc;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          */
+         public ClearKeyTask(String cacheName, boolean async, boolean loc, K key) {
+             super(cacheName, async);
+             this.key = key;
+             this.loc = loc;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             if (loc)
+                 cache().localClear(key);
+             else
+                 cache().clear(key);
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class ClearAllKeys<K> extends CacheTaskAdapter<K, Void, Void> {
+         /** Keys. */
+         private final Set<? extends K> keys;
+ 
+         /** Local. */
+         private final boolean loc;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param keys Keys.
+          */
+         public ClearAllKeys(String cacheName, boolean async, boolean loc, Set<? extends K> keys) {
+             super(cacheName, async);
+             this.keys = keys;
+             this.loc = loc;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             if (loc)
+                 cache().localClearAll(keys);
+             else
+                 cache().clearAll(keys);
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class InvokeTask<K, V, R> extends CacheTaskAdapter<K, V, R> {
+         /** Key. */
+         private final K key;
+ 
+         /** Processor. */
+         private final EntryProcessor<K, V, R> processor;
+ 
+         /** Args. */
+         private final Object[] args;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param key Key.
+          * @param processor Processor.
+          * @param args Args.
+          */
+         public InvokeTask(String cacheName, boolean async, K key, EntryProcessor<K, V, R> processor,
+             Object[] args) {
+             super(cacheName, async);
+             this.args = args;
+             this.key = key;
+             this.processor = processor;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public R call() throws Exception {
+             return cache().invoke(key, processor, args);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class InvokeAllTask<K, V, T> extends CacheTaskAdapter<K, V, Map<K, EntryProcessorResult<T>>> {
+         /** Keys. */
+         private final Set<? extends K> keys;
+ 
+         /** Processor. */
+         private final EntryProcessor<K, V, T> processor;
+ 
+         /** Args. */
+         private final Object[] args;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param keys Keys.
+          * @param processor Processor.
+          * @param args Args.
+          */
+         public InvokeAllTask(String cacheName, boolean async, Set<? extends K> keys,
+             EntryProcessor<K, V, T> processor, Object[] args) {
+             super(cacheName, async);
+             this.args = args;
+             this.keys = keys;
+             this.processor = processor;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Map<K, EntryProcessorResult<T>> call() throws Exception {
+             return cache().invokeAll(keys, processor, args);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class CloseTask extends CacheTaskAdapter<Void, Void, Void> {
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          */
+         public CloseTask(String cacheName, boolean async) {
+             super(cacheName, async);
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             cache().close();
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class DestroyTask extends CacheTaskAdapter<Void, Void, Void> {
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          */
+         public DestroyTask(String cacheName, boolean async) {
+             super(cacheName, async);
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Void call() {
+             cache().destroy();
+ 
+             return null;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class IsClosedTask extends CacheTaskAdapter<Void, Void, Boolean> {
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          */
+         public IsClosedTask(String cacheName, boolean async) {
+             super(cacheName, async);
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public Boolean call() throws Exception {
+             return cache().isClosed();
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class UnwrapTask<R> extends CacheTaskAdapter<Void, Void, R> {
+         /** Clazz. */
+         private final Class<R> clazz;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          * @param clazz Clazz.
+          */
+         public UnwrapTask(String cacheName, boolean async, Class<R> clazz) {
+             super(cacheName, async);
+             this.clazz = clazz;
+         }
+ 
+         /** {@inheritDoc} */
+         @Override public R call() throws Exception {
+             return cache().unwrap(clazz);
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static abstract class CacheTaskAdapter<K, V, R> implements IgniteCallable<R> {
+         /** Ignite. */
+         @IgniteInstanceResource
+         protected Ignite ignite;
+ 
+         /** Cache name. */
+         protected final String cacheName;
+ 
+         /** Async. */
+         protected final boolean async;
+ 
+         /**
+          * @param cacheName Cache name.
+          * @param async Async.
+          */
+         public CacheTaskAdapter(String cacheName, boolean async) {
+             this.async = async;
+             this.cacheName = cacheName;
+         }
+ 
+         /**
+          * Returns cache instance.
+          */
+         protected IgniteCache<K, V> cache() {
+             IgniteCache<K, V> cache = ignite.cache(cacheName);
+ 
+             return async ? cache.withAsync() : cache;
+         }
+     }
 -}
++
++    /**
++     *
++     */
++    private static class GetConfigurationTask<K, V, C extends Configuration<K, V>> extends CacheTaskAdapter<K, V, C> {
 +        /** Clazz. */
 +        private final Class<C> clazz;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param clazz Clazz.
 +         */
 +        public GetConfigurationTask(String cacheName, boolean async, Class<C> clazz) {
 +            super(cacheName, async);
 +            this.clazz = clazz;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public C call() throws Exception {
 +            return cache().getConfiguration(clazz);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class LocalLoadCacheTask<K, V> extends CacheTaskAdapter<K, V, Void> {
 +        /** Predicate. */
 +        private final IgniteBiPredicate<K, V> p;
 +
 +        /** Args. */
 +        private final Object[] args;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param p P.
 +         * @param args Args.
 +         */
 +        public LocalLoadCacheTask(String cacheName, boolean async, IgniteBiPredicate<K, V> p, Object[] args) {
 +            super(cacheName, async);
 +            this.p = p;
 +            this.args = args;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            cache().localLoadCache(p, args);
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class GetAndPutIfAbsentTask<K, V> extends CacheTaskAdapter<K, V, V> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Value. */
 +        private final V val;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param val Value.
 +         */
 +        public GetAndPutIfAbsentTask(String cacheName, boolean async, K key, V val) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.val = val;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public V call() throws Exception {
 +            return cache().getAndPutIfAbsent(key, val);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class IsLocalLockedTask<K> extends CacheTaskAdapter<K, Void, Boolean> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** By current thread. */
 +        private final boolean byCurrThread;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param byCurrThread By current thread.
 +         */
 +        public IsLocalLockedTask(String cacheName, boolean async, K key, boolean byCurrThread) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.byCurrThread = byCurrThread;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Boolean call() throws Exception {
 +            return cache().isLocalLocked(key, byCurrThread);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class LocalEntriesTask<K, V> extends CacheTaskAdapter<K, V, Iterable<Entry<K, V>>> {
 +        /** Peek modes. */
 +        private final CachePeekMode[] peekModes;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param peekModes Peek modes.
 +         */
 +        public LocalEntriesTask(String cacheName, boolean async, CachePeekMode[] peekModes) {
 +            super(cacheName, async);
 +            this.peekModes = peekModes;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Iterable<Entry<K, V>> call() throws Exception {
 +            Collection<Entry<K, V>> res = new ArrayList<>();
 +
 +            for (Entry<K, V> e : cache().localEntries(peekModes))
 +                res.add(e);
 +
 +            return res;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class LocalEvictTask<K> extends CacheTaskAdapter<K, Void, Void> {
 +        /** Keys. */
 +        private final Collection<? extends K> keys;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param keys Keys.
 +         */
 +        public LocalEvictTask(String cacheName, boolean async, Collection<? extends K> keys) {
 +            super(cacheName, async);
 +            this.keys = keys;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            cache().localEvict(keys);
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class LocalPeekTask<K, V> extends CacheTaskAdapter<K, V, V> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Peek modes. */
 +        private final CachePeekMode[] peekModes;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param peekModes Peek modes.
 +         */
 +        public LocalPeekTask(String cacheName, boolean async, K key, CachePeekMode[] peekModes) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.peekModes = peekModes;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public V call() throws Exception {
 +            return cache().localPeek(key, peekModes);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class SizeTask extends CacheTaskAdapter<Void, Void, Integer> {
 +        /** Peek modes. */
 +        private final CachePeekMode[] peekModes;
 +
 +        /** Local. */
 +        private final boolean loc;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param peekModes Peek modes.
 +         * @param loc Local.
 +         */
 +        public SizeTask(String cacheName, boolean async, CachePeekMode[] peekModes, boolean loc) {
 +            super(cacheName, async);
 +            this.loc = loc;
 +            this.peekModes = peekModes;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Integer call() throws Exception {
 +            return loc ? cache().localSize(peekModes) : cache().size(peekModes);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class GetTask<K, V> extends CacheTaskAdapter<K, V, V> {
 +        /** Key. */
 +        private final K key;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         */
 +        public GetTask(String cacheName, boolean async, K key) {
 +            super(cacheName, async);
 +            this.key = key;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public V call() throws Exception {
 +            return cache().get(key);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class RemoveAllTask<K, V> extends CacheTaskAdapter<K, V, Void> {
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         */
 +        public RemoveAllTask(String cacheName, boolean async) {
 +            super(cacheName, async);
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            IgniteCache<K, V> cache = cache();
 +
 +            cache.removeAll();
 +
 +            if (async)
 +                cache.future().get();
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class PutTask<K, V> extends CacheTaskAdapter<K, V, Void> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Value. */
 +        private final V val;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param val Value.
 +         */
 +        public PutTask(String cacheName, boolean async, K key, V val) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.val = val;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            cache().put(key, val);
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class ContainsKeyTask<K> extends CacheTaskAdapter<K, Object, Boolean> {
 +        /** Key. */
 +        private final K key;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         */
 +        public ContainsKeyTask(String cacheName, boolean async, K key) {
 +            super(cacheName, async);
 +            this.key = key;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Boolean call() throws Exception {
 +            return cache().containsKey(key);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class ClearTask extends CacheTaskAdapter<Object, Object, Void> {
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         */
 +        public ClearTask(String cacheName, boolean async) {
 +            super(cacheName, async);
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            cache().clear();
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class IteratorTask<K, V> extends CacheTaskAdapter<K, V, Collection<Entry<K, V>>> {
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         */
 +        public IteratorTask(String cacheName, boolean async) {
 +            super(cacheName, async);
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Collection<Entry<K, V>> call() throws Exception {
 +            Collection<Entry<K, V>> res = new ArrayList<>();
 +
 +            for (Entry<K, V> o : cache())
 +                res.add(o);
 +
 +            return res;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class ReplaceTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Value. */
 +        private final V val;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param val Value.
 +         */
 +        public ReplaceTask(String cacheName, boolean async, K key, V val) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.val = val;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Boolean call() throws Exception {
 +            return cache().replace(key, val);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class GetNameTask extends CacheTaskAdapter<Void, Void, String> {
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         */
 +        public GetNameTask(String cacheName, boolean async) {
 +            super(cacheName, async);
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public String call() throws Exception {
 +            return cache().getName();
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class RemoveTask<K> extends CacheTaskAdapter<K, Void, Boolean> {
 +        /** Key. */
 +        private final K key;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         */
 +        public RemoveTask(String cacheName, boolean async, K key) {
 +            super(cacheName, async);
 +            this.key = key;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Boolean call() throws Exception {
 +            return cache().remove(key);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class PutAllTask<K, V> extends CacheTaskAdapter<K, V, Void> {
 +        /** Map. */
 +        private final Map<? extends K, ? extends V> map;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param map Map.
 +         */
 +        public PutAllTask(String cacheName, boolean async, Map<? extends K, ? extends V> map) {
 +            super(cacheName, async);
 +            this.map = map;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            cache().putAll(map);
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class RemoveAllKeysTask<K> extends CacheTaskAdapter<K, Void, Void> {
 +        /** Keys. */
 +        private final Set<? extends K> keys;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param keys Keys.
 +         */
 +        public RemoveAllKeysTask(String cacheName, boolean async, Set<? extends K> keys) {
 +            super(cacheName, async);
 +            this.keys = keys;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            cache().removeAll(keys);
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class GetAllTask<K, V> extends CacheTaskAdapter<K, V, Map<K, V>> {
 +        /** Keys. */
 +        private final Set<? extends K> keys;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param keys Keys.
 +         */
 +        public GetAllTask(String cacheName, boolean async, Set<? extends K> keys) {
 +            super(cacheName, async);
 +            this.keys = keys;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Map<K, V> call() throws Exception {
 +            return cache().getAll(keys);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class GetAllOutTxTask<K, V> extends CacheTaskAdapter<K, V, Map<K, V>> {
 +        /** Keys. */
 +        private final Set<? extends K> keys;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param keys Keys.
 +         */
 +        public GetAllOutTxTask(String cacheName, boolean async, Set<? extends K> keys) {
 +            super(cacheName, async);
 +            this.keys = keys;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Map<K, V> call() throws Exception {
 +            return cache().getAllOutTx(keys);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class ContainsKeysTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
 +        /** Keys. */
 +        private final Set<? extends K> keys;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param keys Keys.
 +         */
 +        public ContainsKeysTask(String cacheName, boolean async, Set<? extends K> keys) {
 +            super(cacheName, async);
 +            this.keys = keys;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Boolean call() throws Exception {
 +            return cache().containsKeys(keys);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class GetAndPutTask<K, V> extends CacheTaskAdapter<K, V, V> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Value. */
 +        private final V val;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param val Value.
 +         */
 +        public GetAndPutTask(String cacheName, boolean async, K key, V val) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.val = val;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public V call() throws Exception {
 +            return cache().getAndPut(key, val);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class PutIfAbsentTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Value. */
 +        private final V val;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param val Value.
 +         */
 +        public PutIfAbsentTask(String cacheName, boolean async, K key, V val) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.val = val;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Boolean call() throws Exception {
 +            return cache().putIfAbsent(key, val);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class RemoveIfExistsTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Old value. */
 +        private final V oldVal;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param oldVal Old value.
 +         */
 +        public RemoveIfExistsTask(String cacheName, boolean async, K key, V oldVal) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.oldVal = oldVal;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Boolean call() throws Exception {
 +            return cache().remove(key, oldVal);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class GetAndRemoveTask<K, V> extends CacheTaskAdapter<K, V, V> {
 +        /** Key. */
 +        private final K key;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         */
 +        public GetAndRemoveTask(String cacheName, boolean async, K key) {
 +            super(cacheName, async);
 +            this.key = key;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public V call() throws Exception {
 +            return cache().getAndRemove(key);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class ReplaceIfExistsTask<K, V> extends CacheTaskAdapter<K, V, Boolean> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Old value. */
 +        private final V oldVal;
 +
 +        /** New value. */
 +        private final V newVal;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param oldVal Old value.
 +         * @param newVal New value.
 +         */
 +        public ReplaceIfExistsTask(String cacheName, boolean async, K key, V oldVal, V newVal) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.oldVal = oldVal;
 +            this.newVal = newVal;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Boolean call() throws Exception {
 +            return cache().replace(key, oldVal, newVal);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class GetAndReplaceTask<K, V> extends CacheTaskAdapter<K, V, V> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Value. */
 +        private final V val;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param val Value.
 +         */
 +        public GetAndReplaceTask(String cacheName, boolean async, K key, V val) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.val = val;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public V call() throws Exception {
 +            return cache().getAndReplace(key, val);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class ClearKeyTask<K> extends CacheTaskAdapter<K, Void, Void> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Local. */
 +        private final boolean loc;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         */
 +        public ClearKeyTask(String cacheName, boolean async, boolean loc, K key) {
 +            super(cacheName, async);
 +            this.key = key;
 +            this.loc = loc;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            if (loc)
 +                cache().localClear(key);
 +            else
 +                cache().clear(key);
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class ClearAllKeys<K> extends CacheTaskAdapter<K, Void, Void> {
 +        /** Keys. */
 +        private final Set<? extends K> keys;
 +
 +        /** Local. */
 +        private final boolean loc;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param keys Keys.
 +         */
 +        public ClearAllKeys(String cacheName, boolean async, boolean loc, Set<? extends K> keys) {
 +            super(cacheName, async);
 +            this.keys = keys;
 +            this.loc = loc;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            if (loc)
 +                cache().localClearAll(keys);
 +            else
 +                cache().clearAll(keys);
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class InvokeTask<K, V, R> extends CacheTaskAdapter<K, V, R> {
 +        /** Key. */
 +        private final K key;
 +
 +        /** Processor. */
 +        private final EntryProcessor<K, V, R> processor;
 +
 +        /** Args. */
 +        private final Object[] args;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param key Key.
 +         * @param processor Processor.
 +         * @param args Args.
 +         */
 +        public InvokeTask(String cacheName, boolean async, K key, EntryProcessor<K, V, R> processor,
 +            Object[] args) {
 +            super(cacheName, async);
 +            this.args = args;
 +            this.key = key;
 +            this.processor = processor;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public R call() throws Exception {
 +            return cache().invoke(key, processor, args);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class InvokeAllTask<K, V, T> extends CacheTaskAdapter<K, V, Map<K, EntryProcessorResult<T>>> {
 +        /** Keys. */
 +        private final Set<? extends K> keys;
 +
 +        /** Processor. */
 +        private final EntryProcessor<K, V, T> processor;
 +
 +        /** Args. */
 +        private final Object[] args;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param keys Keys.
 +         * @param processor Processor.
 +         * @param args Args.
 +         */
 +        public InvokeAllTask(String cacheName, boolean async, Set<? extends K> keys,
 +            EntryProcessor<K, V, T> processor, Object[] args) {
 +            super(cacheName, async);
 +            this.args = args;
 +            this.keys = keys;
 +            this.processor = processor;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Map<K, EntryProcessorResult<T>> call() throws Exception {
 +            return cache().invokeAll(keys, processor, args);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class CloseTask extends CacheTaskAdapter<Void, Void, Void> {
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         */
 +        public CloseTask(String cacheName, boolean async) {
 +            super(cacheName, async);
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            cache().close();
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class DestroyTask extends CacheTaskAdapter<Void, Void, Void> {
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         */
 +        public DestroyTask(String cacheName, boolean async) {
 +            super(cacheName, async);
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Void call() {
 +            cache().destroy();
 +
 +            return null;
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class IsClosedTask extends CacheTaskAdapter<Void, Void, Boolean> {
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         */
 +        public IsClosedTask(String cacheName, boolean async) {
 +            super(cacheName, async);
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public Boolean call() throws Exception {
 +            return cache().isClosed();
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static class UnwrapTask<R> extends CacheTaskAdapter<Void, Void, R> {
 +        /** Clazz. */
 +        private final Class<R> clazz;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         * @param clazz Clazz.
 +         */
 +        public UnwrapTask(String cacheName, boolean async, Class<R> clazz) {
 +            super(cacheName, async);
 +            this.clazz = clazz;
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override public R call() throws Exception {
 +            return cache().unwrap(clazz);
 +        }
 +    }
 +
 +    /**
 +     *
 +     */
 +    private static abstract class CacheTaskAdapter<K, V, R> implements IgniteCallable<R> {
 +        /** Ignite. */
 +        @IgniteInstanceResource
 +        protected Ignite ignite;
 +
 +        /** Cache name. */
 +        protected final String cacheName;
 +
 +        /** Async. */
 +        protected final boolean async;
 +
 +        /**
 +         * @param cacheName Cache name.
 +         * @param async Async.
 +         */
 +        public CacheTaskAdapter(String cacheName, boolean async) {
 +            this.async = async;
 +            this.cacheName = cacheName;
 +        }
 +
 +        /**
 +         * Returns cache instance.
 +         */
 +        protected IgniteCache<K, V> cache() {
 +            IgniteCache<K, V> cache = ignite.cache(cacheName);
 +
 +            return async ? cache.withAsync() : cache;
 +        }
 +    }
 +}

http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --cc modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
index 8e653e3,1876e24..7425cb6
--- a/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite.Core/Properties/AssemblyInfo.cs
@@@ -1,4 -1,4 +1,4 @@@
--/*
++/*
   * 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.

http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --cc modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
index 7cf47c3,03f7fb9..198cfa6
--- a/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/main/dotnet/Apache.Ignite/Properties/AssemblyInfo.cs
@@@ -1,4 -1,4 +1,4 @@@
--/*
++/*
   * 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.

http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --cc modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs
index ba4b794,22d74c9..a45f421
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests.TestDll/Properties/AssemblyInfo.cs
@@@ -1,4 -1,4 +1,4 @@@
--/*
++/*
   * 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.

http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee154c8/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --cc modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs
index f474b03,1ebcf24..db88e3b
--- a/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs
+++ b/modules/platform/src/test/dotnet/Apache.Ignite.Core.Tests/Properties/AssemblyInfo.cs
@@@ -1,4 -1,4 +1,4 @@@
--/*
++/*
   * 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.