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 2017/04/27 07:17:33 UTC

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

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryCleanupTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryCleanupTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryCleanupTaskArg.java
new file mode 100644
index 0000000..878a612
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryCleanupTaskArg.java
@@ -0,0 +1,75 @@
+/*
+ * 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.query;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Collection;
+import java.util.Map;
+import java.util.UUID;
+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;
+
+/**
+ * Arguments for task {@link VisorQueryCleanupTask}
+ */
+public class VisorQueryCleanupTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Query IDs to cancel. */
+    private Map<UUID, Collection<String>> qryIds;
+
+    /**
+     * Default constructor.
+     */
+    public VisorQueryCleanupTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param qryIds Query IDs to cancel.
+     */
+    public VisorQueryCleanupTaskArg(Map<UUID, Collection<String>> qryIds) {
+        this.qryIds = qryIds;
+    }
+
+    /**
+     * @return Query IDs to cancel.
+     */
+    public Map<UUID, Collection<String>> getQueryIds() {
+        return qryIds;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeMap(out, qryIds);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        qryIds = U.readMap(in);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorQueryCleanupTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryDetailMetricsCollectorTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryDetailMetricsCollectorTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryDetailMetricsCollectorTask.java
index 7c1379f..8cef43f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryDetailMetricsCollectorTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryDetailMetricsCollectorTask.java
@@ -43,13 +43,13 @@ import static org.apache.ignite.internal.processors.cache.GridCacheUtils.isSyste
  * Task to collect cache query metrics.
  */
 @GridInternal
-public class VisorQueryDetailMetricsCollectorTask extends VisorMultiNodeTask<Long, Collection<VisorQueryDetailMetrics>,
-    Collection<? extends QueryDetailMetrics>> {
+public class VisorQueryDetailMetricsCollectorTask extends VisorMultiNodeTask<VisorQueryDetailMetricsCollectorTaskArg,
+    Collection<VisorQueryDetailMetrics>, Collection<? extends QueryDetailMetrics>> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorCacheQueryDetailMetricsCollectorJob job(Long arg) {
+    @Override protected VisorCacheQueryDetailMetricsCollectorJob job(VisorQueryDetailMetricsCollectorTaskArg arg) {
         return new VisorCacheQueryDetailMetricsCollectorJob(arg, debug);
     }
 
@@ -80,7 +80,8 @@ public class VisorQueryDetailMetricsCollectorTask extends VisorMultiNodeTask<Lon
     /**
      * Job that will actually collect query metrics.
      */
-    private static class VisorCacheQueryDetailMetricsCollectorJob extends VisorJob<Long, Collection<? extends QueryDetailMetrics>> {
+    private static class VisorCacheQueryDetailMetricsCollectorJob
+        extends VisorJob<VisorQueryDetailMetricsCollectorTaskArg, Collection<? extends QueryDetailMetrics>> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -90,7 +91,7 @@ public class VisorQueryDetailMetricsCollectorTask extends VisorMultiNodeTask<Lon
          * @param arg Last time when metrics were collected.
          * @param debug Debug flag.
          */
-        protected VisorCacheQueryDetailMetricsCollectorJob(@Nullable Long arg, boolean debug) {
+        protected VisorCacheQueryDetailMetricsCollectorJob(@Nullable VisorQueryDetailMetricsCollectorTaskArg arg, boolean debug) {
             super(arg, debug);
         }
 
@@ -113,7 +114,9 @@ public class VisorQueryDetailMetricsCollectorTask extends VisorMultiNodeTask<Lon
         }
 
         /** {@inheritDoc} */
-        @Override protected Collection<? extends QueryDetailMetrics> run(@Nullable Long arg) throws IgniteException {
+        @Override protected Collection<? extends QueryDetailMetrics> run(
+            @Nullable VisorQueryDetailMetricsCollectorTaskArg arg
+        ) throws IgniteException {
             assert arg != null;
 
             IgniteConfiguration cfg = ignite.configuration();
@@ -131,7 +134,7 @@ public class VisorQueryDetailMetricsCollectorTask extends VisorMultiNodeTask<Lon
                     if (cache == null || !cache.context().started())
                         continue;
 
-                    aggregateMetrics(arg, aggMetrics, cache.context().queries().detailMetrics());
+                    aggregateMetrics(arg.getSince(), aggMetrics, cache.context().queries().detailMetrics());
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryDetailMetricsCollectorTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryDetailMetricsCollectorTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryDetailMetricsCollectorTaskArg.java
new file mode 100644
index 0000000..5c76951
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryDetailMetricsCollectorTaskArg.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.query;
+
+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 task {@link VisorQueryDetailMetricsCollectorTask}
+ */
+public class VisorQueryDetailMetricsCollectorTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Time when metrics were collected last time. */
+    private long since;
+
+    /**
+     * Default constructor.
+     */
+    public VisorQueryDetailMetricsCollectorTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param since Time when metrics were collected last time.
+     */
+    public VisorQueryDetailMetricsCollectorTaskArg(long since) {
+        this.since = since;
+    }
+
+    /**
+     * @return Time when metrics were collected last time.
+     */
+    public long getSince() {
+        return since;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        out.writeLong(since);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        since = in.readLong();
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorQueryDetailMetricsCollectorTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetDetailMetricsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetDetailMetricsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetDetailMetricsTask.java
index 6d35e32..a0da797 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetDetailMetricsTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetDetailMetricsTask.java
@@ -56,8 +56,10 @@ public class VisorQueryResetDetailMetricsTask extends VisorOneNodeTask<Void, Voi
             for (String cacheName : ignite.cacheNames()) {
                 IgniteCache cache = ignite.cache(cacheName);
 
-                if (cache != null)
-                    cache.resetQueryDetailMetrics();
+                if (cache == null)
+                    throw new IllegalStateException("Failed to find cache for name: " + cacheName);
+
+                cache.resetQueryDetailMetrics();
             }
 
             return null;

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java
index 3c5c668..1d807f1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTask.java
@@ -27,19 +27,19 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
  * Reset compute grid query metrics.
  */
 @GridInternal
-public class VisorQueryResetMetricsTask extends VisorOneNodeTask<String, Void> {
+public class VisorQueryResetMetricsTask extends VisorOneNodeTask<VisorQueryResetMetricsTaskArg, Void> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorQueryResetMetricsJob job(String arg) {
+    @Override protected VisorQueryResetMetricsJob job(VisorQueryResetMetricsTaskArg arg) {
         return new VisorQueryResetMetricsJob(arg, debug);
     }
 
     /**
      * Job that reset cache query metrics.
      */
-    private static class VisorQueryResetMetricsJob extends VisorJob<String, Void> {
+    private static class VisorQueryResetMetricsJob extends VisorJob<VisorQueryResetMetricsTaskArg, Void> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -47,16 +47,20 @@ public class VisorQueryResetMetricsTask extends VisorOneNodeTask<String, Void> {
          * @param arg Cache name to reset query metrics for.
          * @param debug Debug flag.
          */
-        private VisorQueryResetMetricsJob(String arg, boolean debug) {
+        private VisorQueryResetMetricsJob(VisorQueryResetMetricsTaskArg arg, boolean debug) {
             super(arg, debug);
         }
 
         /** {@inheritDoc} */
-        @Override protected Void run(String cacheName) {
+        @Override protected Void run(VisorQueryResetMetricsTaskArg arg) {
+            String cacheName = arg.getCacheName();
+
             IgniteCache cache = ignite.cache(cacheName);
 
-            if (cache != null)
-                cache.resetQueryMetrics();
+            if (cache == null)
+                throw new IllegalStateException("Failed to find cache for name: " + cacheName);
+
+            cache.resetQueryMetrics();
 
             return null;
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTaskArg.java
new file mode 100644
index 0000000..8faa43b
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResetMetricsTaskArg.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.query;
+
+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 VisorQueryResetMetricsTask}.
+ */
+public class VisorQueryResetMetricsTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Cache name. */
+    private String cacheName;
+
+    /**
+     * Default constructor.
+     */
+    public VisorQueryResetMetricsTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param cacheName Cache name.
+     */
+    public VisorQueryResetMetricsTaskArg(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(VisorQueryResetMetricsTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java
index a267f06..f6bbf7c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java
@@ -36,12 +36,12 @@ import org.jetbrains.annotations.Nullable;
  * Task to collect currently running queries.
  */
 @GridInternal
-public class VisorRunningQueriesCollectorTask extends VisorMultiNodeTask<Long, Map<UUID, Collection<VisorRunningQuery>>, Collection<VisorRunningQuery>> {
+public class VisorRunningQueriesCollectorTask extends VisorMultiNodeTask<VisorRunningQueriesCollectorTaskArg, Map<UUID, Collection<VisorRunningQuery>>, Collection<VisorRunningQuery>> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorCollectRunningQueriesJob job(Long arg) {
+    @Override protected VisorCollectRunningQueriesJob job(VisorRunningQueriesCollectorTaskArg arg) {
         return new VisorCollectRunningQueriesJob(arg, debug);
     }
 
@@ -62,7 +62,8 @@ public class VisorRunningQueriesCollectorTask extends VisorMultiNodeTask<Long, M
     /**
      * Job to collect currently running queries from node.
      */
-    private static class VisorCollectRunningQueriesJob extends VisorJob<Long, Collection<VisorRunningQuery>> {
+    private static class VisorCollectRunningQueriesJob
+        extends VisorJob<VisorRunningQueriesCollectorTaskArg, Collection<VisorRunningQuery>> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -72,14 +73,17 @@ public class VisorRunningQueriesCollectorTask extends VisorMultiNodeTask<Long, M
          * @param arg Job argument.
          * @param debug Flag indicating whether debug information should be printed into node log.
          */
-        protected VisorCollectRunningQueriesJob(@Nullable Long arg, boolean debug) {
+        protected VisorCollectRunningQueriesJob(@Nullable VisorRunningQueriesCollectorTaskArg arg, boolean debug) {
             super(arg, debug);
         }
 
         /** {@inheritDoc} */
-        @Override protected Collection<VisorRunningQuery> run(@Nullable Long duration) throws IgniteException {
+        @Override protected Collection<VisorRunningQuery> run(@Nullable VisorRunningQueriesCollectorTaskArg arg)
+            throws IgniteException {
+            assert arg != null;
+
             Collection<GridRunningQueryInfo> queries = ignite.context().query()
-                .runningQueries(duration != null ? duration : 0);
+                .runningQueries(arg.getDuration() != null ? arg.getDuration() : 0);
 
             Collection<VisorRunningQuery> res = new ArrayList<>(queries.size());
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTaskArg.java
new file mode 100644
index 0000000..c851559
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTaskArg.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.query;
+
+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 task {@link VisorRunningQueriesCollectorTask}
+ */
+public class VisorRunningQueriesCollectorTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Duration to check. */
+    private Long duration;
+
+    /**
+     * Default constructor.
+     */
+    public VisorRunningQueriesCollectorTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param duration Duration to check.
+     */
+    public VisorRunningQueriesCollectorTaskArg(Long duration) {
+        this.duration = duration;
+    }
+
+    /**
+     * @return Duration to check.
+     */
+    public Long getDuration() {
+        return duration;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        out.writeObject(duration);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        duration = (Long)in.readObject();
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorRunningQueriesCollectorTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorScanQueryArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorScanQueryArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorScanQueryArg.java
deleted file mode 100644
index cc12ac5..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorScanQueryArg.java
+++ /dev/null
@@ -1,157 +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.query;
-
-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;
-
-/**
- * Arguments for {@link VisorScanQueryTask}.
- */
-public class VisorScanQueryArg extends VisorDataTransferObject {
-    /** */
-    private static final long serialVersionUID = 0L;
-
-    /** Cache name for query. */
-    private String cacheName;
-
-    /** Filter text. */
-    private String filter;
-
-    /** Filter is regular expression */
-    private boolean regEx;
-
-    /** Case sensitive filtration */
-    private boolean caseSensitive;
-
-    /** Scan of near cache */
-    private boolean near;
-
-    /** Flag whether to execute query locally. */
-    private boolean loc;
-
-    /** Result batch size. */
-    private int pageSize;
-
-    /**
-     * Default constructor.
-     */
-    public VisorScanQueryArg() {
-        // No-op.
-    }
-
-    /**
-     * @param cacheName Cache name for query.
-     * @param filter Filter text.
-     * @param regEx Filter is regular expression.
-     * @param caseSensitive Case sensitive filtration.
-     * @param near Scan near cache.
-     * @param loc Flag whether to execute query locally.
-     * @param pageSize Result batch size.
-     */
-    public VisorScanQueryArg(String cacheName, String filter, boolean regEx, boolean caseSensitive, boolean near,
-        boolean loc, int pageSize) {
-        this.cacheName = cacheName;
-        this.filter = filter;
-        this.regEx = regEx;
-        this.caseSensitive = caseSensitive;
-        this.near = near;
-        this.loc = loc;
-        this.pageSize = pageSize;
-    }
-
-    /**
-     * @return Cache name.
-     */
-    public String getCacheName() {
-        return cacheName;
-    }
-
-    /**
-     * @return Filter is regular expression.
-     */
-    public boolean isRegEx() {
-        return regEx;
-    }
-
-    /**
-     * @return Filter.
-     */
-    public String getFilter() {
-        return filter;
-    }
-
-    /**
-     * @return Case sensitive filtration.
-     */
-    public boolean isCaseSensitive() {
-        return caseSensitive;
-    }
-
-    /**
-     * @return Scan of near cache.
-     */
-    public boolean isNear() {
-        return near;
-    }
-
-    /**
-     * @return {@code true} if query should be executed locally.
-     */
-    public boolean isLocal() {
-        return loc;
-    }
-
-    /**
-     * @return Page size.
-     */
-    public int getPageSize() {
-        return pageSize;
-    }
-
-    /** {@inheritDoc} */
-    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
-        U.writeString(out, cacheName);
-        U.writeString(out, filter);
-        out.writeBoolean(regEx);
-        out.writeBoolean(caseSensitive);
-        out.writeBoolean(near);
-        out.writeBoolean(loc);
-        out.writeInt(pageSize);
-    }
-
-    /** {@inheritDoc} */
-    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
-        cacheName = U.readString(in);
-        filter = U.readString(in);
-        regEx = in.readBoolean();
-        caseSensitive = in.readBoolean();
-        near = in.readBoolean();
-        loc = in.readBoolean();
-        pageSize = in.readInt();
-    }
-
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        return S.toString(VisorScanQueryArg.class, this);
-    }
-}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java
index 64987e9..53c3bb3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTask.java
@@ -27,19 +27,19 @@ import org.apache.ignite.internal.visor.VisorOneNodeTask;
  * Task for cancel services with specified name.
  */
 @GridInternal
-public class VisorCancelServiceTask extends VisorOneNodeTask<String, Void> {
+public class VisorCancelServiceTask extends VisorOneNodeTask<VisorCancelServiceTaskArg, Void> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorCancelServiceJob job(String arg) {
+    @Override protected VisorCancelServiceJob job(VisorCancelServiceTaskArg arg) {
         return new VisorCancelServiceJob(arg, debug);
     }
 
     /**
      * Job for cancel services with specified name.
      */
-    private static class VisorCancelServiceJob extends VisorJob<String, Void> {
+    private static class VisorCancelServiceJob extends VisorJob<VisorCancelServiceTaskArg, Void> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -49,15 +49,15 @@ public class VisorCancelServiceTask extends VisorOneNodeTask<String, Void> {
          * @param arg Job argument.
          * @param debug Debug flag.
          */
-        protected VisorCancelServiceJob(String arg, boolean debug) {
+        protected VisorCancelServiceJob(VisorCancelServiceTaskArg arg, boolean debug) {
             super(arg, debug);
         }
 
         /** {@inheritDoc} */
-        @Override protected Void run(final String arg) {
+        @Override protected Void run(final VisorCancelServiceTaskArg arg) {
             IgniteServices services = ignite.services();
 
-            services.cancel(arg);
+            services.cancel(arg.getName());
 
             return null;
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTaskArg.java
new file mode 100644
index 0000000..477715f
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorCancelServiceTaskArg.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.service;
+
+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 VisorCancelServiceTask}.
+ */
+public class VisorCancelServiceTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Service name. */
+    private String name;
+
+    /**
+     * Default constructor.
+     */
+    public VisorCancelServiceTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param name Service name.
+     */
+    public VisorCancelServiceTaskArg(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @return Service name.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeString(out, name);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        name = U.readString(in);
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorCancelServiceTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java
index 897ac89..c9ed882 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java
@@ -333,6 +333,29 @@ public class VisorTaskUtils {
     }
 
     /**
+     * Joins iterable collection elements to string.
+     *
+     * @param col Iterable collection.
+     * @return String.
+     */
+    @Nullable public static String compactIterable(Iterable col) {
+        if (col == null || !col.iterator().hasNext())
+            return null;
+
+        String sep = ", ";
+
+        StringBuilder sb = new StringBuilder();
+
+        for (Object s : col)
+            sb.append(s).append(sep);
+
+        if (sb.length() > 0)
+            sb.setLength(sb.length() - sep.length());
+
+        return U.compact(sb.toString());
+    }
+
+    /**
      * Returns boolean value from system property or provided function.
      *
      * @param propName System property name.

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/main/resources/META-INF/classnames.properties
----------------------------------------------------------------------
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties b/modules/core/src/main/resources/META-INF/classnames.properties
index bc1e534..ca5f756 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -1687,6 +1687,7 @@ org.apache.ignite.internal.visor.VisorTaskArgument
 org.apache.ignite.internal.visor.binary.VisorBinaryMetadata
 org.apache.ignite.internal.visor.binary.VisorBinaryMetadataCollectorTask
 org.apache.ignite.internal.visor.binary.VisorBinaryMetadataCollectorTask$VisorBinaryCollectMetadataJob
+org.apache.ignite.internal.visor.binary.VisorBinaryMetadataCollectorTaskArg
 org.apache.ignite.internal.visor.binary.VisorBinaryMetadataCollectorTaskResult
 org.apache.ignite.internal.visor.binary.VisorBinaryMetadataField
 org.apache.ignite.internal.visor.cache.VisorCache
@@ -1698,10 +1699,12 @@ org.apache.ignite.internal.visor.cache.VisorCacheAggregatedMetrics
 org.apache.ignite.internal.visor.cache.VisorCacheClearTask
 org.apache.ignite.internal.visor.cache.VisorCacheClearTask$VisorCacheClearJob
 org.apache.ignite.internal.visor.cache.VisorCacheClearTask$VisorCacheClearJob$1
+org.apache.ignite.internal.visor.cache.VisorCacheClearTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheClearTaskResult
 org.apache.ignite.internal.visor.cache.VisorCacheConfiguration
 org.apache.ignite.internal.visor.cache.VisorCacheConfigurationCollectorJob
 org.apache.ignite.internal.visor.cache.VisorCacheConfigurationCollectorTask
+org.apache.ignite.internal.visor.cache.VisorCacheConfigurationCollectorTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheEvictionConfiguration
 org.apache.ignite.internal.visor.cache.VisorCacheJdbcType
 org.apache.ignite.internal.visor.cache.VisorCacheJdbcTypeField
@@ -1710,6 +1713,7 @@ org.apache.ignite.internal.visor.cache.VisorCacheLoadTask$VisorCachesLoadJob
 org.apache.ignite.internal.visor.cache.VisorCacheLoadTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheMetadataTask
 org.apache.ignite.internal.visor.cache.VisorCacheMetadataTask$VisorCacheMetadataJob
+org.apache.ignite.internal.visor.cache.VisorCacheMetadataTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheMetrics
 org.apache.ignite.internal.visor.cache.VisorCacheMetricsCollectorTask
 org.apache.ignite.internal.visor.cache.VisorCacheMetricsCollectorTask$VisorCacheMetricsCollectorJob
@@ -1717,6 +1721,7 @@ org.apache.ignite.internal.visor.cache.VisorCacheMetricsCollectorTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheNearConfiguration
 org.apache.ignite.internal.visor.cache.VisorCacheNodesTask
 org.apache.ignite.internal.visor.cache.VisorCacheNodesTask$VisorCacheNodesJob
+org.apache.ignite.internal.visor.cache.VisorCacheNodesTaskArg
 org.apache.ignite.internal.visor.cache.VisorCachePartitions
 org.apache.ignite.internal.visor.cache.VisorCachePartitionsTask
 org.apache.ignite.internal.visor.cache.VisorCachePartitionsTask$VisorCachePartitionsJob
@@ -1724,20 +1729,23 @@ org.apache.ignite.internal.visor.cache.VisorCachePartitionsTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheRebalanceConfiguration
 org.apache.ignite.internal.visor.cache.VisorCacheRebalanceTask
 org.apache.ignite.internal.visor.cache.VisorCacheRebalanceTask$VisorCachesRebalanceJob
+org.apache.ignite.internal.visor.cache.VisorCacheRebalanceTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheResetMetricsTask
 org.apache.ignite.internal.visor.cache.VisorCacheResetMetricsTask$VisorCacheResetMetricsJob
+org.apache.ignite.internal.visor.cache.VisorCacheResetMetricsTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheSqlIndexMetadata
 org.apache.ignite.internal.visor.cache.VisorCacheSqlMetadata
-org.apache.ignite.internal.visor.cache.VisorCacheStartArg
 org.apache.ignite.internal.visor.cache.VisorCacheStartTask
 org.apache.ignite.internal.visor.cache.VisorCacheStartTask$VisorCacheStartJob
 org.apache.ignite.internal.visor.cache.VisorCacheStartTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheStopTask
 org.apache.ignite.internal.visor.cache.VisorCacheStopTask$VisorCacheStopJob
+org.apache.ignite.internal.visor.cache.VisorCacheStopTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheStoreConfiguration
 org.apache.ignite.internal.visor.cache.VisorPartitionMap
 org.apache.ignite.internal.visor.compute.VisorComputeCancelSessionsTask
 org.apache.ignite.internal.visor.compute.VisorComputeCancelSessionsTask$VisorComputeCancelSessionsJob
+org.apache.ignite.internal.visor.compute.VisorComputeCancelSessionsTaskArg
 org.apache.ignite.internal.visor.compute.VisorComputeResetMetricsTask
 org.apache.ignite.internal.visor.compute.VisorComputeResetMetricsTask$VisorComputeResetMetricsJob
 org.apache.ignite.internal.visor.compute.VisorComputeToggleMonitoringTask
@@ -1759,7 +1767,6 @@ org.apache.ignite.internal.visor.event.VisorGridEventsLost
 org.apache.ignite.internal.visor.event.VisorGridJobEvent
 org.apache.ignite.internal.visor.event.VisorGridTaskEvent
 org.apache.ignite.internal.visor.file.VisorFileBlock
-org.apache.ignite.internal.visor.file.VisorFileBlockArg
 org.apache.ignite.internal.visor.file.VisorFileBlockTask
 org.apache.ignite.internal.visor.file.VisorFileBlockTask$VisorFileBlockJob
 org.apache.ignite.internal.visor.file.VisorFileBlockTaskArg
@@ -1770,21 +1777,24 @@ org.apache.ignite.internal.visor.igfs.VisorIgfs
 org.apache.ignite.internal.visor.igfs.VisorIgfsEndpoint
 org.apache.ignite.internal.visor.igfs.VisorIgfsFormatTask
 org.apache.ignite.internal.visor.igfs.VisorIgfsFormatTask$VisorIgfsFormatJob
+org.apache.ignite.internal.visor.igfs.VisorIgfsFormatTaskArg
 org.apache.ignite.internal.visor.igfs.VisorIgfsMetrics
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerClearTask
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerClearTask$VisorIgfsProfilerClearJob
+org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerClearTaskArg
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerClearTaskResult
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerEntry
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerTask
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerTask$VisorIgfsProfilerJob
+org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerTaskArg
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerUniformityCounters
 org.apache.ignite.internal.visor.igfs.VisorIgfsResetMetricsTask
 org.apache.ignite.internal.visor.igfs.VisorIgfsResetMetricsTask$VisorIgfsResetMetricsJob
+org.apache.ignite.internal.visor.igfs.VisorIgfsResetMetricsTaskArg
 org.apache.ignite.internal.visor.igfs.VisorIgfsSamplingStateTask
 org.apache.ignite.internal.visor.igfs.VisorIgfsSamplingStateTask$VisorIgfsSamplingStateJob
 org.apache.ignite.internal.visor.igfs.VisorIgfsSamplingStateTaskArg
 org.apache.ignite.internal.visor.log.VisorLogFile
-org.apache.ignite.internal.visor.log.VisorLogSearchArg
 org.apache.ignite.internal.visor.log.VisorLogSearchResult
 org.apache.ignite.internal.visor.log.VisorLogSearchTask
 org.apache.ignite.internal.visor.log.VisorLogSearchTask$VisorLogSearchJob
@@ -1792,8 +1802,10 @@ org.apache.ignite.internal.visor.log.VisorLogSearchTaskArg
 org.apache.ignite.internal.visor.log.VisorLogSearchTaskResult
 org.apache.ignite.internal.visor.misc.VisorAckTask
 org.apache.ignite.internal.visor.misc.VisorAckTask$VisorAckJob
+org.apache.ignite.internal.visor.misc.VisorAckTaskArg
 org.apache.ignite.internal.visor.misc.VisorChangeGridActiveStateTask
 org.apache.ignite.internal.visor.misc.VisorChangeGridActiveStateTask$VisorChangeGridActiveStateJob
+org.apache.ignite.internal.visor.misc.VisorChangeGridActiveStateTaskArg
 org.apache.ignite.internal.visor.misc.VisorLatestVersionTask
 org.apache.ignite.internal.visor.misc.VisorLatestVersionTask$VisorLatestVersionJob
 org.apache.ignite.internal.visor.misc.VisorNopTask
@@ -1802,8 +1814,13 @@ org.apache.ignite.internal.visor.misc.VisorResolveHostNameTask
 org.apache.ignite.internal.visor.misc.VisorResolveHostNameTask$VisorResolveHostNameJob
 org.apache.ignite.internal.visor.node.VisorAtomicConfiguration
 org.apache.ignite.internal.visor.node.VisorBasicConfiguration
+org.apache.ignite.internal.visor.node.VisorBinaryConfiguration
+org.apache.ignite.internal.visor.node.VisorBinaryTypeConfiguration
+org.apache.ignite.internal.visor.node.VisorCacheKeyConfiguration
+org.apache.ignite.internal.visor.node.VisorExecutorConfiguration
 org.apache.ignite.internal.visor.node.VisorExecutorServiceConfiguration
 org.apache.ignite.internal.visor.node.VisorGridConfiguration
+org.apache.ignite.internal.visor.node.VisorHadoopConfiguration
 org.apache.ignite.internal.visor.node.VisorIgfsConfiguration
 org.apache.ignite.internal.visor.node.VisorLifecycleConfiguration
 org.apache.ignite.internal.visor.node.VisorMemoryConfiguration
@@ -1825,6 +1842,7 @@ org.apache.ignite.internal.visor.node.VisorNodeGcTask$VisorNodeGcJob
 org.apache.ignite.internal.visor.node.VisorNodeGcTaskResult
 org.apache.ignite.internal.visor.node.VisorNodePingTask
 org.apache.ignite.internal.visor.node.VisorNodePingTask$VisorNodePingJob
+org.apache.ignite.internal.visor.node.VisorNodePingTaskArg
 org.apache.ignite.internal.visor.node.VisorNodePingTaskResult
 org.apache.ignite.internal.visor.node.VisorNodeRestartTask
 org.apache.ignite.internal.visor.node.VisorNodeRestartTask$VisorNodesRestartJob
@@ -1833,22 +1851,27 @@ org.apache.ignite.internal.visor.node.VisorNodeStopTask$VisorNodesStopJob
 org.apache.ignite.internal.visor.node.VisorNodeSuppressedErrors
 org.apache.ignite.internal.visor.node.VisorNodeSuppressedErrorsTask
 org.apache.ignite.internal.visor.node.VisorNodeSuppressedErrorsTask$VisorNodeSuppressedErrorsJob
+org.apache.ignite.internal.visor.node.VisorNodeSuppressedErrorsTaskArg
+org.apache.ignite.internal.visor.node.VisorOdbcConfiguration
 org.apache.ignite.internal.visor.node.VisorPeerToPeerConfiguration
 org.apache.ignite.internal.visor.node.VisorRestConfiguration
 org.apache.ignite.internal.visor.node.VisorSegmentationConfiguration
+org.apache.ignite.internal.visor.node.VisorServiceConfiguration
 org.apache.ignite.internal.visor.node.VisorSpiDescription
 org.apache.ignite.internal.visor.node.VisorSpisConfiguration
 org.apache.ignite.internal.visor.node.VisorSuppressedError
 org.apache.ignite.internal.visor.node.VisorTransactionConfiguration
-org.apache.ignite.internal.visor.query.VisorQueryArg
 org.apache.ignite.internal.visor.query.VisorQueryCancelTask
 org.apache.ignite.internal.visor.query.VisorQueryCancelTask$VisorCancelQueriesJob
+org.apache.ignite.internal.visor.query.VisorQueryCancelTaskArg
 org.apache.ignite.internal.visor.query.VisorQueryCleanupTask
 org.apache.ignite.internal.visor.query.VisorQueryCleanupTask$VisorQueryCleanupJob
+org.apache.ignite.internal.visor.query.VisorQueryCleanupTaskArg
 org.apache.ignite.internal.visor.query.VisorQueryConfiguration
 org.apache.ignite.internal.visor.query.VisorQueryDetailMetrics
 org.apache.ignite.internal.visor.query.VisorQueryDetailMetricsCollectorTask
 org.apache.ignite.internal.visor.query.VisorQueryDetailMetricsCollectorTask$VisorCacheQueryDetailMetricsCollectorJob
+org.apache.ignite.internal.visor.query.VisorQueryDetailMetricsCollectorTaskArg
 org.apache.ignite.internal.visor.query.VisorQueryEntity
 org.apache.ignite.internal.visor.query.VisorQueryField
 org.apache.ignite.internal.visor.query.VisorQueryIndex
@@ -1861,6 +1884,7 @@ org.apache.ignite.internal.visor.query.VisorQueryResetDetailMetricsTask
 org.apache.ignite.internal.visor.query.VisorQueryResetDetailMetricsTask$VisorCacheResetQueryDetailMetricsJob
 org.apache.ignite.internal.visor.query.VisorQueryResetMetricsTask
 org.apache.ignite.internal.visor.query.VisorQueryResetMetricsTask$VisorQueryResetMetricsJob
+org.apache.ignite.internal.visor.query.VisorQueryResetMetricsTaskArg
 org.apache.ignite.internal.visor.query.VisorQueryResult
 org.apache.ignite.internal.visor.query.VisorQueryScanRegexFilter
 org.apache.ignite.internal.visor.query.VisorQueryTask
@@ -1868,13 +1892,14 @@ org.apache.ignite.internal.visor.query.VisorQueryTask$VisorQueryJob
 org.apache.ignite.internal.visor.query.VisorQueryTaskArg
 org.apache.ignite.internal.visor.query.VisorRunningQueriesCollectorTask
 org.apache.ignite.internal.visor.query.VisorRunningQueriesCollectorTask$VisorCollectRunningQueriesJob
+org.apache.ignite.internal.visor.query.VisorRunningQueriesCollectorTaskArg
 org.apache.ignite.internal.visor.query.VisorRunningQuery
-org.apache.ignite.internal.visor.query.VisorScanQueryArg
 org.apache.ignite.internal.visor.query.VisorScanQueryTask
 org.apache.ignite.internal.visor.query.VisorScanQueryTask$VisorScanQueryJob
 org.apache.ignite.internal.visor.query.VisorScanQueryTaskArg
 org.apache.ignite.internal.visor.service.VisorCancelServiceTask
 org.apache.ignite.internal.visor.service.VisorCancelServiceTask$VisorCancelServiceJob
+org.apache.ignite.internal.visor.service.VisorCancelServiceTaskArg
 org.apache.ignite.internal.visor.service.VisorServiceDescriptor
 org.apache.ignite.internal.visor.service.VisorServiceTask
 org.apache.ignite.internal.visor.service.VisorServiceTask$VisorServiceJob
@@ -1972,11 +1997,11 @@ org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryDiscardMessage
 org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryDuplicateIdMessage
 org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryHandshakeRequest
 org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryHandshakeResponse
+org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryJoinRequestMessage
+org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryLoopbackProblemMessage
 org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryMetricsUpdateMessage
 org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryMetricsUpdateMessage$MetricsSet
 org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryMetricsUpdateMessage$MetricsSet$1
-org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryJoinRequestMessage
-org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryLoopbackProblemMessage
 org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddFinishedMessage
 org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddedMessage
 org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeFailedMessage

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryConfigurationCustomSerializerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryConfigurationCustomSerializerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryConfigurationCustomSerializerSelfTest.java
index 1da2967..cedbbaf 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryConfigurationCustomSerializerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryConfigurationCustomSerializerSelfTest.java
@@ -36,6 +36,7 @@ import org.apache.ignite.internal.client.GridClientProtocol;
 import org.apache.ignite.internal.client.balancer.GridClientRoundRobinBalancer;
 import org.apache.ignite.internal.visor.VisorTaskArgument;
 import org.apache.ignite.internal.visor.node.VisorNodePingTask;
+import org.apache.ignite.internal.visor.node.VisorNodePingTaskArg;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
 /**
@@ -100,7 +101,8 @@ public class BinaryConfigurationCustomSerializerSelfTest extends GridCommonAbstr
         GridClient client = GridClientFactory.start(clnCfg);
 
         // Execute some task.
-        client.compute().execute(VisorNodePingTask.class.getName(), new VisorTaskArgument<>(nid, nid, false));
+        client.compute().execute(VisorNodePingTask.class.getName(),
+            new VisorTaskArgument<>(nid, new VisorNodePingTaskArg(nid), false));
 
         GridClientFactory.stop(client.id(), false);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/internal/GridInternalTasksLoadBalancingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/internal/GridInternalTasksLoadBalancingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/internal/GridInternalTasksLoadBalancingSelfTest.java
index f9d74b4..26f4a3b 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/internal/GridInternalTasksLoadBalancingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/internal/GridInternalTasksLoadBalancingSelfTest.java
@@ -34,6 +34,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.visor.VisorTaskArgument;
 import org.apache.ignite.internal.visor.node.VisorNodePingTask;
+import org.apache.ignite.internal.visor.node.VisorNodePingTaskArg;
 import org.apache.ignite.internal.visor.node.VisorNodePingTaskResult;
 import org.apache.ignite.spi.IgniteSpiAdapter;
 import org.apache.ignite.spi.IgniteSpiException;
@@ -93,7 +94,8 @@ public class GridInternalTasksLoadBalancingSelfTest extends GridCommonAbstractTe
         UUID nid = ignite.cluster().localNode().id();
 
         VisorNodePingTaskResult ping = ignite.compute()
-            .execute(VisorNodePingTask.class.getName(), new VisorTaskArgument<>(nid, nid, false));
+            .execute(VisorNodePingTask.class.getName(),
+                new VisorTaskArgument<>(nid, new VisorNodePingTaskArg(nid), false));
 
         assertTrue(ping.isAlive());
 
@@ -123,7 +125,8 @@ public class GridInternalTasksLoadBalancingSelfTest extends GridCommonAbstractTe
         UUID nid = ignite.cluster().localNode().id();
 
         VisorNodePingTaskResult ping = ignite.compute()
-            .execute(VisorNodePingTask.class.getName(), new VisorTaskArgument<>(nid, nid, false));
+            .execute(VisorNodePingTask.class.getName(),
+                new VisorTaskArgument<>(nid, new VisorNodePingTaskArg(nid), false));
 
         assertTrue(ping.isAlive());
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/ack/VisorAckCommand.scala
----------------------------------------------------------------------
diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/ack/VisorAckCommand.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/ack/VisorAckCommand.scala
index 2e3659d..13c343a 100644
--- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/ack/VisorAckCommand.scala
+++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/ack/VisorAckCommand.scala
@@ -22,8 +22,7 @@ import org.apache.ignite.internal.util.scala.impl
 import org.apache.ignite.visor.VisorTag
 import org.apache.ignite.visor.commands.common.VisorConsoleCommand
 import org.apache.ignite.visor.visor._
-
-import org.apache.ignite.internal.visor.misc.VisorAckTask
+import org.apache.ignite.internal.visor.misc.{VisorAckTask, VisorAckTaskArg}
 
 import scala.language.implicitConversions
 
@@ -93,7 +92,7 @@ class VisorAckCommand extends VisorConsoleCommand {
             adviseToConnect()
         else
             try {
-                executeMulti(classOf[VisorAckTask], msg)
+                executeMulti(classOf[VisorAckTask], new VisorAckTaskArg(msg))
             }
             catch {
                 case _: ClusterGroupEmptyException => scold("Topology is empty.")

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheClearCommand.scala
----------------------------------------------------------------------
diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheClearCommand.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheClearCommand.scala
index 517028a..96d0a86 100644
--- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheClearCommand.scala
+++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheClearCommand.scala
@@ -20,8 +20,7 @@ package org.apache.ignite.visor.commands.cache
 import org.apache.ignite.cluster.{ClusterGroupEmptyException, ClusterNode}
 import org.apache.ignite.visor.commands.common.VisorTextTable
 import org.apache.ignite.visor.visor._
-
-import org.apache.ignite.internal.visor.cache.VisorCacheClearTask
+import org.apache.ignite.internal.visor.cache.{VisorCacheClearTask, VisorCacheClearTaskArg}
 import org.apache.ignite.internal.visor.util.VisorTaskUtils._
 
 import scala.language.reflectiveCalls
@@ -103,7 +102,7 @@ class VisorCacheClearCommand {
 
             t #= ("Node ID8(@)", "Cache Size Before", "Cache Size After")
 
-            val res = executeOne(nid, classOf[VisorCacheClearTask], cacheName)
+            val res = executeOne(nid, classOf[VisorCacheClearTask], new VisorCacheClearTaskArg(cacheName))
 
             t += (nodeId8(nid), res.getSizeBefore, res.getSizeAfter)
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheResetCommand.scala
----------------------------------------------------------------------
diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheResetCommand.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheResetCommand.scala
index b59155b..4c4d21b 100644
--- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheResetCommand.scala
+++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheResetCommand.scala
@@ -18,7 +18,7 @@
 package org.apache.ignite.visor.commands.cache
 
 import org.apache.ignite.cluster.{ClusterGroupEmptyException, ClusterNode}
-import org.apache.ignite.internal.visor.cache.VisorCacheResetMetricsTask
+import org.apache.ignite.internal.visor.cache.{VisorCacheResetMetricsTask, VisorCacheResetMetricsTaskArg}
 import org.apache.ignite.internal.visor.util.VisorTaskUtils._
 import org.apache.ignite.visor.visor._
 
@@ -104,7 +104,7 @@ class VisorCacheResetCommand {
         }
 
         try {
-            executeRandom(grp, classOf[VisorCacheResetMetricsTask], cacheName)
+            executeRandom(grp, classOf[VisorCacheResetMetricsTask], new VisorCacheResetMetricsTaskArg(cacheName))
 
             println("Visor successfully reset metrics for cache: " + escapeName(cacheName))
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheStopCommand.scala
----------------------------------------------------------------------
diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheStopCommand.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheStopCommand.scala
index 22fb89d..185b452 100644
--- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheStopCommand.scala
+++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheStopCommand.scala
@@ -19,7 +19,7 @@ package org.apache.ignite.visor.commands.cache
 
 import org.apache.ignite.cluster.{ClusterGroupEmptyException, ClusterNode}
 import org.apache.ignite.visor.visor._
-import org.apache.ignite.internal.visor.cache.VisorCacheStopTask
+import org.apache.ignite.internal.visor.cache.{VisorCacheStopTask, VisorCacheStopTaskArg}
 import org.apache.ignite.internal.visor.util.VisorTaskUtils._
 
 /**
@@ -106,7 +106,7 @@ class VisorCacheStopCommand {
         ask(s"Are you sure you want to stop cache: ${escapeName(cacheName)}? (y/n) [$dflt]: ", dflt) match {
             case "y" | "Y" =>
                 try {
-                    executeRandom(grp, classOf[VisorCacheStopTask], cacheName)
+                    executeRandom(grp, classOf[VisorCacheStopTask], new VisorCacheStopTaskArg(cacheName))
 
                     println("Visor successfully stop cache: " + escapeName(cacheName))
                 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala
----------------------------------------------------------------------
diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala
index 75c34ab..299c300 100644
--- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala
+++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/config/VisorConfigurationCommand.scala
@@ -162,7 +162,7 @@ class VisorConfigurationCommand extends VisorConsoleCommand {
         cmnT += ("Grid name", escapeName(basic.getIgniteInstanceName))
         cmnT += ("Ignite home", safe(basic.getGgHome))
         cmnT += ("Localhost", safe(basic.getLocalHost))
-        cmnT += ("Node ID", safe(basic.getNodeId))
+        cmnT += ("Consistent ID", safe(basic.getConsistentId))
         cmnT += ("Marshaller", basic.getMarshaller)
         cmnT += ("Deployment mode", safe(basic.getDeploymentMode))
         cmnT += ("ClientMode", javaBoolToStr(basic.isClientMode))

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala
----------------------------------------------------------------------
diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala
index e1dd14e..87ca5b1 100644
--- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala
+++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/visor.scala
@@ -272,7 +272,8 @@ object visor extends VisorTag {
     def groupForDataNode(node: Option[ClusterNode], cacheName: String) = {
         val grp = node match {
             case Some(n) => ignite.cluster.forNode(n)
-            case None => ignite.cluster.forNodeIds(executeRandom(classOf[VisorCacheNodesTask], cacheName))
+            case None => ignite.cluster.forNodeIds(executeRandom(classOf[VisorCacheNodesTask],
+                new VisorCacheNodesTaskArg(cacheName)))
         }
 
         if (grp.nodes().isEmpty)
@@ -1832,7 +1833,7 @@ object visor extends VisorTag {
     @throws[ClusterGroupEmptyException]("In case of empty topology.")
     def cacheConfigurations(nid: UUID): JavaCollection[VisorCacheConfiguration] =
         executeOne(nid, classOf[VisorCacheConfigurationCollectorTask],
-            null.asInstanceOf[JavaCollection[IgniteUuid]]).values()
+            new VisorCacheConfigurationCollectorTaskArg(null.asInstanceOf[JavaCollection[IgniteUuid]])).values()
 
     /**
      * Asks user to select a node from the list.

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/web-console/backend/app/browsersHandler.js
----------------------------------------------------------------------
diff --git a/modules/web-console/backend/app/browsersHandler.js b/modules/web-console/backend/app/browsersHandler.js
index d77d9ce..9f31046 100644
--- a/modules/web-console/backend/app/browsersHandler.js
+++ b/modules/web-console/backend/app/browsersHandler.js
@@ -202,8 +202,7 @@ module.exports.factory = (_, socketio, configure, errors) => {
             this.registerVisorTask('querySql', internalVisor('query.VisorQueryTask'), internalVisor('query.VisorQueryTaskArg'));
             this.registerVisorTask('queryScan', internalVisor('query.VisorScanQueryTask'), internalVisor('query.VisorScanQueryTaskArg'));
             this.registerVisorTask('queryFetch', internalVisor('query.VisorQueryNextPageTask'), internalVisor('query.VisorQueryNextPageTaskArg'));
-            this.registerVisorTask('queryClose', internalVisor('query.VisorQueryCleanupTask'),
-                'java.util.Map', 'java.util.UUID', 'java.util.Set');
+            this.registerVisorTask('queryClose', internalVisor('query.VisorQueryCleanupTask'), internalVisor('query.VisorQueryCleanupTaskArg'));
 
             // Return command result from grid to browser.
             sock.on('node:visor', (clusterId, taskId, nids, ...args) => {

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/web-console/backend/app/mongo.js
----------------------------------------------------------------------
diff --git a/modules/web-console/backend/app/mongo.js b/modules/web-console/backend/app/mongo.js
index 3038ad2..c68e4f8 100644
--- a/modules/web-console/backend/app/mongo.js
+++ b/modules/web-console/backend/app/mongo.js
@@ -390,9 +390,7 @@ module.exports.factory = function(passportMongo, settings, pluginMongo, mongoose
             networkTimeout: Number,
             joinTimeout: Number,
             threadPriority: Number,
-            heartbeatFrequency: Number,
-            maxMissedHeartbeats: Number,
-            maxMissedClientHeartbeats: Number,
+            metricsUpdateFrequency: Number,
             topHistorySize: Number,
             listener: String,
             dataExchange: String,

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/agent/AgentManager.service.js b/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
index 3b39463..4c388f1 100644
--- a/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
+++ b/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
@@ -470,7 +470,8 @@ export default class IgniteAgentManager {
      * @returns {Promise}
      */
     queryClose(nid, queryId) {
-        return this.visorTask('queryClose', nid, queryId);
+        return this.visorTask('queryClose', nid, 'java.util.Map', 'java.util.UUID', 'java.util.Collection',
+            nid + '=' + queryId);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
index a76d486..434a4b4 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
@@ -158,7 +158,7 @@ export default class IgniteConfigurationGenerator {
         if (client)
             cfg.prop('boolean', 'clientMode', true);
 
-        cfg.stringProperty('name', 'gridName')
+        cfg.stringProperty('name', 'igniteInstanceName')
             .stringProperty('localHost');
 
         if (_.isNil(cluster.discovery))
@@ -906,6 +906,8 @@ export default class IgniteConfigurationGenerator {
 
     // Generate discovery group.
     static clusterDiscovery(discovery, cfg = this.igniteConfigurationBean(), discoSpi = this.discoveryConfigurationBean(discovery)) {
+        // TODO IGNITE-4988 cfg.intProperty('metricsUpdateFrequency')
+
         discoSpi.stringProperty('localAddress')
             .intProperty('localPort')
             .intProperty('localPortRange')
@@ -916,9 +918,6 @@ export default class IgniteConfigurationGenerator {
             .intProperty('networkTimeout')
             .intProperty('joinTimeout')
             .intProperty('threadPriority')
-            .intProperty('heartbeatFrequency')
-            .intProperty('maxMissedHeartbeats')
-            .intProperty('maxMissedClientHeartbeats')
             .intProperty('topHistorySize')
             .emptyBeanProperty('listener')
             .emptyBeanProperty('dataExchange')

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/web-console/frontend/app/modules/configuration/generator/PlatformGenerator.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/configuration/generator/PlatformGenerator.js b/modules/web-console/frontend/app/modules/configuration/generator/PlatformGenerator.js
index 807303d..233ecb2 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/PlatformGenerator.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/PlatformGenerator.js
@@ -184,6 +184,8 @@ export default ['JavaTypes', 'igniteClusterPlatformDefaults', 'igniteCachePlatfo
         // Generate discovery group.
         static clusterDiscovery(discovery, cfg = this.igniteConfigurationBean()) {
             if (discovery) {
+                // TODO IGNITE-4988 cfg.intProperty('metricsUpdateFrequency')
+
                 let discoveryCfg = cfg.findProperty('discovery');
 
                 if (_.isNil(discoveryCfg)) {
@@ -200,9 +202,6 @@ export default ['JavaTypes', 'igniteClusterPlatformDefaults', 'igniteCachePlatfo
                     .intProperty('networkTimeout')
                     .intProperty('joinTimeout')
                     .intProperty('threadPriority')
-                    .intProperty('heartbeatFrequency')
-                    .intProperty('maxMissedHeartbeats')
-                    .intProperty('maxMissedClientHeartbeats')
                     .intProperty('topHistorySize')
                     .intProperty('reconnectCount')
                     .intProperty('statisticsPrintFrequency')

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js b/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js
index 60f52a6..5ed90c5 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js
@@ -26,9 +26,7 @@ const DFLT_CLUSTER = {
         networkTimeout: 5000,
         joinTimeout: 0,
         threadPriority: 10,
-        heartbeatFrequency: 2000,
-        maxMissedHeartbeats: 1,
-        maxMissedClientHeartbeats: 5,
+        metricsUpdateFrequency: 2000,
         topHistorySize: 1000,
         reconnectCount: 10,
         statisticsPrintFrequency: 0,

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/web-console/frontend/app/modules/sql/sql.controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/sql/sql.controller.js b/modules/web-console/frontend/app/modules/sql/sql.controller.js
index bb94b0c..b3ca91b 100644
--- a/modules/web-console/frontend/app/modules/sql/sql.controller.js
+++ b/modules/web-console/frontend/app/modules/sql/sql.controller.js
@@ -1303,7 +1303,7 @@ export default ['$rootScope', '$scope', '$http', '$q', '$timeout', '$interval',
         const _closeOldQuery = (paragraph) => {
             const nid = paragraph.resNodeId;
 
-            if (paragraph.queryId && _.find($scope.caches, ({nodes}) => _.includes(nodes, nid)))
+            if (paragraph.queryId && _.find($scope.caches, ({nodes}) => _.find(nodes, {nid: nid.toUpperCase()})))
                 return agentMgr.queryClose(nid, paragraph.queryId);
 
             return $q.when();

http://git-wip-us.apache.org/repos/asf/ignite/blob/6a435b17/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
index af9d875..71d9974 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
@@ -56,13 +56,7 @@ include /app/helpers/jade/mixins
                 .settings-row
                     +number('Thread priority:', `${model}.threadPriority`, '"threadPriority"', 'true', '10', '1', 'Thread priority for all threads started by SPI')
                 .settings-row
-                    +number('Heartbeat frequency:', `${model}.heartbeatFrequency`, '"heartbeatFrequency"', 'true', '2000', '1', 'Heartbeat messages issuing frequency')
-                .settings-row
-                    +number('Max heartbeats miss w/o init:', `${model}.maxMissedHeartbeats`, '"maxMissedHeartbeats"', 'true', '1', '1',
-                        'Max heartbeats count node can miss without initiating status check')
-                .settings-row
-                    +number('Max missed client heartbeats:', `${model}.maxMissedClientHeartbeats`, '"maxMissedClientHeartbeats"', 'true', '5', '1',
-                        'Max heartbeats count node can miss without failing client node')
+                    +number('Metrics update frequency:', `${model}.metricsUpdateFrequency`, '"metricsUpdateFrequency"', 'true', '2000', '1', 'Metrics update messages issuing frequency')
                 .settings-row
                     +number('Topology history:', `${model}.topHistorySize`, '"topHistorySize"', 'true', '1000', '0', 'Size of topology snapshots history')
                 .settings-row