ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sboi...@apache.org
Subject [08/50] [abbrv] ignite git commit: IGNITE-4988 Cleanup and refactor VisorXxx tasks and DTO for ignite-2.0
Date Mon, 17 Apr 2017 08:21:30 GMT
http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/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..303e6b6 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
@@ -17,16 +17,35 @@
 
 package org.apache.ignite.internal.visor.query;
 
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.UUID;
+import javax.cache.Cache;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.query.QueryCursor;
+import org.apache.ignite.cache.query.ScanQuery;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata;
 import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorEither;
+import org.apache.ignite.internal.visor.VisorJob;
 import org.apache.ignite.internal.visor.VisorOneNodeTask;
 import org.apache.ignite.internal.visor.util.VisorExceptionWrapper;
-import org.apache.ignite.lang.IgniteBiTuple;
+import org.apache.ignite.lang.IgniteBiPredicate;
+
+import static org.apache.ignite.internal.visor.query.VisorQueryUtils.SQL_QRY_NAME;
+import static org.apache.ignite.internal.visor.query.VisorQueryUtils.fetchSqlQueryRows;
+import static org.apache.ignite.internal.visor.query.VisorQueryUtils.scheduleResultSetHolderRemoval;
 
 /**
- * Task for execute SCAN or SQL query and get first page of results.
+ * Task for execute SQL fields query and get first page of results.
  */
 @GridInternal
