You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2017/04/06 08:01:22 UTC

[2/8] ignite git commit: GG-11732 Merged with master.

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java
index bd59690..510129b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSpisConfiguration.java
@@ -17,15 +17,17 @@
 
 package org.apache.ignite.internal.visor.node;
 
-import java.io.Serializable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.LessNamingBean;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.visor.VisorDataTransferObject;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.spi.IgniteSpi;
 import org.apache.ignite.spi.IgniteSpiConfiguration;
@@ -36,39 +38,43 @@ import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactObject
 /**
  * Data transfer object for node SPIs configuration properties.
  */
-public class VisorSpisConfiguration implements Serializable, LessNamingBean {
+public class VisorSpisConfiguration extends VisorDataTransferObject {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** Discovery SPI. */
-    private IgniteBiTuple<String, Map<String, Object>> discoSpi;
+    private VisorSpiDescription discoSpi;
 
     /** Communication SPI. */
-    private IgniteBiTuple<String, Map<String, Object>> commSpi;
+    private VisorSpiDescription commSpi;
 
     /** Event storage SPI. */
-    private IgniteBiTuple<String, Map<String, Object>> evtSpi;
+    private VisorSpiDescription evtSpi;
 
     /** Collision SPI. */
-    private IgniteBiTuple<String, Map<String, Object>> colSpi;
+    private VisorSpiDescription colSpi;
 
     /** Deployment SPI. */
-    private IgniteBiTuple<String, Map<String, Object>> deploySpi;
+    private VisorSpiDescription deploySpi;
 
     /** Checkpoint SPIs. */
-    private IgniteBiTuple<String, Map<String, Object>>[] cpSpis;
+    private VisorSpiDescription[] cpSpis;
 
     /** Failover SPIs. */
-    private IgniteBiTuple<String, Map<String, Object>>[] failSpis;
+    private VisorSpiDescription[] failSpis;
 
     /** Load balancing SPIs. */
-    private IgniteBiTuple<String, Map<String, Object>>[] loadBalancingSpis;
-
-    /** Swap space SPIs. */
-    private IgniteBiTuple<String, Map<String, Object>> swapSpaceSpis;
+    private VisorSpiDescription[] loadBalancingSpis;
 
     /** Indexing SPIs. */
-    private IgniteBiTuple<String, Map<String, Object>>[] indexingSpis;
+    private VisorSpiDescription[] indexingSpis;
+
+    /**
+     * Default constructor.
+     */
+    public VisorSpisConfiguration() {
+        // No-op.
+    }
 
     /**
      * Collects SPI information based on GridSpiConfiguration-annotated methods.
@@ -77,7 +83,7 @@ public class VisorSpisConfiguration implements Serializable, LessNamingBean {
      * @param spi SPI to collect information on.
      * @return Tuple where first component is SPI name and map with properties as second.
      */
-    private static IgniteBiTuple<String, Map<String, Object>> collectSpiInfo(IgniteSpi spi) {
+    private static VisorSpiDescription collectSpiInfo(IgniteSpi spi) {
         Class<? extends IgniteSpi> spiCls = spi.getClass();
 
         HashMap<String, Object> res = new HashMap<>();
@@ -123,114 +129,129 @@ public class VisorSpisConfiguration implements Serializable, LessNamingBean {
             }
         }
 
-        return new IgniteBiTuple<String, Map<String, Object>>(spi.getName(), res);
+        return new VisorSpiDescription(spi.getName(), res);
     }
 
     /**
      * @param spis Array of spi to process.
      * @return Tuple where first component is SPI name and map with properties as second.
      */
-    private static IgniteBiTuple<String, Map<String, Object>>[] collectSpiInfo(IgniteSpi[] spis) {
-        IgniteBiTuple[] res = new IgniteBiTuple[spis.length];
+    private static VisorSpiDescription[] collectSpiInfo(IgniteSpi[] spis) {
+        VisorSpiDescription[] res = new VisorSpiDescription[spis.length];
 
         for (int i = 0; i < spis.length; i++)
             res[i] = collectSpiInfo(spis[i]);
 
-        return (IgniteBiTuple<String, Map<String, Object>>[])res;
+        return res;
     }
 
     /**
+     * Create data transfer object for node SPIs configuration properties.
+     *
      * @param c Grid configuration.
-     * @return Data transfer object for node SPIs configuration properties.
      */
-    public static VisorSpisConfiguration from(IgniteConfiguration c) {
-        VisorSpisConfiguration cfg = new VisorSpisConfiguration();
-
-        cfg.discoSpi = collectSpiInfo(c.getDiscoverySpi());
-        cfg.commSpi = collectSpiInfo(c.getCommunicationSpi());
-        cfg.evtSpi = collectSpiInfo(c.getEventStorageSpi());
-        cfg.colSpi = collectSpiInfo(c.getCollisionSpi());
-        cfg.deploySpi = collectSpiInfo(c.getDeploymentSpi());
-        cfg.cpSpis = collectSpiInfo(c.getCheckpointSpi());
-        cfg.failSpis = collectSpiInfo(c.getFailoverSpi());
-        cfg.loadBalancingSpis = collectSpiInfo(c.getLoadBalancingSpi());
-        cfg.swapSpaceSpis = collectSpiInfo(c.getSwapSpaceSpi());
-        cfg.indexingSpis = F.asArray(collectSpiInfo(c.getIndexingSpi()));
-
-        return cfg;
+    public VisorSpisConfiguration(IgniteConfiguration c) {
+        discoSpi = collectSpiInfo(c.getDiscoverySpi());
+        commSpi = collectSpiInfo(c.getCommunicationSpi());
+        evtSpi = collectSpiInfo(c.getEventStorageSpi());
+        colSpi = collectSpiInfo(c.getCollisionSpi());
+        deploySpi = collectSpiInfo(c.getDeploymentSpi());
+        cpSpis = collectSpiInfo(c.getCheckpointSpi());
+        failSpis = collectSpiInfo(c.getFailoverSpi());
+        loadBalancingSpis = collectSpiInfo(c.getLoadBalancingSpi());
+        indexingSpis = F.asArray(collectSpiInfo(c.getIndexingSpi()));
     }
 
     /**
      * @return Discovery SPI.
      */
-    public IgniteBiTuple<String, Map<String, Object>> discoverySpi() {
+    public VisorSpiDescription getDiscoverySpi() {
         return discoSpi;
     }
 
     /**
      * @return Communication SPI.
      */
-    public IgniteBiTuple<String, Map<String, Object>> communicationSpi() {
+    public VisorSpiDescription getCommunicationSpi() {
         return commSpi;
     }
 
     /**
      * @return Event storage SPI.
      */
-    public IgniteBiTuple<String, Map<String, Object>> eventStorageSpi() {
+    public VisorSpiDescription getEventStorageSpi() {
         return evtSpi;
     }
 
     /**
      * @return Collision SPI.
      */
-    public IgniteBiTuple<String, Map<String, Object>> collisionSpi() {
+    public VisorSpiDescription getCollisionSpi() {
         return colSpi;
     }
 
     /**
      * @return Deployment SPI.
      */
-    public IgniteBiTuple<String, Map<String, Object>> deploymentSpi() {
+    public VisorSpiDescription getDeploymentSpi() {
         return deploySpi;
     }
 
     /**
      * @return Checkpoint SPIs.
      */
-    public IgniteBiTuple<String, Map<String, Object>>[] checkpointSpis() {
+    public VisorSpiDescription[] getCheckpointSpis() {
         return cpSpis;
     }
 
     /**
      * @return Failover SPIs.
      */
-    public IgniteBiTuple<String, Map<String, Object>>[] failoverSpis() {
+    public VisorSpiDescription[] getFailoverSpis() {
         return failSpis;
     }
 
     /**
      * @return Load balancing SPIs.
      */
-    public IgniteBiTuple<String, Map<String, Object>>[] loadBalancingSpis() {
+    public VisorSpiDescription[] getLoadBalancingSpis() {
         return loadBalancingSpis;
     }
 
     /**
-     * @return Swap space SPIs.
-     */
-    public IgniteBiTuple<String, Map<String, Object>> swapSpaceSpi() {
-        return swapSpaceSpis;
-    }
-
-    /**
      * @return Indexing SPIs.
      */
-    public IgniteBiTuple<String, Map<String, Object>>[] indexingSpis() {
+    public VisorSpiDescription[] getIndexingSpis() {
         return indexingSpis;
     }
 
     /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        out.writeObject(discoSpi);
+        out.writeObject(commSpi);
+        out.writeObject(evtSpi);
+        out.writeObject(colSpi);
+        out.writeObject(deploySpi);
+        out.writeObject(cpSpis);
+        out.writeObject(failSpis);
+        out.writeObject(loadBalancingSpis);
+        out.writeObject(indexingSpis);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws IOException, ClassNotFoundException {
+        discoSpi = (VisorSpiDescription)in.readObject();
+        commSpi = (VisorSpiDescription)in.readObject();
+        evtSpi = (VisorSpiDescription)in.readObject();
+        colSpi = (VisorSpiDescription)in.readObject();
+        deploySpi = (VisorSpiDescription)in.readObject();
+        cpSpis = (VisorSpiDescription[])in.readObject();
+        failSpis = (VisorSpiDescription[])in.readObject();
+        loadBalancingSpis = (VisorSpiDescription[])in.readObject();
+        indexingSpis = (VisorSpiDescription[])in.readObject();
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(VisorSpisConfiguration.class, this);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSuppressedError.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSuppressedError.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSuppressedError.java
new file mode 100644
index 0000000..32f5644
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorSuppressedError.java
@@ -0,0 +1,147 @@
+/*
+ * 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.node;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import org.apache.ignite.internal.util.tostring.GridToStringExclude;
+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.internal.visor.util.VisorExceptionWrapper;
+
+/**
+ * Data transfer object for suppressed errors.
+ */
+public class VisorSuppressedError extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** */
+    private long order;
+
+    /** */
+    @GridToStringExclude
+    private VisorExceptionWrapper error;
+
+    /** */
+    private long threadId;
+
+    /** */
+    private String threadName;
+
+    /** */
+    private long time;
+
+    /** */
+    private String msg;
+
+    /**
+     * Default constructor.
+     */
+    public VisorSuppressedError() {
+        // No-op.
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param order Locally unique ID that is atomically incremented for each new error.
+     * @param error Suppressed error.
+     * @param msg Message that describe reason why error was suppressed.
+     * @param threadId Thread ID.
+     * @param threadName Thread name.
+     * @param time Occurrence time.
+     */
+    public VisorSuppressedError(long order, VisorExceptionWrapper error, String msg, long threadId, String threadName, long time) {
+        this.order = order;
+        this.error = error;
+        this.threadId = threadId;
+        this.threadName = threadName;
+        this.time = time;
+        this.msg = msg;
+    }
+
+    /**
+     * @return Locally unique ID that is atomically incremented for each new error.
+     */
+    public long getOrder() {
+        return order;
+    }
+
+    /**
+     * @return Gets message that describe reason why error was suppressed.
+     */
+    public String getMessage() {
+        return msg;
+    }
+
+    /**
+     * @return Suppressed error.
+     */
+    public VisorExceptionWrapper getError() {
+        return error;
+    }
+
+    /**
+     * @return Gets thread ID.
+     */
+    public long getThreadId() {
+        return threadId;
+    }
+
+    /**
+     * @return Gets thread name.
+     */
+    public String getThreadName() {
+        return threadName;
+    }
+
+    /**
+     * @return Gets time.
+     */
+    public long getTime() {
+        return time;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        out.writeLong(order);
+        out.writeObject(error);
+        out.writeLong(threadId);
+        U.writeString(out, threadName);
+        out.writeLong(time);
+        U.writeString(out, msg);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws IOException, ClassNotFoundException {
+        order = in.readLong();
+        error = (VisorExceptionWrapper)in.readObject();
+        threadId = in.readLong();
+        threadName= U.readString(in);
+        time = in.readLong();
+        msg = U.readString(in);
+    }
+
+    /** {@inheritDoc} */
+    public String toString() {
+        return S.toString(VisorSuppressedError.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java
index 6855c43..063e754 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorTransactionConfiguration.java
@@ -17,28 +17,33 @@
 
 package org.apache.ignite.internal.visor.node;
 
-import java.io.Serializable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import org.apache.ignite.configuration.TransactionConfiguration;
-import org.apache.ignite.internal.LessNamingBean;
 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.transactions.TransactionConcurrency;
 import org.apache.ignite.transactions.TransactionIsolation;
 
+import static org.apache.ignite.internal.visor.util.VisorTaskUtils.compactClass;
+
 /**
  * Data transfer object for transaction configuration.
  */
-public class VisorTransactionConfiguration implements Serializable, LessNamingBean {
+public class VisorTransactionConfiguration extends VisorDataTransferObject {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** Default cache concurrency. */
-    private TransactionConcurrency dfltTxConcurrency;
+    private TransactionConcurrency dfltConcurrency;
 
     /** Default transaction isolation. */
-    private TransactionIsolation dfltTxIsolation;
+    private TransactionIsolation dfltIsolation;
 
     /** Default transaction timeout. */
-    private long dfltTxTimeout;
+    private long dfltTimeout;
 
     /** Pessimistic tx log linger. */
     private int pessimisticTxLogLinger;
@@ -46,53 +51,62 @@ public class VisorTransactionConfiguration implements Serializable, LessNamingBe
     /** Pessimistic tx log size. */
     private int pessimisticTxLogSize;
 
-    /** Default transaction serializable flag. */
-    private boolean txSerEnabled;
+    /** Transaction manager factory. */
+    private String txMgrFactory;
 
     /**
-     * Create data transfer object for transaction configuration.
-     *
-     * @param src Transaction configuration.
-     * @return Data transfer object.
+     * Default constructor.
      */
-    public static VisorTransactionConfiguration from(TransactionConfiguration src) {
-        VisorTransactionConfiguration cfg = new VisorTransactionConfiguration();
+    public VisorTransactionConfiguration() {
+        // No-op.
+    }
 
-        cfg.dfltTxConcurrency = src.getDefaultTxConcurrency();
-        cfg.dfltTxIsolation = src.getDefaultTxIsolation();
-        cfg.dfltTxTimeout = src.getDefaultTxTimeout();
-        cfg.pessimisticTxLogLinger = src.getPessimisticTxLogLinger();
-        cfg.pessimisticTxLogSize = src.getPessimisticTxLogSize();
-        cfg.txSerEnabled = src.isTxSerializableEnabled();
+    /**
+     * Whether to use JTA {@code javax.transaction.Synchronization}
+     * instead of {@code javax.transaction.xa.XAResource}.
+     */
+    private boolean useJtaSync;
 
-        return cfg;
+    /**
+     * Create data transfer object for transaction configuration.
+     *
+     * @param cfg Transaction configuration.
+     */
+    public VisorTransactionConfiguration(TransactionConfiguration cfg) {
+        dfltConcurrency = cfg.getDefaultTxConcurrency();
+        dfltIsolation = cfg.getDefaultTxIsolation();
+        dfltTimeout = cfg.getDefaultTxTimeout();
+        pessimisticTxLogLinger = cfg.getPessimisticTxLogLinger();
+        pessimisticTxLogSize = cfg.getPessimisticTxLogSize();
+        txMgrFactory = compactClass(cfg.getTxManagerFactory());
+        useJtaSync = cfg.isUseJtaSynchronization();
     }
 
     /**
      * @return Default cache transaction concurrency.
      */
-    public TransactionConcurrency defaultTxConcurrency() {
-        return dfltTxConcurrency;
+    public TransactionConcurrency getDefaultTxConcurrency() {
+        return dfltConcurrency;
     }
 
     /**
      * @return Default cache transaction isolation.
      */
-    public TransactionIsolation defaultTxIsolation() {
-        return dfltTxIsolation;
+    public TransactionIsolation getDefaultTxIsolation() {
+        return dfltIsolation;
     }
 
     /**
      * @return Default transaction timeout.
      */
-    public long defaultTxTimeout() {
-        return dfltTxTimeout;
+    public long getDefaultTxTimeout() {
+        return dfltTimeout;
     }
 
     /**
      * @return Pessimistic log cleanup delay in milliseconds.
      */
-    public int pessimisticTxLogLinger() {
+    public int getPessimisticTxLogLinger() {
         return pessimisticTxLogLinger;
     }
 
@@ -104,10 +118,38 @@ public class VisorTransactionConfiguration implements Serializable, LessNamingBe
     }
 
     /**
-     * @return {@code True} if serializable transactions are enabled, {@code false} otherwise.
+     * @return Transaction manager factory.
      */
-    public boolean txSerializableEnabled() {
-        return txSerEnabled;
+    public String getTxManagerFactory() {
+        return txMgrFactory;
+    }
+
+    /**
+     * @return Whether to use JTA {@code javax.transaction.Synchronization}
+     *     instead of {@code javax.transaction.xa.XAResource}.
+     */
+    public boolean isUseJtaSync() {
+        return useJtaSync;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeEnum(out, dfltConcurrency);
+        U.writeEnum(out, dfltIsolation);
+        out.writeLong(dfltTimeout);
+        out.writeInt(pessimisticTxLogLinger);
+        out.writeInt(pessimisticTxLogSize);
+        U.writeString(out, txMgrFactory);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws IOException, ClassNotFoundException {
+        dfltConcurrency = TransactionConcurrency.fromOrdinal(in.readByte());
+        dfltIsolation = TransactionIsolation.fromOrdinal(in.readByte());
+        dfltTimeout = in.readLong();
+        pessimisticTxLogLinger = in.readInt();
+        pessimisticTxLogSize = in.readInt();
+        txMgrFactory = U.readString(in);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryArg.java
index 00587b4..934c0c4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryArg.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryArg.java
@@ -17,32 +17,44 @@
 
 package org.apache.ignite.internal.visor.query;
 
-import java.io.Serializable;
+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 VisorQueryTask}.
  */
-public class VisorQueryArg implements Serializable {
+public class VisorQueryArg extends VisorDataTransferObject {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** Cache name for query. */
-    private final String cacheName;
+    private String cacheName;
 
     /** Query text. */
-    private final String qryTxt;
+    private String qryTxt;
 
     /** Distributed joins enabled flag. */
-    private final boolean distributedJoins;
+    private boolean distributedJoins;
 
     /** Enforce join order flag. */
-    private final boolean enforceJoinOrder;
+    private boolean enforceJoinOrder;
 
     /** Flag whether to execute query locally. */
-    private final boolean loc;
+    private boolean loc;
 
     /** Result batch size. */
-    private final int pageSize;
+    private int pageSize;
+
+    /**
+     * Default constructor.
+     */
+    public VisorQueryArg() {
+        // No-op.
+    }
 
     /**
      * @param cacheName Cache name for query.
@@ -65,42 +77,67 @@ public class VisorQueryArg implements Serializable {
     /**
      * @return Cache name.
      */
-    public String cacheName() {
+    public String getCacheName() {
         return cacheName;
     }
 
     /**
      * @return Query txt.
      */
-    public String queryText() {
+    public String getQueryText() {
         return qryTxt;
     }
 
     /**
      * @return Distributed joins enabled flag.
      */
-    public boolean distributedJoins() {
+    public boolean isDistributedJoins() {
         return distributedJoins;
     }
 
     /**
      * @return Enforce join order flag.
      */
-    public boolean enforceJoinOrder() {
+    public boolean isEnforceJoinOrder() {
         return enforceJoinOrder;
     }
 
     /**
      * @return {@code true} if query should be executed locally.
      */
-    public boolean local() {
+    public boolean isLocal() {
         return loc;
     }
 
     /**
      * @return Page size.
      */
-    public int pageSize() {
+    public int getPageSize() {
         return pageSize;
     }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeString(out, cacheName);
+        U.writeString(out, qryTxt);
+        out.writeBoolean(distributedJoins);
+        out.writeBoolean(enforceJoinOrder);
+        out.writeBoolean(loc);
+        out.writeInt(pageSize);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws IOException, ClassNotFoundException {
+        cacheName = U.readString(in);
+        qryTxt = U.readString(in);
+        distributedJoins = in.readBoolean();
+        enforceJoinOrder = in.readBoolean();
+        loc = in.readBoolean();
+        pageSize = in.readInt();
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorQueryArg.class, this);
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryField.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryField.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryField.java
index 18b0d71..b91a8b3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryField.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryField.java
@@ -17,15 +17,18 @@
 
 package org.apache.ignite.internal.visor.query;
 
-import java.io.Serializable;
-import org.apache.ignite.internal.LessNamingBean;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import org.apache.ignite.internal.util.typedef.F;
 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;
 
 /**
  * Data transfer object for query field type description.
  */
-public class VisorQueryField implements Serializable, LessNamingBean {
+public class VisorQueryField extends VisorDataTransferObject {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -42,6 +45,13 @@ public class VisorQueryField implements Serializable, LessNamingBean {
     private String fieldTypeName;
 
     /**
+     * Default constructor.
+     */
+    public VisorQueryField() {
+        // No-op.
+    }
+
+    /**
      * Create data transfer object with given parameters.
      *
      * @param schemaName Schema name.
@@ -59,28 +69,28 @@ public class VisorQueryField implements Serializable, LessNamingBean {
     /**
      * @return Schema name.
      */
-    public String schemaName() {
+    public String getSchemaName() {
         return schemaName;
     }
 
     /**
      * @return Type name.
      */
-    public String typeName() {
+    public String getTypeName() {
         return typeName;
     }
 
     /**
      * @return Field name.
      */
-    public String fieldName() {
+    public String getFieldName() {
         return fieldName;
     }
 
     /**
      * @return Field type name.
      */
-    public String fieldTypeName() {
+    public String getFieldTypeName() {
         return fieldTypeName;
     }
 
@@ -88,7 +98,7 @@ public class VisorQueryField implements Serializable, LessNamingBean {
      * @param schema If {@code true} then add schema name to full name.
      * @return Fully qualified field name with type name and schema name.
      */
-    public String fullName(boolean schema) {
+    public String getFullName(boolean schema) {
         if (!F.isEmpty(typeName)) {
             if (schema && !F.isEmpty(schemaName))
                 return schemaName + "." + typeName + "." + fieldName;
@@ -100,6 +110,22 @@ public class VisorQueryField implements Serializable, LessNamingBean {
     }
 
     /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeString(out, schemaName);
+        U.writeString(out, typeName);
+        U.writeString(out, fieldName);
+        U.writeString(out, fieldTypeName);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws IOException, ClassNotFoundException {
+        schemaName = U.readString(in);
+        typeName = U.readString(in);
+        fieldName = U.readString(in);
+        fieldTypeName = U.readString(in);
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(VisorQueryField.class, this);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java
index 2a5905e..7f1adac 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java
@@ -38,7 +38,6 @@ import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.internal.visor.VisorJob;
 import org.apache.ignite.internal.visor.util.VisorExceptionWrapper;
 import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.lang.IgniteBiTuple;
 
 import static org.apache.ignite.internal.visor.query.VisorQueryUtils.RMV_DELAY;
 import static org.apache.ignite.internal.visor.query.VisorQueryUtils.SCAN_CACHE_WITH_FILTER;
@@ -53,7 +52,7 @@ import static org.apache.ignite.internal.visor.query.VisorQueryUtils.fetchSqlQue
 /**
  * Job for execute SCAN or SQL query and get first page of results.
  */
-public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? extends VisorExceptionWrapper, VisorQueryResultEx>> {
+public class VisorQueryJob extends VisorJob<VisorQueryArg, VisorQueryTaskResult> {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -87,8 +86,8 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten
     private QueryCursor<Cache.Entry<Object, Object>> scan(IgniteCache<Object, Object> c, VisorQueryArg arg,
         IgniteBiPredicate<Object, Object> filter) {
         ScanQuery<Object, Object> qry = new ScanQuery<>(filter);
-        qry.setPageSize(arg.pageSize());
-        qry.setLocal(arg.local());
+        qry.setPageSize(arg.getPageSize());
+        qry.setLocal(arg.isLocal());
 
         return c.withKeepBinary().query(qry);
     }
@@ -104,11 +103,11 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten
     }
 
     /** {@inheritDoc} */
-    @Override protected IgniteBiTuple<? extends VisorExceptionWrapper, VisorQueryResultEx> run(final VisorQueryArg arg) {
+    @Override protected VisorQueryTaskResult run(final VisorQueryArg arg) {
         try {
             UUID nid = ignite.localNode().id();
 
-            String qryTxt = arg.queryText();
+            String qryTxt = arg.getQueryText();
 
             boolean scan = qryTxt == null;
 
@@ -121,7 +120,7 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten
             // Generate query ID to store query cursor in node local storage.
             String qryId = (scanAny ? SCAN_QRY_NAME : SQL_QRY_NAME) + "-" + UUID.randomUUID();
 
-            IgniteCache<Object, Object> c = cache(arg.cacheName());
+            IgniteCache<Object, Object> c = cache(arg.getCacheName());
 
             if (scanAny) {
                 long start = U.currentTimeMillis();
@@ -131,15 +130,16 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten
                 if (scanWithFilter) {
                     boolean caseSensitive = qryTxt.startsWith(SCAN_CACHE_WITH_FILTER_CASE_SENSITIVE);
 
-                    String ptrn = qryTxt.substring(
-                        caseSensitive ? SCAN_CACHE_WITH_FILTER_CASE_SENSITIVE.length() : SCAN_CACHE_WITH_FILTER.length());
+                    String ptrn = qryTxt.substring(caseSensitive
+                        ? SCAN_CACHE_WITH_FILTER_CASE_SENSITIVE.length()
+                        : SCAN_CACHE_WITH_FILTER.length());
 
                     filter = new VisorQueryScanSubstringFilter(caseSensitive, ptrn);
                 }
 
                 VisorQueryCursor<Cache.Entry<Object, Object>> cur = new VisorQueryCursor<>(near ? near(c) : scan(c, arg, filter));
 
-                List<Object[]> rows = fetchScanQueryRows(cur, arg.pageSize());
+                List<Object[]> rows = fetchScanQueryRows(cur, arg.getPageSize());
 
                 long duration = U.currentTimeMillis() - start; // Scan duration + fetch duration.
 
@@ -153,15 +153,15 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten
                 else
                     cur.close();
 
-                return new IgniteBiTuple<>(null, new VisorQueryResultEx(nid, qryId, SCAN_COL_NAMES, rows, hasNext,
+                return new VisorQueryTaskResult(null, new VisorQueryResultEx(nid, qryId, SCAN_COL_NAMES, rows, hasNext,
                     duration));
             }
             else {
-                SqlFieldsQuery qry = new SqlFieldsQuery(arg.queryText());
-                qry.setPageSize(arg.pageSize());
-                qry.setDistributedJoins(arg.distributedJoins());
-                qry.setEnforceJoinOrder(arg.enforceJoinOrder());
-                qry.setLocal(arg.local());
+                SqlFieldsQuery qry = new SqlFieldsQuery(arg.getQueryText());
+                qry.setPageSize(arg.getPageSize());
+                qry.setLocal(arg.isLocal());
+                qry.setDistributedJoins(arg.isDistributedJoins());
+                qry.setEnforceJoinOrder(arg.isEnforceJoinOrder());
 
                 long start = U.currentTimeMillis();
 
@@ -170,7 +170,7 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten
                 Collection<GridQueryFieldMetadata> meta = cur.fieldsMeta();
 
                 if (meta == null)
-                    return new IgniteBiTuple<>(
+                    return new VisorQueryTaskResult(
                         new VisorExceptionWrapper(new SQLException("Fail to execute query. No metadata available.")), null);
                 else {
                     List<VisorQueryField> names = new ArrayList<>(meta.size());
@@ -179,7 +179,7 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten
                         names.add(new VisorQueryField(col.schemaName(), col.typeName(),
                             col.fieldName(), col.fieldTypeName()));
 
-                    List<Object[]> rows = fetchSqlQueryRows(cur, arg.pageSize());
+                    List<Object[]> rows = fetchSqlQueryRows(cur, arg.getPageSize());
 
                     long duration = U.currentTimeMillis() - start; // Query duration + fetch duration.
 
@@ -193,12 +193,12 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten
                     else
                         cur.close();
 
-                    return new IgniteBiTuple<>(null, new VisorQueryResultEx(nid, qryId, names, rows, hasNext, duration));
+                    return new VisorQueryTaskResult(null, new VisorQueryResultEx(nid, qryId, names, rows, hasNext, duration));
                 }
             }
         }
         catch (Throwable e) {
-            return new IgniteBiTuple<>(new VisorExceptionWrapper(e), null);
+            return new VisorQueryTaskResult(new VisorExceptionWrapper(e), null);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryNextPageTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryNextPageTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryNextPageTask.java
index 52a167d..277694d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryNextPageTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryNextPageTask.java
@@ -26,25 +26,24 @@ import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.internal.visor.VisorJob;
 import org.apache.ignite.internal.visor.VisorOneNodeTask;
-import org.apache.ignite.lang.IgniteBiTuple;
 
 /**
  * Task for collecting next page previously executed SQL or SCAN query.
  */
 @GridInternal
-public class VisorQueryNextPageTask extends VisorOneNodeTask<IgniteBiTuple<String, Integer>, VisorQueryResult> {
+public class VisorQueryNextPageTask extends VisorOneNodeTask<VisorQueryNextPageTaskArg, VisorQueryResult> {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** {@inheritDoc} */
-    @Override protected VisorQueryNextPageJob job(IgniteBiTuple<String, Integer> arg) {
+    @Override protected VisorQueryNextPageJob job(VisorQueryNextPageTaskArg arg) {
         return new VisorQueryNextPageJob(arg, debug);
     }
 
     /**
      * Job for collecting next page previously executed SQL or SCAN query.
      */
-    private static class VisorQueryNextPageJob extends VisorJob<IgniteBiTuple<String, Integer>, VisorQueryResult> {
+    private static class VisorQueryNextPageJob extends VisorJob<VisorQueryNextPageTaskArg, VisorQueryResult> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -54,13 +53,13 @@ public class VisorQueryNextPageTask extends VisorOneNodeTask<IgniteBiTuple<Strin
          * @param arg Job argument.
          * @param debug Debug flag.
          */
-        private VisorQueryNextPageJob(IgniteBiTuple<String, Integer> arg, boolean debug) {
+        private VisorQueryNextPageJob(VisorQueryNextPageTaskArg arg, boolean debug) {
             super(arg, debug);
         }
 
         /** {@inheritDoc} */
-        @Override protected VisorQueryResult run(IgniteBiTuple<String, Integer> arg) {
-            return arg.get1().startsWith(VisorQueryUtils.SCAN_QRY_NAME) ? nextScanPage(arg) : nextSqlPage(arg);
+        @Override protected VisorQueryResult run(VisorQueryNextPageTaskArg arg) {
+            return arg.getQueryId().startsWith(VisorQueryUtils.SCAN_QRY_NAME) ? nextScanPage(arg) : nextSqlPage(arg);
         }
 
         /**
@@ -69,19 +68,19 @@ public class VisorQueryNextPageTask extends VisorOneNodeTask<IgniteBiTuple<Strin
          * @param arg Query name and page size.
          * @return Query result with next page.
          */
-        private VisorQueryResult nextSqlPage(IgniteBiTuple<String, Integer> arg) {
+        private VisorQueryResult nextSqlPage(VisorQueryNextPageTaskArg arg) {
             long start = U.currentTimeMillis();
 
             ConcurrentMap<String, VisorQueryCursor<List<?>>> storage = ignite.cluster().nodeLocalMap();
 
-            String qryId = arg.get1();
+            String qryId = arg.getQueryId();
 
             VisorQueryCursor<List<?>> cur = storage.get(qryId);
 
             if (cur == null)
                 throw new IgniteException("SQL query results are expired.");
 
-            List<Object[]> nextRows = VisorQueryUtils.fetchSqlQueryRows(cur, arg.get2());
+            List<Object[]> nextRows = VisorQueryUtils.fetchSqlQueryRows(cur, arg.getPageSize());
 
             boolean hasMore = cur.hasNext();
 
@@ -102,19 +101,19 @@ public class VisorQueryNextPageTask extends VisorOneNodeTask<IgniteBiTuple<Strin
          * @param arg Query name and page size.
          * @return Next page with data.
          */
-        private VisorQueryResult nextScanPage(IgniteBiTuple<String, Integer> arg) {
+        private VisorQueryResult nextScanPage(VisorQueryNextPageTaskArg arg) {
             long start = U.currentTimeMillis();
 
             ConcurrentMap<String, VisorQueryCursor<Cache.Entry<Object, Object>>> storage = ignite.cluster().nodeLocalMap();
 
-            String qryId = arg.get1();
+            String qryId = arg.getQueryId();
 
             VisorQueryCursor<Cache.Entry<Object, Object>> cur = storage.get(qryId);
 
             if (cur == null)
                 throw new IgniteException("Scan query results are expired.");
 
-            List<Object[]> rows = VisorQueryUtils.fetchScanQueryRows(cur, arg.get2());
+            List<Object[]> rows = VisorQueryUtils.fetchScanQueryRows(cur, arg.getPageSize());
 
             boolean hasMore = cur.hasNext();
 
@@ -134,4 +133,4 @@ public class VisorQueryNextPageTask extends VisorOneNodeTask<IgniteBiTuple<Strin
             return S.toString(VisorQueryNextPageJob.class, this);
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryNextPageTaskArg.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryNextPageTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryNextPageTaskArg.java
new file mode 100644
index 0000000..7752f5d
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryNextPageTaskArg.java
@@ -0,0 +1,86 @@
+/*
+ * 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 VisorQueryNextPageTask}.
+ */
+public class VisorQueryNextPageTaskArg extends VisorDataTransferObject {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** ID of query execution. */
+    private String qryId;
+
+    /** Number of rows to load. */
+    private int pageSize;
+
+    /**
+     * Default constructor.
+     */
+    public VisorQueryNextPageTaskArg() {
+        // No-op.
+    }
+
+    /**
+     * @param qryId ID of query execution.
+     * @param pageSize Number of rows to load.
+     */
+    public VisorQueryNextPageTaskArg(String qryId, int pageSize) {
+        this.qryId = qryId;
+        this.pageSize = pageSize;
+    }
+
+    /**
+     * @return ID of query execution.
+     */
+    public String getQueryId() {
+        return qryId;
+    }
+
+    /**
+     * @return Number of rows to load.
+     */
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeString(out, qryId);
+        out.writeInt(pageSize);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws IOException, ClassNotFoundException {
+        qryId = U.readString(in);
+        pageSize = in.readInt();
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorQueryNextPageTaskArg.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResult.java
index 21d1ed7..0fcfa85 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResult.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResult.java
@@ -17,26 +17,36 @@
 
 package org.apache.ignite.internal.visor.query;
 
-import java.io.Serializable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 import java.util.List;
-import org.apache.ignite.internal.LessNamingBean;
 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;
 
 /**
  * Result for cache query tasks.
  */
-public class VisorQueryResult implements Serializable, LessNamingBean {
+public class VisorQueryResult extends VisorDataTransferObject {
     /** */
     private static final long serialVersionUID = 0L;
 
     /** Rows fetched from query. */
-    private final List<Object[]> rows;
+    private List<Object[]> rows;
 
     /** Whether query has more rows to fetch. */
-    private final boolean hasMore;
+    private boolean hasMore;
 
     /** Query duration */
-    private final long duration;
+    private long duration;
+
+    /**
+     * Default constructor.
+     */
+    public VisorQueryResult() {
+        // No-op.
+    }
 
     /**
      * Create task result with given parameters
@@ -54,25 +64,39 @@ public class VisorQueryResult implements Serializable, LessNamingBean {
     /**
      * @return Rows fetched from query.
      */
-    public List<Object[]> rows() {
+    public List<Object[]> getRows() {
         return rows;
     }
 
     /**
      * @return Whether query has more rows to fetch.
      */
-    public boolean hasMore() {
+    public boolean isHasMore() {
         return hasMore;
     }
 
     /**
      * @return Duration of next page fetching.
      */
-    public long duration() {
+    public long getDuration() {
         return duration;
     }
 
     /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeCollection(out, rows);
+        out.writeBoolean(hasMore);
+        out.writeLong(duration);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws IOException, ClassNotFoundException {
+        rows = U.readList(in);
+        hasMore = in.readBoolean();
+        duration = in.readLong();
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(VisorQueryResult.class, this);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResultEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResultEx.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResultEx.java
index 218cb36..a7d1ce0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResultEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryResultEx.java
@@ -17,10 +17,14 @@
 
 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.List;
 import java.util.UUID;
 import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
 
 /**
  * Result for cache query tasks.
@@ -30,13 +34,20 @@ public class VisorQueryResultEx extends VisorQueryResult {
     private static final long serialVersionUID = 0L;
 
     /** Node where query executed. */
-    private final UUID resNodeId;
+    private UUID resNodeId;
 
     /** Query ID to store in node local. */
-    private final String qryId;
+    private String qryId;
 
     /** Query columns descriptors. */
-    private final Collection<VisorQueryField> cols;
+    private Collection<VisorQueryField> cols;
+
+    /**
+     * Default constructor.
+     */
+    public VisorQueryResultEx() {
+        // No-op.
+    }
 
     /**
      * @param resNodeId Node where query executed.
@@ -64,26 +75,44 @@ public class VisorQueryResultEx extends VisorQueryResult {
     /**
      * @return Response node id.
      */
-    public UUID responseNodeId() {
+    public UUID getResponseNodeId() {
         return resNodeId;
     }
 
     /**
      * @return Query id.
      */
-    public String queryId() {
+    public String getQueryId() {
         return qryId;
     }
 
     /**
      * @return Columns.
      */
-    public Collection<VisorQueryField> columns() {
+    public Collection<VisorQueryField> getColumns() {
         return cols;
     }
 
     /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        super.writeExternalData(out);
+
+        U.writeUuid(out, resNodeId);
+        U.writeString(out, qryId);
+        U.writeCollection(out, cols);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws IOException, ClassNotFoundException {
+        super.readExternalData(in);
+
+        resNodeId = U.readUuid(in);
+        qryId = U.readString(in);
+        cols = U.readCollection(in);
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(VisorQueryResultEx.class, this);
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java
index d996f6c..c3c4432 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTask.java
@@ -19,14 +19,12 @@ package org.apache.ignite.internal.visor.query;
 
 import org.apache.ignite.internal.processors.task.GridInternal;
 import org.apache.ignite.internal.visor.VisorOneNodeTask;
-import org.apache.ignite.internal.visor.util.VisorExceptionWrapper;
-import org.apache.ignite.lang.IgniteBiTuple;
 
 /**
  * Task for execute SCAN or SQL query and get first page of results.
  */
 @GridInternal
-public class VisorQueryTask extends VisorOneNodeTask<VisorQueryArg, IgniteBiTuple<? extends VisorExceptionWrapper, VisorQueryResultEx>> {
+public class VisorQueryTask extends VisorOneNodeTask<VisorQueryArg, VisorQueryTaskResult> {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -34,4 +32,4 @@ public class VisorQueryTask extends VisorOneNodeTask<VisorQueryArg, IgniteBiTupl
     @Override protected VisorQueryJob job(VisorQueryArg arg) {
         return new VisorQueryJob(arg, debug);
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTaskResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTaskResult.java
new file mode 100644
index 0000000..c1ee102
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryTaskResult.java
@@ -0,0 +1,83 @@
+/*
+ * 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;
+import org.apache.ignite.internal.visor.VisorTaskResultWrapper;
+import org.apache.ignite.internal.visor.util.VisorExceptionWrapper;
+
+/**
+ * Result for {@link VisorQueryTask}.
+ */
+public class VisorQueryTaskResult extends VisorDataTransferObject implements VisorTaskResultWrapper<VisorQueryResultEx> {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Exception on query execution. */
+    private VisorExceptionWrapper error;
+
+    /** Query result. */
+    private VisorQueryResultEx res;
+
+    /**
+     * Default constructor.
+     */
+    public VisorQueryTaskResult() {
+        // No-op.
+    }
+
+    /**
+     * @param error Cache name for query.
+     * @param res Query text.
+     */
+    public VisorQueryTaskResult(VisorExceptionWrapper error, VisorQueryResultEx res) {
+        this.error = error;
+        this.res = res;
+    }
+
+    /** {@inheritDoc} */
+    @Override public VisorExceptionWrapper getError() {
+        return error;
+    }
+
+    /** {@inheritDoc} */
+    @Override public VisorQueryResultEx getResult() {
+        return res;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        out.writeObject(error);
+        out.writeObject(res);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(ObjectInput in) throws IOException, ClassNotFoundException {
+        error = (VisorExceptionWrapper)in.readObject();
+        res = (VisorQueryResultEx)in.readObject();
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorQueryTaskResult.class, this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorMimeTypes.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorMimeTypes.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorMimeTypes.java
index 1c27ecb..81c6bf8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorMimeTypes.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorMimeTypes.java
@@ -961,10 +961,8 @@ public class VisorMimeTypes {
             if (c4 == 0xE0)
                 return "image/jpeg";
 
-            /**
-             * File format used by digital cameras to store images. Exif Format can be read by any application supporting JPEG. Exif Spec can be found at:
-             * http://www.pima.net/standards/it10/PIMA15740/Exif_2-1.PDF
-             */
+            // File format used by digital cameras to store images. Exif Format can be read by any application supporting JPEG. Exif Spec can be found at:
+            // http://www.pima.net/standards/it10/PIMA15740/Exif_2-1.PDF
             if ((c4 == 0xE1) && (c7 == 'E' && c8 == 'x' && c9 == 'i' && c10 == 'f' && c11 == 0))
                 return "image/jpeg";
 
@@ -972,10 +970,8 @@ public class VisorMimeTypes {
                 return "image/jpg";
         }
 
-        /**
-         * According to http://www.opendesign.com/files/guestdownloads/OpenDesign_Specification_for_.dwg_files.pdf
-         * first 6 bytes are of type "AC1018" (for example) and the next 5 bytes are 0x00.
-         */
+        // According to http://www.opendesign.com/files/guestdownloads/OpenDesign_Specification_for_.dwg_files.pdf
+        // first 6 bytes are of type "AC1018" (for example) and the next 5 bytes are 0x00.
         if ((c1 == 0x41 && c2 == 0x43) && (c7 == 0x00 && c8 == 0x00 && c9 == 0x00 && c10 == 0x00 && c11 == 0x00))
             return "application/acad";
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/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 9805950..cec19fb 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
@@ -52,7 +52,6 @@ import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.cache.eviction.EvictionPolicy;
 import org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicyMBean;
 import org.apache.ignite.cache.eviction.lru.LruEvictionPolicyMBean;
-import org.apache.ignite.cache.eviction.sorted.SortedEvictionPolicyMBean;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.events.Event;
 import org.apache.ignite.internal.processors.igfs.IgfsEx;
@@ -138,7 +137,7 @@ public class VisorTaskUtils {
     /** Comparator for log files by last modified date. */
     private static final Comparator<VisorLogFile> LAST_MODIFIED = new Comparator<VisorLogFile>() {
         @Override public int compare(VisorLogFile f1, VisorLogFile f2) {
-            return Long.compare(f2.lastModified(), f1.lastModified());
+            return Long.compare(f2.getLastModified(), f1.getLastModified());
         }
     };
 
@@ -290,6 +289,26 @@ public class VisorTaskUtils {
     }
 
     /**
+     * Compact classes names.
+
+     * @param clss Classes to compact.
+     * @return Compacted string.
+     */
+    @Nullable public static List<String> compactClasses(Class<?>[] clss) {
+        if (clss == null)
+            return null;
+
+        int len = clss.length;
+
+        List<String> res = new ArrayList<>(len);
+
+        for (Class<?> cls: clss)
+            res.add(U.compact(cls.getName()));
+
+        return res;
+    }
+
+    /**
      * Joins array elements to string.
      *
      * @param arr Array.
@@ -630,6 +649,7 @@ public class VisorTaskUtils {
                 raf.seek(pos);
 
                 byte[] buf = new byte[toRead];
+
                 int cntRead = raf.read(buf, 0, toRead);
 
                 if (cntRead != toRead)
@@ -681,9 +701,6 @@ public class VisorTaskUtils {
         if (plc instanceof FifoEvictionPolicyMBean)
             return ((FifoEvictionPolicyMBean)plc).getMaxSize();
 
-        if (plc instanceof SortedEvictionPolicyMBean)
-            return ((SortedEvictionPolicyMBean)plc).getMaxSize();
-
         return null;
     }
 
@@ -858,8 +875,6 @@ public class VisorTaskUtils {
         if (cmdFilePath == null || !cmdFilePath.exists())
             throw new FileNotFoundException(String.format("File not found: %s", cmdFile));
 
-        String ignite = cmdFilePath.getCanonicalPath();
-
         File nodesCfgPath = U.resolveIgnitePath(cfgPath);
 
         if (nodesCfgPath == null || !nodesCfgPath.exists())
@@ -872,6 +887,8 @@ public class VisorTaskUtils {
         List<Process> run = new ArrayList<>();
 
         try {
+            String igniteCmd = cmdFilePath.getCanonicalPath();
+
             for (int i = 0; i < nodesToStart; i++) {
                 if (U.isMacOs()) {
                     Map<String, String> macEnv = new HashMap<>(System.getenv());
@@ -900,9 +917,9 @@ public class VisorTaskUtils {
                                     entry.getKey(), val.replace('\n', ' ').replace("'", "\'")));
                     }
 
-                    run.add(openInConsole(envs.toString(), ignite, quitePar, nodeCfg));
+                    run.add(openInConsole(envs.toString(), igniteCmd, quitePar, nodeCfg));
                 } else
-                    run.add(openInConsole(null, envVars, ignite, quitePar, nodeCfg));
+                    run.add(openInConsole(null, envVars, igniteCmd, quitePar, nodeCfg));
             }
 
             return run;

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/core/src/main/java/org/apache/ignite/plugin/segmentation/SegmentationPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/segmentation/SegmentationPolicy.java b/modules/core/src/main/java/org/apache/ignite/plugin/segmentation/SegmentationPolicy.java
index 69ec1ae..3c0f69e 100644
--- a/modules/core/src/main/java/org/apache/ignite/plugin/segmentation/SegmentationPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/plugin/segmentation/SegmentationPolicy.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.plugin.segmentation;
 
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Policy that defines how node will react on topology segmentation. Note that default
@@ -45,5 +46,18 @@ public enum SegmentationPolicy {
      * {@link org.apache.ignite.events.EventType#EVT_NODE_SEGMENTED} event and it is up to user to
      * implement logic to handle this event.
      */
-    NOOP
-}
\ No newline at end of file
+    NOOP;
+
+    /** Enumerated values. */
+    private static final SegmentationPolicy[] 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 SegmentationPolicy fromOrdinal(int ord) {
+        return ord >= 0 && ord < VALS.length ? VALS[ord] : null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/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 9cce826..888974b 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -43,7 +43,6 @@ org.apache.ignite.cache.CachePartialUpdateException
 org.apache.ignite.cache.CachePeekMode
 org.apache.ignite.cache.CacheRebalanceMode
 org.apache.ignite.cache.CacheServerNotFoundException
-org.apache.ignite.cache.CacheTypeFieldMetadata
 org.apache.ignite.cache.CacheWriteSynchronizationMode
 org.apache.ignite.cache.QueryEntity
 org.apache.ignite.cache.QueryIndex
@@ -62,6 +61,7 @@ org.apache.ignite.cache.affinity.fair.FairAffinityFunction$FullAssignmentMap$2
 org.apache.ignite.cache.affinity.fair.FairAffinityFunction$PartitionSetComparator
 org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction
 org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction$HashComparator
+org.apache.ignite.cache.eviction.AbstractEvictionPolicy
 org.apache.ignite.cache.eviction.EvictionFilter
 org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy
 org.apache.ignite.cache.eviction.igfs.IgfsEvictionFilter
@@ -229,6 +229,7 @@ org.apache.ignite.internal.IgniteKernal
 org.apache.ignite.internal.IgniteKernal$1
 org.apache.ignite.internal.IgniteKernal$5
 org.apache.ignite.internal.IgniteMessagingImpl
+org.apache.ignite.internal.IgniteNeedReconnectException
 org.apache.ignite.internal.IgniteSchedulerImpl
 org.apache.ignite.internal.IgniteServicesImpl
 org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$1
@@ -545,30 +546,31 @@ org.apache.ignite.internal.processors.cache.GridCacheValueCollection$1
 org.apache.ignite.internal.processors.cache.GridDeferredAckMessageSender$DeferredAckMessageBuffer
 org.apache.ignite.internal.processors.cache.IgniteCacheProxy
 org.apache.ignite.internal.processors.cache.IgniteCacheProxy$1
+org.apache.ignite.internal.processors.cache.IgniteCacheProxy$1$1
 org.apache.ignite.internal.processors.cache.IgniteCacheProxy$2
-org.apache.ignite.internal.processors.cache.IgniteCacheProxy$2$1
 org.apache.ignite.internal.processors.cache.IgniteCacheProxy$3
 org.apache.ignite.internal.processors.cache.IgniteCacheProxy$4
-org.apache.ignite.internal.processors.cache.IgniteCacheProxy$5
+org.apache.ignite.internal.processors.cache.IgniteCacheProxy$6
 org.apache.ignite.internal.processors.cache.IgniteCacheProxy$7
 org.apache.ignite.internal.processors.cache.IgniteCacheProxy$8
-org.apache.ignite.internal.processors.cache.IgniteCacheProxy$9
 org.apache.ignite.internal.processors.cache.KeyCacheObject
 org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl
 org.apache.ignite.internal.processors.cache.QueryCursorImpl$State
 org.apache.ignite.internal.processors.cache.affinity.GridCacheAffinityProxy
+org.apache.ignite.internal.processors.cache.binary.BinaryMetadataHolder
 org.apache.ignite.internal.processors.cache.binary.BinaryMetadataKey
 org.apache.ignite.internal.processors.cache.binary.CacheDefaultBinaryAffinityKeyMapper
-org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$1
-org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$5
-org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$6
-org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$MetaDataEntryFilter
-org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$MetaDataPredicate
-org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$MetadataProcessor
+org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$3
+org.apache.ignite.internal.processors.cache.binary.MetadataRequestMessage
+org.apache.ignite.internal.processors.cache.binary.MetadataResponseMessage
+org.apache.ignite.internal.processors.cache.binary.MetadataResponseMessage$ClientResponseStatus
+org.apache.ignite.internal.processors.cache.binary.MetadataUpdateAcceptedMessage
+org.apache.ignite.internal.processors.cache.binary.MetadataUpdateProposedMessage
+org.apache.ignite.internal.processors.cache.binary.MetadataUpdateProposedMessage$ProposalStatus
+org.apache.ignite.internal.processors.cache.binary.MetadataUpdateResult$ResultType
 org.apache.ignite.internal.processors.cache.datastructures.CacheDataStructuresManager$BlockSetCallable
 org.apache.ignite.internal.processors.cache.datastructures.CacheDataStructuresManager$QueueHeaderPredicate
 org.apache.ignite.internal.processors.cache.datastructures.CacheDataStructuresManager$RemoveSetDataCallable
-org.apache.ignite.internal.processors.cache.distributed.GridCacheCommittedTxInfo
 org.apache.ignite.internal.processors.cache.distributed.GridCacheTtlUpdateRequest
 org.apache.ignite.internal.processors.cache.distributed.GridCacheTxRecoveryFuture$1
 org.apache.ignite.internal.processors.cache.distributed.GridCacheTxRecoveryFuture$2
@@ -621,7 +623,6 @@ org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartitionsRes
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$1
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$10
-org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$10$1
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$11
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$2
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTransactionalCacheAdapter$3
@@ -712,6 +713,7 @@ org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomi
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateFuture$2
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateFuture$3
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateResponse
+org.apache.ignite.internal.processors.cache.distributed.dht.atomic.NearCacheUpdates
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.UpdateErrors
 org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache
 org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache$2
@@ -812,13 +814,26 @@ org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishReq
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishResponse
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$1
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$10
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$11
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$12
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$13
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$14
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$15
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$16
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$17
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$18
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$19
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$2
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$20
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$21
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$3
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$4
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$5
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$6
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$7
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$8
+org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$FinishClosure
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareFutureAdapter$1
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareRequest
 org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareResponse
@@ -937,19 +952,6 @@ org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler$8
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler$9
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$1
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$10
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$11
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$12
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$13
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$14
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$15
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$2
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$4
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$5
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$6
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$9
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$FinishClosure
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$PLC1
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$PLC2
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter$PMC
@@ -987,12 +989,12 @@ org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessorImpl
 org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessorImpl$UserKeyCacheObjectImpl
 org.apache.ignite.internal.processors.clock.GridClockDeltaSnapshotMessage
 org.apache.ignite.internal.processors.clock.GridClockDeltaVersion
-org.apache.ignite.internal.processors.closure.GridClosureProcessor$C1MLA
 org.apache.ignite.internal.processors.closure.GridClosureProcessor$C1
-org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2MLA
+org.apache.ignite.internal.processors.closure.GridClosureProcessor$C1MLA
 org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2
-org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4MLA
+org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2MLA
 org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4
+org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4MLA
 org.apache.ignite.internal.processors.closure.GridClosureProcessor$T1
 org.apache.ignite.internal.processors.closure.GridClosureProcessor$T10
 org.apache.ignite.internal.processors.closure.GridClosureProcessor$T11
@@ -1292,7 +1294,6 @@ org.apache.ignite.internal.processors.query.GridQueryProcessor$5
 org.apache.ignite.internal.processors.query.GridQueryProcessor$6
 org.apache.ignite.internal.processors.query.GridQueryProcessor$7
 org.apache.ignite.internal.processors.query.IgniteSQLException
-org.apache.ignite.internal.processors.query.QueryUtils$IndexType
 org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryCancelRequest
 org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryFailResponse
 org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryNextPageRequest
@@ -1679,32 +1680,41 @@ org.apache.ignite.internal.util.typedef.T4
 org.apache.ignite.internal.util.typedef.T5
 org.apache.ignite.internal.util.typedef.T6
 org.apache.ignite.internal.util.typedef.internal.SB
+org.apache.ignite.internal.visor.VisorDataTransferObject
 org.apache.ignite.internal.visor.VisorJob
 org.apache.ignite.internal.visor.VisorMultiNodeTask
 org.apache.ignite.internal.visor.VisorOneNodeTask
 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$VisorPortableCollectMetadataJob
+org.apache.ignite.internal.visor.binary.VisorBinaryMetadataCollectorTaskResult
+org.apache.ignite.internal.visor.binary.VisorBinaryMetadataField
 org.apache.ignite.internal.visor.cache.VisorCache
 org.apache.ignite.internal.visor.cache.VisorCacheAffinityConfiguration
 org.apache.ignite.internal.visor.cache.VisorCacheAffinityNodeTask
 org.apache.ignite.internal.visor.cache.VisorCacheAffinityNodeTask$VisorCacheAffinityNodeJob
+org.apache.ignite.internal.visor.cache.VisorCacheAffinityNodeTaskArg
 org.apache.ignite.internal.visor.cache.VisorCacheAggregatedMetrics
 org.apache.ignite.internal.visor.cache.VisorCacheClearTask
 org.apache.ignite.internal.visor.cache.VisorCacheClearTask$VisorCacheClearCallable
 org.apache.ignite.internal.visor.cache.VisorCacheClearTask$VisorCacheClearJob
 org.apache.ignite.internal.visor.cache.VisorCacheClearTask$VisorCacheClearJob$1
 org.apache.ignite.internal.visor.cache.VisorCacheClearTask$VisorCacheSizeCallable
+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.VisorCacheDefaultConfiguration
 org.apache.ignite.internal.visor.cache.VisorCacheEvictionConfiguration
 org.apache.ignite.internal.visor.cache.VisorCacheLoadTask
 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.VisorCacheMetrics
 org.apache.ignite.internal.visor.cache.VisorCacheMetricsCollectorTask
 org.apache.ignite.internal.visor.cache.VisorCacheMetricsCollectorTask$VisorCacheMetricsCollectorJob
+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
@@ -1726,8 +1736,10 @@ org.apache.ignite.internal.visor.cache.VisorCacheResetQueryDetailMetricsTask
 org.apache.ignite.internal.visor.cache.VisorCacheResetQueryDetailMetricsTask$VisorCacheResetQueryDetailMetricsJob
 org.apache.ignite.internal.visor.cache.VisorCacheResetQueryMetricsTask
 org.apache.ignite.internal.visor.cache.VisorCacheResetQueryMetricsTask$VisorCacheResetQueryMetricsJob
+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$VisorCacheStartArg
 org.apache.ignite.internal.visor.cache.VisorCacheStartTask$VisorCacheStartJob
 org.apache.ignite.internal.visor.cache.VisorCacheStopTask
 org.apache.ignite.internal.visor.cache.VisorCacheStopTask$VisorCacheStopJob
@@ -1736,17 +1748,20 @@ org.apache.ignite.internal.visor.cache.VisorCacheSwapBackupsTask
 org.apache.ignite.internal.visor.cache.VisorCacheSwapBackupsTask$VisorCachesSwapBackupsJob
 org.apache.ignite.internal.visor.cache.VisorCacheTypeFieldMetadata
 org.apache.ignite.internal.visor.cache.VisorCacheTypeMetadata
+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.VisorComputeResetMetricsTask
 org.apache.ignite.internal.visor.compute.VisorComputeResetMetricsTask$VisorComputeResetMetricsJob
 org.apache.ignite.internal.visor.compute.VisorComputeToggleMonitoringTask
 org.apache.ignite.internal.visor.compute.VisorComputeToggleMonitoringTask$VisorComputeToggleMonitoringJob
+org.apache.ignite.internal.visor.compute.VisorComputeToggleMonitoringTaskArg
 org.apache.ignite.internal.visor.compute.VisorGatewayTask
 org.apache.ignite.internal.visor.compute.VisorGatewayTask$VisorGatewayJob
 org.apache.ignite.internal.visor.compute.VisorGatewayTask$VisorGatewayJob$1
 org.apache.ignite.internal.visor.debug.VisorThreadDumpTask
 org.apache.ignite.internal.visor.debug.VisorThreadDumpTask$VisorDumpThreadJob
+org.apache.ignite.internal.visor.debug.VisorThreadDumpTaskResult
 org.apache.ignite.internal.visor.debug.VisorThreadInfo
 org.apache.ignite.internal.visor.debug.VisorThreadLockInfo
 org.apache.ignite.internal.visor.debug.VisorThreadMonitorInfo
@@ -1757,11 +1772,13 @@ 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$VisorFileBlockArg
 org.apache.ignite.internal.visor.file.VisorFileBlockTask$VisorFileBlockJob
+org.apache.ignite.internal.visor.file.VisorFileBlockTaskResult
 org.apache.ignite.internal.visor.file.VisorLatestTextFilesTask
 org.apache.ignite.internal.visor.file.VisorLatestTextFilesTask$VisorLatestTextFilesJob
+org.apache.ignite.internal.visor.file.VisorLatestTextFilesTaskArg
 org.apache.ignite.internal.visor.igfs.VisorIgfs
 org.apache.ignite.internal.visor.igfs.VisorIgfsEndpoint
 org.apache.ignite.internal.visor.igfs.VisorIgfsFormatTask
@@ -1769,6 +1786,7 @@ org.apache.ignite.internal.visor.igfs.VisorIgfsFormatTask$VisorIgfsFormatJob
 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.VisorIgfsProfilerClearTaskResult
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerEntry
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerTask
 org.apache.ignite.internal.visor.igfs.VisorIgfsProfilerTask$VisorIgfsProfilerJob
@@ -1777,11 +1795,13 @@ org.apache.ignite.internal.visor.igfs.VisorIgfsResetMetricsTask
 org.apache.ignite.internal.visor.igfs.VisorIgfsResetMetricsTask$VisorIgfsResetMetricsJob
 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$VisorLogSearchArg
 org.apache.ignite.internal.visor.log.VisorLogSearchTask$VisorLogSearchJob
+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.VisorLatestVersionTask
@@ -1807,21 +1827,26 @@ org.apache.ignite.internal.visor.node.VisorNodeDataCollectorTaskResult
 org.apache.ignite.internal.visor.node.VisorNodeEventsCollectorTask
 org.apache.ignite.internal.visor.node.VisorNodeEventsCollectorTask$VisorNodeEventsCollectorJob
 org.apache.ignite.internal.visor.node.VisorNodeEventsCollectorTask$VisorNodeEventsCollectorJob$1
-org.apache.ignite.internal.visor.node.VisorNodeEventsCollectorTask$VisorNodeEventsCollectorTaskArg
+org.apache.ignite.internal.visor.node.VisorNodeEventsCollectorTaskArg
 org.apache.ignite.internal.visor.node.VisorNodeGcTask
 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.VisorNodePingTaskResult
 org.apache.ignite.internal.visor.node.VisorNodeRestartTask
 org.apache.ignite.internal.visor.node.VisorNodeRestartTask$VisorNodesRestartJob
 org.apache.ignite.internal.visor.node.VisorNodeStopTask
 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.VisorPeerToPeerConfiguration
 org.apache.ignite.internal.visor.node.VisorRestConfiguration
 org.apache.ignite.internal.visor.node.VisorSegmentationConfiguration
+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.VisorCancelQueriesTask
 org.apache.ignite.internal.visor.query.VisorCancelQueriesTask$VisorCancelQueriesJob
@@ -1834,10 +1859,12 @@ org.apache.ignite.internal.visor.query.VisorQueryField
 org.apache.ignite.internal.visor.query.VisorQueryJob
 org.apache.ignite.internal.visor.query.VisorQueryNextPageTask
 org.apache.ignite.internal.visor.query.VisorQueryNextPageTask$VisorQueryNextPageJob
+org.apache.ignite.internal.visor.query.VisorQueryNextPageTaskArg
 org.apache.ignite.internal.visor.query.VisorQueryResult
 org.apache.ignite.internal.visor.query.VisorQueryResultEx
 org.apache.ignite.internal.visor.query.VisorQueryScanSubstringFilter
 org.apache.ignite.internal.visor.query.VisorQueryTask
+org.apache.ignite.internal.visor.query.VisorQueryTaskResult
 org.apache.ignite.internal.visor.query.VisorRunningQuery
 org.apache.ignite.internal.visor.service.VisorCancelServiceTask
 org.apache.ignite.internal.visor.service.VisorCancelServiceTask$VisorCancelServiceJob

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala
----------------------------------------------------------------------
diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala
index ad8c2ed..19d130e 100644
--- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala
+++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/VisorConsole.scala
@@ -64,7 +64,6 @@ class VisorConsole {
         org.apache.ignite.visor.commands.cache.VisorCacheClearCommand
         org.apache.ignite.visor.commands.cache.VisorCacheResetCommand
         org.apache.ignite.visor.commands.cache.VisorCacheCommand
-        org.apache.ignite.visor.commands.cache.VisorCacheSwapCommand
         org.apache.ignite.visor.commands.config.VisorConfigurationCommand
         org.apache.ignite.visor.commands.deploy.VisorDeployCommand
         org.apache.ignite.visor.commands.disco.VisorDiscoveryCommand

http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9112e6/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 67aaa14..517028a 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
@@ -105,7 +105,7 @@ class VisorCacheClearCommand {
 
             val res = executeOne(nid, classOf[VisorCacheClearTask], cacheName)
 
-            t += (nodeId8(nid), res.get1(), res.get2())
+            t += (nodeId8(nid), res.getSizeBefore, res.getSizeAfter)
 
             println("Cleared cache with name: " + escapeName(cacheName))