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

[05/28] ignite git commit: IGNITE-4988 Rework Visor task arguments. Code cleanup for ignite-2.0.

IGNITE-4988 Rework Visor task arguments. Code cleanup for ignite-2.0.


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

Branch: refs/heads/ignite-5075-cacheStart
Commit: 6a435b17e23239d58c3410d405b61147ee152dd9
Parents: f4d233c
Author: Vasiliy Sisko <vs...@gridgain.com>
Authored: Thu Apr 27 11:02:42 2017 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Apr 27 11:02:43 2017 +0700

----------------------------------------------------------------------
 .../JettyRestProcessorAbstractSelfTest.java     | 124 +++++++++--
 .../configuration/DataPageEvictionMode.java     |  17 +-
 .../visor/binary/VisorBinaryMetadata.java       |   8 +-
 .../VisorBinaryMetadataCollectorTask.java       |  16 +-
 .../VisorBinaryMetadataCollectorTaskArg.java    |  71 +++++++
 .../VisorBinaryMetadataCollectorTaskResult.java |   4 +-
 .../cache/VisorCacheAffinityConfiguration.java  |   8 +-
 .../visor/cache/VisorCacheClearTask.java        |  19 +-
 .../visor/cache/VisorCacheClearTaskArg.java     |  72 +++++++
 .../visor/cache/VisorCacheConfiguration.java    | 149 +++++++++++++
 .../VisorCacheConfigurationCollectorJob.java    |  12 +-
 .../VisorCacheConfigurationCollectorTask.java   |   5 +-
 ...VisorCacheConfigurationCollectorTaskArg.java |  74 +++++++
 .../visor/cache/VisorCacheLoadTask.java         |   5 +-
 .../visor/cache/VisorCacheLoadTaskArg.java      |   2 +-
 .../visor/cache/VisorCacheMetadataTask.java     |  14 +-
 .../visor/cache/VisorCacheMetadataTaskArg.java  |  72 +++++++
 .../visor/cache/VisorCacheNodesTask.java        |  12 +-
 .../visor/cache/VisorCacheNodesTaskArg.java     |  72 +++++++
 .../cache/VisorCacheRebalanceConfiguration.java |  26 +++
 .../visor/cache/VisorCacheRebalanceTask.java    |  13 +-
 .../visor/cache/VisorCacheRebalanceTaskArg.java |  73 +++++++
 .../visor/cache/VisorCacheResetMetricsTask.java |  14 +-
 .../cache/VisorCacheResetMetricsTaskArg.java    |  72 +++++++
 .../visor/cache/VisorCacheStartArg.java         | 100 ---------
 .../visor/cache/VisorCacheStopTask.java         |  17 +-
 .../visor/cache/VisorCacheStopTaskArg.java      |  72 +++++++
 .../cache/VisorCacheStoreConfiguration.java     |  14 ++
 .../internal/visor/cache/VisorPartitionMap.java |  24 ++-
 .../compute/VisorComputeCancelSessionsTask.java |  13 +-
 .../VisorComputeCancelSessionsTaskArg.java      |  76 +++++++
 .../visor/compute/VisorGatewayTask.java         |  87 ++++++--
 .../internal/visor/debug/VisorThreadInfo.java   |  64 +++---
 .../visor/debug/VisorThreadMonitorInfo.java     |   8 +-
 .../internal/visor/file/VisorFileBlockArg.java  | 114 ----------
 .../visor/igfs/VisorIgfsFormatTask.java         |  14 +-
 .../visor/igfs/VisorIgfsFormatTaskArg.java      |  72 +++++++
 .../visor/igfs/VisorIgfsProfilerClearTask.java  |  24 +--
 .../igfs/VisorIgfsProfilerClearTaskArg.java     |  72 +++++++
 .../igfs/VisorIgfsProfilerClearTaskResult.java  |   6 +-
 .../visor/igfs/VisorIgfsProfilerTask.java       |  18 +-
 .../visor/igfs/VisorIgfsProfilerTaskArg.java    |  72 +++++++
 .../visor/igfs/VisorIgfsResetMetricsTask.java   |  13 +-
 .../igfs/VisorIgfsResetMetricsTaskArg.java      |  73 +++++++
 .../internal/visor/log/VisorLogSearchArg.java   | 114 ----------
 .../internal/visor/misc/VisorAckTask.java       |  14 +-
 .../internal/visor/misc/VisorAckTaskArg.java    |  72 +++++++
 .../misc/VisorChangeGridActiveStateTask.java    |  12 +-
 .../misc/VisorChangeGridActiveStateTaskArg.java |  71 +++++++
 .../visor/node/VisorBasicConfiguration.java     | 211 +++++++++++++++++--
 .../visor/node/VisorBinaryConfiguration.java    | 131 ++++++++++++
 .../node/VisorBinaryTypeConfiguration.java      | 150 +++++++++++++
 .../visor/node/VisorCacheKeyConfiguration.java  | 108 ++++++++++
 .../visor/node/VisorExecutorConfiguration.java  | 108 ++++++++++
 .../node/VisorExecutorServiceConfiguration.java | 115 ++++++++++
 .../visor/node/VisorGridConfiguration.java      | 110 ++++++++++
 .../visor/node/VisorHadoopConfiguration.java    | 145 +++++++++++++
 .../visor/node/VisorIgfsConfiguration.java      |  42 +++-
 .../node/VisorMemoryPolicyConfiguration.java    |  41 ++++
 .../internal/visor/node/VisorNodePingTask.java  |  13 +-
 .../visor/node/VisorNodePingTaskArg.java        |  73 +++++++
 .../visor/node/VisorNodeSuppressedErrors.java   |   6 +-
 .../node/VisorNodeSuppressedErrorsTask.java     |  12 +-
 .../node/VisorNodeSuppressedErrorsTaskArg.java  |  74 +++++++
 .../visor/node/VisorOdbcConfiguration.java      | 114 ++++++++++
 .../visor/node/VisorRestConfiguration.java      | 207 +++++++++++++++++-
 .../node/VisorSegmentationConfiguration.java    |  13 ++
 .../visor/node/VisorServiceConfiguration.java   | 176 ++++++++++++++++
 .../internal/visor/query/VisorQueryArg.java     | 155 --------------
 .../visor/query/VisorQueryCancelTask.java       |  12 +-
 .../visor/query/VisorQueryCancelTaskArg.java    |  71 +++++++
 .../visor/query/VisorQueryCleanupTask.java      |  10 +-
 .../visor/query/VisorQueryCleanupTaskArg.java   |  75 +++++++
 .../VisorQueryDetailMetricsCollectorTask.java   |  17 +-
 ...VisorQueryDetailMetricsCollectorTaskArg.java |  71 +++++++
 .../query/VisorQueryResetDetailMetricsTask.java |   6 +-
 .../visor/query/VisorQueryResetMetricsTask.java |  18 +-
 .../query/VisorQueryResetMetricsTaskArg.java    |  72 +++++++
 .../query/VisorRunningQueriesCollectorTask.java |  16 +-
 .../VisorRunningQueriesCollectorTaskArg.java    |  71 +++++++
 .../internal/visor/query/VisorScanQueryArg.java | 157 --------------
 .../visor/service/VisorCancelServiceTask.java   |  12 +-
 .../service/VisorCancelServiceTaskArg.java      |  72 +++++++
 .../internal/visor/util/VisorTaskUtils.java     |  23 ++
 .../resources/META-INF/classnames.properties    |  39 +++-
 ...ryConfigurationCustomSerializerSelfTest.java |   4 +-
 .../GridInternalTasksLoadBalancingSelfTest.java |   7 +-
 .../visor/commands/ack/VisorAckCommand.scala    |   5 +-
 .../commands/cache/VisorCacheClearCommand.scala |   5 +-
 .../commands/cache/VisorCacheResetCommand.scala |   4 +-
 .../commands/cache/VisorCacheStopCommand.scala  |   4 +-
 .../config/VisorConfigurationCommand.scala      |   2 +-
 .../scala/org/apache/ignite/visor/visor.scala   |   5 +-
 .../web-console/backend/app/browsersHandler.js  |   3 +-
 modules/web-console/backend/app/mongo.js        |   4 +-
 .../app/modules/agent/AgentManager.service.js   |   3 +-
 .../generator/ConfigurationGenerator.js         |   7 +-
 .../generator/PlatformGenerator.js              |   5 +-
 .../generator/defaults/Cluster.service.js       |   4 +-
 .../frontend/app/modules/sql/sql.controller.js  |   2 +-
 .../states/configuration/clusters/discovery.pug |   8 +-
 101 files changed, 4043 insertions(+), 965 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