-public class VisorQueryTask extends VisorOneNodeTask<VisorQueryArg, IgniteBiTuple<? extends VisorExceptionWrapper, VisorQueryResultEx>> {
+public class VisorQueryTask extends VisorOneNodeTask<VisorQueryArg, VisorEither<VisorQueryResult>> {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -34,4 +53,97 @@ public class VisorQueryTask extends VisorOneNodeTask<VisorQueryArg, IgniteBiTupl
     @Override protected VisorQueryJob job(VisorQueryArg arg) {
         return new VisorQueryJob(arg, debug);
     }
-}
\ No newline at end of file
+
+    /**
+     * Job for execute SCAN or SQL query and get first page of results.
+     */
+    private static class VisorQueryJob extends VisorJob<VisorQueryArg, VisorEither<VisorQueryResult>> {
+        /** */
+        private static final long serialVersionUID = 0L;
+
+        /**
+         * Create job with specified argument.
+         *
+         * @param arg Job argument.
+         * @param debug Debug flag.
+         */
+        private VisorQueryJob(VisorQueryArg arg, boolean debug) {
+            super(arg, debug);
+        }
+
+        /**
+         * Execute scan query.
+         *
+         * @param c Cache to scan.
+         * @param arg Job argument with query parameters.
+         * @return Query cursor.
+         */
+        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.getPageSize());
+            qry.setLocal(arg.isLocal());
+
+            return c.withKeepBinary().query(qry);
+        }
+
+        /** {@inheritDoc} */
+        @Override protected VisorEither<VisorQueryResult> run(final VisorQueryArg arg) {
+            try {
+                IgniteCache<Object, Object> c = ignite.context().cache().jcache(arg.getCacheName());
+                UUID nid = ignite.localNode().id();
+
+                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();
+
+                VisorQueryCursor<List<?>> cur = new VisorQueryCursor<>(c.withKeepBinary().query(qry));
+
+                Collection<GridQueryFieldMetadata> meta = cur.fieldsMeta();
+
+                if (meta == null)
+                    return new VisorEither<>(
+                        new VisorExceptionWrapper(new SQLException("Fail to execute query. No metadata available.")));
+                else {
+                    List<VisorQueryField> names = new ArrayList<>(meta.size());
+
+                    for (GridQueryFieldMetadata col : meta)
+                        names.add(new VisorQueryField(col.schemaName(), col.typeName(),
+                            col.fieldName(), col.fieldTypeName()));
+
+                    List<Object[]> rows = fetchSqlQueryRows(cur, arg.getPageSize());
+
+                    // Query duration + fetch duration.
+                    long duration = U.currentTimeMillis() - start;
+
+                    boolean hasNext = cur.hasNext();
+
+                    // Generate query ID to store query cursor in node local storage.
+                    String qryId = SQL_QRY_NAME + "-" + UUID.randomUUID();
+
+                    if (hasNext) {
+                        ignite.cluster().<String, VisorQueryCursor<List<?>>>nodeLocalMap().put(qryId, cur);
+
+                        scheduleResultSetHolderRemoval(qryId, ignite);
+                    }
+                    else
+                        cur.close();
+
+                    return new VisorEither<>(new VisorQueryResult(nid, qryId, names, rows, hasNext, duration));
+                }
+            }
+            catch (Throwable e) {
+                return new VisorEither<>(new VisorExceptionWrapper(e));
+            }
+        }
+
+        /** {@inheritDoc} */
+        @Override public String toString() {
+            return S.toString(VisorQueryJob.class, this);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryUtils.java
index 5faeac0..9a0262d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryUtils.java
@@ -21,14 +21,16 @@ import java.math.BigDecimal;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.ConcurrentMap;
 import javax.cache.Cache;
 import org.apache.ignite.binary.BinaryObject;
 import org.apache.ignite.binary.BinaryObjectException;
 import org.apache.ignite.binary.BinaryType;
+import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.binary.BinaryObjectEx;
+import org.apache.ignite.internal.processors.timeout.GridTimeoutObjectAdapter;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.SB;
@@ -46,17 +48,8 @@ public class VisorQueryUtils {
     /** Prefix for node local key for SCAN queries. */
     public static final String SCAN_QRY_NAME = "VISOR_SCAN_QUERY";
 
-    /** Prefix for node local key for SCAN near queries. */
-    public static final String SCAN_NEAR_CACHE = "VISOR_SCAN_NEAR_CACHE";
-
-    /** Prefix for node local key for SCAN near queries. */
-    public static final String SCAN_CACHE_WITH_FILTER = "VISOR_SCAN_CACHE_WITH_FILTER";
-
-    /** Prefix for node local key for SCAN near queries. */
-    public static final String SCAN_CACHE_WITH_FILTER_CASE_SENSITIVE = "VISOR_SCAN_CACHE_WITH_FILTER_CASE_SENSITIVE";
-
     /** Columns for SCAN queries. */
-    public static final Collection<VisorQueryField> SCAN_COL_NAMES = Arrays.asList(
+    public static final List<VisorQueryField> SCAN_COL_NAMES = Arrays.asList(
         new VisorQueryField(null, null, "Key Class", ""), new VisorQueryField(null, null, "Key", ""),
         new VisorQueryField(null, null, "Value Class", ""), new VisorQueryField(null, null, "Value", "")
     );
@@ -264,4 +257,32 @@ public class VisorQueryUtils {
 
         return rows;
     }
+
+    /**
+     * @param qryId Unique query result id.
+     */
+    public static void scheduleResultSetHolderRemoval(final String qryId, final IgniteEx ignite) {
+        ignite.context().timeout().addTimeoutObject(new GridTimeoutObjectAdapter(RMV_DELAY) {
+            @Override public void onTimeout() {
+                ConcurrentMap<String, VisorQueryCursor> storage = ignite.cluster().nodeLocalMap();
+
+                VisorQueryCursor cur = storage.get(qryId);
+
+                if (cur != null) {
+                    // If cursor was accessed since last scheduling, set access flag to false and reschedule.
+                    if (cur.accessed()) {
+                        cur.accessed(false);
+
+                        scheduleResultSetHolderRemoval(qryId, ignite);
+                    }
+                    else {
+                        // Remove stored cursor otherwise.
+                        storage.remove(qryId);
+
+                        cur.close();
+                    }
+                }
+            }
+        });
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/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
new file mode 100644
index 0000000..a267f06
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQueriesCollectorTask.java
@@ -0,0 +1,96 @@
+/*
+ * 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.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.compute.ComputeJobResult;
+import org.apache.ignite.internal.processors.query.GridRunningQueryInfo;
+import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.visor.VisorJob;
+import org.apache.ignite.internal.visor.VisorMultiNodeTask;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Task to collect currently running queries.
+ */
+@GridInternal
+public class VisorRunningQueriesCollectorTask extends VisorMultiNodeTask<Long, Map<UUID, Collection<VisorRunningQuery>>, Collection<VisorRunningQuery>> {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** {@inheritDoc} */
+    @Override protected VisorCollectRunningQueriesJob job(Long arg) {
+        return new VisorCollectRunningQueriesJob(arg, debug);
+    }
+
+    /** {@inheritDoc} */
+    @Nullable @Override protected Map<UUID, Collection<VisorRunningQuery>> reduce0(List<ComputeJobResult> results) throws IgniteException {
+        Map<UUID, Collection<VisorRunningQuery>> map = new HashMap<>();
+
+        for (ComputeJobResult res : results)
+            if (res.getException() == null) {
+                Collection<VisorRunningQuery> queries = res.getData();
+
+                map.put(res.getNode().id(), queries);
+            }
+
+        return map;
+    }
+
+    /**
+     * Job to collect currently running queries from node.
+     */
+    private static class VisorCollectRunningQueriesJob extends VisorJob<Long, Collection<VisorRunningQuery>> {
+        /** */
+        private static final long serialVersionUID = 0L;
+
+        /**
+         * Create job with specified argument.
+         *
+         * @param arg Job argument.
+         * @param debug Flag indicating whether debug information should be printed into node log.
+         */
+        protected VisorCollectRunningQueriesJob(@Nullable Long arg, boolean debug) {
+            super(arg, debug);
+        }
+
+        /** {@inheritDoc} */
+        @Override protected Collection<VisorRunningQuery> run(@Nullable Long duration) throws IgniteException {
+            Collection<GridRunningQueryInfo> queries = ignite.context().query()
+                .runningQueries(duration != null ? duration : 0);
+
+            Collection<VisorRunningQuery> res = new ArrayList<>(queries.size());
+
+            long curTime = U.currentTimeMillis();
+
+            for (GridRunningQueryInfo qry : queries)
+                res.add(new VisorRunningQuery(qry.id(), qry.query(), qry.queryType(), qry.cache(),
+                    qry.startTime(), curTime - qry.startTime(),
+                    qry.cancelable(), qry.local()));
+
+            return res;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQuery.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQuery.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQuery.java
index fc6bc7a..1864718 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQuery.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorRunningQuery.java
@@ -17,13 +17,18 @@
 
 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.processors.cache.query.GridCacheQueryType;
+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;
 
 /**
  * Descriptor of running query.
  */
-public class VisorRunningQuery implements Serializable {
+public class VisorRunningQuery extends VisorDataTransferObject {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -52,6 +57,15 @@ public class VisorRunningQuery implements Serializable {
     private boolean loc;
 
     /**
+     * Default constructor.
+     */
+    public VisorRunningQuery() {
+        // No-op.
+    }
+
+    /**
+     * Construct data transfer object for running query information.
+     *
      * @param id Query ID.
      * @param qry Query text.
      * @param qryType Query type.
@@ -129,4 +143,33 @@ public class VisorRunningQuery implements Serializable {
     public boolean isLocal() {
         return loc;
     }
+
+    /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        out.writeLong(id);
+        U.writeString(out, qry);
+        U.writeEnum(out, qryType);
+        U.writeString(out, cache);
+        out.writeLong(startTime);
+        out.writeLong(duration);
+        out.writeBoolean(cancellable);
+        out.writeBoolean(loc);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        id = in.readLong();
+        qry = U.readString(in);
+        qryType = GridCacheQueryType.fromOrdinal(in.readByte());
+        cache = U.readString(in);
+        startTime = in.readLong();
+        duration = in.readLong();
+        cancellable = in.readBoolean();
+        loc = in.readBoolean();
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(VisorRunningQuery.class, this);
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/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
new file mode 100644
index 0000000..cc12ac5
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorScanQueryArg.java
@@ -0,0 +1,157 @@
+/*
+ * 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/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorScanQueryTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorScanQueryTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorScanQueryTask.java
new file mode 100644
index 0000000..b8173ba
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorScanQueryTask.java
@@ -0,0 +1,185 @@
+/*
+ * 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.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.UUID;
+import javax.cache.Cache;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CachePeekMode;
+import org.apache.ignite.cache.query.QueryCursor;
+import org.apache.ignite.cache.query.ScanQuery;
+import org.apache.ignite.internal.processors.task.GridInternal;
+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.VisorEither;
+import org.apache.ignite.internal.visor.VisorJob;
+import org.apache.ignite.internal.visor.VisorOneNodeTask;
+import org.apache.ignite.internal.visor.util.VisorExceptionWrapper;
+import org.apache.ignite.lang.IgniteBiPredicate;
+
+import static org.apache.ignite.internal.visor.query.VisorQueryUtils.SCAN_COL_NAMES;
+import static org.apache.ignite.internal.visor.query.VisorQueryUtils.SCAN_QRY_NAME;
+import static org.apache.ignite.internal.visor.query.VisorQueryUtils.fetchScanQueryRows;
+import static org.apache.ignite.internal.visor.query.VisorQueryUtils.scheduleResultSetHolderRemoval;
+
+/**
+ * Task for execute SCAN query and get first page of results.
+ */
+@GridInternal
+public class VisorScanQueryTask extends VisorOneNodeTask<VisorScanQueryArg, VisorEither<VisorQueryResult>> {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** {@inheritDoc} */
+    @Override protected VisorScanQueryJob job(VisorScanQueryArg arg) {
+        return new VisorScanQueryJob(arg, debug);
+    }
+
+    /**
+     * Job for execute SCAN query and get first page of results.
+     */
+    private static class VisorScanQueryJob extends VisorJob<VisorScanQueryArg, VisorEither<VisorQueryResult>> {
+        /** */
+        private static final long serialVersionUID = 0L;
+
+        /**
+         * Create job with specified argument.
+         *
+         * @param arg Job argument.
+         * @param debug Debug flag.
+         */
+        private VisorScanQueryJob(VisorScanQueryArg arg, boolean debug) {
+            super(arg, debug);
+        }
+
+        /**
+         * Execute scan query.
+         *
+         * @param c Cache to scan.
+         * @param arg Job argument with query parameters.
+         * @return Query cursor.
+         */
+        private QueryCursor<Cache.Entry<Object, Object>> scan(IgniteCache<Object, Object> c, VisorScanQueryArg arg,
+            IgniteBiPredicate<Object, Object> filter) {
+            ScanQuery<Object, Object> qry = new ScanQuery<>(filter);
+            qry.setPageSize(arg.getPageSize());
+            qry.setLocal(arg.isLocal());
+
+            return c.withKeepBinary().query(qry);
+        }
+
+        /**
+         * Scan near cache.
+         *
+         * @param c Cache to scan near entries.
+         * @return Cache entries iterator wrapped with query cursor.
+         */
+        private QueryCursor<Cache.Entry<Object, Object>> near(IgniteCache<Object, Object> c) {
+            return new VisorNearCacheCursor<>(c.localEntries(CachePeekMode.NEAR).iterator());
+        }
+
+        /** {@inheritDoc} */
+        @Override protected VisorEither<VisorQueryResult> run(final VisorScanQueryArg arg) {
+            try {
+                IgniteCache<Object, Object> c = ignite.context().cache().jcache(arg.getCacheName());
+                UUID nid = ignite.localNode().id();
+
+                String filterText = arg.getFilter();
+
+                long start = U.currentTimeMillis();
+
+                IgniteBiPredicate<Object, Object> filter = null;
+
+                if (!F.isEmpty(filterText))
+                    filter = new VisorQueryScanRegexFilter(arg.isCaseSensitive(), arg.isRegEx(), filterText);
+
+                VisorQueryCursor<Cache.Entry<Object, Object>> cur =
+                    new VisorQueryCursor<>(arg.isNear() ? near(c) : scan(c, arg, filter));
+
+                List<Object[]> rows = fetchScanQueryRows(cur, arg.getPageSize());
+
+                long duration = U.currentTimeMillis() - start; // Scan duration + fetch duration.
+
+                boolean hasNext = cur.hasNext();
+
+                // Generate query ID to store query cursor in node local storage.
+                String qryId = SCAN_QRY_NAME + "-" + UUID.randomUUID();
+
+                if (hasNext) {
+                    ignite.cluster().<String, VisorQueryCursor>nodeLocalMap().put(qryId, cur);
+
+                    scheduleResultSetHolderRemoval(qryId, ignite);
+                }
+                else
+                    cur.close();
+
+                return new VisorEither<>(new VisorQueryResult(nid, qryId, SCAN_COL_NAMES, rows, hasNext,
+                    duration));
+            }
+            catch (Throwable e) {
+                return new VisorEither<>(new VisorExceptionWrapper(e));
+            }
+        }
+
+        /** {@inheritDoc} */
+        @Override public String toString() {
+            return S.toString(VisorScanQueryJob.class, this);
+        }
+
+        /**
+         * Wrapper for cache iterator to behave like {@link QueryCursor}.
+         */
+        private static class VisorNearCacheCursor<T> implements QueryCursor<T> {
+            /** Wrapped iterator.  */
+            private final Iterator<T> it;
+
+            /**
+             * Wrapping constructor.
+             *
+             * @param it Near cache iterator to wrap.
+             */
+            private VisorNearCacheCursor(Iterator<T> it) {
+                this.it = it;
+            }
+
+            /** {@inheritDoc} */
+            @Override public List<T> getAll() {
+                List<T> all = new ArrayList<>();
+
+                while(it.hasNext())
+                    all.add(it.next());
+
+                return all;
+            }
+
+            /** {@inheritDoc} */
+            @Override public void close() {
+                // Nothing to close.
+            }
+
+            /** {@inheritDoc} */
+            @Override public Iterator<T> iterator() {
+                return it;
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorServiceDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorServiceDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorServiceDescriptor.java
index 26f5c10..4cfd150 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorServiceDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/service/VisorServiceDescriptor.java
@@ -17,17 +17,21 @@
 
 package org.apache.ignite.internal.visor.service;
 
-import java.io.Serializable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
 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;
 import org.apache.ignite.internal.visor.util.VisorTaskUtils;
 import org.apache.ignite.services.ServiceDescriptor;
 
 /**
  * Data transfer object for {@link ServiceDescriptor} object.
  */
-public class VisorServiceDescriptor implements Serializable {
+public class VisorServiceDescriptor extends VisorDataTransferObject {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -65,6 +69,7 @@ public class VisorServiceDescriptor implements Serializable {
     /**
      * Create task result with given parameters
      *
+     * @param srvc Service descriptor to transfer.
      */
     public VisorServiceDescriptor(ServiceDescriptor srvc) {
         name = srvc.name();
@@ -133,6 +138,28 @@ public class VisorServiceDescriptor implements Serializable {
     }
 
     /** {@inheritDoc} */
+    @Override protected void writeExternalData(ObjectOutput out) throws IOException {
+        U.writeString(out, name);
+        U.writeString(out, srvcCls);
+        out.writeInt(totalCnt);
+        out.writeInt(maxPerNodeCnt);
+        U.writeString(out, cacheName);
+        U.writeUuid(out, originNodeId);
+        U.writeMap(out, topSnapshot);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
+        name = U.readString(in);
+        srvcCls = U.readString(in);
+        totalCnt = in.readInt();
+        maxPerNodeCnt = in.readInt();
+        cacheName = U.readString(in);
+        originNodeId = U.readUuid(in);
+        topSnapshot = U.readMap(in);
+    }
+
+    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(VisorServiceDescriptor.class, this);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/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 e1cd7cf..897ac89 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;
@@ -66,6 +65,7 @@ import org.apache.ignite.internal.visor.file.VisorFileBlock;
 import org.apache.ignite.internal.visor.log.VisorLogFile;
 import org.apache.ignite.lang.IgniteClosure;
 import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.spi.eventstorage.NoopEventStorageSpi;
 import org.jetbrains.annotations.Nullable;
 
 import static java.lang.System.getProperty;
@@ -138,7 +138,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());
         }
     };
 
@@ -255,7 +255,7 @@ public class VisorTaskUtils {
                     sb.append(", ");
             }
 
-            sb.append("]");
+            sb.append(']');
 
             return sb.toString();
         }
@@ -290,6 +290,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.
@@ -417,7 +437,7 @@ public class VisorTaskUtils {
      * @param evtMapper Closure to map grid events to Visor data transfer objects.
      * @return Collections of node events
      */
-    public static Collection<VisorGridEvent> collectEvents(Ignite ignite, String evtOrderKey, String evtThrottleCntrKey,
+    public static List<VisorGridEvent> collectEvents(Ignite ignite, String evtOrderKey, String evtThrottleCntrKey,
         int[] evtTypes, IgniteClosure<Event, VisorGridEvent> evtMapper) {
         assert ignite != null;
         assert evtTypes != null && evtTypes.length > 0;
@@ -449,7 +469,9 @@ public class VisorTaskUtils {
             }
         };
 
-        Collection<Event> evts = ignite.events().localQuery(p, evtTypes);
+        Collection<Event> evts = ignite.configuration().getEventStorageSpi() instanceof NoopEventStorageSpi
+            ? Collections.<Event>emptyList()
+            : ignite.events().localQuery(p, evtTypes);
 
         // Update latest order in node local, if not empty.
         if (!evts.isEmpty()) {
@@ -464,7 +486,7 @@ public class VisorTaskUtils {
 
         boolean lost = !lastFound.get() && throttle == 0;
 
-        Collection<VisorGridEvent> res = new ArrayList<>(evts.size() + (lost ? 1 : 0));
+        List<VisorGridEvent> res = new ArrayList<>(evts.size() + (lost ? 1 : 0));
 
         if (lost)
             res.add(new VisorGridEventsLost(ignite.cluster().localNode().id()));
@@ -630,6 +652,7 @@ public class VisorTaskUtils {
                 raf.seek(pos);
 
                 byte[] buf = new byte[toRead];
+
                 int cntRead = raf.read(buf, 0, toRead);
 
                 if (cntRead != toRead)
@@ -681,9 +704,6 @@ public class VisorTaskUtils {
         if (plc instanceof FifoEvictionPolicyMBean)
             return ((FifoEvictionPolicyMBean)plc).getMaxSize();
 
-        if (plc instanceof SortedEvictionPolicyMBean)
-            return ((SortedEvictionPolicyMBean)plc).getMaxSize();
-
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermissionSet.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermissionSet.java b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermissionSet.java
index 9961501..2415fad 100644
--- a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermissionSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermissionSet.java
@@ -20,7 +20,6 @@ package org.apache.ignite.plugin.security;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Map;
-import org.apache.ignite.internal.LessNamingBean;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -32,7 +31,7 @@ import org.jetbrains.annotations.Nullable;
  * Property {@link #defaultAllowAll()} specifies whether to allow or deny
  * cache and task operations if they were not explicitly specified.
  */
-public interface SecurityPermissionSet extends Serializable, LessNamingBean {
+public interface SecurityPermissionSet extends Serializable {
     /**
      * Flag indicating whether to allow or deny cache and task operations
      * if they were not explicitly specified.

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/core/src/main/java/org/apache/ignite/plugin/security/SecuritySubject.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecuritySubject.java b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecuritySubject.java
index b4005ea..66e3c7c 100644
--- a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecuritySubject.java
+++ b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecuritySubject.java
@@ -20,12 +20,11 @@ package org.apache.ignite.plugin.security;
 import java.io.Serializable;
 import java.net.InetSocketAddress;
 import java.util.UUID;
-import org.apache.ignite.internal.LessNamingBean;
 
 /**
  * Security subject representing authenticated node with a set of permissions.
  */
-public interface SecuritySubject extends Serializable, LessNamingBean {
+public interface SecuritySubject extends Serializable {
     /**
      * Gets subject ID.
      *

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/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/12dfe9e8/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 53550ff..ebd28d8 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -37,13 +37,11 @@ org.apache.ignite.cache.CacheExistsException
 org.apache.ignite.cache.CacheInterceptor
 org.apache.ignite.cache.CacheInterceptorAdapter
 org.apache.ignite.cache.CacheKeyConfiguration
-org.apache.ignite.cache.CacheMemoryMode
 org.apache.ignite.cache.CacheMode
 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.PartitionLossPolicy
 org.apache.ignite.cache.QueryEntity
@@ -53,11 +51,6 @@ org.apache.ignite.cache.affinity.AffinityFunction
 org.apache.ignite.cache.affinity.AffinityKey
 org.apache.ignite.cache.affinity.AffinityKeyMapper
 org.apache.ignite.cache.affinity.AffinityUuid
-org.apache.ignite.cache.affinity.fair.FairAffinityFunction
-org.apache.ignite.cache.affinity.fair.FairAffinityFunction$1
-org.apache.ignite.cache.affinity.fair.FairAffinityFunction$FullAssignmentMap$1
-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
@@ -140,6 +133,7 @@ org.apache.ignite.compute.gridify.aop.GridifyDefaultTask
 org.apache.ignite.configuration.CacheConfiguration
 org.apache.ignite.configuration.CacheConfiguration$IgniteAllNodesPredicate
 org.apache.ignite.configuration.CollectionConfiguration
+org.apache.ignite.configuration.DataPageEvictionMode
 org.apache.ignite.configuration.DeploymentMode
 org.apache.ignite.configuration.IgniteReflectionFactory
 org.apache.ignite.configuration.MemoryConfiguration
@@ -329,6 +323,7 @@ org.apache.ignite.internal.managers.eventstorage.GridEventStorageMessage
 org.apache.ignite.internal.managers.indexing.GridIndexingManager$1
 org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerAdapter
 org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager$1
+org.apache.ignite.internal.marshaller.optimized.OptimizedFieldType
 org.apache.ignite.internal.mem.OutOfMemoryException
 org.apache.ignite.internal.pagemem.impl.PageMemoryNoStoreImpl$Segment
 org.apache.ignite.internal.pagemem.snapshot.SnapshotFinishedMessage
@@ -461,19 +456,10 @@ org.apache.ignite.internal.processors.cache.GridCacheContext$4
 org.apache.ignite.internal.processors.cache.GridCacheContext$5
 org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper
 org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper$1
-org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper$2
 org.apache.ignite.internal.processors.cache.GridCacheDeploymentManager$3
 org.apache.ignite.internal.processors.cache.GridCacheEntryInfo
 org.apache.ignite.internal.processors.cache.GridCacheEntryRedeployException
 org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException
-org.apache.ignite.internal.processors.cache.GridCacheEvictionManager$2
-org.apache.ignite.internal.processors.cache.GridCacheEvictionManager$3
-org.apache.ignite.internal.processors.cache.GridCacheEvictionManager$5
-org.apache.ignite.internal.processors.cache.GridCacheEvictionManager$6
-org.apache.ignite.internal.processors.cache.GridCacheEvictionManager$7
-org.apache.ignite.internal.processors.cache.GridCacheEvictionManager$EvictionFuture$2
-org.apache.ignite.internal.processors.cache.GridCacheEvictionRequest
-org.apache.ignite.internal.processors.cache.GridCacheEvictionResponse
 org.apache.ignite.internal.processors.cache.GridCacheExplicitLockSpan
 org.apache.ignite.internal.processors.cache.GridCacheExplicitLockSpan$1
 org.apache.ignite.internal.processors.cache.GridCacheFilterFailedException
@@ -491,9 +477,9 @@ org.apache.ignite.internal.processors.cache.GridCacheMessage
 org.apache.ignite.internal.processors.cache.GridCacheMultiTxFuture$1
 org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate
 org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate$Mask
-org.apache.ignite.internal.processors.cache.GridCacheMvccManager$4
 org.apache.ignite.internal.processors.cache.GridCacheMvccManager$5
 org.apache.ignite.internal.processors.cache.GridCacheMvccManager$6
+org.apache.ignite.internal.processors.cache.GridCacheMvccManager$7
 org.apache.ignite.internal.processors.cache.GridCacheMvccManager$FinishLockFuture$1
 org.apache.ignite.internal.processors.cache.GridCacheOperation
 org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$1$1
@@ -627,7 +613,6 @@ org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtGetSingleFutu
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtGetSingleFuture$2
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtGetSingleFuture$3
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtInvalidPartitionException
-org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLocalPartition$1
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockFuture$1
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockFuture$2
 org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockFuture$3
@@ -701,6 +686,7 @@ org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomic
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$3
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$30
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$31
+org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$32
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$4
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5
 org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$6
@@ -889,15 +875,12 @@ org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$8
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$9
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$CacheSqlIndexMetadata
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$CacheSqlMetadata
-org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$CachedResult
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$CachedResult$QueueIterator
-org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$FieldsResult
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$MetadataJob
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$MetadataJob$1
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$MetadataJob$2
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$MetadataJob$3
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$PeekValueExpiryAwareIterator
-org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$QueryResult
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$RequestFutureMap
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager$RequestFutureMap$1
 org.apache.ignite.internal.processors.cache.query.GridCacheQueryMetricsAdapter
@@ -939,7 +922,6 @@ org.apache.ignite.internal.processors.cache.store.GridCacheWriteBehindStore$Stor
 org.apache.ignite.internal.processors.cache.store.GridCacheWriteBehindStore$ValueStatus
 org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx$FinalizationStatus
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxAdapter
-org.apache.ignite.internal.processors.cache.transactions.IgniteTxAdapter$1
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler$1
 org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler$10
@@ -1107,7 +1089,6 @@ org.apache.ignite.internal.processors.datastructures.GridCacheLockImpl$Sync
 org.apache.ignite.internal.processors.datastructures.GridCacheLockState
 org.apache.ignite.internal.processors.datastructures.GridCacheQueueAdapter$AddProcessor
 org.apache.ignite.internal.processors.datastructures.GridCacheQueueAdapter$ClearProcessor
-org.apache.ignite.internal.processors.datastructures.GridCacheQueueAdapter$CollocatedItemKey
 org.apache.ignite.internal.processors.datastructures.GridCacheQueueAdapter$PollProcessor
 org.apache.ignite.internal.processors.datastructures.GridCacheQueueAdapter$RemoveProcessor
 org.apache.ignite.internal.processors.datastructures.GridCacheQueueHeader
@@ -1119,7 +1100,6 @@ org.apache.ignite.internal.processors.datastructures.GridCacheSemaphoreImpl$Sync
 org.apache.ignite.internal.processors.datastructures.GridCacheSemaphoreState
 org.apache.ignite.internal.processors.datastructures.GridCacheSetHeader
 org.apache.ignite.internal.processors.datastructures.GridCacheSetHeaderKey
-org.apache.ignite.internal.processors.datastructures.GridCacheSetImpl$CollocatedItemKey
 org.apache.ignite.internal.processors.datastructures.GridCacheSetImpl$SumReducer
 org.apache.ignite.internal.processors.datastructures.GridCacheSetItemKey
 org.apache.ignite.internal.processors.datastructures.GridCacheSetProxy
@@ -1307,7 +1287,6 @@ org.apache.ignite.internal.processors.query.GridQueryProcessor$6
 org.apache.ignite.internal.processors.query.GridQueryProcessor$7
 org.apache.ignite.internal.processors.query.GridQueryProcessor$8
 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
@@ -1415,8 +1394,6 @@ org.apache.ignite.internal.transactions.IgniteTxOptimisticCheckedException
 org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException
 org.apache.ignite.internal.transactions.IgniteTxTimeoutCheckedException
 org.apache.ignite.internal.util.F0$1
-org.apache.ignite.internal.util.F0$10
-org.apache.ignite.internal.util.F0$11
 org.apache.ignite.internal.util.F0$2
 org.apache.ignite.internal.util.F0$3
 org.apache.ignite.internal.util.F0$4
@@ -1515,7 +1492,6 @@ org.apache.ignite.internal.util.future.GridEmbeddedFuture$AL1
 org.apache.ignite.internal.util.future.GridEmbeddedFuture$AL2
 org.apache.ignite.internal.util.future.GridEmbeddedFuture$AsyncListener1
 org.apache.ignite.internal.util.future.GridEmbeddedFuture$AsyncListener2
-org.apache.ignite.internal.util.future.GridFutureAdapter$ArrayListener
 org.apache.ignite.internal.util.future.GridFutureChainListener
 org.apache.ignite.internal.util.future.IgniteFutureImpl$1
 org.apache.ignite.internal.util.future.IgniteFutureImpl$InternalFutureListener
@@ -1537,78 +1513,6 @@ org.apache.ignite.internal.util.lang.GridAbsClosure
 org.apache.ignite.internal.util.lang.GridAbsClosureX
 org.apache.ignite.internal.util.lang.GridCloseableIterator
 org.apache.ignite.internal.util.lang.GridClosureException
-org.apache.ignite.internal.util.lang.GridFunc$1
-org.apache.ignite.internal.util.lang.GridFunc$10
-org.apache.ignite.internal.util.lang.GridFunc$11
-org.apache.ignite.internal.util.lang.GridFunc$12
-org.apache.ignite.internal.util.lang.GridFunc$13
-org.apache.ignite.internal.util.lang.GridFunc$14
-org.apache.ignite.internal.util.lang.GridFunc$15
-org.apache.ignite.internal.util.lang.GridFunc$16
-org.apache.ignite.internal.util.lang.GridFunc$17
-org.apache.ignite.internal.util.lang.GridFunc$18
-org.apache.ignite.internal.util.lang.GridFunc$19
-org.apache.ignite.internal.util.lang.GridFunc$2
-org.apache.ignite.internal.util.lang.GridFunc$20
-org.apache.ignite.internal.util.lang.GridFunc$21
-org.apache.ignite.internal.util.lang.GridFunc$22
-org.apache.ignite.internal.util.lang.GridFunc$23
-org.apache.ignite.internal.util.lang.GridFunc$24
-org.apache.ignite.internal.util.lang.GridFunc$25
-org.apache.ignite.internal.util.lang.GridFunc$26
-org.apache.ignite.internal.util.lang.GridFunc$27
-org.apache.ignite.internal.util.lang.GridFunc$28
-org.apache.ignite.internal.util.lang.GridFunc$29
-org.apache.ignite.internal.util.lang.GridFunc$3
-org.apache.ignite.internal.util.lang.GridFunc$30
-org.apache.ignite.internal.util.lang.GridFunc$31
-org.apache.ignite.internal.util.lang.GridFunc$32
-org.apache.ignite.internal.util.lang.GridFunc$32$1
-org.apache.ignite.internal.util.lang.GridFunc$33
-org.apache.ignite.internal.util.lang.GridFunc$33$1
-org.apache.ignite.internal.util.lang.GridFunc$35
-org.apache.ignite.internal.util.lang.GridFunc$36
-org.apache.ignite.internal.util.lang.GridFunc$37
-org.apache.ignite.internal.util.lang.GridFunc$38
-org.apache.ignite.internal.util.lang.GridFunc$39
-org.apache.ignite.internal.util.lang.GridFunc$4
-org.apache.ignite.internal.util.lang.GridFunc$40
-org.apache.ignite.internal.util.lang.GridFunc$41
-org.apache.ignite.internal.util.lang.GridFunc$42
-org.apache.ignite.internal.util.lang.GridFunc$43
-org.apache.ignite.internal.util.lang.GridFunc$44
-org.apache.ignite.internal.util.lang.GridFunc$45
-org.apache.ignite.internal.util.lang.GridFunc$46
-org.apache.ignite.internal.util.lang.GridFunc$47
-org.apache.ignite.internal.util.lang.GridFunc$48
-org.apache.ignite.internal.util.lang.GridFunc$49
-org.apache.ignite.internal.util.lang.GridFunc$49$1
-org.apache.ignite.internal.util.lang.GridFunc$49$2
-org.apache.ignite.internal.util.lang.GridFunc$5
-org.apache.ignite.internal.util.lang.GridFunc$50
-org.apache.ignite.internal.util.lang.GridFunc$50$1
-org.apache.ignite.internal.util.lang.GridFunc$50$2
-org.apache.ignite.internal.util.lang.GridFunc$51
-org.apache.ignite.internal.util.lang.GridFunc$51$1
-org.apache.ignite.internal.util.lang.GridFunc$51$2
-org.apache.ignite.internal.util.lang.GridFunc$52
-org.apache.ignite.internal.util.lang.GridFunc$52$1
-org.apache.ignite.internal.util.lang.GridFunc$52$2
-org.apache.ignite.internal.util.lang.GridFunc$53
-org.apache.ignite.internal.util.lang.GridFunc$54
-org.apache.ignite.internal.util.lang.GridFunc$55
-org.apache.ignite.internal.util.lang.GridFunc$56
-org.apache.ignite.internal.util.lang.GridFunc$57
-org.apache.ignite.internal.util.lang.GridFunc$58
-org.apache.ignite.internal.util.lang.GridFunc$59
-org.apache.ignite.internal.util.lang.GridFunc$6
-org.apache.ignite.internal.util.lang.GridFunc$60
-org.apache.ignite.internal.util.lang.GridFunc$61
-org.apache.ignite.internal.util.lang.GridFunc$62
-org.apache.ignite.internal.util.lang.GridFunc$63
-org.apache.ignite.internal.util.lang.GridFunc$7
-org.apache.ignite.internal.util.lang.GridFunc$8
-org.apache.ignite.internal.util.lang.GridFunc$9
 org.apache.ignite.internal.util.lang.GridIterable
 org.apache.ignite.internal.util.lang.GridIterableAdapter
 org.apache.ignite.internal.util.lang.GridIterableAdapter$IteratorWrapper
@@ -1639,9 +1543,57 @@ org.apache.ignite.internal.util.lang.IgniteReducer3
 org.apache.ignite.internal.util.lang.IgniteReducer3X
 org.apache.ignite.internal.util.lang.IgniteReducerX
 org.apache.ignite.internal.util.lang.IgniteSingletonIterator
+org.apache.ignite.internal.util.lang.gridfunc.AlwaysFalsePredicate
+org.apache.ignite.internal.util.lang.gridfunc.AlwaysTruePredicate
+org.apache.ignite.internal.util.lang.gridfunc.AlwaysTrueReducer
+org.apache.ignite.internal.util.lang.gridfunc.AtomicIntegerFactoryCallable
+org.apache.ignite.internal.util.lang.gridfunc.CacheEntryGetValueClosure
+org.apache.ignite.internal.util.lang.gridfunc.CacheEntryHasPeekPredicate
+org.apache.ignite.internal.util.lang.gridfunc.ClusterNodeGetIdClosure
+org.apache.ignite.internal.util.lang.gridfunc.ConcurrentDequeFactoryCallable
+org.apache.ignite.internal.util.lang.gridfunc.ConcurrentHashSetFactoryCallable
+org.apache.ignite.internal.util.lang.gridfunc.ConcurrentMapFactoryCallable
+org.apache.ignite.internal.util.lang.gridfunc.ContainsNodeIdsPredicate
+org.apache.ignite.internal.util.lang.gridfunc.ContainsPredicate
+org.apache.ignite.internal.util.lang.gridfunc.EntryByKeyEvaluationPredicate
+org.apache.ignite.internal.util.lang.gridfunc.EqualsClusterNodeIdPredicate
+org.apache.ignite.internal.util.lang.gridfunc.EqualsUuidPredicate
+org.apache.ignite.internal.util.lang.gridfunc.FlatCollectionWrapper
+org.apache.ignite.internal.util.lang.gridfunc.FlatIterator
+org.apache.ignite.internal.util.lang.gridfunc.HasEqualIdPredicate
+org.apache.ignite.internal.util.lang.gridfunc.HasNotEqualIdPredicate
+org.apache.ignite.internal.util.lang.gridfunc.IdentityClosure
+org.apache.ignite.internal.util.lang.gridfunc.IntSumReducer
+org.apache.ignite.internal.util.lang.gridfunc.IsAllPredicate
+org.apache.ignite.internal.util.lang.gridfunc.IsNotAllPredicate
+org.apache.ignite.internal.util.lang.gridfunc.IsNotNullPredicate
+org.apache.ignite.internal.util.lang.gridfunc.LongSumReducer
+org.apache.ignite.internal.util.lang.gridfunc.MapFactoryCallable
+org.apache.ignite.internal.util.lang.gridfunc.MultipleIterator
+org.apache.ignite.internal.util.lang.gridfunc.NoOpClosure
+org.apache.ignite.internal.util.lang.gridfunc.NotContainsPredicate
+org.apache.ignite.internal.util.lang.gridfunc.NotEqualPredicate
+org.apache.ignite.internal.util.lang.gridfunc.PredicateCollectionView
+org.apache.ignite.internal.util.lang.gridfunc.PredicateMapView
+org.apache.ignite.internal.util.lang.gridfunc.PredicateMapView$1
+org.apache.ignite.internal.util.lang.gridfunc.PredicateSetView
+org.apache.ignite.internal.util.lang.gridfunc.PredicateSetView$1
+org.apache.ignite.internal.util.lang.gridfunc.ReadOnlyCollectionView
+org.apache.ignite.internal.util.lang.gridfunc.ReadOnlyCollectionView$1
+org.apache.ignite.internal.util.lang.gridfunc.ReadOnlyCollectionView2X
+org.apache.ignite.internal.util.lang.gridfunc.ReadOnlyCollectionView2X$1
+org.apache.ignite.internal.util.lang.gridfunc.RunnableWrapperClosure
+org.apache.ignite.internal.util.lang.gridfunc.SetFactoryCallable
+org.apache.ignite.internal.util.lang.gridfunc.StringConcatReducer
+org.apache.ignite.internal.util.lang.gridfunc.ToStringClosure
+org.apache.ignite.internal.util.lang.gridfunc.TransformCollectionView
+org.apache.ignite.internal.util.lang.gridfunc.TransformFilteringIterator
+org.apache.ignite.internal.util.lang.gridfunc.TransformMapView
+org.apache.ignite.internal.util.lang.gridfunc.TransformMapView$1
+org.apache.ignite.internal.util.lang.gridfunc.TransformMapView2
+org.apache.ignite.internal.util.lang.gridfunc.TransformMapView2$1
 org.apache.ignite.internal.util.nio.GridNioEmbeddedFuture$1
 org.apache.ignite.internal.util.nio.GridNioException
-org.apache.ignite.internal.util.nio.GridNioFutureImpl
 org.apache.ignite.internal.util.nio.GridNioMessageTracker
 org.apache.ignite.internal.util.nio.GridNioServer$NioOperation
 org.apache.ignite.internal.util.nio.GridNioServer$RandomBalancer
@@ -1698,32 +1650,42 @@ 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.VisorEither
 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$VisorBinaryCollectMetadataJob
+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.VisorCacheJdbcType
+org.apache.ignite.internal.visor.cache.VisorCacheJdbcTypeField
 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
@@ -1731,39 +1693,33 @@ org.apache.ignite.internal.visor.cache.VisorCachePartition
 org.apache.ignite.internal.visor.cache.VisorCachePartitions
 org.apache.ignite.internal.visor.cache.VisorCachePartitionsTask
 org.apache.ignite.internal.visor.cache.VisorCachePartitionsTask$VisorCachePartitionsJob
-org.apache.ignite.internal.visor.cache.VisorCacheQueryConfiguration
-org.apache.ignite.internal.visor.cache.VisorCacheQueryDetailMetrics
-org.apache.ignite.internal.visor.cache.VisorCacheQueryDetailMetricsCollectorTask
-org.apache.ignite.internal.visor.cache.VisorCacheQueryDetailMetricsCollectorTask$VisorCacheQueryDetailMetricsCollectorJob
-org.apache.ignite.internal.visor.cache.VisorCacheQueryMetrics
 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.VisorCacheResetMetricsTask
 org.apache.ignite.internal.visor.cache.VisorCacheResetMetricsTask$VisorCacheResetMetricsJob
-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
 org.apache.ignite.internal.visor.cache.VisorCacheStoreConfiguration
-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
@@ -1774,11 +1730,12 @@ 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.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
@@ -1786,6 +1743,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
@@ -1794,11 +1752,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.VisorChangeGridActiveStateTask
@@ -1828,38 +1788,58 @@ 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
-org.apache.ignite.internal.visor.query.VisorCollectRunningQueriesTask
-org.apache.ignite.internal.visor.query.VisorCollectRunningQueriesTask$VisorCollectRunningQueriesJob
 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.VisorQueryCleanupTask
 org.apache.ignite.internal.visor.query.VisorQueryCleanupTask$VisorQueryCleanupJob
+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.VisorQueryEntity
 org.apache.ignite.internal.visor.query.VisorQueryField
-org.apache.ignite.internal.visor.query.VisorQueryJob
+org.apache.ignite.internal.visor.query.VisorQueryIndex
+org.apache.ignite.internal.visor.query.VisorQueryIndexField
+org.apache.ignite.internal.visor.query.VisorQueryMetrics
 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.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.VisorQueryResult
-org.apache.ignite.internal.visor.query.VisorQueryResultEx
-org.apache.ignite.internal.visor.query.VisorQueryScanSubstringFilter
+org.apache.ignite.internal.visor.query.VisorQueryScanRegexFilter
 org.apache.ignite.internal.visor.query.VisorQueryTask
+org.apache.ignite.internal.visor.query.VisorQueryTask$VisorQueryJob
+org.apache.ignite.internal.visor.query.VisorRunningQueriesCollectorTask
+org.apache.ignite.internal.visor.query.VisorRunningQueriesCollectorTask$VisorCollectRunningQueriesJob
 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.service.VisorCancelServiceTask
 org.apache.ignite.internal.visor.service.VisorCancelServiceTask$VisorCancelServiceJob
 org.apache.ignite.internal.visor.service.VisorServiceDescriptor
@@ -1888,7 +1868,6 @@ org.apache.ignite.lang.IgniteRunnable
 org.apache.ignite.lang.IgniteUuid
 org.apache.ignite.lifecycle.LifecycleEventType
 org.apache.ignite.marshaller.jdk.JdkMarshallerDummySerializable
-org.apache.ignite.internal.marshaller.optimized.OptimizedFieldType
 org.apache.ignite.messaging.MessagingListenActor
 org.apache.ignite.platform.dotnet.PlatformDotNetAffinityFunction
 org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory
@@ -1923,8 +1902,8 @@ org.apache.ignite.spi.checkpoint.sharedfs.SharedFsCheckpointData
 org.apache.ignite.spi.collision.jobstealing.JobStealingRequest
 org.apache.ignite.spi.collision.priorityqueue.PriorityQueueCollisionSpi$PriorityGridCollisionJobContextComparator
 org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi$1
+org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi$10
 org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi$11
-org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi$12
 org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi$2$ConnectClosure
 org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi$2$ConnectClosure$1
 org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi$2$ConnectClosureNew
@@ -1983,6 +1962,7 @@ org.apache.ignite.stream.StreamVisitor
 org.apache.ignite.stream.StreamVisitor$1
 org.apache.ignite.transactions.TransactionConcurrency
 org.apache.ignite.transactions.TransactionDeadlockException
+org.apache.ignite.transactions.TransactionException
 org.apache.ignite.transactions.TransactionHeuristicException
 org.apache.ignite.transactions.TransactionIsolation
 org.apache.ignite.transactions.TransactionMetrics

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/hadoop/src/main/resources/META-INF/classnames.properties
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/resources/META-INF/classnames.properties b/modules/hadoop/src/main/resources/META-INF/classnames.properties
index d8848ac..051094d 100644
--- a/modules/hadoop/src/main/resources/META-INF/classnames.properties
+++ b/modules/hadoop/src/main/resources/META-INF/classnames.properties
@@ -27,14 +27,6 @@ org.apache.ignite.hadoop.util.KerberosUserNameMapper$State
 org.apache.ignite.hadoop.util.UserNameMapper
 org.apache.ignite.internal.processors.hadoop.HadoopAttributes
 org.apache.ignite.internal.processors.hadoop.HadoopExternalSplit
-org.apache.ignite.internal.processors.hadoop.HadoopFileBlock
-org.apache.ignite.hadoop.HadoopInputSplit
-org.apache.ignite.internal.processors.hadoop.HadoopJobId
-org.apache.ignite.internal.processors.hadoop.HadoopJobInfo
-org.apache.ignite.internal.processors.hadoop.HadoopJobPhase
-org.apache.ignite.internal.processors.hadoop.HadoopJobProperty
-org.apache.ignite.internal.processors.hadoop.HadoopJobStatus
-org.apache.ignite.hadoop.HadoopMapReducePlan
 org.apache.ignite.internal.processors.hadoop.HadoopSplitWrapper
 org.apache.ignite.internal.processors.hadoop.HadoopTaskCancelledException
 org.apache.ignite.internal.processors.hadoop.counter.HadoopCounterAdapter

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java
----------------------------------------------------------------------
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java
index 6289bdb..44dd09c 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyObjectMapper.java
@@ -29,19 +29,11 @@ import com.fasterxml.jackson.databind.module.SimpleModule;
 import com.fasterxml.jackson.databind.ser.DefaultSerializerProvider;
 import com.fasterxml.jackson.databind.ser.SerializerFactory;
 import java.io.IOException;
-import java.lang.reflect.Method;
 import java.sql.SQLException;
 import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
 import java.util.Locale;
-import java.util.Map;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-import org.apache.ignite.internal.LessNamingBean;
-import org.apache.ignite.internal.visor.cache.VisorCache;
+import org.apache.ignite.internal.processors.cache.query.GridCacheSqlIndexMetadata;
+import org.apache.ignite.internal.processors.cache.query.GridCacheSqlMetadata;
 import org.apache.ignite.internal.visor.util.VisorExceptionWrapper;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.lang.IgniteUuid;
@@ -63,7 +55,8 @@ public class GridJettyObjectMapper extends ObjectMapper {
         module.addSerializer(Throwable.class, THROWABLE_SERIALIZER);
         module.addSerializer(IgniteBiTuple.class, IGNITE_TUPLE_SERIALIZER);
         module.addSerializer(IgniteUuid.class, IGNITE_UUID_SERIALIZER);
-        module.addSerializer(LessNamingBean.class, LESS_NAMING_SERIALIZER);
+        module.addSerializer(GridCacheSqlMetadata.class, IGNITE_SQL_METADATA_SERIALIZER);
+        module.addSerializer(GridCacheSqlIndexMetadata.class, IGNITE_SQL_INDEX_METADATA_SERIALIZER);
 
         registerModule(module);
     }
@@ -186,89 +179,35 @@ public class GridJettyObjectMapper extends ObjectMapper {
         }
     };
 
-    /**
-     * Custom serializer for Visor classes with non JavaBeans getters.
-     */
-    private static final JsonSerializer<Object> LESS_NAMING_SERIALIZER = new JsonSerializer<Object>() {
-        /** Methods to exclude. */
-        private final Collection<String> exclMtds = Arrays.asList("toString", "hashCode", "clone", "getClass");
+    /** Custom serializer for {@link GridCacheSqlMetadata} */
+    private static final JsonSerializer<GridCacheSqlMetadata> IGNITE_SQL_METADATA_SERIALIZER = new JsonSerializer<GridCacheSqlMetadata>() {
+        /** {@inheritDoc} */
+        @Override public void serialize(GridCacheSqlMetadata m, JsonGenerator gen, SerializerProvider ser) throws IOException {
+            gen.writeStartObject();
 
-        /** */
-        private final Map<Class<?>, Collection<Method>> clsCache = new HashMap<>();
+            gen.writeStringField("cacheName", m.cacheName());
+            gen.writeObjectField("types", m.types());
+            gen.writeObjectField("keyClasses", m.keyClasses());
+            gen.writeObjectField("valClasses", m.valClasses());
+            gen.writeObjectField("fields", m.fields());
+            gen.writeObjectField("indexes", m.indexes());
 
-        /** */
-        private final ReadWriteLock rwLock = new ReentrantReadWriteLock();
+            gen.writeEndObject();
+        }
+    };
 
+    /** Custom serializer for {@link GridCacheSqlIndexMetadata} */
+    private static final JsonSerializer<GridCacheSqlIndexMetadata> IGNITE_SQL_INDEX_METADATA_SERIALIZER = new JsonSerializer<GridCacheSqlIndexMetadata>() {
         /** {@inheritDoc} */
-        @Override public void serialize(Object bean, JsonGenerator gen, SerializerProvider ser) throws IOException {
-            if (bean != null) {
-                gen.writeStartObject();
-
-                Class<?> cls = bean.getClass();
-
-                Collection<Method> methods;
-
-                // Get descriptor from cache.
-                rwLock.readLock().lock();
-
-                try {
-                    methods = clsCache.get(cls);
-                }
-                finally {
-                    rwLock.readLock().unlock();
-                }
-
-                // If missing in cache - build descriptor
-                if (methods == null) {
-                    Method[] publicMtds = cls.getMethods();
-
-                    methods = new ArrayList<>(publicMtds.length);
-
-                    for (Method mtd : publicMtds) {
-                        Class retType = mtd.getReturnType();
-
-                        String mtdName = mtd.getName();
-
-                        if (mtd.getParameterTypes().length != 0 ||
-                            retType == void.class || retType == cls ||
-                            exclMtds.contains(mtdName) ||
-                            (VisorCache.class.isAssignableFrom(retType) && "history".equals(mtdName)))
-                            continue;
-
-                        mtd.setAccessible(true);
-
-                        methods.add(mtd);
-                    }
-
-                    // Allow multiple puts for the same class - they will simply override.
-                    rwLock.writeLock().lock();
-
-                    try {
-                        clsCache.put(cls, methods);
-                    }
-                    finally {
-                        rwLock.writeLock().unlock();
-                    }
-                }
-
-                // Extract fields values using descriptor and build JSONObject.
-                for (Method mtd : methods) {
-                    try {
-                        Object prop = mtd.invoke(bean);
-
-                        if (prop != null)
-                            gen.writeObjectField(mtd.getName(), prop);
-                    }
-                    catch (IOException ioe) {
-                        throw ioe;
-                    }
-                    catch (Exception e) {
-                        throw new IOException(e);
-                    }
-                }
-
-                gen.writeEndObject();
-            }
+        @Override public void serialize(GridCacheSqlIndexMetadata idx, JsonGenerator gen, SerializerProvider ser) throws IOException {
+            gen.writeStartObject();
+
+            gen.writeStringField("name", idx.name());
+            gen.writeObjectField("fields", idx.fields());
+            gen.writeObjectField("descendings", idx.descendings());
+            gen.writeBooleanField("unique", idx.unique());
+
+            gen.writeEndObject();
         }
     };
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/12dfe9e8/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))
 


Mime
View raw message