index 9a59338..130d9d1 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
@@ -59,21 +59,29 @@ import org.apache.ignite.internal.util.typedef.T2;
 import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.internal.visor.cache.VisorCacheClearTask;
+import org.apache.ignite.internal.visor.cache.VisorCacheClearTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCacheConfigurationCollectorTask;
+import org.apache.ignite.internal.visor.cache.VisorCacheConfigurationCollectorTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCacheLoadTask;
 import org.apache.ignite.internal.visor.cache.VisorCacheLoadTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCacheMetadataTask;
+import org.apache.ignite.internal.visor.cache.VisorCacheMetadataTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCacheMetricsCollectorTask;
 import org.apache.ignite.internal.visor.cache.VisorCacheMetricsCollectorTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCacheNodesTask;
+import org.apache.ignite.internal.visor.cache.VisorCacheNodesTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCachePartitionsTask;
 import org.apache.ignite.internal.visor.cache.VisorCachePartitionsTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCacheRebalanceTask;
+import org.apache.ignite.internal.visor.cache.VisorCacheRebalanceTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCacheResetMetricsTask;
+import org.apache.ignite.internal.visor.cache.VisorCacheResetMetricsTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCacheStartTaskArg;
 import org.apache.ignite.internal.visor.cache.VisorCacheStartTask;
 import org.apache.ignite.internal.visor.cache.VisorCacheStopTask;
+import org.apache.ignite.internal.visor.cache.VisorCacheStopTaskArg;
 import org.apache.ignite.internal.visor.compute.VisorComputeCancelSessionsTask;
+import org.apache.ignite.internal.visor.compute.VisorComputeCancelSessionsTaskArg;
 import org.apache.ignite.internal.visor.compute.VisorComputeResetMetricsTask;
 import org.apache.ignite.internal.visor.compute.VisorComputeToggleMonitoringTask;
 import org.apache.ignite.internal.visor.compute.VisorComputeToggleMonitoringTaskArg;
@@ -84,14 +92,21 @@ import org.apache.ignite.internal.visor.file.VisorFileBlockTask;
 import org.apache.ignite.internal.visor.file.VisorLatestTextFilesTask;
 import org.apache.ignite.internal.visor.file.VisorLatestTextFilesTaskArg;
 import org.apache.ignite.internal.visor.igfs.VisorIgfsFormatTask;
+import org.apache.ignite.internal.visor.igfs.VisorIgfsFormatTaskArg;
 import org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerClearTask;
+import org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerClearTaskArg;
 import org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerTask;
+import org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerTaskArg;
 import org.apache.ignite.internal.visor.igfs.VisorIgfsResetMetricsTask;
+import org.apache.ignite.internal.visor.igfs.VisorIgfsResetMetricsTaskArg;
 import org.apache.ignite.internal.visor.igfs.VisorIgfsSamplingStateTask;
 import org.apache.ignite.internal.visor.igfs.VisorIgfsSamplingStateTaskArg;
 import org.apache.ignite.internal.visor.log.VisorLogSearchTaskArg;
 import org.apache.ignite.internal.visor.log.VisorLogSearchTask;
 import org.apache.ignite.internal.visor.misc.VisorAckTask;
+import org.apache.ignite.internal.visor.misc.VisorAckTaskArg;
+import org.apache.ignite.internal.visor.misc.VisorChangeGridActiveStateTask;
+import org.apache.ignite.internal.visor.misc.VisorChangeGridActiveStateTaskArg;
 import org.apache.ignite.internal.visor.misc.VisorLatestVersionTask;
 import org.apache.ignite.internal.visor.misc.VisorResolveHostNameTask;
 import org.apache.ignite.internal.visor.node.VisorNodeConfigurationCollectorTask;
@@ -101,12 +116,23 @@ import org.apache.ignite.internal.visor.node.VisorNodeEventsCollectorTask;
 import org.apache.ignite.internal.visor.node.VisorNodeEventsCollectorTaskArg;
 import org.apache.ignite.internal.visor.node.VisorNodeGcTask;
 import org.apache.ignite.internal.visor.node.VisorNodePingTask;
+import org.apache.ignite.internal.visor.node.VisorNodePingTaskArg;
 import org.apache.ignite.internal.visor.node.VisorNodeSuppressedErrorsTask;
+import org.apache.ignite.internal.visor.node.VisorNodeSuppressedErrorsTaskArg;
+import org.apache.ignite.internal.visor.query.VisorQueryCancelTask;
+import org.apache.ignite.internal.visor.query.VisorQueryCancelTaskArg;
+import org.apache.ignite.internal.visor.query.VisorQueryCleanupTaskArg;
+import org.apache.ignite.internal.visor.query.VisorQueryDetailMetricsCollectorTask;
+import org.apache.ignite.internal.visor.query.VisorQueryDetailMetricsCollectorTaskArg;
+import org.apache.ignite.internal.visor.query.VisorQueryResetMetricsTask;
+import org.apache.ignite.internal.visor.query.VisorQueryResetMetricsTaskArg;
 import org.apache.ignite.internal.visor.query.VisorQueryTaskArg;
 import org.apache.ignite.internal.visor.query.VisorQueryCleanupTask;
 import org.apache.ignite.internal.visor.query.VisorQueryNextPageTask;
 import org.apache.ignite.internal.visor.query.VisorQueryNextPageTaskArg;
 import org.apache.ignite.internal.visor.query.VisorQueryTask;
+import org.apache.ignite.internal.visor.query.VisorRunningQueriesCollectorTask;
+import org.apache.ignite.internal.visor.query.VisorRunningQueriesCollectorTaskArg;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.lang.IgnitePredicate;
 import org.apache.ignite.lang.IgniteUuid;
@@ -1276,6 +1302,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         String ret = content(new VisorGatewayArgument(VisorCacheConfigurationCollectorTask.class)
             .forNode(locNode)
+            .argument(VisorCacheConfigurationCollectorTaskArg.class)
             .collection(IgniteUuid.class, cid));
 
         info("VisorCacheConfigurationCollectorTask result: " + ret);
@@ -1284,7 +1311,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorCacheNodesTask.class)
             .forNode(locNode)
-            .argument("person"));
+            .argument(VisorCacheNodesTaskArg.class, "person"));
 
         info("VisorCacheNodesTask result: " + ret);
 
@@ -1300,7 +1327,9 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorCacheLoadTask.class)
             .forNode(locNode)
-            .argument(VisorCacheLoadTaskArg.class, "person", 0, "null"));
+            .argument(VisorCacheLoadTaskArg.class)
+            .set(String.class, "person")
+            .arguments(0, "null"));
 
         info("VisorCacheLoadTask result: " + ret);
 
@@ -1308,6 +1337,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorCacheRebalanceTask.class)
             .forNode(locNode)
+            .argument(VisorCacheRebalanceTaskArg.class)
             .set(String.class, "person"));
 
         info("VisorCacheRebalanceTask result: " + ret);
@@ -1316,7 +1346,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorCacheMetadataTask.class)
             .forNode(locNode)
-            .argument("person"));
+            .argument(VisorCacheMetadataTaskArg.class, "person"));
 
         info("VisorCacheMetadataTask result: " + ret);
 
@@ -1324,7 +1354,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorCacheResetMetricsTask.class)
             .forNode(locNode)
-            .argument("person"));
+            .argument(VisorCacheResetMetricsTaskArg.class, "person"));
 
         info("VisorCacheResetMetricsTask result: " + ret);
 
@@ -1340,7 +1370,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorIgfsProfilerClearTask.class)
             .forNode(locNode)
-            .argument("igfs"));
+            .argument(VisorIgfsProfilerClearTaskArg.class, "igfs"));
 
         info("VisorIgfsProfilerClearTask result: " + ret);
 
@@ -1348,7 +1378,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorIgfsProfilerTask.class)
             .forNode(locNode)
-            .argument("igfs"));
+            .argument(VisorIgfsProfilerTaskArg.class, "igfs"));
 
         info("VisorIgfsProfilerTask result: " + ret);
 
@@ -1356,7 +1386,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorIgfsFormatTask.class)
             .forNode(locNode)
-            .argument("igfs"));
+            .argument(VisorIgfsFormatTaskArg.class, "igfs"));
 
         info("VisorIgfsFormatTask result: " + ret);
 
@@ -1364,6 +1394,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorIgfsResetMetricsTask.class)
             .forNode(locNode)
+            .argument(VisorIgfsResetMetricsTaskArg.class)
             .set(String.class, "igfs"));
 
         info("VisorIgfsResetMetricsTask result: " + ret);
@@ -1402,7 +1433,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorNodePingTask.class)
             .forNode(locNode)
-            .argument(UUID.class, locNode.id()));
+            .argument(VisorNodePingTaskArg.class, locNode.id()));
 
         info("VisorNodePingTask result: " + ret);
 
@@ -1442,6 +1473,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
         jsonTaskResult(ret);
 
         ret = content(new VisorGatewayArgument(VisorQueryCleanupTask.class)
+            .argument(VisorQueryCleanupTaskArg.class)
             .map(UUID.class, Set.class, F.asMap(locNode.id(), qryId)));
 
         info("VisorQueryCleanupTask result: " + ret);
@@ -1455,9 +1487,38 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         jsonTaskResult(ret);
 
+        ret = content(new VisorGatewayArgument(VisorQueryCancelTask.class)
+            .argument(VisorQueryCancelTaskArg.class, 0L));
+
+        info("VisorResolveHostNameTask result: " + ret);
+
+        jsonTaskResult(ret);
+
+        ret = content(new VisorGatewayArgument(VisorQueryResetMetricsTask.class)
+            .argument(VisorQueryResetMetricsTaskArg.class, "person"));
+
+        info("VisorResolveHostNameTask result: " + ret);
+
+        jsonTaskResult(ret);
+
+        ret = content(new VisorGatewayArgument(VisorQueryCancelTask.class)
+            .argument(VisorQueryCancelTaskArg.class, 0L));
+
+        info("VisorResolveHostNameTask result: " + ret);
+
+        jsonTaskResult(ret);
+
+        ret = content(new VisorGatewayArgument(VisorQueryResetMetricsTask.class)
+            .argument(VisorQueryResetMetricsTaskArg.class, "person"));
+
+        info("VisorResolveHostNameTask result: " + ret);
+
+        jsonTaskResult(ret);
+
         // Multinode tasks
 
         ret = content(new VisorGatewayArgument(VisorComputeCancelSessionsTask.class)
+            .argument(VisorComputeCancelSessionsTaskArg.class)
             .map(UUID.class, Set.class, new HashMap()));
 
         info("VisorComputeCancelSessionsTask result: " + ret);
@@ -1465,13 +1526,15 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
         jsonTaskResult(ret);
 
         ret = content(new VisorGatewayArgument(VisorCacheMetricsCollectorTask.class)
-            .argument(VisorCacheMetricsCollectorTaskArg.class, false, "person"));
+            .argument(VisorCacheMetricsCollectorTaskArg.class, false)
+            .collection(String.class, "person"));
 
         info("VisorCacheMetricsCollectorTask result: " + ret);
 
         ret = content(new VisorGatewayArgument(VisorCacheMetricsCollectorTask.class)
             .forNodes(grid(1).cluster().nodes())
-            .argument(VisorCacheMetricsCollectorTaskArg.class, false, "person"));
+            .argument(VisorCacheMetricsCollectorTaskArg.class, false)
+            .collection(String.class, "person"));
 
         info("VisorCacheMetricsCollectorTask (with nodes) result: " + ret);
 
@@ -1491,7 +1554,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
         jsonTaskResult(ret);
 
         ret = content(new VisorGatewayArgument(VisorAckTask.class)
-            .argument("MSG"));
+            .argument(VisorAckTaskArg.class, "MSG"));
 
         info("VisorAckTask result: " + ret);
 
@@ -1521,6 +1584,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
         jsonTaskResult(ret);
 
         ret = content(new VisorGatewayArgument(VisorNodeSuppressedErrorsTask.class)
+            .argument(VisorNodeSuppressedErrorsTaskArg.class)
             .map(UUID.class, Long.class, new HashMap()));
 
         info("VisorNodeSuppressedErrorsTask result: " + ret);
@@ -1529,7 +1593,7 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorCacheClearTask.class)
             .forNode(locNode)
-            .argument("person"));
+            .argument(VisorCacheClearTaskArg.class, "person"));
 
         info("VisorCacheClearTask result: " + ret);
 
@@ -1557,11 +1621,32 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
 
         ret = content(new VisorGatewayArgument(VisorCacheStopTask.class)
             .forNode(locNode)
-            .argument(String.class, "c"));
+            .argument(VisorCacheStopTaskArg.class, "c"));
 
         info("VisorCacheStopTask result: " + ret);
 
         jsonTaskResult(ret);
+
+        ret = content(new VisorGatewayArgument(VisorQueryDetailMetricsCollectorTask.class)
+            .argument(VisorQueryDetailMetricsCollectorTaskArg.class, 0));
+
+        info("VisorQueryDetailMetricsCollectorTask result: " + ret);
+
+        jsonTaskResult(ret);
+
+        ret = content(new VisorGatewayArgument(VisorRunningQueriesCollectorTask.class)
+            .argument(VisorRunningQueriesCollectorTaskArg.class, 0L));
+
+        info("VisorQueryDetailMetricsCollectorTask result: " + ret);
+
+        jsonTaskResult(ret);
+
+        ret = content(new VisorGatewayArgument(VisorChangeGridActiveStateTask.class)
+            .argument(VisorChangeGridActiveStateTaskArg.class, true));
+
+        info("VisorQueryDetailMetricsCollectorTask result: " + ret);
+
+        jsonTaskResult(ret);
     }
 
     /**
@@ -2125,6 +2210,19 @@ public abstract class JettyRestProcessorAbstractSelfTest extends AbstractRestPro
         }
 
         /**
+         * Add custom argument.
+         *
+         * @param vals Values.
+         * @return This helper for chaining method calls.
+         */
+        public VisorGatewayArgument arguments(Object... vals) {
+            for (Object val: vals)
+                put("p" + idx++, String.valueOf(val));
+
+            return this;
+        }
+
+        /**
          * Add string argument.
          *
          * @param val Value.

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/configuration/DataPageEvictionMode.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/DataPageEvictionMode.java b/modules/core/src/main/java/org/apache/ignite/configuration/DataPageEvictionMode.java
index 0d1b5b9..1aec15a 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/DataPageEvictionMode.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/DataPageEvictionMode.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.configuration;
 
+import org.jetbrains.annotations.Nullable;
+
 /**
  * Defines memory page eviction algorithm. A mode is set for a specific
  * {@link MemoryPolicyConfiguration}. Only data pages, that store key-value entries, are eligible for eviction. The
@@ -49,5 +51,18 @@ public enum DataPageEvictionMode {
      * minimums of other pages that might be evicted. LRU-2 outperforms LRU by resolving "one-hit wonder" problem -
      * if a data page is accessed rarely, but accidentally accessed once, it's protected from eviction for a long time.
      */
-    RANDOM_2_LRU
+    RANDOM_2_LRU;
+
+    /** Enumerated values. */
+    private static final DataPageEvictionMode[] VALS = values();
+
+    /**
+     * Efficiently gets enumerated value from its ordinal.
+     *
+     * @param ord Ordinal value.
+     * @return Enumerated value or {@code null} if ordinal out of range.
+     */
+    @Nullable public static DataPageEvictionMode fromOrdinal(int ord) {
+        return ord >= 0 && ord < VALS.length ? VALS[ord] : null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java
index 285bff9..6f7e625 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java
@@ -41,7 +41,7 @@ public class VisorBinaryMetadata extends VisorDataTransferObject {
     private String typeName;
 
     /** Type Id */
-    private Integer typeId;
+    private int typeId;
 
     /** Affinity key field name. */
     private String affinityKeyFieldName;
@@ -97,7 +97,7 @@ public class VisorBinaryMetadata extends VisorDataTransferObject {
     /**
      * @return Type Id.
      */
-    public Integer getTypeId() {
+    public int getTypeId() {
         return typeId;
     }
 
@@ -118,7 +118,7 @@ public class VisorBinaryMetadata extends VisorDataTransferObject {
     /** {@inheritDoc} */
     @Override protected void writeExternalData(ObjectOutput out) throws IOException {
         U.writeString(out, typeName);
-        out.writeObject(typeId);
+        out.writeInt(typeId);
         U.writeString(out, affinityKeyFieldName);
         U.writeCollection(out, fields);
     }
@@ -126,7 +126,7 @@ public class VisorBinaryMetadata extends VisorDataTransferObject {
     /** {@inheritDoc} */
     @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
         typeName = U.readString(in);
-        typeId = (Integer)in.readObject();
+        typeId = in.readInt();
         affinityKeyFieldName = U.readString(in);
         fields = U.readList(in);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java
index de67805..bf072e2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTask.java
@@ -29,32 +29,34 @@ import org.apache.ignite.marshaller.Marshaller;
  * Task that collects binary metadata.
  */
 @GridInternal
-public class VisorBinaryMetadataCollectorTask extends VisorOneNodeTask<Long, VisorBinaryMetadataCollectorTaskResult> {
+public class VisorBinaryMetadataCollectorTask
+    extends VisorOneNodeTask<VisorBinaryMetadataCollectorTaskArg, VisorBinaryMetadataCollectorTaskResult> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorBinaryCollectMetadataJob job(Long lastUpdate) {
+    @Override protected VisorBinaryCollectMetadataJob job(VisorBinaryMetadataCollectorTaskArg lastUpdate) {
         return new VisorBinaryCollectMetadataJob(lastUpdate, debug);
     }
 
     /** Job that collect portables metadata on node. */
-    private static class VisorBinaryCollectMetadataJob extends VisorJob<Long, VisorBinaryMetadataCollectorTaskResult> {
+    private static class VisorBinaryCollectMetadataJob
+        extends VisorJob<VisorBinaryMetadataCollectorTaskArg, VisorBinaryMetadataCollectorTaskResult> {
         /** */
         private static final long serialVersionUID = 0L;
 
         /**
          * Create job with given argument.
          *
-         * @param lastUpdate Time data was collected last time.
+         * @param arg Task argument.
          * @param debug Debug flag.
          */
-        private VisorBinaryCollectMetadataJob(Long lastUpdate, boolean debug) {
-            super(lastUpdate, debug);
+        private VisorBinaryCollectMetadataJob(VisorBinaryMetadataCollectorTaskArg arg, boolean debug) {
+            super(arg, debug);
         }
 
         /** {@inheritDoc} */
-        @Override protected VisorBinaryMetadataCollectorTaskResult run(Long lastUpdate) {
+        @Override protected VisorBinaryMetadataCollectorTaskResult run(VisorBinaryMetadataCollectorTaskArg arg) {
             Marshaller marsh =  ignite.configuration().getMarshaller();
 
             IgniteBinary binary = marsh == null || marsh instanceof BinaryMarshaller ? ignite.binary() : null;

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskArg.java
new file mode 100644
index 0000000..84ff96a
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskArg.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.visor.binary;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
+
+/**
+ * Arguments for {@link VisorBinaryMetadataCollectorTask}.
+ */
+public class VisorBinaryMetadataCollectorTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Time data was collected last time. */
+    private long lastUpdate;
+
+    /**
+     * Default constructor.
+     */
+    public VisorBinaryMetadataCollectorTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param lastUpdate Time data was collected last time.
+     */
+    public VisorBinaryMetadataCollectorTaskArg(long lastUpdate) {
+        this.lastUpdate = lastUpdate;
+    }
+
+    /**
+     * @return Time data was collected last time.
+     */
+    public long getMessage() {
+        return lastUpdate;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        out.writeLong(lastUpdate);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        lastUpdate = in.readLong();
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorBinaryMetadataCollectorTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskResult.java
index e96b7ef..b31897c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskResult.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadataCollectorTaskResult.java
@@ -33,7 +33,7 @@ public class VisorBinaryMetadataCollectorTaskResult extends VisorDataTransferObj
     private static final long serialVersionUID = 0L;
 
     /** Last binary metadata update date. */
-    private Long lastUpdate;
+    private long lastUpdate;
 
     /** Remote data center IDs for which full state transfer was requested. */
     private List<VisorBinaryMetadata> binary;
@@ -57,7 +57,7 @@ public class VisorBinaryMetadataCollectorTaskResult extends VisorDataTransferObj
     /**
      * @return Last binary metadata update date.
      */
-    public Long getLastUpdate() {
+    public long getLastUpdate() {
         return lastUpdate;
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java
index d8616d3..eb4eb35 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAffinityConfiguration.java
@@ -49,7 +49,7 @@ public class VisorCacheAffinityConfiguration extends VisorDataTransferObject {
     private int partitionedBackups;
 
     /** Total partition count. */
-    private Integer partitions;
+    private int partitions;
 
     /** Cache partitioned affinity exclude neighbors. */
     private Boolean exclNeighbors;
@@ -110,7 +110,7 @@ public class VisorCacheAffinityConfiguration extends VisorDataTransferObject {
     /**
      * @return Total partition count.
      */
-    public Integer getPartitions() {
+    public int getPartitions() {
         return partitions;
     }
 
@@ -126,7 +126,7 @@ public class VisorCacheAffinityConfiguration extends VisorDataTransferObject {
         U.writeString(out, function);
         U.writeString(out, mapper);
         out.writeInt(partitionedBackups);
-        out.writeObject(partitions);
+        out.writeInt(partitions);
         out.writeObject(exclNeighbors);
     }
 
@@ -135,7 +135,7 @@ public class VisorCacheAffinityConfiguration extends VisorDataTransferObject {
         function = U.readString(in);
         mapper = U.readString(in);
         partitionedBackups = in.readInt();
-        partitions = (Integer)in.readObject();
+        partitions = in.readInt();
         exclNeighbors = (Boolean)in.readObject();
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
index 6d14939..bdfc9eb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
@@ -32,19 +32,19 @@ import org.apache.ignite.resources.JobContextResource;
  * Task that clears specified caches on specified node.
  */
 @GridInternal
-public class VisorCacheClearTask extends VisorOneNodeTask<String, VisorCacheClearTaskResult> {
+public class VisorCacheClearTask extends VisorOneNodeTask<VisorCacheClearTaskArg, VisorCacheClearTaskResult> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorCacheClearJob job(String arg) {
+    @Override protected VisorCacheClearJob job(VisorCacheClearTaskArg arg) {
         return new VisorCacheClearJob(arg, debug);
     }
 
     /**
      * Job that clear specified caches.
      */
-    private static class VisorCacheClearJob extends VisorJob<String, VisorCacheClearTaskResult> {
+    private static class VisorCacheClearJob extends VisorJob<VisorCacheClearTaskArg, VisorCacheClearTaskResult> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -61,11 +61,11 @@ public class VisorCacheClearTask extends VisorOneNodeTask<String, VisorCacheClea
         /**
          * Create job.
          *
-         * @param cacheName Cache name to clear.
+         * @param arg Task argument.
          * @param debug Debug flag.
          */
-        private VisorCacheClearJob(String cacheName, boolean debug) {
-            super(cacheName, debug);
+        private VisorCacheClearJob(VisorCacheClearTaskArg arg, boolean debug) {
+            super(arg, debug);
 
             lsnr = new IgniteInClosure<IgniteFuture>() {
                 /** */
@@ -97,13 +97,18 @@ public class VisorCacheClearTask extends VisorOneNodeTask<String, VisorCacheClea
         }
 
         /** {@inheritDoc} */
-        @Override protected VisorCacheClearTaskResult run(final String cacheName) {
+        @Override protected VisorCacheClearTaskResult run(final VisorCacheClearTaskArg arg) {
             if (futs == null)
                 futs = new IgniteFuture[3];
 
             if (futs[0] == null || futs[1] == null || futs[2] == null) {
+                String cacheName = arg.getCacheName();
+
                 IgniteCache cache = ignite.cache(cacheName);
 
+                if (cache == null)
+                    throw new IllegalStateException("Failed to find cache for name: " + cacheName);
+
                 if (futs[0] == null) {
                     futs[0] = cache.sizeLongAsync(CachePeekMode.PRIMARY);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTaskArg.java
new file mode 100644
index 0000000..ade2e12
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTaskArg.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.visor.cache;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
+
+/**
+ * Argument for {@link VisorCacheClearTask}.
+ */
+public class VisorCacheClearTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Cache name. */
+    private String cacheName;
+
+    /**
+     * Default constructor.
+     */
+    public VisorCacheClearTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param cacheName Cache name.
+     */
+    public VisorCacheClearTaskArg(String cacheName) {
+        this.cacheName = cacheName;
+    }
+
+    /**
+     * @return Cache name.
+     */
+    public String getCacheName() {
+        return cacheName;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeString(out, cacheName);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        cacheName = U.readString(in);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorCacheClearTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
index 5b5d3a8..c1b56c1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
@@ -26,6 +26,7 @@ import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.CacheWriteSynchronizationMode;
 import org.apache.ignite.cache.PartitionLossPolicy;
 import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.MemoryPolicyConfiguration;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -35,6 +36,7 @@ import org.apache.ignite.internal.visor.query.VisorQueryEntity;
 import org.jetbrains.annotations.Nullable;
 
 import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactClass;
+import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactIterable;
 
 /**
  * Data transfer object for cache configuration properties.
@@ -127,6 +129,39 @@ public class VisorCacheConfiguration extends VisorDataTransferObject {
     /** Query parallelism. */
     private int qryParallelism;
 
+    /** Copy on read flag. */
+    private boolean cpOnRead;
+
+    /** Eviction filter. */
+    private String evictFilter;
+
+    /** Listener configurations. */
+    private String lsnrConfigurations;
+
+    /** */
+    private boolean loadPrevVal;
+
+    /** Name of {@link MemoryPolicyConfiguration} for this cache */
+    private String memPlcName;
+
+    /** Maximum inline size for sql indexes. */
+    private int sqlIdxMaxInlineSize;
+
+    /** Node filter specifying nodes on which this cache should be deployed. */
+    private String nodeFilter;
+
+    /** */
+    private int qryDetailMetricsSz;
+
+    /** Flag indicating whether data can be read from backup. */
+    private boolean readFromBackup;
+
+    /** Name of class implementing GridCacheTmLookup. */
+    private String tmLookupClsName;
+
+    /** Cache topology validator. */
+    private String topValidator;
+
     /**
      * Default constructor.
      */
@@ -173,6 +208,18 @@ public class VisorCacheConfiguration extends VisorDataTransferObject {
         storeCfg = new VisorCacheStoreConfiguration(ignite, ccfg);
 
         qryCfg = new VisorQueryConfiguration(ccfg);
+
+        cpOnRead = ccfg.isCopyOnRead();
+        evictFilter = compactClass(ccfg.getEvictionFilter());
+        lsnrConfigurations = compactIterable(ccfg.getCacheEntryListenerConfigurations());
+        loadPrevVal = ccfg.isLoadPreviousValue();
+        memPlcName = ccfg.getMemoryPolicyName();
+        sqlIdxMaxInlineSize = ccfg.getSqlIndexMaxInlineSize();
+        nodeFilter = compactClass(ccfg.getNodeFilter());
+        qryDetailMetricsSz = ccfg.getQueryDetailMetricsSize();
+        readFromBackup = ccfg.isReadFromBackup();
+        tmLookupClsName = ccfg.getTransactionManagerLookupClassName();
+        topValidator = compactClass(ccfg.getTopologyValidator());
     }
 
     /**
@@ -385,6 +432,85 @@ public class VisorCacheConfiguration extends VisorDataTransferObject {
         return qryParallelism;
     }
 
+    /**
+     * @return Copy on read flag.
+     */
+    public boolean isCopyOnRead() {
+        return cpOnRead;
+    }
+
+    /**
+     * @return Eviction filter or {@code null}.
+     */
+    public String getEvictionFilter() {
+        return evictFilter;
+    }
+
+    /**
+     * @return Listener configurations.
+     */
+    public String getLsnrConfigurations() {
+        return lsnrConfigurations;
+    }
+
+    /**
+     * @return Load previous value flag.
+     */
+    public boolean isLoadPreviousValue() {
+        return loadPrevVal;
+    }
+
+    /**
+     * @return {@link MemoryPolicyConfiguration} name.
+     */
+    public String getMemoryPolicyName() {
+        return memPlcName;
+    }
+
+    /**
+     * @return Maximum payload size for offheap indexes.
+     */
+    public int getSqlIdxMaxInlineSize() {
+        return sqlIdxMaxInlineSize;
+    }
+
+    /**
+     * @return Predicate specifying on which nodes the cache should be started.
+     */
+    public String getNodeFilter() {
+        return nodeFilter;
+    }
+
+    /**
+     * @return Maximum number of query metrics that will be stored in memory.
+     */
+    public int getQueryDetailMetricsSize() {
+        return qryDetailMetricsSz;
+    }
+
+    /**
+     * @return {@code true} if data can be read from backup node or {@code false} if data always
+     *      should be read from primary node and never from backup.
+     */
+    public boolean isReadFromBackup() {
+        return readFromBackup;
+    }
+
+    /**
+     * @return Transaction manager finder.
+     */
+    @Deprecated
+    public String getTransactionManagerLookupClassName() {
+        return tmLookupClsName;
+    }
+
+    /**
+     * @return validator.
+     */
+    public String getTopologyValidator() {
+        return topValidator;
+    }
+
     /** {@inheritDoc} */
     @Override protected void writeExternalData(ObjectOutput out) throws IOException {
         U.writeString(out, name);
@@ -415,6 +541,17 @@ public class VisorCacheConfiguration extends VisorDataTransferObject {
         out.writeBoolean(onheapCache);
         U.writeEnum(out, partLossPlc);
         out.writeInt(qryParallelism);
+        out.writeBoolean(cpOnRead);
+        U.writeString(out, evictFilter);
+        U.writeString(out, lsnrConfigurations);
+        out.writeBoolean(loadPrevVal);
+        U.writeString(out, memPlcName);
+        out.writeInt(sqlIdxMaxInlineSize);
+        U.writeString(out, nodeFilter);
+        out.writeInt(qryDetailMetricsSz);
+        out.writeBoolean(readFromBackup);
+        U.writeString(out, tmLookupClsName);
+        U.writeString(out, topValidator);
     }
 
     /** {@inheritDoc} */
@@ -443,9 +580,21 @@ public class VisorCacheConfiguration extends VisorDataTransferObject {
         expiryPlcFactory = U.readString(in);
         qryCfg = (VisorQueryConfiguration)in.readObject();
         sys = in.readBoolean();
+        storeKeepBinary = in.readBoolean();
         onheapCache = in.readBoolean();
         partLossPlc = PartitionLossPolicy.fromOrdinal(in.readByte());
         qryParallelism = in.readInt();
+        cpOnRead = in.readBoolean();
+        evictFilter = U.readString(in);
+        lsnrConfigurations = U.readString(in);
+        loadPrevVal = in.readBoolean();
+        memPlcName = U.readString(in);
+        sqlIdxMaxInlineSize = in.readInt();
+        nodeFilter = U.readString(in);
+        qryDetailMetricsSz = in.readInt();
+        readFromBackup = in.readBoolean();
+        tmLookupClsName = U.readString(in);
+        topValidator = U.readString(in);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorJob.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorJob.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorJob.java
index c2a3c02..fcce158 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorJob.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorJob.java
@@ -30,7 +30,7 @@ import org.apache.ignite.lang.IgniteUuid;
  * Job that collect cache metrics from node.
  */
 public class VisorCacheConfigurationCollectorJob
-    extends VisorJob<Collection<IgniteUuid>, Map<IgniteUuid, VisorCacheConfiguration>> {
+    extends VisorJob<VisorCacheConfigurationCollectorTaskArg, Map<IgniteUuid, VisorCacheConfiguration>> {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -40,22 +40,24 @@ public class VisorCacheConfigurationCollectorJob
      * @param arg Whether to collect metrics for all caches or for specified cache name only.
      * @param debug Debug flag.
      */
-    public VisorCacheConfigurationCollectorJob(Collection<IgniteUuid> arg, boolean debug) {
+    public VisorCacheConfigurationCollectorJob(VisorCacheConfigurationCollectorTaskArg arg, boolean debug) {
         super(arg, debug);
     }
 
     /** {@inheritDoc} */
-    @Override protected Map<IgniteUuid, VisorCacheConfiguration> run(Collection<IgniteUuid> arg) {
+    @Override protected Map<IgniteUuid, VisorCacheConfiguration> run(VisorCacheConfigurationCollectorTaskArg arg) {
         Collection<IgniteCacheProxy<?, ?>> caches = ignite.context().cache().jcaches();
 
-        boolean all = arg == null || arg.isEmpty();
+        Collection<IgniteUuid> depIds = arg.getDeploymentIds();
+
+        boolean all = depIds == null || depIds.isEmpty();
 
         Map<IgniteUuid, VisorCacheConfiguration> res = U.newHashMap(caches.size());
 
         for (IgniteCacheProxy<?, ?> cache : caches) {
             IgniteUuid deploymentId = cache.context().dynamicDeploymentId();
 
-            if (all || arg.contains(deploymentId))
+            if (all || depIds.contains(deploymentId))
                 res.put(deploymentId, config(cache.getConfiguration(CacheConfiguration.class)));
         }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorTask.java
index 49e8de4..f931b17 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorTask.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.internal.visor.cache;
 
-import java.util.Collection;
 import java.util.Map;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.visor.VisorOneNodeTask;
@@ -28,12 +27,12 @@ import org.apache.ignite.lang.IgniteUuid;
  */
 @GridInternal
 public class VisorCacheConfigurationCollectorTask
-    extends VisorOneNodeTask<Collection<IgniteUuid>, Map<IgniteUuid, VisorCacheConfiguration>> {
+    extends VisorOneNodeTask<VisorCacheConfigurationCollectorTaskArg, Map<IgniteUuid, VisorCacheConfiguration>> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorCacheConfigurationCollectorJob job(Collection<IgniteUuid> arg) {
+    @Override protected VisorCacheConfigurationCollectorJob job(VisorCacheConfigurationCollectorTaskArg arg) {
         return new VisorCacheConfigurationCollectorJob(arg, debug);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorTaskArg.java
new file mode 100644
index 0000000..9dd8632
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfigurationCollectorTaskArg.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.visor.cache;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Collection;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
+import org.apache.ignite.lang.IgniteUuid;
+
+/**
+ * Argument for {@link VisorCacheConfigurationCollectorTask}.
+ */
+public class VisorCacheConfigurationCollectorTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Collection of cache deployment IDs. */
+    private Collection<IgniteUuid> deploymentIds;
+
+    /**
+     * Default constructor.
+     */
+    public VisorCacheConfigurationCollectorTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param deploymentIds Collection of cache deployment IDs.
+     */
+    public VisorCacheConfigurationCollectorTaskArg(Collection<IgniteUuid> deploymentIds) {
+        this.deploymentIds = deploymentIds;
+    }
+
+    /**
+     * @return Collection of cache deployment IDs.
+     */
+    public Collection<IgniteUuid> getDeploymentIds() {
+        return deploymentIds;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeCollection(out, deploymentIds);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        deploymentIds = U.readCollection(in);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorCacheConfigurationCollectorTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java
index 34ae12c..7b25ae4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTask.java
@@ -63,7 +63,7 @@ public class VisorCacheLoadTask extends
         @Override protected Map<String, Integer> run(VisorCacheLoadTaskArg arg) {
             Set<String> cacheNames = arg.getCacheNames();
             long ttl = arg.getTtl();
-            Object[] ldrArgs = arg.getLdrArgs();
+            Object[] ldrArgs = arg.getLoaderArguments();
 
             assert cacheNames != null && !cacheNames.isEmpty();
 
@@ -74,6 +74,9 @@ public class VisorCacheLoadTask extends
             for (String cacheName : cacheNames) {
                 IgniteCache cache = ignite.cache(cacheName);
 
+                if (cache == null)
+                    throw new IllegalStateException("Failed to find cache for name: " + cacheName);
+
                 if (ttl > 0) {
                     if (plc == null)
                         plc = new CreatedExpiryPolicy(new Duration(TimeUnit.MILLISECONDS, ttl));

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTaskArg.java
index d5c7f20..b5da993 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTaskArg.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheLoadTaskArg.java
@@ -76,7 +76,7 @@ public class VisorCacheLoadTaskArg extends VisorDataTransferObject {
     /**
      * @return Optional user arguments to be passed into CacheStore.loadCache(IgniteBiInClosure, Object...) method.
      */
-    public Object[] getLdrArgs() {
+    public Object[] getLoaderArguments() {
         return ldrArgs;
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetadataTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetadataTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetadataTask.java
index 598c8cf..0330875 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetadataTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetadataTask.java
@@ -34,19 +34,19 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.escapeName;
  * Task to get cache SQL metadata.
  */
 @GridInternal
-public class VisorCacheMetadataTask extends VisorOneNodeTask<String, VisorCacheSqlMetadata> {
+public class VisorCacheMetadataTask extends VisorOneNodeTask<VisorCacheMetadataTaskArg, VisorCacheSqlMetadata> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorCacheMetadataJob job(String arg) {
+    @Override protected VisorCacheMetadataJob job(VisorCacheMetadataTaskArg arg) {
         return new VisorCacheMetadataJob(arg, debug);
     }
 
     /**
      * Job to get cache SQL metadata.
      */
-    private static class VisorCacheMetadataJob extends VisorJob<String, VisorCacheSqlMetadata> {
+    private static class VisorCacheMetadataJob extends VisorJob<VisorCacheMetadataTaskArg, VisorCacheSqlMetadata> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -54,14 +54,14 @@ public class VisorCacheMetadataTask extends VisorOneNodeTask<String, VisorCacheS
          * @param arg Cache name to take metadata.
          * @param debug Debug flag.
          */
-        private VisorCacheMetadataJob(String arg, boolean debug) {
+        private VisorCacheMetadataJob(VisorCacheMetadataTaskArg arg, boolean debug) {
             super(arg, debug);
         }
 
         /** {@inheritDoc} */
-        @Override protected VisorCacheSqlMetadata run(String cacheName) {
+        @Override protected VisorCacheSqlMetadata run(VisorCacheMetadataTaskArg arg) {
             try {
-                IgniteInternalCache<Object, Object> cache = ignite.cachex(cacheName);
+                IgniteInternalCache<Object, Object> cache = ignite.cachex(arg.getCacheName());
 
                 if (cache != null) {
                     GridCacheSqlMetadata meta = F.first(cache.context().queries().sqlMetadata());
@@ -72,7 +72,7 @@ public class VisorCacheMetadataTask extends VisorOneNodeTask<String, VisorCacheS
                     return null;
                 }
 
-                throw new IgniteException("Cache not found: " + escapeName(cacheName));
+                throw new IgniteException("Cache not found: " + escapeName(arg.getCacheName()));
             }
             catch (IgniteCheckedException e) {
                 throw U.convertException(e);

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetadataTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetadataTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetadataTaskArg.java
new file mode 100644
index 0000000..99ee350
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheMetadataTaskArg.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.visor.cache;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
+
+/**
+ * Argument for {@link VisorCacheMetadataTask}.
+ */
+public class VisorCacheMetadataTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Cache name. */
+    private String cacheName;
+
+    /**
+     * Default constructor.
+     */
+    public VisorCacheMetadataTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param cacheName Cache name.
+     */
+    public VisorCacheMetadataTaskArg(String cacheName) {
+        this.cacheName = cacheName;
+    }
+
+    /**
+     * @return Cache name.
+     */
+    public String getCacheName() {
+        return cacheName;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeString(out, cacheName);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        cacheName = U.readString(in);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorCacheMetadataTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheNodesTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheNodesTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheNodesTask.java
index 955fc64..2dc6dc1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheNodesTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheNodesTask.java
@@ -30,19 +30,19 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
  * Task that returns collection of cache data nodes IDs.
  */
 @GridInternal
-public class VisorCacheNodesTask extends VisorOneNodeTask<String, Collection<UUID>> {
+public class VisorCacheNodesTask extends VisorOneNodeTask<VisorCacheNodesTaskArg, Collection<UUID>> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorCacheNodesJob job(String arg) {
+    @Override protected VisorCacheNodesJob job(VisorCacheNodesTaskArg arg) {
         return new VisorCacheNodesJob(arg, debug);
     }
 
     /**
      * Job that collects cluster group for specified cache.
      */
-    private static class VisorCacheNodesJob extends VisorJob<String, Collection<UUID>> {
+    private static class VisorCacheNodesJob extends VisorJob<VisorCacheNodesTaskArg, Collection<UUID>> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -52,13 +52,13 @@ public class VisorCacheNodesTask extends VisorOneNodeTask<String, Collection<UUI
          * @param cacheName Cache name to clear.
          * @param debug Debug flag.
          */
-        private VisorCacheNodesJob(String cacheName, boolean debug) {
+        private VisorCacheNodesJob(VisorCacheNodesTaskArg cacheName, boolean debug) {
             super(cacheName, debug);
         }
 
         /** {@inheritDoc} */
-        @Override protected Collection<UUID> run(String cacheName) {
-            Collection<ClusterNode> nodes = ignite.cluster().forDataNodes(cacheName).nodes();
+        @Override protected Collection<UUID> run(VisorCacheNodesTaskArg arg) {
+            Collection<ClusterNode> nodes = ignite.cluster().forDataNodes(arg.getCacheName()).nodes();
 
             Collection<UUID> res = new ArrayList<>(nodes.size());
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheNodesTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheNodesTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheNodesTaskArg.java
new file mode 100644
index 0000000..29e00e5
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheNodesTaskArg.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.visor.cache;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
+
+/**
+ * Argument for {@link VisorCacheNodesTask}.
+ */
+public class VisorCacheNodesTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Cache name. */
+    private String cacheName;
+
+    /**
+     * Default constructor.
+     */
+    public VisorCacheNodesTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param cacheName Cache name.
+     */
+    public VisorCacheNodesTaskArg(String cacheName) {
+        this.cacheName = cacheName;
+    }
+
+    /**
+     * @return Cache name.
+     */
+    public String getCacheName() {
+        return cacheName;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeString(out, cacheName);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        cacheName = U.readString(in);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorCacheNodesTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceConfiguration.java
index 618fa97..8a3acaa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceConfiguration.java
@@ -48,6 +48,12 @@ public class VisorCacheRebalanceConfiguration extends VisorDataTransferObject {
     /** Rebalance timeout. */
     private long timeout;
 
+    /** Rebalance batches prefetch count. */
+    private long batchesPrefetchCnt;
+
+    /** Cache rebalance order. */
+    private int rebalanceOrder;
+
     /**
      * Default constructor.
      */
@@ -65,6 +71,8 @@ public class VisorCacheRebalanceConfiguration extends VisorDataTransferObject {
         partitionedDelay = ccfg.getRebalanceDelay();
         throttle = ccfg.getRebalanceThrottle();
         timeout = ccfg.getRebalanceTimeout();
+        batchesPrefetchCnt = ccfg.getRebalanceBatchesPrefetchCount();
+        rebalanceOrder = ccfg.getRebalanceOrder();
     }
 
     /**
@@ -102,6 +110,20 @@ public class VisorCacheRebalanceConfiguration extends VisorDataTransferObject {
         return timeout;
     }
 
+    /**
+     * @return Batches count
+     */
+    public long getBatchesPrefetchCnt() {
+        return batchesPrefetchCnt;
+    }
+
+    /**
+     * @return Cache rebalance order.
+     */
+    public int getRebalanceOrder() {
+        return rebalanceOrder;
+    }
+
     /** {@inheritDoc} */
     @Override protected void writeExternalData(ObjectOutput out) throws IOException {
         U.writeEnum(out, mode);
@@ -109,6 +131,8 @@ public class VisorCacheRebalanceConfiguration extends VisorDataTransferObject {
         out.writeLong(partitionedDelay);
         out.writeLong(throttle);
         out.writeLong(timeout);
+        out.writeLong(batchesPrefetchCnt);
+        out.writeInt(rebalanceOrder);
     }
 
     /** {@inheritDoc} */
@@ -118,6 +142,8 @@ public class VisorCacheRebalanceConfiguration extends VisorDataTransferObject {
         partitionedDelay = in.readLong();
         throttle = in.readLong();
         timeout = in.readLong();
+        batchesPrefetchCnt = in.readLong();
+        rebalanceOrder = in.readInt();
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java
index e0c94bf..87a2ce6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTask.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.visor.cache;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Set;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
@@ -33,19 +32,19 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
  * Pre-loads caches. Made callable just to conform common pattern.
  */
 @GridInternal
-public class VisorCacheRebalanceTask extends VisorOneNodeTask<Set<String>, Void> {
+public class VisorCacheRebalanceTask extends VisorOneNodeTask<VisorCacheRebalanceTaskArg, Void> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorCachesRebalanceJob job(Set<String> arg) {
+    @Override protected VisorCachesRebalanceJob job(VisorCacheRebalanceTaskArg arg) {
         return new VisorCachesRebalanceJob(arg, debug);
     }
 
     /**
      * Job that rebalance caches.
      */
-    private static class VisorCachesRebalanceJob extends VisorJob<Set<String>, Void> {
+    private static class VisorCachesRebalanceJob extends VisorJob<VisorCacheRebalanceTaskArg, Void> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -53,17 +52,17 @@ public class VisorCacheRebalanceTask extends VisorOneNodeTask<Set<String>, Void>
          * @param arg Caches names.
          * @param debug Debug flag.
          */
-        private VisorCachesRebalanceJob(Set<String> arg, boolean debug) {
+        private VisorCachesRebalanceJob(VisorCacheRebalanceTaskArg arg, boolean debug) {
             super(arg, debug);
         }
 
         /** {@inheritDoc} */
-        @Override protected Void run(Set<String> cacheNames) {
+        @Override protected Void run(VisorCacheRebalanceTaskArg arg) {
             try {
                 Collection<IgniteInternalFuture<?>> futs = new ArrayList<>();
 
                 for (IgniteInternalCache c : ignite.cachesx()) {
-                    if (cacheNames.contains(c.name()))
+                    if (arg.getCacheNames().contains(c.name()))
                         futs.add(c.rebalance());
                 }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTaskArg.java
new file mode 100644
index 0000000..0bf420c
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheRebalanceTaskArg.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.visor.cache;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Set;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
+
+/**
+ * Argument for {@link VisorCacheRebalanceTask}.
+ */
+public class VisorCacheRebalanceTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Cache names. */
+    private Set<String> cacheNames;
+
+    /**
+     * Default constructor.
+     */
+    public VisorCacheRebalanceTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param cacheNames Cache names.
+     */
+    public VisorCacheRebalanceTaskArg(Set<String> cacheNames) {
+        this.cacheNames = cacheNames;
+    }
+
+    /**
+     * @return Cache names.
+     */
+    public Set<String> getCacheNames() {
+        return cacheNames;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeCollection(out, cacheNames);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        cacheNames = U.readSet(in);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorCacheRebalanceTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetMetricsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetMetricsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetMetricsTask.java
index ccec241..bc6698d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetMetricsTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetMetricsTask.java
@@ -27,19 +27,19 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
  * Reset compute grid metrics.
  */
 @GridInternal
-public class VisorCacheResetMetricsTask extends VisorOneNodeTask<String, Void> {
+public class VisorCacheResetMetricsTask extends VisorOneNodeTask<VisorCacheResetMetricsTaskArg, Void> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorCacheResetMetricsJob job(String arg) {
+    @Override protected VisorCacheResetMetricsJob job(VisorCacheResetMetricsTaskArg arg) {
         return new VisorCacheResetMetricsJob(arg, debug);
     }
 
     /**
      * Job that reset cache metrics.
      */
-    private static class VisorCacheResetMetricsJob extends VisorJob<String, Void> {
+    private static class VisorCacheResetMetricsJob extends VisorJob<VisorCacheResetMetricsTaskArg, Void> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -47,13 +47,13 @@ public class VisorCacheResetMetricsTask extends VisorOneNodeTask<String, Void> {
          * @param arg Cache name to reset metrics for.
          * @param debug Debug flag.
          */
-        private VisorCacheResetMetricsJob(String arg, boolean debug) {
+        private VisorCacheResetMetricsJob(VisorCacheResetMetricsTaskArg arg, boolean debug) {
             super(arg, debug);
         }
 
         /** {@inheritDoc} */
-        @Override protected Void run(String cacheName) {
-            IgniteInternalCache cache = ignite.cachex(cacheName);
+        @Override protected Void run(VisorCacheResetMetricsTaskArg arg) {
+            IgniteInternalCache cache = ignite.cachex(arg.getCacheName());
 
             if (cache != null)
                 cache.localMxBean().clear();
@@ -66,4 +66,4 @@ public class VisorCacheResetMetricsTask extends VisorOneNodeTask<String, Void> {
             return S.toString(VisorCacheResetMetricsJob.class, this);
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetMetricsTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetMetricsTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetMetricsTaskArg.java
new file mode 100644
index 0000000..3a9d8ae
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheResetMetricsTaskArg.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.visor.cache;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
+
+/**
+ * Argument for {@link VisorCacheResetMetricsTask}.
+ */
+public class VisorCacheResetMetricsTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Cache name. */
+    private String cacheName;
+
+    /**
+     * Default constructor.
+     */
+    public VisorCacheResetMetricsTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param cacheName Cache name.
+     */
+    public VisorCacheResetMetricsTaskArg(String cacheName) {
+        this.cacheName = cacheName;
+    }
+
+    /**
+     * @return Cache name.
+     */
+    public String getCacheName() {
+        return cacheName;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeString(out, cacheName);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        cacheName = U.readString(in);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorCacheResetMetricsTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStartArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStartArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStartArg.java
deleted file mode 100644
index a2fd518..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStartArg.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.visor.cache;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.internal.visor.VisorDataTransferObject;
-
-/**
- * Cache start arguments.
- */
-public class VisorCacheStartArg extends VisorDataTransferObject {
-    /** */
-    private static final long serialVersionUID = 0L;
-
-    /** */
-    private boolean near;
-
-    /** */
-    private String name;
-
-    /** */
-    private String cfg;
-
-    /**
-     * Default constructor.
-     */
-    public VisorCacheStartArg() {
-        // No-op.
-    }
-
-    /**
-     * @param near {@code true} if near cache should be started.
-     * @param name Name for near cache.
-     * @param cfg Cache XML configuration.
-     */
-    public VisorCacheStartArg(boolean near, String name, String cfg) {
-        this.near = near;
-        this.name = name;
-        this.cfg = cfg;
-    }
-
-    /**
-     * @return {@code true} if near cache should be started.
-     */
-    public boolean isNear() {
-        return near;
-    }
-
-    /**
-     * @return Name for near cache.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * @return Cache XML configuration.
-     */
-    public String getConfiguration() {
-        return cfg;
-    }
-
-    /** {@inheritDoc} */
-    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
-        out.writeBoolean(near);
-        U.writeString(out, name);
-        U.writeString(out, cfg);
-    }
-
-    /** {@inheritDoc} */
-    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
-        near = in.readBoolean();
-        name = U.readString(in);
-        cfg = U.readString(in);
-    }
-
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        return S.toString(VisorCacheStartArg.class, this);
-    }
-}