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

[01/24] ignite git commit: GG-11414 Get rid of NavigableMap dependency for distributed joins

Repository: ignite
Updated Branches:
  refs/heads/ignite-gg-11810 1038a0b48 -> c1d5081f9


GG-11414 Get rid of NavigableMap dependency for distributed joins


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

Branch: refs/heads/ignite-gg-11810
Commit: ef015d3893026dc2e0516b65b3caf7df9eec72f1
Parents: 9d6288f
Author: Sergey Sidorov <ss...@gridgain.com>
Authored: Mon Oct 31 19:02:13 2016 +0300
Committer: Sergey Sidorov <ss...@gridgain.com>
Committed: Mon Oct 31 19:02:13 2016 +0300

----------------------------------------------------------------------
 .../apache/ignite/internal/util/IgniteTree.java | 105 +++++++++++++++++++
 .../offheap/unsafe/GridOffHeapSnapTreeMap.java  |  50 ++++++++-
 .../internal/util/snaptree/SnapTreeMap.java     |  49 ++++++++-
 .../query/h2/opt/GridH2IndexBase.java           |  92 ++++++++++++----
 .../query/h2/opt/GridH2TreeIndex.java           |  32 +++---
 5 files changed, 290 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ef015d38/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
new file mode 100644
index 0000000..2c1e1af
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
@@ -0,0 +1,105 @@
+/*
+ * 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.util;
+
+import java.util.*;
+
+/**
+ * Interface for ignite internal tree.
+ */
+public interface IgniteTree<K, V> {
+    /**
+     * Associates the specified value with the specified key in this tree.
+     *
+     * @param key key with which the specified value is to be associated
+     * @param value value to be associated with the specified key
+     * @return the previous value associated with key
+     */
+    V put(K key, V value);
+
+    /**
+     * Returns the value to which the specified key is mapped, or {@code null} if this tree contains no mapping for the
+     * key.
+     *
+     * @param key the key whose associated value is to be returned
+     * @return the value to which the specified key is mapped, or {@code null} if this tree contains no mapping for the
+     * key
+     */
+    V get(Object key);
+
+    /**
+     * Removes the mapping for a key from this tree if it is present.
+     *
+     * @param key key whose mapping is to be removed from the tree
+     * @return the previous value associated with key, or null if there was no mapping for key.
+     */
+    V remove(Object key);
+
+    /**
+     * Returns the number of elements in this tree.
+     *
+     * @return the number of elements in this tree
+     */
+    int size();
+
+    /**
+     * Returns a {@link Collection} view of the values contained in this tree.
+     *
+     * @return a collection view of the values contained in this map
+     */
+    Collection<V> values();
+
+    /**
+     * Returns a view of the portion of this tree whose keys are less than (or equal to, if {@code inclusive} is true)
+     * {@code toKey}.  The returned tree is backed by this tree, so changes in the returned tree are reflected in this
+     * tree, and vice-versa.  The returned tree supports all optional tree operations that this tree supports.
+     *
+     * @param toKey high endpoint of the keys in the returned tree
+     * @param inclusive {@code true} if the high endpoint is to be included in the returned view
+     * @return a view of the portion of this tree whose keys are less than (or equal to, if {@code inclusive} is true)
+     * {@code toKey}
+     */
+    IgniteTree<K, V> headTree(K toKey, boolean inclusive);
+
+    /**
+     * Returns a view of the portion of this tree whose keys are greater than (or equal to, if {@code inclusive} is
+     * true) {@code fromKey}.  The returned tree is backed by this tree, so changes in the returned tree are reflected
+     * in this tree, and vice-versa.  The returned tree supports all optional tree operations that this tree supports.
+     *
+     * @param fromKey low endpoint of the keys in the returned tree
+     * @param inclusive {@code true} if the low endpoint is to be included in the returned view
+     * @return a view of the portion of this tree whose keys are greater than (or equal to, if {@code inclusive} is
+     * true) {@code fromKey}
+     */
+    IgniteTree<K, V> tailTree(K fromKey, boolean inclusive);
+
+    /**
+     * Returns a view of the portion of this tree whose keys range from {@code fromKey} to {@code toKey}.  If {@code
+     * fromKey} and {@code toKey} are equal, the returned tree is empty unless {@code fromInclusive} and {@code
+     * toInclusive} are both true.  The returned tree is backed by this tree, so changes in the returned tree are
+     * reflected in this tree, and vice-versa.  The returned tree supports all optional tree operations that this tree
+     * supports.
+     *
+     * @param fromKey low endpoint of the keys in the returned tree
+     * @param fromInclusive {@code true} if the low endpoint is to be included in the returned view
+     * @param toKey high endpoint of the keys in the returned tree
+     * @param toInclusive {@code true} if the high endpoint is to be included in the returned view
+     * @return a view of the portion of this tree whose keys range from {@code fromKey} to {@code toKey}
+     */
+    IgniteTree<K, V> subTree(final K fromKey, final boolean fromInclusive, final K toKey, final boolean toInclusive);
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/ef015d38/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
index 7bde651..681394f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
@@ -55,6 +55,7 @@ import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import org.apache.ignite.internal.processors.cache.distributed.dht.GridReservable;
+import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.jetbrains.annotations.Nullable;
 import org.jsr166.ConcurrentHashMap8;
@@ -106,8 +107,9 @@ import org.jsr166.ConcurrentHashMap8;
  *  @author Nathan Bronson
  */
 @SuppressWarnings("ALL")
-public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer,V extends GridOffHeapSmartPointer>
-    extends AbstractMap<K,V> implements ConcurrentNavigableMap<K, V>, Cloneable, AutoCloseable, GridReservable {
+public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer, V extends GridOffHeapSmartPointer>
+    extends AbstractMap<K, V>
+    implements ConcurrentNavigableMap<K, V>, Cloneable, AutoCloseable, GridReservable, IgniteTree<K, V> {
     /** This is a special value that indicates that an optimistic read failed. */
     private static final GridOffHeapSmartPointer SpecialRetry = new GridOffHeapSmartPointer() {
         @Override public long pointer() {
@@ -3820,10 +3822,32 @@ public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer,V extends
         return new SubMap(this, null, null, false, null, null, false, true);
     }
 
+    //////////////// IgniteTree
+
+    /** {@inheritDoc} */
+    @Override public IgniteTree<K, V> headTree(final K toKey, final boolean inclusive) {
+        return new SubMap(this, null, null, false, toKey, comparable(toKey), inclusive, false);
+    }
+
+    /** {@inheritDoc} */
+    @Override public IgniteTree<K, V> tailTree(final K fromKey, final boolean inclusive) {
+        return new SubMap(this, fromKey, comparable(fromKey), inclusive, null, null, false, false);
+    }
+
+    /** {@inheritDoc} */
+    @Override public IgniteTree<K, V> subTree(final K fromKey, final boolean fromInclusive, final K toKey,
+        final boolean toInclusive) {
+        final Comparable<? super K> fromCmp = comparable(fromKey);
+        if (fromCmp.compareTo(toKey) > 0) {
+            throw new IllegalArgumentException();
+        }
+        return new SubMap(this, fromKey, fromCmp, fromInclusive, toKey, comparable(toKey), toInclusive, false);
+    }
+
     /**
      * Submap.
      */
-    private class SubMap extends AbstractMap<K,V> implements ConcurrentNavigableMap<K,V> {
+    private class SubMap extends AbstractMap<K,V> implements ConcurrentNavigableMap<K,V>, IgniteTree<K, V> {
         /** */
         private final GridOffHeapSnapTreeMap<K,V> m;
 
@@ -4429,6 +4453,26 @@ public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer,V extends
         @Override public NavigableSet<K> descendingKeySet() {
             return descendingMap().navigableKeySet();
         }
+
+        /////////// IgniteTree
+
+        /** {@inheritDoc} */
+        @Override public IgniteTree<K, V> headTree(K toKey, boolean inclusive) {
+            return headMap(toKey, inclusive);
+        }
+
+        /** {@inheritDoc} */
+        @Override public IgniteTree<K, V> tailTree(K fromKey, boolean inclusive) {
+            return tailMap(fromKey, inclusive);
+        }
+
+        /** {@inheritDoc} */
+        @Override public IgniteTree<K, V> subTree(final K fromKey,
+            final boolean fromInclusive,
+            final K toKey,
+            final boolean toInclusive) {
+            return subMap(fromKey, fromInclusive, toKey, toInclusive);
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/ef015d38/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
index b5c6545..064e7b0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
@@ -35,6 +35,8 @@
 
 package org.apache.ignite.internal.util.snaptree;
 
+import org.apache.ignite.internal.util.*;
+
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -102,7 +104,9 @@ import java.util.concurrent.ConcurrentNavigableMap;
  *  @author Nathan Bronson
  */
 @SuppressWarnings("ALL")
-public class SnapTreeMap<K,V> extends AbstractMap<K,V> implements ConcurrentNavigableMap<K,V>, Cloneable, Serializable {
+public class SnapTreeMap<K, V> extends AbstractMap<K, V> implements ConcurrentNavigableMap<K, V>, Cloneable,
+    Serializable, IgniteTree<K, V> {
+
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -2341,7 +2345,30 @@ public class SnapTreeMap<K,V> extends AbstractMap<K,V> implements ConcurrentNavi
         return new SubMap(this, null, null, false, null, null, false, true);
     }
 
-    private static class SubMap<K,V> extends AbstractMap<K,V> implements ConcurrentNavigableMap<K,V>, Serializable {
+    //////////////// IgniteTree
+
+    /** {@inheritDoc} */
+    @Override public IgniteTree<K, V> headTree(final K toKey, final boolean inclusive) {
+        return new SubMap<K,V>(this, null, null, false, toKey, comparable(toKey), inclusive, false);
+    }
+
+    /** {@inheritDoc} */
+    @Override public IgniteTree<K, V> tailTree(final K fromKey, final boolean inclusive) {
+        return new SubMap<K,V>(this, fromKey, comparable(fromKey), inclusive, null, null, false, false);
+    }
+
+    /** {@inheritDoc} */
+    @Override public IgniteTree<K, V> subTree(final K fromKey, final boolean fromInclusive, final K toKey,
+        final boolean toInclusive) {
+        final Comparable<? super K> fromCmp = comparable(fromKey);
+        if (fromCmp.compareTo(toKey) > 0) {
+            throw new IllegalArgumentException();
+        }
+        return new SubMap<K,V>(this, fromKey, fromCmp, fromInclusive, toKey, comparable(toKey), toInclusive, false);
+    }
+
+    private static class SubMap<K, V> extends AbstractMap<K, V> implements ConcurrentNavigableMap<K, V>, Serializable,
+        IgniteTree<K, V> {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -2863,6 +2890,24 @@ public class SnapTreeMap<K,V> extends AbstractMap<K,V> implements ConcurrentNavi
             minCmp = minKey == null ? null : m.comparable(minKey);
             maxCmp = maxKey == null ? null : m.comparable(maxKey);
         }
+
+        /////// IgniteTree
+
+        /** {@inheritDoc} */
+        @Override public IgniteTree<K, V> headTree(final K toKey, final boolean inclusive) {
+            return headMap(toKey, inclusive);
+        }
+
+        /** {@inheritDoc} */
+        @Override public IgniteTree<K, V> tailTree(final K fromKey, final boolean inclusive) {
+            return tailMap(fromKey, inclusive);
+        }
+
+        /** {@inheritDoc} */
+        @Override public IgniteTree<K, V> subTree(final K fromKey, final boolean fromInclusive, final K toKey,
+            final boolean toInclusive) {
+            return subMap(fromKey, fromInclusive, toKey, toInclusive);
+        }
     }
 
     //////// Serialization

http://git-wip-us.apache.org/repos/asf/ignite/blob/ef015d38/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
index 858dca1..032b548 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
@@ -17,16 +17,7 @@
 
 package org.apache.ignite.internal.processors.query.h2.opt;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ConcurrentNavigableMap;
 import java.util.concurrent.Future;
@@ -52,7 +43,7 @@ import org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2RowRange
 import org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2RowRangeBounds;
 import org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2ValueMessage;
 import org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2ValueMessageFactory;
-import org.apache.ignite.internal.util.GridSpinBusyLock;
+import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.lang.GridFilteredIterator;
 import org.apache.ignite.internal.util.typedef.CIX2;
 import org.apache.ignite.internal.util.typedef.F;
@@ -465,11 +456,19 @@ public abstract class GridH2IndexBase extends BaseIndex {
 
                 if (msg.bounds() != null) {
                     // This is the first request containing all the search rows.
-                    ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> snapshot0 = qctx.getSnapshot(idxId);
+                    Object snapshot0 = qctx.getSnapshot(idxId);
 
                     assert !msg.bounds().isEmpty() : "empty bounds";
 
-                    src = new RangeSource(msg.bounds(), snapshot0, qctx.filter());
+                    IgniteTree snapshotTree;
+
+                    if (snapshot0 instanceof IgniteTree)
+                        snapshotTree = (IgniteTree)snapshot0;
+                    else
+                        snapshotTree = new IgniteNavigableMapTree(
+                            (NavigableMap<GridSearchRowPointer, GridH2Row>) snapshot0);
+
+                    src = new RangeSource(msg.bounds(), snapshotTree, qctx.filter());
                 }
                 else {
                     // This is request to fetch next portion of data.
@@ -1371,7 +1370,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
         Iterator<GridH2Row> curRange = emptyIterator();
 
         /** */
-        final ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> tree;
+        final IgniteTree tree;
 
         /** */
         final IndexingQueryFilter filter;
@@ -1383,7 +1382,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
          */
         RangeSource(
             Iterable<GridH2RowRangeBounds> bounds,
-            ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> tree,
+            IgniteTree tree,
             IndexingQueryFilter filter
         ) {
             this.filter = filter;
@@ -1443,7 +1442,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
                 SearchRow first = toSearchRow(bounds.first());
                 SearchRow last = toSearchRow(bounds.last());
 
-                ConcurrentNavigableMap<GridSearchRowPointer,GridH2Row> t = tree != null ? tree : treeForRead();
+                IgniteTree t = tree != null ? tree : treeForRead();
 
                 curRange = doFind0(t, first, true, last, filter);
 
@@ -1462,7 +1461,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
     /**
      * @return Snapshot for current thread if there is one.
      */
-    protected ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> treeForRead() {
+    protected IgniteTree treeForRead() {
         throw new UnsupportedOperationException();
     }
 
@@ -1474,7 +1473,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
      * @param filter Filter.
      * @return Iterator over rows in given range.
      */
-    protected Iterator<GridH2Row> doFind0(ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> t,
+    protected Iterator<GridH2Row> doFind0(IgniteTree t,
         @Nullable SearchRow first,
         boolean includeFirst,
         @Nullable SearchRow last,
@@ -1541,4 +1540,61 @@ public abstract class GridH2IndexBase extends BaseIndex {
             return fltr.apply(key, val);
         }
     }
+
+    /**
+     * Adapter from {@link NavigableMap} to {@link IgniteTree}.
+     */
+    protected static class IgniteNavigableMapTree implements IgniteTree<GridSearchRowPointer, GridH2Row> {
+        private NavigableMap<GridSearchRowPointer, GridH2Row> tree;
+
+        /**
+         * @param map the {@link NavigableMap} which should be adapted.
+         */
+        public IgniteNavigableMapTree(final NavigableMap<GridSearchRowPointer, GridH2Row> map) {
+            this.tree = map;
+        }
+
+        /** {@inheritDoc} */
+        @Override public GridH2Row put(final GridSearchRowPointer key, final GridH2Row value) {
+            return tree.put(key, value);
+        }
+
+        /** {@inheritDoc} */
+        @Override public GridH2Row get(final Object key) {
+            return tree.get(key);
+        }
+
+        /** {@inheritDoc} */
+        @Override public GridH2Row remove(final Object key) {
+            return tree.remove(key);
+        }
+
+        /** {@inheritDoc} */
+        @Override public int size() {
+            return tree.size();
+        }
+
+        /** {@inheritDoc} */
+        @Override public Collection<GridH2Row> values() {
+            return tree.values();
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public IgniteTree<GridSearchRowPointer, GridH2Row> headTree(GridSearchRowPointer toKey, boolean inclusive) {
+            return new IgniteNavigableMapTree(tree.headMap(toKey, inclusive));
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public IgniteTree<GridSearchRowPointer, GridH2Row> tailTree(GridSearchRowPointer fromKey, boolean inclusive) {
+            return new IgniteNavigableMapTree(tree.tailMap(fromKey, inclusive));
+        }
+
+        /** {@inheritDoc} */
+        @Override public IgniteTree<GridSearchRowPointer, GridH2Row> subTree(GridSearchRowPointer fromKey,
+            boolean fromInclusive, GridSearchRowPointer toKey, boolean toInclusive) {
+            return new IgniteNavigableMapTree(tree.subMap(fromKey, fromInclusive, toKey, toInclusive));
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/ef015d38/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
index c56fb94..b4cd76f 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
@@ -23,7 +23,8 @@ import java.util.List;
 import java.util.NavigableMap;
 import java.util.concurrent.ConcurrentNavigableMap;
 import java.util.concurrent.ConcurrentSkipListMap;
-import org.apache.ignite.internal.util.GridEmptyIterator;
+
+import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap;
 import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafeGuard;
 import org.apache.ignite.internal.util.snaptree.SnapTreeMap;
@@ -48,7 +49,7 @@ import org.jetbrains.annotations.Nullable;
 @SuppressWarnings("ComparatorNotSerializable")
 public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridSearchRowPointer> {
     /** */
-    private final ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> tree;
+    private final IgniteTree<GridSearchRowPointer, GridH2Row> tree;
 
     /** */
     private final boolean snapshotEnabled;
@@ -91,7 +92,8 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
                 };
             }
             else {
-                tree = new ConcurrentSkipListMap<>(
+                tree = new IgniteNavigableMapTree(
+                    new ConcurrentSkipListMap<>(
                         new Comparator<GridSearchRowPointer>() {
                             @Override public int compare(GridSearchRowPointer o1, GridSearchRowPointer o2) {
                                 if (o1 instanceof ComparableRow)
@@ -103,7 +105,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
                                 return compareRows(o1, o2);
                             }
                         }
-                );
+                ));
             }
         }
         else {
@@ -148,11 +150,11 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
     }
 
     /** {@inheritDoc} */
-    protected final ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> treeForRead() {
+    protected final IgniteTree treeForRead() {
         if (!snapshotEnabled)
             return tree;
 
-        ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> res = threadLocalSnapshot();
+        IgniteTree res = threadLocalSnapshot();
 
         if (res == null)
             res = tree;
@@ -268,14 +270,14 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
      */
     @SuppressWarnings("unchecked")
     private Iterator<GridH2Row> doFind(@Nullable SearchRow first, boolean includeFirst, @Nullable SearchRow last) {
-        ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> t = treeForRead();
+        IgniteTree t = treeForRead();
 
         return doFind0(t, first, includeFirst, last, threadLocalFilter());
     }
 
     /** {@inheritDoc} */
     @Override protected final Iterator<GridH2Row> doFind0(
-        ConcurrentNavigableMap<GridSearchRowPointer, GridH2Row> t,
+        IgniteTree t,
         @Nullable SearchRow first,
         boolean includeFirst,
         @Nullable SearchRow last,
@@ -283,7 +285,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
     ) {
         includeFirst &= first != null;
 
-        NavigableMap<GridSearchRowPointer, GridH2Row> range = subTree(t, comparable(first, includeFirst ? -1 : 1),
+        IgniteTree<GridSearchRowPointer, GridH2Row> range = subTree(t, comparable(first, includeFirst ? -1 : 1),
             comparable(last, 1));
 
         if (range == null)
@@ -310,30 +312,30 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
     /**
      * Takes sup-map from given one.
      *
-     * @param map Map.
+     * @param tree Tree.
      * @param first Lower bound.
      * @param last Upper bound.
      * @return Sub-map.
      */
     @SuppressWarnings({"IfMayBeConditional", "TypeMayBeWeakened"})
-    private NavigableMap<GridSearchRowPointer, GridH2Row> subTree(NavigableMap<GridSearchRowPointer, GridH2Row> map,
+    private IgniteTree subTree(IgniteTree tree,
         @Nullable GridSearchRowPointer first, @Nullable GridSearchRowPointer last) {
         // We take exclusive bounds because it is possible that one search row will be equal to multiple key rows
         // in tree and we must return them all.
         if (first == null) {
             if (last == null)
-                return map;
+                return tree;
             else
-                return map.headMap(last, false);
+                return tree.headTree(last, false);
         }
         else {
             if (last == null)
-                return map.tailMap(first, false);
+                return tree.tailTree(first, false);
             else {
                 if (compare(first, last) > 0)
                     return null;
 
-                return map.subMap(first, false, last, false);
+                return tree.subTree(first, false, last, false);
             }
         }
     }


[04/24] ignite git commit: GG-11414

Posted by sb...@apache.org.
GG-11414


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

Branch: refs/heads/ignite-gg-11810
Commit: 37eb93b2d01e7199b858a5d1e006501936d54625
Parents: df7b4f6
Author: Sergey Sidorov <ss...@gridgain.com>
Authored: Mon Nov 21 15:13:21 2016 +0300
Committer: Sergey Sidorov <ss...@gridgain.com>
Committed: Mon Nov 21 15:13:21 2016 +0300

----------------------------------------------------------------------
 .../cache/IgniteCacheOffheapManagerImpl.java    |  2 +-
 .../cache/database/tree/BPlusTree.java          | 23 +++++++++---
 .../offheap/unsafe/GridOffHeapSnapTreeMap.java  |  4 +++
 .../internal/util/snaptree/SnapTreeMap.java     | 33 ++++++-----------
 .../processors/database/BPlusTreeSelfTest.java  | 37 ++++++++++++++++++++
 .../internal/processors/query/h2/H2Cursor.java  | 17 +++++++++
 .../query/h2/opt/GridH2TreeIndex.java           |  2 ++
 7 files changed, 91 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/37eb93b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index 66896d2..861bb11 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -897,7 +897,7 @@ public class IgniteCacheOffheapManagerImpl extends GridCacheManagerAdapter imple
 
         /** {@inheritDoc} */
         @Override public GridCursor<? extends CacheDataRow> cursor() throws IgniteCheckedException {
-            return dataTree.find(null, null);
+            return dataTree.findAll();
         }
 
         /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/37eb93b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index f761975..d60246e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -753,8 +753,20 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
 
     public GridCursor<T> find(L lower, boolean lowerInclusive,
                               L upper, boolean upperInclusive) throws IgniteCheckedException {
-        // TODO inclusive / exclusive logic should be implemented
-        return find(lower, upper);
+        if (lower == null || upper == null)
+            throw new NullPointerException();
+
+        ForwardCursor cursor = new ForwardCursor(lower, upper);
+
+        if (!lowerInclusive)
+            cursor.lowerShift = 1;
+
+        if (!upperInclusive)
+            cursor.upperShift = -1;
+
+        cursor.find();
+
+        return cursor;
     }
 
     public GridCursor<T> findAll() throws IgniteCheckedException {
@@ -3464,6 +3476,9 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
         /** */
         private final L upperBound;
 
+        /** */
+        private int upperShift = 1; // Initially it is -1 to handle multiple equal rows.
+
         /**
          * @param lowerBound Lower bound.
          * @param upperBound Upper bound.
@@ -3535,8 +3550,8 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
             // Compare with the last row on the page.
             int cmp = compare(io, buf, cnt - 1, upperBound);
 
-            if (cmp > 0) {
-                int idx = findInsertionPoint(io, buf, low, cnt, upperBound, 1);
+            if (cmp > 0 || (cmp == 0 && upperShift == -1)) {
+                int idx = findInsertionPoint(io, buf, low, cnt, upperBound, upperShift);
 
                 assert idx < 0;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/37eb93b2/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
index eb09af5..ab175de 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
@@ -3845,6 +3845,8 @@ public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer, V extends
 
     @Override public GridCursor<V> find(K lower, boolean lowerInclusive,  K upper, boolean upperInclusive)
         throws IgniteCheckedException {
+        if (lower == null || upper == null)
+            throw new NullPointerException();
 
         final Comparable<? super K> fromCmp = comparable(lower);
 
@@ -4495,6 +4497,8 @@ public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer, V extends
 
         @Override public GridCursor<V> find(K lower, boolean lowerInclusive,  K upper, boolean upperInclusive)
             throws IgniteCheckedException {
+            if (lower == null || upper == null)
+                throw new NullPointerException();
 
             SubMap subMap = subMap(lower, lowerInclusive, upper, upperInclusive);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/37eb93b2/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
index 8bd5f59..79c110d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
@@ -2350,18 +2350,12 @@ public class SnapTreeMap<K, V> extends AbstractMap<K, V> implements ConcurrentNa
     //////////////// IgniteTree
 
     @Override public GridCursor<V> find(K lower, boolean lowerInclusive,
-                                        K upper, boolean upperInclusive) throws IgniteCheckedException {
-        if (lower == null)
-            if (upper == null) // all
-                return new GridCursorIteratorWrapper<>(values().iterator());
-            else // head
-                return new GridCursorIteratorWrapper<>(headMap(upper, upperInclusive).values().iterator());
-        else
-            if (upper == null) // tail
-                return new GridCursorIteratorWrapper<>(tailMap(lower, lowerInclusive).values().iterator());
-            else // interval
-                return new GridCursorIteratorWrapper<>(subMap(lower, lowerInclusive, upper, upperInclusive)
-                    .values().iterator());
+        K upper, boolean upperInclusive) throws IgniteCheckedException {
+        if (lower == null || upper == null)
+            throw new NullPointerException();
+
+        return new GridCursorIteratorWrapper<>(subMap(lower, lowerInclusive, upper, upperInclusive)
+            .values().iterator());
     }
 
     public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {
@@ -2921,16 +2915,11 @@ public class SnapTreeMap<K, V> extends AbstractMap<K, V> implements ConcurrentNa
         @Override public GridCursor<V> find(K lower, boolean lowerInclusive,
                                             K upper, boolean upperInclusive) throws IgniteCheckedException {
 
-            if (lower == null)
-                if (upper == null) // all
-                    return new GridCursorIteratorWrapper<>(values().iterator());
-                else // head
-                    return new GridCursorIteratorWrapper<>(headMap(upper, upperInclusive).values().iterator());
-            else
-            if (upper == null) // tail
-                return new GridCursorIteratorWrapper<>(tailMap(lower, lowerInclusive).values().iterator());
-            else // interval
-                return new GridCursorIteratorWrapper<>(subMap(lower, lowerInclusive, upper, upperInclusive).values().iterator());
+            if (lower == null || upper == null)
+                throw new NullPointerException();
+
+            return new GridCursorIteratorWrapper<>(subMap(lower, lowerInclusive, upper, upperInclusive)
+                .values().iterator());
         }
 
         public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {

http://git-wip-us.apache.org/repos/asf/ignite/blob/37eb93b2/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
index 4bc39ea..88edaf1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
@@ -173,6 +173,43 @@ public class BPlusTreeSelfTest extends GridCommonAbstractTest {
     /**
      * @throws IgniteCheckedException If failed.
      */
+    public void testFind() throws IgniteCheckedException {
+        TestTree tree = createTestTree(true);
+        TreeMap<Long, Long> map = new TreeMap<>();
+
+        long size = CNT * CNT;
+
+        for (long i = 1; i <= size; i++) {
+            tree.put(i);
+            map.put(i, i);
+        }
+
+        checkCursor(tree.findAll(), map.values().iterator());
+        checkCursor(tree.find(10L, 70L), map.subMap(10L, true, 70L, true).values().iterator());
+        checkCursor(tree.find(10L, true, 50L, false), map.subMap(10L, true, 50L, false).values().iterator());
+        checkCursor(tree.find(10L, false, 50L, true), map.subMap(10L, false, 50L, true).values().iterator());
+        checkCursor(tree.find(10L, false, 50L, false), map.subMap(10L, false, 50L, false).values().iterator());
+        checkCursor(tree.find(10L, true, 50L, true), map.subMap(10L, true, 50L, true).values().iterator());
+    }
+
+    /**
+     * @param cursor cursor to check.
+     * @param iterator iterator with expected result.
+     * @throws IgniteCheckedException If failed
+     */
+    private void checkCursor(GridCursor<Long> cursor, Iterator<Long> iterator) throws IgniteCheckedException {
+        while (cursor.next()) {
+            assertTrue(iterator.hasNext());
+
+            assertEquals(iterator.next(), cursor.get());
+        }
+
+        assertFalse(iterator.hasNext());
+    }
+
+    /**
+     * @throws IgniteCheckedException If failed.
+     */
     public void testPutRemove_1_20_mm_1() throws IgniteCheckedException {
         MAX_PER_PAGE = 1;
         CNT = 20;

http://git-wip-us.apache.org/repos/asf/ignite/blob/37eb93b2/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
index d3b6265..95114a2 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
@@ -1,3 +1,20 @@
+/*
+ * 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.processors.query.h2;
 
 import org.apache.ignite.*;

http://git-wip-us.apache.org/repos/asf/ignite/blob/37eb93b2/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
index e03c1a1..f442e4e 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
@@ -527,6 +527,8 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
         @Override public GridCursor<GridH2Row> find(GridSearchRowPointer lower, boolean lowerInclusive,
                                                     GridSearchRowPointer upper, boolean upperInclusive)
             throws IgniteCheckedException {
+            if (lower == null || upper == null)
+                throw new NullPointerException();
 
             NavigableMap<GridSearchRowPointer, GridH2Row> subMap =
                 tree.subMap(lower, lowerInclusive, upper, upperInclusive);


[23/24] ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-3477' into ignite-gg-11810

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-3477' into ignite-gg-11810

# Conflicts:
#	modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java


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

Branch: refs/heads/ignite-gg-11810
Commit: 1b1ca167d5fdf0effe9c1171a3311ceb61aff63d
Parents: 1038a0b 79a546a
Author: sboikov <sb...@gridgain.com>
Authored: Thu Jan 12 11:01:06 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Thu Jan 12 11:01:06 2017 +0300

----------------------------------------------------------------------
 .../configuration/CacheConfiguration.java       |  30 ---
 .../cache/IgniteCacheOffheapManagerImpl.java    |   6 +-
 .../cache/database/tree/BPlusTree.java          |  19 +-
 .../cache/query/GridCacheQueryManager.java      |  23 ++-
 .../cluster/GridClusterStateProcessor.java      |   6 +-
 .../util/GridCursorIteratorWrapper.java         |  36 ++++
 .../apache/ignite/internal/util/IgniteTree.java |  70 +++++++
 .../offheap/unsafe/GridOffHeapSnapTreeMap.java  |  11 +-
 .../internal/util/snaptree/SnapTreeMap.java     |  10 +-
 .../cache/ClusterStateAbstractTest.java         |  45 +++--
 .../processors/database/BPlusTreeSelfTest.java  |  33 ++++
 .../query/h2/opt/GridH2SpatialIndex.java        |  24 ++-
 .../internal/processors/query/h2/H2Cursor.java  | 105 ++++++++++
 .../processors/query/h2/IgniteH2Indexing.java   |  42 +---
 .../query/h2/database/H2PkHashIndex.java        |  37 ++--
 .../query/h2/database/H2TreeIndex.java          | 132 +++++--------
 .../query/h2/opt/GridH2IndexBase.java           | 182 ++++++++++++-----
 .../processors/query/h2/opt/GridH2Table.java    |   4 +-
 .../query/h2/opt/GridH2TreeIndex.java           | 195 ++++++++++++-------
 .../cache/IgniteCacheAbstractQuerySelfTest.java |   2 +-
 ...QueryNodeRestartDistributedJoinSelfTest.java | 104 ++++++----
 .../query/IgniteSqlDistributedJoinSelfTest.java | 179 +++++++++++++++++
 .../query/IgniteSqlSplitterSelfTest.java        |   6 +-
 .../query/h2/opt/GridH2TableSelfTest.java       |  29 +--
 .../query/h2/sql/GridQueryParsingTest.java      |   2 +-
 .../IgniteCacheQuerySelfTestSuite.java          |  15 --
 .../IgniteCacheQuerySelfTestSuite3.java         |   2 +
 .../IgniteDistributedJoinTestSuite.java         |  38 ++++
 .../internal/websession/WebSessionSelfTest.java |   4 +
 29 files changed, 969 insertions(+), 422 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/1b1ca167/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1b1ca167/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index e2b261c,aef7217..e91dda9
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@@ -762,10 -758,9 +761,10 @@@ public abstract class BPlusTree<L, T ex
      /**
       * @param row Lookup row for exact match.
       * @return Found row.
 +     * @throws IgniteCheckedException If failed.
       */
      @SuppressWarnings("unchecked")
-     public final T findOne(L row) throws IgniteCheckedException {
+     @Override public final T findOne(L row) throws IgniteCheckedException {
          checkDestroyed();
  
          try {

http://git-wip-us.apache.org/repos/asf/ignite/blob/1b1ca167/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/1b1ca167/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
----------------------------------------------------------------------
diff --cc modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
index bbd14da,31df27c..4d0e6e3
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
@@@ -80,18 -79,24 +78,23 @@@ public class H2TreeIndex extends GridH2
  
          name = BPlusTree.treeName(name, "H2Tree");
  
-         IgniteCacheDatabaseSharedManager dbMgr = cctx.shared().database();
+         if (!cctx.kernalContext().clientNode()) {
+             IgniteCacheDatabaseSharedManager dbMgr = cctx.shared().database();
  
-         RootPage page = cctx.offheap().rootPageForIndex(name);
+             RootPage page = cctx.offheap().rootPageForIndex(name);
  
-         tree = new H2Tree(name, cctx.offheap().reuseListForIndex(name), cctx.cacheId(),
-             dbMgr.pageMemory(), cctx.shared().wal(), cctx.offheap().globalRemoveId(),
-             tbl.rowFactory(), page.pageId().pageId(), page.isAllocated()) {
-             @Override protected int compare(BPlusIO<SearchRow> io, long pageAddr, int idx, SearchRow row)
-                 throws IgniteCheckedException {
-                 return compareRows(getRow(io, pageAddr, idx), row);
-             }
-         };
+             tree = new H2Tree(name, cctx.offheap().reuseListForIndex(name), cctx.cacheId(),
+                 dbMgr.pageMemory(), cctx.shared().wal(), cctx.offheap().globalRemoveId(),
+                 tbl.rowFactory(), page.pageId().pageId(), page.isAllocated()) {
 -                @Override
 -                protected int compare(BPlusIO<SearchRow> io, ByteBuffer buf, int idx, SearchRow row)
++                @Override protected int compare(BPlusIO<SearchRow> io, long pageAddr, int idx, SearchRow row)
+                     throws IgniteCheckedException {
 -                    return compareRows(getRow(io, buf, idx), row);
++                    return compareRows(getRow(io, pageAddr, idx), row);
+                 }
+             };
+         }
+         else
+             // We need indexes on the client node, but index will not contain any data.
+             tree = null;
  
          initDistributedJoinMessaging(tbl);
      }


[16/24] ignite git commit: Code style, minors.

Posted by sb...@apache.org.
Code style, minors.


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

Branch: refs/heads/ignite-gg-11810
Commit: 2b6484a5bcb5520e66ad13fa54507390e58d78ff
Parents: 6107ddb
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Mon Jan 9 20:04:26 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Jan 9 20:04:26 2017 +0300

----------------------------------------------------------------------
 .../query/h2/opt/GridH2TreeIndex.java           | 42 +++++++-------------
 1 file changed, 14 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/2b6484a5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
index 014cf2e..4fa8b0f 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
@@ -29,7 +29,6 @@ import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafeGuard;
 import org.apache.ignite.internal.util.snaptree.SnapTreeMap;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.SB;
-import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.spi.indexing.IndexingQueryFilter;
 import org.h2.engine.Session;
 import org.h2.index.Cursor;
@@ -147,7 +146,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
     }
 
     /** {@inheritDoc} */
-    protected final IgniteTree treeForRead() {
+    @Override protected final IgniteTree treeForRead() {
         if (!snapshotEnabled)
             return tree;
 
@@ -256,12 +255,8 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
      * @param row Search row.
      * @return Row.
      */
-    public GridH2Row findOne(GridH2Row row) {
-        try {
-            return tree.findOne(row);
-        } catch (IgniteCheckedException e) {
-            throw DbException.convert(e);
-        }
+    @Override public GridH2Row findOne(GridH2Row row) {
+        return tree.findOne(row);
     }
 
     /**
@@ -359,22 +354,12 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
 
     /** {@inheritDoc} */
     @Override public GridH2Row put(GridH2Row row) {
-        try {
-            return tree.put(row);
-        }
-        catch (IgniteCheckedException e) {
-            throw DbException.convert(e);
-        }
+        return tree.put(row);
     }
 
     /** {@inheritDoc} */
     @Override public GridH2Row remove(SearchRow row) {
-        try {
-            return tree.remove(comparable(row, 0));
-        }
-        catch (IgniteCheckedException e) {
-            throw DbException.convert(e);
-        }
+        return tree.remove(comparable(row, 0));
     }
 
     /**
@@ -502,24 +487,24 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
     /**
      * Adapter from {@link NavigableMap} to {@link IgniteTree}.
      */
-    private final class IgniteNavigableMapTree implements IgniteTree<GridSearchRowPointer, GridH2Row> {
+    private static final class IgniteNavigableMapTree implements IgniteTree<GridSearchRowPointer, GridH2Row>, Cloneable {
         /** Tree. */
         private final NavigableMap<GridSearchRowPointer, GridH2Row> tree;
 
         /**
          * @param tree Tree.
          */
-        public IgniteNavigableMapTree(NavigableMap<GridSearchRowPointer, GridH2Row> tree) {
+        private IgniteNavigableMapTree(NavigableMap<GridSearchRowPointer, GridH2Row> tree) {
             this.tree = tree;
         }
 
         /** {@inheritDoc} */
-        @Override public GridH2Row put(GridH2Row value) throws IgniteCheckedException {
+        @Override public GridH2Row put(GridH2Row value) {
             return tree.put(value, value);
         }
 
         /** {@inheritDoc} */
-        @Override public GridH2Row findOne(GridSearchRowPointer key) throws IgniteCheckedException {
+        @Override public GridH2Row findOne(GridSearchRowPointer key) {
             return tree.get(key);
         }
 
@@ -532,16 +517,16 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
             NavigableMap<GridSearchRowPointer, GridH2Row> subMap =
                 tree.subMap(lower, false, upper, false);
 
-            return new GridCursorIteratorWrapper<GridH2Row>(subMap.values().iterator());
+            return new GridCursorIteratorWrapper<>(subMap.values().iterator());
         }
 
         /** {@inheritDoc} */
-        @Override public GridH2Row remove(GridSearchRowPointer key) throws IgniteCheckedException {
+        @Override public GridH2Row remove(GridSearchRowPointer key) {
             return tree.remove(key);
         }
 
         /** {@inheritDoc} */
-        @Override public long size() throws IgniteCheckedException {
+        @Override public long size() {
             return tree.size();
         }
 
@@ -551,7 +536,8 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
 
             try {
                 copy = (AbstractMap) super.clone();
-            } catch (final CloneNotSupportedException e) {
+            }
+            catch (final CloneNotSupportedException e) {
                 throw DbException.convert(e);
             }
 


[06/24] ignite git commit: gg-11414: refactoring after core review

Posted by sb...@apache.org.
gg-11414: refactoring after core review


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

Branch: refs/heads/ignite-gg-11810
Commit: 0712a8139c3fd17f6d089ce3ace9bb221e488616
Parents: ccc1956
Author: Sergey Sidorov <ss...@gridgain.com>
Authored: Fri Nov 25 13:41:02 2016 +0300
Committer: Sergey Sidorov <ss...@gridgain.com>
Committed: Fri Nov 25 17:26:55 2016 +0300

----------------------------------------------------------------------
 .../cache/IgniteCacheOffheapManagerImpl.java    |  2 +-
 .../cache/database/tree/BPlusTree.java          | 50 ++----------
 .../apache/ignite/internal/util/IgniteTree.java | 24 +-----
 .../offheap/unsafe/GridOffHeapSnapTreeMap.java  | 82 +-------------------
 .../internal/util/snaptree/SnapTreeMap.java     | 76 +-----------------
 .../processors/database/BPlusTreeSelfTest.java  |  6 +-
 .../query/h2/opt/GridH2SpatialIndex.java        | 24 ++++--
 .../internal/processors/query/h2/H2Cursor.java  |  4 +
 .../query/h2/database/H2TreeIndex.java          |  6 +-
 .../query/h2/opt/GridH2IndexBase.java           |  6 +-
 .../query/h2/opt/GridH2TreeIndex.java           | 59 +++++++-------
 11 files changed, 66 insertions(+), 273 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index 861bb11..66896d2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -897,7 +897,7 @@ public class IgniteCacheOffheapManagerImpl extends GridCacheManagerAdapter imple
 
         /** {@inheritDoc} */
         @Override public GridCursor<? extends CacheDataRow> cursor() throws IgniteCheckedException {
-            return dataTree.findAll();
+            return dataTree.find(null, null);
         }
 
         /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index d60246e..57d420d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -727,7 +727,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
      * @return Cursor.
      * @throws IgniteCheckedException If failed.
      */
-    public final GridCursor<T> find(L lower, L upper) throws IgniteCheckedException {
+    @Override public final GridCursor<T> find(L lower, L upper) throws IgniteCheckedException {
         checkDestroyed();
 
         try {
@@ -751,34 +751,12 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
         }
     }
 
-    public GridCursor<T> find(L lower, boolean lowerInclusive,
-                              L upper, boolean upperInclusive) throws IgniteCheckedException {
-        if (lower == null || upper == null)
-            throw new NullPointerException();
-
-        ForwardCursor cursor = new ForwardCursor(lower, upper);
-
-        if (!lowerInclusive)
-            cursor.lowerShift = 1;
-
-        if (!upperInclusive)
-            cursor.upperShift = -1;
-
-        cursor.find();
-
-        return cursor;
-    }
-
-    public GridCursor<T> findAll() throws IgniteCheckedException {
-        return find(null, null);
-    }
-
     /**
      * @param row Lookup row for exact match.
      * @return Found row.
      */
     @SuppressWarnings("unchecked")
-    public final T findOne(L row) throws IgniteCheckedException {
+    @Override public final T findOne(L row) throws IgniteCheckedException {
         checkDestroyed();
 
         try {
@@ -1270,14 +1248,10 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
      * @return Removed row.
      * @throws IgniteCheckedException If failed.
      */
-    public final T remove(L row) throws IgniteCheckedException {
+    @Override public final T remove(L row) throws IgniteCheckedException {
         return doRemove(row, false, null);
     }
 
-    @Override public T removeNode(L key) throws IgniteCheckedException {
-        return doRemove(key, false, null);
-    }
-
     /**
      * @param row Lookup row.
      * @param ceil If we can remove ceil row when we can not find exact.
@@ -1490,7 +1464,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
      * @return Size.
      * @throws IgniteCheckedException If failed.
      */
-    public final long size() throws IgniteCheckedException {
+    @Override public final long size() throws IgniteCheckedException {
         checkDestroyed();
 
         long pageId;
@@ -1530,14 +1504,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
     /**
      * {@inheritDoc}
      */
-    public final long treeSize() throws IgniteCheckedException {
-        return size();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public final T put(T row) throws IgniteCheckedException {
+    @Override public final T put(T row) throws IgniteCheckedException {
         return put(row, null);
     }
 
@@ -3476,9 +3443,6 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
         /** */
         private final L upperBound;
 
-        /** */
-        private int upperShift = 1; // Initially it is -1 to handle multiple equal rows.
-
         /**
          * @param lowerBound Lower bound.
          * @param upperBound Upper bound.
@@ -3550,8 +3514,8 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
             // Compare with the last row on the page.
             int cmp = compare(io, buf, cnt - 1, upperBound);
 
-            if (cmp > 0 || (cmp == 0 && upperShift == -1)) {
-                int idx = findInsertionPoint(io, buf, low, cnt, upperBound, upperShift);
+            if (cmp > 0) {
+                int idx = findInsertionPoint(io, buf, low, cnt, upperBound, 1);
 
                 assert idx < 0;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
index 512792b..0c08cd9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
@@ -45,19 +45,6 @@ public interface IgniteTree<L, T> {
     T findOne(L key) throws IgniteCheckedException;
 
     /**
-     * Returns a cursor from lower to upper bounds.
-     *
-     * @param lower Lower bound or {@code null} if unbounded.
-     * @param lowerInclusive {@code true} if the low bound
-     *        is to be included in the returned view
-     * @param upper Upper bound or {@code null} if unbounded.
-     * @param upperInclusive {@code true} if the upper bound
-     *        is to be included in the returned view
-     * @return Cursor.
-     */
-    GridCursor<T> find(L lower, boolean lowerInclusive,  L upper, boolean upperInclusive) throws IgniteCheckedException;
-
-    /**
      * Returns a cursor from lower to upper bounds inclusive.
      *
      * @param lower Lower bound or {@code null} if unbounded.
@@ -67,24 +54,17 @@ public interface IgniteTree<L, T> {
     GridCursor<T> find(L lower, L upper) throws IgniteCheckedException;
 
     /**
-     * Returns a cursor over all values.
-     * @return Cursor.
-     * @throws IgniteCheckedException
-     */
-    GridCursor<T> findAll() throws IgniteCheckedException;
-
-    /**
      * Removes the mapping for a key from this tree if it is present.
      *
      * @param key key whose mapping is to be removed from the tree
      * @return the previous value associated with key, or null if there was no mapping for key.
      */
-    T removeNode(L key) throws IgniteCheckedException;
+    T remove(L key) throws IgniteCheckedException;
 
     /**
      * Returns the number of elements in this tree.
      *
      * @return the number of elements in this tree
      */
-    long treeSize() throws IgniteCheckedException;
+    long size() throws IgniteCheckedException;
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
index ab175de..6a97f9e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
@@ -112,7 +112,7 @@ import org.jsr166.ConcurrentHashMap8;
 @SuppressWarnings("ALL")
 public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer, V extends GridOffHeapSmartPointer>
     extends AbstractMap<K, V>
-    implements ConcurrentNavigableMap<K, V>, Cloneable, AutoCloseable, GridReservable, IgniteTree<K, V> {
+    implements ConcurrentNavigableMap<K, V>, Cloneable, AutoCloseable, GridReservable {
     /** This is a special value that indicates that an optimistic read failed. */
     private static final GridOffHeapSmartPointer SpecialRetry = new GridOffHeapSmartPointer() {
         @Override public long pointer() {
@@ -3825,52 +3825,10 @@ public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer, V extends
         return new SubMap(this, null, null, false, null, null, false, true);
     }
 
-    //////////////// IgniteTree
-
-    @Override public V put(V value) throws IgniteCheckedException {
-        return put((K)value, value);
-    }
-
-    @Override public V findOne(K key) throws IgniteCheckedException {
-        return get(key);
-    }
-
-    @Override public GridCursor<V> findAll() throws IgniteCheckedException {
-        return find(null, null);
-    }
-
-    @Override public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {
-        return find(lower, true, upper, true);
-    }
-
-    @Override public GridCursor<V> find(K lower, boolean lowerInclusive,  K upper, boolean upperInclusive)
-        throws IgniteCheckedException {
-        if (lower == null || upper == null)
-            throw new NullPointerException();
-
-        final Comparable<? super K> fromCmp = comparable(lower);
-
-        if (fromCmp.compareTo(upper) > 0) {
-            throw new IllegalArgumentException();
-        }
-
-        SubMap subMap = new SubMap(this, lower, fromCmp, lowerInclusive, upper, comparable(upper), upperInclusive, false);
-
-        return new GridCursorIteratorWrapper<>(subMap.values().iterator());
-    }
-
-    @Override public V removeNode(K key) throws IgniteCheckedException {
-        return remove(key);
-    }
-
-    @Override public long treeSize() throws IgniteCheckedException {
-        return size();
-    }
-
     /**
      * Submap.
      */
-    private class SubMap extends AbstractMap<K, V> implements ConcurrentNavigableMap<K, V>, IgniteTree<K, V> {
+    private class SubMap extends AbstractMap<K, V> implements ConcurrentNavigableMap<K, V> {
         /** */
         private final GridOffHeapSnapTreeMap<K,V> m;
 
@@ -4476,42 +4434,6 @@ public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer, V extends
         @Override public NavigableSet<K> descendingKeySet() {
             return descendingMap().navigableKeySet();
         }
-
-        /////////// IgniteTree
-
-        @Override public V put(V value) throws IgniteCheckedException {
-            return put((K)value, value);
-        }
-
-        @Override public V findOne(K key) throws IgniteCheckedException {
-            return get(key);
-        }
-
-        @Override public GridCursor<V> findAll() throws IgniteCheckedException {
-            return find(null, null);
-        }
-
-        @Override public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {
-            return find(lower, true, upper, true);
-        }
-
-        @Override public GridCursor<V> find(K lower, boolean lowerInclusive,  K upper, boolean upperInclusive)
-            throws IgniteCheckedException {
-            if (lower == null || upper == null)
-                throw new NullPointerException();
-
-            SubMap subMap = subMap(lower, lowerInclusive, upper, upperInclusive);
-
-            return new GridCursorIteratorWrapper(subMap.values().iterator());
-        }
-
-        @Override public V removeNode(K key) throws IgniteCheckedException {
-            return remove(key);
-        }
-
-        @Override public long treeSize() throws IgniteCheckedException {
-            return size();
-        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
index 79c110d..dce2fb8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
@@ -107,7 +107,7 @@ import java.util.concurrent.ConcurrentNavigableMap;
  */
 @SuppressWarnings("ALL")
 public class SnapTreeMap<K, V> extends AbstractMap<K, V> implements ConcurrentNavigableMap<K, V>, Cloneable,
-    Serializable, IgniteTree<K, V> {
+    Serializable {
 
     /** */
     private static final long serialVersionUID = 0L;
@@ -2347,43 +2347,7 @@ public class SnapTreeMap<K, V> extends AbstractMap<K, V> implements ConcurrentNa
         return new SubMap(this, null, null, false, null, null, false, true);
     }
 
-    //////////////// IgniteTree
-
-    @Override public GridCursor<V> find(K lower, boolean lowerInclusive,
-        K upper, boolean upperInclusive) throws IgniteCheckedException {
-        if (lower == null || upper == null)
-            throw new NullPointerException();
-
-        return new GridCursorIteratorWrapper<>(subMap(lower, lowerInclusive, upper, upperInclusive)
-            .values().iterator());
-    }
-
-    public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {
-        return find(lower, true, upper, true);
-    }
-
-    public GridCursor<V> findAll() throws IgniteCheckedException {
-        return find(null, null);
-    }
-
-    @Override public V findOne(K key) throws IgniteCheckedException {
-        return get(key);
-    }
-
-    @Override public long treeSize() throws IgniteCheckedException {
-        return size();
-    }
-
-    @Override public V put(V value) throws IgniteCheckedException {
-        return put((K)value, value);
-    }
-
-    @Override public V removeNode(K key) throws IgniteCheckedException {
-        return remove(key);
-    }
-
-    private static class SubMap<K, V> extends AbstractMap<K, V> implements ConcurrentNavigableMap<K, V>, Serializable,
-        IgniteTree<K, V> {
+    private static class SubMap<K, V> extends AbstractMap<K, V> implements ConcurrentNavigableMap<K, V>, Serializable {
         /** */
         private static final long serialVersionUID = 0L;
 
@@ -2905,42 +2869,6 @@ public class SnapTreeMap<K, V> extends AbstractMap<K, V> implements ConcurrentNa
             minCmp = minKey == null ? null : m.comparable(minKey);
             maxCmp = maxKey == null ? null : m.comparable(maxKey);
         }
-
-        /////// IgniteTree
-
-        @Override public V findOne(K key) throws IgniteCheckedException {
-            return get(key);
-        }
-
-        @Override public GridCursor<V> find(K lower, boolean lowerInclusive,
-                                            K upper, boolean upperInclusive) throws IgniteCheckedException {
-
-            if (lower == null || upper == null)
-                throw new NullPointerException();
-
-            return new GridCursorIteratorWrapper<>(subMap(lower, lowerInclusive, upper, upperInclusive)
-                .values().iterator());
-        }
-
-        public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {
-            return find(lower, true, upper, true);
-        }
-
-        public GridCursor<V> findAll() throws IgniteCheckedException {
-            return find(null, null);
-        }
-
-        @Override public long treeSize() throws IgniteCheckedException {
-            return size();
-        }
-
-        @Override public V put(V value) throws IgniteCheckedException {
-            return put((K)value, value);
-        }
-
-        @Override public V removeNode(K key) throws IgniteCheckedException {
-            return remove(key);
-        }
     }
 
     //////// Serialization

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
index 88edaf1..4dcb7a9 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
@@ -184,12 +184,8 @@ public class BPlusTreeSelfTest extends GridCommonAbstractTest {
             map.put(i, i);
         }
 
-        checkCursor(tree.findAll(), map.values().iterator());
+        checkCursor(tree.find(null, null), map.values().iterator());
         checkCursor(tree.find(10L, 70L), map.subMap(10L, true, 70L, true).values().iterator());
-        checkCursor(tree.find(10L, true, 50L, false), map.subMap(10L, true, 50L, false).values().iterator());
-        checkCursor(tree.find(10L, false, 50L, true), map.subMap(10L, false, 50L, true).values().iterator());
-        checkCursor(tree.find(10L, false, 50L, false), map.subMap(10L, false, 50L, false).values().iterator());
-        checkCursor(tree.find(10L, true, 50L, true), map.subMap(10L, true, 50L, true).values().iterator());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
----------------------------------------------------------------------
diff --git a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
index ed91800..b6060b4 100644
--- a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
+++ b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
@@ -28,6 +28,11 @@ import java.util.Map;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+import org.apache.ignite.*;
+import org.apache.ignite.internal.processors.query.h2.*;
+import org.apache.ignite.internal.util.*;
+import org.apache.ignite.internal.util.lang.*;
 import org.h2.engine.Session;
 import org.h2.index.Cursor;
 import org.h2.index.IndexType;
@@ -119,7 +124,7 @@ public class GridH2SpatialIndex extends GridH2IndexBase implements SpatialIndex
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override protected Object doTakeSnapshot() {
+    @Nullable @Override protected IgniteTree doTakeSnapshot() {
         return null; // TODO We do not support snapshots, but probably this is possible.
     }
 
@@ -258,7 +263,7 @@ public class GridH2SpatialIndex extends GridH2IndexBase implements SpatialIndex
         try {
             checkClosed();
 
-            return new GridH2Cursor(rowIterator(treeMap.keySet().iterator(), filter));
+            return new H2Cursor(rowIterator(treeMap.keySet().iterator(), filter));
         }
         finally {
             l.unlock();
@@ -280,9 +285,9 @@ public class GridH2SpatialIndex extends GridH2IndexBase implements SpatialIndex
      * @param filter Table filter.
      * @return Iterator over rows.
      */
-    private Iterator<GridH2Row> rowIterator(Iterator<SpatialKey> i, TableFilter filter) {
+    private GridCursor<GridH2Row> rowIterator(Iterator<SpatialKey> i, TableFilter filter) {
         if (!i.hasNext())
-            return Collections.emptyIterator();
+            return EMPTY_CURSOR;
 
         List<GridH2Row> rows = new ArrayList<>();
 
@@ -295,7 +300,7 @@ public class GridH2SpatialIndex extends GridH2IndexBase implements SpatialIndex
         }
         while (i.hasNext());
 
-        return filter(rows.iterator(), threadLocalFilter());
+        return filter(new GridCursorIteratorWrapper(rows.iterator()), threadLocalFilter());
     }
 
     /** {@inheritDoc} */
@@ -310,9 +315,12 @@ public class GridH2SpatialIndex extends GridH2IndexBase implements SpatialIndex
             if (!first)
                 throw DbException.throwInternalError("Spatial Index can only be fetch by ascending order");
 
-            Iterator<GridH2Row> iter = rowIterator(treeMap.keySet().iterator(), null);
+            GridCursor<GridH2Row> iter = rowIterator(treeMap.keySet().iterator(), null);
 
-            return new SingleRowCursor(iter.hasNext() ? iter.next() : null);
+            return new SingleRowCursor(iter.next() ? iter.get() : null);
+        }
+        catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
         }
         finally {
             l.unlock();
@@ -339,7 +347,7 @@ public class GridH2SpatialIndex extends GridH2IndexBase implements SpatialIndex
             if (intersection == null)
                 return find(filter.getSession(), null, null);
 
-            return new GridH2Cursor(rowIterator(treeMap.findIntersectingKeys(getEnvelope(intersection, 0)), filter));
+            return new H2Cursor(rowIterator(treeMap.findIntersectingKeys(getEnvelope(intersection, 0)), filter));
         }
         finally {
             l.unlock();

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
index 95114a2..cc71813 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
@@ -50,6 +50,10 @@ public class H2Cursor implements Cursor {
         this.filter = filter;
     }
 
+    public H2Cursor(GridCursor<GridH2Row> cursor) {
+        this(cursor, null);
+    }
+
     /** {@inheritDoc} */
     @Override public Row get() {
         try {

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
index b56b1ed..f685f3a 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
@@ -207,10 +207,8 @@ public class H2TreeIndex extends GridH2IndexBase {
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override protected Object doTakeSnapshot() {
-        assert false;
-
-        return this;
+    @Nullable @Override protected IgniteTree<SearchRow, GridH2Row> doTakeSnapshot() {
+        return tree;
     }
 
     protected IgniteTree<SearchRow, GridH2Row> treeForRead() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
index 84d3b6a..56c9edc 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
@@ -276,7 +276,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
      *
      * @return Snapshot or {@code null}.
      */
-    @Nullable protected abstract Object doTakeSnapshot();
+    @Nullable protected abstract IgniteTree doTakeSnapshot();
 
     /**
      * @return Thread local snapshot.
@@ -456,12 +456,10 @@ public abstract class GridH2IndexBase extends BaseIndex {
 
                 if (msg.bounds() != null) {
                     // This is the first request containing all the search rows.
-                    Object snapshot0 = qctx.getSnapshot(idxId);
+                    IgniteTree snapshotTree = qctx.getSnapshot(idxId);
 
                     assert !msg.bounds().isEmpty() : "empty bounds";
 
-                    IgniteTree snapshotTree = (IgniteTree)snapshot0;
-
                     src = new RangeSource(msg.bounds(), snapshotTree, qctx.filter());
                 }
                 else {

http://git-wip-us.apache.org/repos/asf/ignite/blob/0712a813/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
index f442e4e..d1f2d28 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
@@ -17,9 +17,7 @@
 
 package org.apache.ignite.internal.processors.query.h2.opt;
 
-import java.util.Comparator;
-import java.util.List;
-import java.util.NavigableMap;
+import java.util.*;
 import java.util.concurrent.ConcurrentSkipListMap;
 
 import org.apache.ignite.*;
@@ -50,7 +48,7 @@ import org.jetbrains.annotations.Nullable;
 @SuppressWarnings("ComparatorNotSerializable")
 public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridSearchRowPointer> {
     /** */
-    private final IgniteTree<GridSearchRowPointer, GridH2Row> tree;
+    private final IgniteNavigableMapTree tree;
 
     /** */
     private final boolean snapshotEnabled;
@@ -78,7 +76,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
             snapshotEnabled = desc == null || desc.snapshotableIndex();
 
             if (snapshotEnabled) {
-                tree = new SnapTreeMap<GridSearchRowPointer, GridH2Row>(this) {
+                tree = new IgniteNavigableMapTree(new SnapTreeMap<GridSearchRowPointer, GridH2Row>(this) {
                     @Override protected void afterNodeUpdate_nl(Node<GridSearchRowPointer, GridH2Row> node, Object val) {
                         if (val != null)
                             node.key = (GridSearchRowPointer)val;
@@ -90,7 +88,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
 
                         return super.comparable(key);
                     }
-                };
+                });
             }
             else {
                 tree = new IgniteNavigableMapTree(
@@ -114,7 +112,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
 
             snapshotEnabled = true;
 
-            tree = new GridOffHeapSnapTreeMap<GridSearchRowPointer, GridH2Row>(desc, desc, desc.memory(), desc.guard(), this) {
+            tree = new IgniteNavigableMapTree(new GridOffHeapSnapTreeMap<GridSearchRowPointer, GridH2Row>(desc, desc, desc.memory(), desc.guard(), this) {
                 @Override protected void afterNodeUpdate_nl(long node, GridH2Row val) {
                     final long oldKey = keyPtr(node);
 
@@ -135,19 +133,17 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
 
                     return super.comparable(key);
                 }
-            };
+            });
         }
 
         initDistributedJoinMessaging(tbl);
     }
 
     /** {@inheritDoc} */
-    @Override protected Object doTakeSnapshot() {
+    @Override protected IgniteTree doTakeSnapshot() {
         assert snapshotEnabled;
 
-        return tree instanceof SnapTreeMap ?
-            ((SnapTreeMap)tree).clone() :
-            ((GridOffHeapSnapTreeMap)tree).clone();
+        return tree.clone();
     }
 
     /** {@inheritDoc} */
@@ -167,9 +163,6 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
     @Override public void destroy() {
         assert threadLocalSnapshot() == null;
 
-        if (tree instanceof AutoCloseable)
-            U.closeQuiet((AutoCloseable)tree);
-
         super.destroy();
     }
 
@@ -180,7 +173,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
         // Fast path if we don't need to perform any filtering.
         if (f == null || f.forSpace((getTable()).spaceName()) == null)
             try {
-                return treeForRead().treeSize();
+                return treeForRead().size();
             } catch (IgniteCheckedException e) {
                 throw DbException.convert(e);
             }
@@ -338,7 +331,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
         try {
             // We take exclusive bounds because it is possible that one search row will be equal to multiple key rows
             // in tree and we must return them all.
-            return tree.find(first, false, last, false);
+            return tree.find(first, last);
         }
         catch (IgniteCheckedException e) {
             throw DbException.convert(e);
@@ -377,7 +370,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
     /** {@inheritDoc} */
     @Override public GridH2Row remove(SearchRow row) {
         try {
-            return tree.removeNode(comparable(row, 0));
+            return tree.remove(comparable(row, 0));
         }
         catch (IgniteCheckedException e) {
             throw DbException.convert(e);
@@ -487,7 +480,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
         long i = 0;
 
         try {
-            GridCursor<GridH2Row> cursor = tree.findAll();
+            GridCursor<GridH2Row> cursor = tree.find(null, null);
 
             while(cursor.next()) {
                 GridH2Row row = cursor.get();
@@ -524,33 +517,35 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
             return tree.get(key);
         }
 
-        @Override public GridCursor<GridH2Row> find(GridSearchRowPointer lower, boolean lowerInclusive,
-                                                    GridSearchRowPointer upper, boolean upperInclusive)
+        @Override public GridCursor<GridH2Row> find(GridSearchRowPointer lower, GridSearchRowPointer upper)
             throws IgniteCheckedException {
             if (lower == null || upper == null)
                 throw new NullPointerException();
 
             NavigableMap<GridSearchRowPointer, GridH2Row> subMap =
-                tree.subMap(lower, lowerInclusive, upper, upperInclusive);
+                tree.subMap(lower, false, upper, false);
 
             return new GridCursorIteratorWrapper<GridH2Row>(subMap.values().iterator());
         }
 
-        public GridCursor<GridH2Row> find(GridSearchRowPointer lower, GridSearchRowPointer upper)
-            throws IgniteCheckedException {
-            return find(lower, true, upper, true);
+        @Override public GridH2Row remove(GridSearchRowPointer key) throws IgniteCheckedException {
+            return tree.remove(key);
         }
 
-        public GridCursor<GridH2Row> findAll() throws IgniteCheckedException {
-            return find(null, null);
+        @Override public long size() throws IgniteCheckedException {
+            return tree.size();
         }
 
-        @Override public GridH2Row removeNode(GridSearchRowPointer key) throws IgniteCheckedException {
-            return tree.remove(key);
-        }
+        @Override public IgniteNavigableMapTree clone() {
+            AbstractMap copy;
 
-        @Override public long treeSize() throws IgniteCheckedException {
-            return tree.size();
+            try {
+                copy = (AbstractMap) super.clone();
+            } catch (final CloneNotSupportedException e) {
+                throw DbException.convert(e);
+            }
+
+            return new IgniteNavigableMapTree((NavigableMap)copy);
         }
     }
 }
\ No newline at end of file


[13/24] ignite git commit: ignite-gg-11414 simplify iterator wrapper for cursor

Posted by sb...@apache.org.
ignite-gg-11414 simplify iterator wrapper for cursor


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

Branch: refs/heads/ignite-gg-11810
Commit: c7f1cce266c30676ad8781072362161fc7a50718
Parents: c1c15a6
Author: Dmitriy Govorukhin <dg...@gridgain.com>
Authored: Mon Jan 9 18:37:44 2017 +0300
Committer: Dmitriy Govorukhin <dg...@gridgain.com>
Committed: Mon Jan 9 18:37:44 2017 +0300

----------------------------------------------------------------------
 .../query/h2/opt/GridH2IndexBase.java           | 55 ++++++--------------
 1 file changed, 17 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c7f1cce2/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
index c5e836a..b1a594c 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
@@ -1569,11 +1569,8 @@ public abstract class GridH2IndexBase extends BaseIndex {
         /** */
         private final GridCursor<GridH2Row> cursor;
 
-        /** First next. */
-        private GridH2Row firstNext;
-
-        /** Second next. */
-        private GridH2Row secondNext;
+        /** Next element. */
+        private GridH2Row next;
 
         /**
          * @param cursor Cursor.
@@ -1581,52 +1578,34 @@ public abstract class GridH2IndexBase extends BaseIndex {
         private CursorIteratorWrapper(GridCursor<GridH2Row> cursor) {
             this.cursor = cursor;
 
-            fetch();
+            try {
+                if (cursor.next())
+                    next = cursor.get();
+            }
+            catch (IgniteCheckedException e) {
+                throw U.convertException(e);
+            }
         }
 
         /** {@inheritDoc} */
         @Override public boolean hasNext() {
-            return firstNext != null;
+            return next != null;
         }
 
         /** {@inheritDoc} */
         @Override public GridH2Row next() {
             try {
-                if (firstNext != null) {
-                    GridH2Row res = firstNext;
+                GridH2Row res = next;
 
-                    firstNext = secondNext;
-
-                    if (cursor.next())
-                        secondNext = cursor.get();
-                    else
-                        secondNext = null;
-                    return res;
-                }
+                if (cursor.next())
+                    next = cursor.get();
                 else
-                    return null;
-            }
-            catch (Exception e) {
-                return null;
-            }
-        }
-
-        /**
-         *
-         */
-        private void fetch() {
-            try {
-                if (firstNext == null && secondNext == null) {
-                    if (cursor.next()) {
-                        firstNext = cursor.get();
+                    next = null;
 
-                        if (cursor.next())
-                            secondNext = cursor.get();
-                    }
-                }
+                return res;
             }
-            catch (IgniteCheckedException ignored) {
-
+            catch (IgniteCheckedException e) {
+                throw U.convertException(e);
             }
         }
 


[19/24] ignite git commit: ignite-gg-8.0.2.ea2 ClusterStateAbstractTest fix test

Posted by sb...@apache.org.
ignite-gg-8.0.2.ea2 ClusterStateAbstractTest fix test


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

Branch: refs/heads/ignite-gg-11810
Commit: 6c6cbd327d67c05278a3617a0cfc4b0f90e0bffc
Parents: f5fd34e
Author: Dmitriy Govorukhin <dg...@gridgain.com>
Authored: Wed Jan 11 11:23:33 2017 +0300
Committer: Dmitriy Govorukhin <dg...@gridgain.com>
Committed: Wed Jan 11 11:23:33 2017 +0300

----------------------------------------------------------------------
 .../cluster/GridClusterStateProcessor.java      |  6 ++-
 .../cache/ClusterStateAbstractTest.java         | 45 ++++++++++----------
 .../internal/websession/WebSessionSelfTest.java |  4 ++
 3 files changed, 30 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/6c6cbd32/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java
index d60243b..fa6910d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java
@@ -449,12 +449,14 @@ public class GridClusterStateProcessor extends GridProcessorAdapter {
 
                 for (CacheConfiguration cfg : cfgs) {
                     if (CU.isSystemCache(cfg.getName()))
-                        sharedCtx.pageStore().initializeForCache(cfg);
+                        if (sharedCtx.pageStore() != null)
+                            sharedCtx.pageStore().initializeForCache(cfg);
                 }
 
                 for (CacheConfiguration cfg : cfgs) {
                     if (!CU.isSystemCache(cfg.getName()))
-                        sharedCtx.pageStore().initializeForCache(cfg);
+                        if (sharedCtx.pageStore() != null)
+                            sharedCtx.pageStore().initializeForCache(cfg);
                 }
 
                 sharedCtx.database().onActivate(ctx);

http://git-wip-us.apache.org/repos/asf/ignite/blob/6c6cbd32/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java
index 7969426..a454270 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ClusterStateAbstractTest.java
@@ -19,11 +19,10 @@
 package org.apache.ignite.internal.processors.cache;
 
 import java.util.Collection;
-import java.util.concurrent.Callable;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.locks.Lock;
-import javax.cache.CacheException;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteException;
@@ -120,20 +119,20 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
 
         startGrids(GRID_CNT);
 
-        IgniteCache<Object, Object> cache2 = grid(0).createCache(new CacheConfiguration<>("cache2"));
-
-        checkInactive("cache2", GRID_CNT);
+        checkInactive(GRID_CNT);
 
         forbidden.clear();
 
         grid(0).active(true);
 
+        IgniteCache<Object, Object> cache2 = grid(0).createCache(new CacheConfiguration<>("cache2"));
+
         for (int k = 0; k < ENTRY_CNT; k++)
             cache2.put(k, k);
 
         grid(0).active(false);
 
-        checkInactive("cache2", GRID_CNT);
+        checkInactive(GRID_CNT);
 
         stopAllGrids();
     }
@@ -281,8 +280,12 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
      * @throws Exception If fails.
      */
     public void testDeactivationWithPendingLock() throws Exception {
+        fail("Safe way for deactivate cluster must be implemented.");
+
         startGrids(GRID_CNT);
 
+        final CountDownLatch finishedLatch = new CountDownLatch(1);
+
         Lock lock = grid(0).cache(CACHE_NAME).lock(1);
 
         IgniteInternalFuture<?> fut;
@@ -293,6 +296,8 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
             fut = multithreadedAsync(new Runnable() {
                 @Override public void run() {
                     grid(1).active(false);
+
+                    finishedLatch.countDown();
                 }
             }, 1);
 
@@ -322,6 +327,8 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
         fut.get(getTestTimeout(), TimeUnit.MILLISECONDS);
 
         checkInactive(GRID_CNT);
+
+        finishedLatch.await();
     }
 
     /**
@@ -330,8 +337,12 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
      * @throws Exception If fails.
      */
     public void testDeactivationWithPendingTransaction() throws Exception {
+        fail("Safe way for deactivate cluster must be implemented.");
+
         startGrids(GRID_CNT);
 
+        final CountDownLatch finishedLatch = new CountDownLatch(1);
+
         final Ignite ignite0 = grid(0);
 
         final IgniteCache<Object, Object> cache0 = ignite0.cache(CACHE_NAME);
@@ -344,6 +355,8 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
             fut = multithreadedAsync(new Runnable() {
                 @Override public void run() {
                     ignite0.active(false);
+
+                    finishedLatch.countDown();
                 }
             }, 1);
 
@@ -379,30 +392,16 @@ public abstract class ClusterStateAbstractTest extends GridCommonAbstractTest {
 
         for (int g = 0; g < GRID_CNT; g++)
             assertEquals(2, grid(g).cache(CACHE_NAME).get(1));
-    }
 
-    /**
-     *
-     */
-    private void checkInactive(int cnt) {
-        checkInactive(CACHE_NAME, cnt);
+        finishedLatch.await();
     }
 
     /**
      *
      */
-    private void checkInactive(String cacheName, int cnt) {
-        for (int g = 0; g < cnt; g++) {
+    private void checkInactive(int cnt) {
+        for (int g = 0; g < cnt; g++)
             assertFalse(grid(g).active());
-
-            final IgniteCache<Object, Object> cache0 = grid(g).cache(cacheName);
-
-            GridTestUtils.assertThrows(log, new Callable<Object>() {
-                @Override public Object call() throws Exception {
-                    return cache0.get("testKey");
-                }
-            }, CacheException.class, null);
-        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/6c6cbd32/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
index bfa12a2..67eedcf 100644
--- a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
+++ b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
@@ -200,6 +200,10 @@ public class WebSessionSelfTest extends GridCommonAbstractTest {
         }
     }
 
+    /**
+     * @param reqMarker Request marker.
+     * @param sesId Session id.
+     */
     private String sendRequestAndCheckMarker(String reqMarker, String sesId) throws IOException, IgniteCheckedException {
         URLConnection conn = new URL("http://localhost:" + TEST_JETTY_PORT +
             "/ignitetest/test?marker=" + reqMarker).openConnection();


[08/24] ignite git commit: Merge ignite-gg-8.0.2.ea2 into ignite-gg-11414

Posted by sb...@apache.org.
Merge ignite-gg-8.0.2.ea2 into ignite-gg-11414


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

Branch: refs/heads/ignite-gg-11810
Commit: 12130467e75e537a0000752e9afc99f4a547e965
Parents: 0712a81 9776f3f
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Thu Dec 29 14:04:33 2016 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Thu Dec 29 14:04:33 2016 +0300

----------------------------------------------------------------------
 .gitignore                                      |     1 +
 README.md                                       |     8 +
 RELEASE_NOTES.txt                               |    22 +
 assembly/dependencies-fabric-lgpl.xml           |     1 +
 assembly/dependencies-fabric.xml                |     1 +
 assembly/release-base.xml                       |     5 +
 assembly/release-fabric-base.xml                |     1 +
 bin/control.bat                                 |   229 +
 bin/control.sh                                  |   180 +
 bin/ignite.bat                                  |     5 +
 bin/ignite.sh                                   |     9 +
 bin/include/setenv.bat                          |     8 -
 bin/include/setenv.sh                           |    31 -
 config/dotnet/default-dotnet.xml                |    45 +
 examples/pom-standalone-lgpl.xml                |     6 +
 examples/pom-standalone.xml                     |     6 +
 examples/pom.xml                                |     8 +-
 examples/redis/redis-example.php                |    82 +
 examples/redis/redis-example.py                 |    62 +
 examples/schema-import/pom.xml                  |     2 +-
 .../examples/datagrid/SpatialQueryExample.java  |   106 +
 .../ignite/examples/ExampleNodeStartup.java     |     2 +-
 .../examples/datagrid/CachePutGetExample.java   |     2 +-
 .../examples/datagrid/CacheQueryDmlExample.java |   163 +
 .../scalar/examples/ScalarJvmCloudExample.scala |     2 +-
 .../SpatialQueryExampleMultiNodeSelfTest.java   |    31 +
 .../examples/SpatialQueryExampleSelfTest.java   |    33 +
 .../IgniteLgplExamplesSelfTestSuite.java        |     4 +
 .../CacheExamplesMultiNodeSelfTest.java         |     7 +
 .../ignite/examples/CacheExamplesSelfTest.java  |     8 +
 modules/aop/pom.xml                             |     2 +-
 modules/apache-license-gen/pom.xml              |     2 +-
 modules/aws/pom.xml                             |     2 +-
 .../s3/S3CheckpointManagerSelfTest.java         |     3 +
 .../checkpoint/s3/S3CheckpointSpiSelfTest.java  |     4 +
 .../s3/S3CheckpointSpiStartStopSelfTest.java    |     7 +
 .../s3/S3SessionCheckpointSelfTest.java         |     2 +
 .../s3/TcpDiscoveryS3IpFinderSelfTest.java      |     7 +
 .../ignite/testsuites/IgniteS3TestSuite.java    |    15 +-
 modules/benchmarks/pom.xml                      |     2 +-
 .../jmh/misc/JmhIncrementBenchmark.java         |    95 +
 modules/camel/pom.xml                           |     2 +-
 modules/cassandra/README.txt                    |     8 +-
 modules/cassandra/licenses/apache-2.0.txt       |   202 -
 modules/cassandra/pom.xml                       |   315 +-
 modules/cassandra/serializers/README.txt        |    34 +
 .../serializers/licenses/apache-2.0.txt         |   202 +
 modules/cassandra/serializers/pom.xml           |   129 +
 .../cassandra/serializer/KryoSerializer.java    |    95 +
 .../apache/ignite/tests/KryoSerializerTest.java |    70 +
 .../java/org/apache/ignite/tests/MyPojo.java    |   102 +
 .../store/cassandra/CassandraCacheStore.java    |   409 -
 .../cassandra/CassandraCacheStoreFactory.java   |   200 -
 .../store/cassandra/common/CassandraHelper.java |   133 -
 .../cassandra/common/PropertyMappingHelper.java |   220 -
 .../store/cassandra/common/RandomSleeper.java   |   104 -
 .../store/cassandra/common/SystemHelper.java    |    46 -
 .../store/cassandra/common/package-info.java    |    21 -
 .../store/cassandra/datasource/Credentials.java |    37 -
 .../store/cassandra/datasource/DataSource.java  |   550 -
 .../cassandra/datasource/PlainCredentials.java  |    50 -
 .../cassandra/datasource/package-info.java      |    21 -
 .../cache/store/cassandra/package-info.java     |    21 -
 .../persistence/KeyPersistenceSettings.java     |   274 -
 .../KeyValuePersistenceSettings.java            |   478 -
 .../persistence/PersistenceController.java      |   421 -
 .../persistence/PersistenceSettings.java        |   335 -
 .../persistence/PersistenceStrategy.java        |    62 -
 .../store/cassandra/persistence/PojoField.java  |   219 -
 .../cassandra/persistence/PojoKeyField.java     |    91 -
 .../cassandra/persistence/PojoValueField.java   |   152 -
 .../persistence/ValuePersistenceSettings.java   |   107 -
 .../cassandra/persistence/package-info.java     |    21 -
 .../cassandra/serializer/JavaSerializer.java    |    81 -
 .../cassandra/serializer/KryoSerializer.java    |    93 -
 .../store/cassandra/serializer/Serializer.java  |    43 -
 .../cassandra/serializer/package-info.java      |    21 -
 .../session/BatchExecutionAssistant.java        |    95 -
 .../cassandra/session/BatchLoaderAssistant.java |    47 -
 .../cassandra/session/CassandraSession.java     |    60 -
 .../cassandra/session/CassandraSessionImpl.java |   832 --
 .../cassandra/session/ExecutionAssistant.java   |    77 -
 .../session/GenericBatchExecutionAssistant.java |    71 -
 .../session/LoadCacheCustomQueryWorker.java     |   105 -
 .../store/cassandra/session/package-info.java   |    21 -
 .../cassandra/session/pool/SessionPool.java     |   173 -
 .../cassandra/session/pool/SessionWrapper.java  |    71 -
 .../cassandra/session/pool/package-info.java    |    21 -
 .../store/cassandra/utils/DDLGenerator.java     |    64 -
 .../store/cassandra/utils/package-info.java     |    21 -
 .../cassandra/src/test/bootstrap/aws/README.txt |    13 -
 .../aws/cassandra/cassandra-bootstrap.sh        |   336 -
 .../bootstrap/aws/cassandra/cassandra-env.sh    |   287 -
 .../bootstrap/aws/cassandra/cassandra-start.sh  |   217 -
 .../aws/cassandra/cassandra-template.yaml       |   888 --
 .../cassandra/src/test/bootstrap/aws/common.sh  |  1481 --
 modules/cassandra/src/test/bootstrap/aws/env.sh |   113 -
 .../test/bootstrap/aws/ganglia/agent-start.sh   |    75 -
 .../bootstrap/aws/ganglia/ganglia-bootstrap.sh  |   417 -
 .../bootstrap/aws/ignite/ignite-bootstrap.sh    |   336 -
 .../ignite/ignite-cassandra-server-template.xml |   190 -
 .../src/test/bootstrap/aws/ignite/ignite-env.sh |    29 -
 .../test/bootstrap/aws/ignite/ignite-start.sh   |   266 -
 .../src/test/bootstrap/aws/logs-collector.sh    |   173 -
 .../tests/ignite-cassandra-client-template.xml  |   192 -
 .../test/bootstrap/aws/tests/tests-bootstrap.sh |   317 -
 .../test/bootstrap/aws/tests/tests-manager.sh   |   458 -
 .../test/bootstrap/aws/tests/tests-report.sh    |   499 -
 .../CassandraDirectPersistenceLoadTest.java     |   107 -
 .../tests/CassandraDirectPersistenceTest.java   |   371 -
 .../apache/ignite/tests/DDLGeneratorTest.java   |    43 -
 .../tests/IgnitePersistentStoreLoadTest.java    |   111 -
 .../ignite/tests/IgnitePersistentStoreTest.java |   369 -
 .../LoadTestsCassandraArtifactsCreator.java     |   104 -
 .../org/apache/ignite/tests/load/Generator.java |    27 -
 .../apache/ignite/tests/load/IntGenerator.java  |    33 -
 .../ignite/tests/load/LoadTestDriver.java       |   238 -
 .../apache/ignite/tests/load/LongGenerator.java |    28 -
 .../ignite/tests/load/PersonGenerator.java      |    43 -
 .../ignite/tests/load/PersonIdGenerator.java    |    31 -
 .../ignite/tests/load/StringGenerator.java      |    28 -
 .../org/apache/ignite/tests/load/Worker.java    |   429 -
 .../tests/load/cassandra/BulkReadWorker.java    |    63 -
 .../tests/load/cassandra/BulkWriteWorker.java   |    52 -
 .../ignite/tests/load/cassandra/ReadWorker.java |    51 -
 .../tests/load/cassandra/WriteWorker.java       |    51 -
 .../tests/load/cassandra/package-info.java      |    21 -
 .../tests/load/ignite/BulkReadWorker.java       |    52 -
 .../tests/load/ignite/BulkWriteWorker.java      |    52 -
 .../ignite/tests/load/ignite/ReadWorker.java    |    51 -
 .../ignite/tests/load/ignite/WriteWorker.java   |    51 -
 .../ignite/tests/load/ignite/package-info.java  |    21 -
 .../apache/ignite/tests/load/package-info.java  |    21 -
 .../org/apache/ignite/tests/package-info.java   |    21 -
 .../org/apache/ignite/tests/pojos/Person.java   |   246 -
 .../org/apache/ignite/tests/pojos/PersonId.java |   110 -
 .../apache/ignite/tests/pojos/package-info.java |    21 -
 .../ignite/tests/utils/CacheStoreHelper.java    |    64 -
 .../tests/utils/CassandraAdminCredentials.java  |    36 -
 .../ignite/tests/utils/CassandraHelper.java     |   358 -
 .../tests/utils/CassandraLifeCycleBean.java     |   149 -
 .../utils/CassandraRegularCredentials.java      |    36 -
 .../ignite/tests/utils/TestCacheSession.java    |    91 -
 .../apache/ignite/tests/utils/TestsHelper.java  |   375 -
 .../apache/ignite/tests/utils/package-info.java |    21 -
 .../src/test/resources/log4j.properties         |   119 -
 .../tests/cassandra/connection-settings.xml     |    52 -
 .../tests/cassandra/connection.properties       |    17 -
 .../tests/cassandra/credentials.properties      |    22 -
 .../tests/cassandra/embedded-cassandra.yaml     |   119 -
 .../ignite/tests/cassandra/keyspaces.properties |    17 -
 .../tests/persistence/blob/ignite-config.xml    |    94 -
 .../persistence/blob/persistence-settings-1.xml |    21 -
 .../persistence/blob/persistence-settings-2.xml |    21 -
 .../persistence/blob/persistence-settings-3.xml |    29 -
 .../tests/persistence/pojo/ignite-config.xml    |   113 -
 .../persistence/pojo/persistence-settings-1.xml |    21 -
 .../persistence/pojo/persistence-settings-2.xml |    21 -
 .../persistence/pojo/persistence-settings-3.xml |   173 -
 .../persistence/primitive/ignite-config.xml     |    94 -
 .../primitive/ignite-remote-client-config.xml   |    99 -
 .../primitive/ignite-remote-server-config.xml   |   110 -
 .../primitive/persistence-settings-1.xml        |    21 -
 .../primitive/persistence-settings-2.xml        |    21 -
 .../src/test/resources/tests.properties         |    50 -
 .../src/test/scripts/cassandra-load-tests.bat   |    41 -
 .../src/test/scripts/cassandra-load-tests.sh    |    39 -
 .../src/test/scripts/ignite-load-tests.bat      |    41 -
 .../src/test/scripts/ignite-load-tests.sh       |    39 -
 modules/cassandra/src/test/scripts/jvm-opt.sh   |    21 -
 modules/cassandra/src/test/scripts/jvm-opts.bat |    24 -
 .../scripts/recreate-cassandra-artifacts.bat    |    41 -
 .../scripts/recreate-cassandra-artifacts.sh     |    39 -
 modules/cassandra/store/README.txt              |    32 +
 modules/cassandra/store/licenses/apache-2.0.txt |   202 +
 modules/cassandra/store/pom.xml                 |   305 +
 .../store/cassandra/CassandraCacheStore.java    |   525 +
 .../cassandra/CassandraCacheStoreFactory.java   |   200 +
 .../store/cassandra/common/CassandraHelper.java |   176 +
 .../cassandra/common/PropertyMappingHelper.java |   219 +
 .../store/cassandra/common/RandomSleeper.java   |   104 +
 .../store/cassandra/common/SystemHelper.java    |    46 +
 .../store/cassandra/common/package-info.java    |    21 +
 .../store/cassandra/datasource/Credentials.java |    39 +
 .../store/cassandra/datasource/DataSource.java  |   656 +
 .../cassandra/datasource/PlainCredentials.java  |    53 +
 .../cassandra/datasource/package-info.java      |    21 +
 .../cache/store/cassandra/package-info.java     |    21 +
 .../persistence/KeyPersistenceSettings.java     |   305 +
 .../KeyValuePersistenceSettings.java            |   526 +
 .../persistence/PersistenceController.java      |   462 +
 .../persistence/PersistenceSettings.java        |   446 +
 .../persistence/PersistenceStrategy.java        |    62 +
 .../store/cassandra/persistence/PojoField.java  |   245 +
 .../cassandra/persistence/PojoKeyField.java     |    87 +
 .../cassandra/persistence/PojoValueField.java   |   143 +
 .../persistence/ValuePersistenceSettings.java   |   120 +
 .../cassandra/persistence/package-info.java     |    21 +
 .../cassandra/serializer/JavaSerializer.java    |    80 +
 .../store/cassandra/serializer/Serializer.java  |    43 +
 .../cassandra/serializer/package-info.java      |    21 +
 .../session/BatchExecutionAssistant.java        |   102 +
 .../cassandra/session/BatchLoaderAssistant.java |    47 +
 .../cassandra/session/CassandraSession.java     |    70 +
 .../cassandra/session/CassandraSessionImpl.java |   943 ++
 .../cassandra/session/ExecutionAssistant.java   |    84 +
 .../session/GenericBatchExecutionAssistant.java |    71 +
 .../session/LoadCacheCustomQueryWorker.java     |   105 +
 .../store/cassandra/session/package-info.java   |    21 +
 .../cassandra/session/pool/SessionPool.java     |   173 +
 .../cassandra/session/pool/SessionWrapper.java  |    71 +
 .../cassandra/session/pool/package-info.java    |    21 +
 .../session/transaction/BaseMutation.java       |    68 +
 .../session/transaction/DeleteMutation.java     |    57 +
 .../cassandra/session/transaction/Mutation.java |    63 +
 .../session/transaction/WriteMutation.java      |    60 +
 .../session/transaction/package-info.java       |    21 +
 .../store/cassandra/utils/DDLGenerator.java     |    76 +
 .../store/cassandra/utils/package-info.java     |    21 +
 .../store/src/test/bootstrap/aws/README.txt     |    13 +
 .../aws/cassandra/cassandra-bootstrap.sh        |   336 +
 .../bootstrap/aws/cassandra/cassandra-env.sh    |   287 +
 .../bootstrap/aws/cassandra/cassandra-start.sh  |   217 +
 .../aws/cassandra/cassandra-template.yaml       |   888 ++
 .../store/src/test/bootstrap/aws/common.sh      |  1481 ++
 .../store/src/test/bootstrap/aws/env.sh         |   113 +
 .../test/bootstrap/aws/ganglia/agent-start.sh   |    75 +
 .../bootstrap/aws/ganglia/ganglia-bootstrap.sh  |   417 +
 .../bootstrap/aws/ignite/ignite-bootstrap.sh    |   336 +
 .../ignite/ignite-cassandra-server-template.xml |   190 +
 .../src/test/bootstrap/aws/ignite/ignite-env.sh |    29 +
 .../test/bootstrap/aws/ignite/ignite-start.sh   |   266 +
 .../src/test/bootstrap/aws/logs-collector.sh    |   173 +
 .../tests/ignite-cassandra-client-template.xml  |   192 +
 .../test/bootstrap/aws/tests/tests-bootstrap.sh |   317 +
 .../test/bootstrap/aws/tests/tests-manager.sh   |   458 +
 .../test/bootstrap/aws/tests/tests-report.sh    |   499 +
 .../CassandraDirectPersistenceLoadTest.java     |   107 +
 .../tests/CassandraDirectPersistenceTest.java   |   696 +
 .../ignite/tests/CassandraLocalServer.java      |    59 +
 .../apache/ignite/tests/DDLGeneratorTest.java   |    57 +
 .../tests/DatasourceSerializationTest.java      |   158 +
 .../tests/IgnitePersistentStoreLoadTest.java    |   111 +
 .../ignite/tests/IgnitePersistentStoreTest.java |   666 +
 .../LoadTestsCassandraArtifactsCreator.java     |   104 +
 .../org/apache/ignite/tests/load/Generator.java |    27 +
 .../apache/ignite/tests/load/IntGenerator.java  |    33 +
 .../ignite/tests/load/LoadTestDriver.java       |   238 +
 .../apache/ignite/tests/load/LongGenerator.java |    28 +
 .../ignite/tests/load/PersonGenerator.java      |    43 +
 .../ignite/tests/load/PersonIdGenerator.java    |    31 +
 .../ignite/tests/load/StringGenerator.java      |    28 +
 .../org/apache/ignite/tests/load/Worker.java    |   429 +
 .../tests/load/cassandra/BulkReadWorker.java    |    63 +
 .../tests/load/cassandra/BulkWriteWorker.java   |    52 +
 .../ignite/tests/load/cassandra/ReadWorker.java |    51 +
 .../tests/load/cassandra/WriteWorker.java       |    51 +
 .../tests/load/cassandra/package-info.java      |    21 +
 .../tests/load/ignite/BulkReadWorker.java       |    52 +
 .../tests/load/ignite/BulkWriteWorker.java      |    52 +
 .../ignite/tests/load/ignite/ReadWorker.java    |    51 +
 .../ignite/tests/load/ignite/WriteWorker.java   |    51 +
 .../ignite/tests/load/ignite/package-info.java  |    21 +
 .../apache/ignite/tests/load/package-info.java  |    21 +
 .../org/apache/ignite/tests/package-info.java   |    21 +
 .../org/apache/ignite/tests/pojos/Person.java   |   279 +
 .../org/apache/ignite/tests/pojos/PersonId.java |   110 +
 .../org/apache/ignite/tests/pojos/Product.java  |   123 +
 .../apache/ignite/tests/pojos/ProductOrder.java |   148 +
 .../apache/ignite/tests/pojos/package-info.java |    21 +
 .../ignite/tests/utils/CacheStoreHelper.java    |    77 +
 .../tests/utils/CassandraAdminCredentials.java  |    38 +
 .../ignite/tests/utils/CassandraHelper.java     |   358 +
 .../tests/utils/CassandraLifeCycleBean.java     |   149 +
 .../utils/CassandraRegularCredentials.java      |    38 +
 .../ignite/tests/utils/TestCacheSession.java    |    95 +
 .../ignite/tests/utils/TestTransaction.java     |   132 +
 .../apache/ignite/tests/utils/TestsHelper.java  |   660 +
 .../apache/ignite/tests/utils/package-info.java |    21 +
 .../store/src/test/resources/log4j.properties   |   119 +
 .../tests/cassandra/connection-settings.xml     |    52 +
 .../tests/cassandra/connection.properties       |    17 +
 .../tests/cassandra/credentials.properties      |    22 +
 .../tests/cassandra/embedded-cassandra.yaml     |   119 +
 .../ignite/tests/cassandra/keyspaces.properties |    17 +
 .../tests/persistence/blob/ignite-config.xml    |    94 +
 .../persistence/blob/persistence-settings-1.xml |    21 +
 .../persistence/blob/persistence-settings-2.xml |    21 +
 .../persistence/blob/persistence-settings-3.xml |    29 +
 .../tests/persistence/pojo/ignite-config.xml    |   169 +
 .../ignite/tests/persistence/pojo/order.xml     |    21 +
 .../persistence/pojo/persistence-settings-1.xml |    21 +
 .../persistence/pojo/persistence-settings-2.xml |    21 +
 .../persistence/pojo/persistence-settings-3.xml |   175 +
 .../persistence/pojo/persistence-settings-4.xml |   175 +
 .../ignite/tests/persistence/pojo/product.xml   |    21 +
 .../persistence/primitive/ignite-config.xml     |    94 +
 .../primitive/ignite-remote-client-config.xml   |    99 +
 .../primitive/ignite-remote-server-config.xml   |   110 +
 .../primitive/persistence-settings-1.xml        |    21 +
 .../primitive/persistence-settings-2.xml        |    21 +
 .../store/src/test/resources/tests.properties   |    65 +
 .../src/test/scripts/cassandra-load-tests.bat   |    41 +
 .../src/test/scripts/cassandra-load-tests.sh    |    39 +
 .../src/test/scripts/ignite-load-tests.bat      |    41 +
 .../store/src/test/scripts/ignite-load-tests.sh |    39 +
 .../cassandra/store/src/test/scripts/jvm-opt.sh |    21 +
 .../store/src/test/scripts/jvm-opts.bat         |    24 +
 .../scripts/recreate-cassandra-artifacts.bat    |    41 +
 .../scripts/recreate-cassandra-artifacts.sh     |    39 +
 modules/clients/pom.xml                         |     9 +-
 .../clients/src/test/config/jdbc-bin-config.xml |    54 +
 .../client/ClientReconnectionSelfTest.java      |     4 +-
 .../client/router/TcpSslRouterSelfTest.java     |     7 +-
 .../client/suite/IgniteClientTestSuite.java     |    75 +-
 .../jdbc2/JdbcAbstractDmlStatementSelfTest.java |   263 +
 .../JdbcAbstractUpdateStatementSelfTest.java    |    37 +
 ...BinaryMarshallerInsertStatementSelfTest.java |    37 +
 ...cBinaryMarshallerMergeStatementSelfTest.java |    37 +
 .../jdbc2/JdbcDeleteStatementSelfTest.java      |    49 +
 .../jdbc2/JdbcInsertStatementSelfTest.java      |   122 +
 .../jdbc2/JdbcMergeStatementSelfTest.java       |    91 +
 .../internal/jdbc2/JdbcNoDefaultCacheTest.java  |    40 +-
 .../internal/jdbc2/JdbcResultSetSelfTest.java   |   109 +-
 .../rest/ChangeStateCommandHandlerTest.java     |   125 +
 .../rest/ClientMemcachedProtocolSelfTest.java   |     4 +-
 .../JettyRestProcessorAbstractSelfTest.java     |    11 +-
 .../rest/RestProcessorMultiStartSelfTest.java   |    48 +-
 .../rest/protocols/tcp/MockNioSession.java      |    11 +
 .../tcp/redis/RedisProtocolSelfTest.java        |   559 +
 .../jdbc/suite/IgniteJdbcDriverTestSuite.java   |     5 +
 modules/cloud/pom.xml                           |     2 +-
 .../TcpDiscoveryCloudIpFinderSelfTest.java      |     6 +-
 .../ignite/testsuites/IgniteCloudTestSuite.java |     5 +-
 modules/codegen/pom.xml                         |     2 +-
 .../ignite/codegen/MessageCodeGenerator.java    |     2 +
 modules/core/pom.xml                            |     2 +-
 .../src/main/java/org/apache/ignite/Ignite.java |    85 +-
 .../java/org/apache/ignite/IgniteCache.java     |    28 +
 .../apache/ignite/IgniteCheckedException.java   |    12 +
 .../org/apache/ignite/IgniteDataStreamer.java   |     2 +-
 .../java/org/apache/ignite/IgniteLogger.java    |     6 +-
 .../java/org/apache/ignite/IgniteScheduler.java |    13 +
 .../java/org/apache/ignite/IgniteServices.java  |    64 +-
 .../apache/ignite/IgniteSystemProperties.java   |    83 +
 .../binary/BinaryAbstractIdentityResolver.java  |    53 +
 .../binary/BinaryArrayIdentityResolver.java     |   224 +
 .../binary/BinaryFieldIdentityResolver.java     |   307 +
 .../ignite/binary/BinaryIdentityResolver.java   |    42 +
 .../ignite/binary/BinaryTypeConfiguration.java  |    27 +-
 .../org/apache/ignite/cache/QueryEntity.java    |    27 +
 .../affinity/fair/FairAffinityFunction.java     |     2 +-
 .../rendezvous/RendezvousAffinityFunction.java  |    82 +-
 .../cache/query/QueryCancelledException.java    |    35 +
 .../apache/ignite/cache/query/QueryCursor.java  |     8 +-
 .../ignite/cache/query/QueryDetailMetrics.java  |    98 +
 .../apache/ignite/cache/query/QueryMetrics.java |     2 +-
 .../org/apache/ignite/cache/query/SpiQuery.java |     8 +-
 .../ignite/cache/query/SqlFieldsQuery.java      |    28 +-
 .../org/apache/ignite/cache/query/SqlQuery.java |    25 +
 .../cache/store/CacheLoadOnlyStoreAdapter.java  |     6 +-
 .../ignite/cache/store/CacheStoreAdapter.java   |     6 +
 .../store/jdbc/CacheAbstractJdbcStore.java      |   209 +-
 .../cache/store/jdbc/CacheJdbcBlobStore.java    |     4 +-
 .../cache/store/jdbc/CacheJdbcPojoStore.java    |    39 +-
 .../store/jdbc/CacheJdbcPojoStoreFactory.java   |    45 +-
 .../ignite/cache/store/jdbc/JdbcType.java       |     2 +-
 .../store/jdbc/JdbcTypesDefaultTransformer.java |   112 +-
 .../store/jdbc/dialect/BasicJdbcDialect.java    |    12 +-
 .../cache/store/jdbc/dialect/DB2Dialect.java    |    14 +-
 .../cache/store/jdbc/dialect/H2Dialect.java     |     5 +-
 .../cache/store/jdbc/dialect/JdbcDialect.java   |    18 +-
 .../cache/store/jdbc/dialect/MySQLDialect.java  |     9 +-
 .../cache/store/jdbc/dialect/OracleDialect.java |    13 +-
 .../store/jdbc/dialect/SQLServerDialect.java    |    22 +-
 .../apache/ignite/compute/ComputeTaskSpis.java  |     8 +-
 .../configuration/CacheConfiguration.java       |    97 +-
 .../configuration/FileSystemConfiguration.java  |     2 +-
 .../configuration/IgniteConfiguration.java      |    68 +-
 .../ignite/configuration/OdbcConfiguration.java |    98 +-
 .../java/org/apache/ignite/igfs/IgfsPath.java   |    14 +-
 .../org/apache/ignite/igfs/IgfsPathSummary.java |     3 +-
 .../local/LocalIgfsSecondaryFileSystem.java     |   131 +-
 .../internal/ComputeTaskInternalFuture.java     |    11 +
 .../apache/ignite/internal/GridComponent.java   |     7 +-
 .../internal/GridEventConsumeHandler.java       |    20 +-
 .../ignite/internal/GridJobContextImpl.java     |     4 +-
 .../internal/GridJobSiblingsResponse.java       |     3 +-
 .../ignite/internal/GridKernalContext.java      |    48 +
 .../ignite/internal/GridKernalContextImpl.java  |    80 +-
 .../apache/ignite/internal/GridLoggerProxy.java |     3 +-
 .../internal/GridMessageListenHandler.java      |    18 +-
 .../internal/GridPerformanceSuggestions.java    |     2 +-
 .../ignite/internal/GridPluginComponent.java    |     4 +-
 .../ignite/internal/GridTaskSessionImpl.java    |    15 +-
 .../org/apache/ignite/internal/GridTopic.java   |     6 +-
 .../ignite/internal/IgniteComponentType.java    |    11 +-
 .../ignite/internal/IgniteInternalFuture.java   |    11 +
 .../apache/ignite/internal/IgniteKernal.java    |   293 +-
 .../ignite/internal/IgniteSchedulerImpl.java    |    18 +
 .../ignite/internal/IgniteServicesImpl.java     |    13 +-
 .../org/apache/ignite/internal/IgnitionEx.java  |   223 +-
 .../ignite/internal/MarshallerContextImpl.java  |    22 +-
 .../internal/binary/BinaryClassDescriptor.java  |    82 +-
 .../ignite/internal/binary/BinaryContext.java   |   105 +-
 .../internal/binary/BinaryEnumObjectImpl.java   |     8 +-
 .../ignite/internal/binary/BinaryFieldImpl.java |    10 +-
 .../internal/binary/BinaryMarshaller.java       |    30 +-
 .../ignite/internal/binary/BinaryObjectEx.java  |     8 +
 .../internal/binary/BinaryObjectExImpl.java     |   247 +-
 .../internal/binary/BinaryObjectImpl.java       |    68 +-
 .../binary/BinaryObjectOffheapImpl.java         |    69 +-
 .../internal/binary/BinaryPrimitives.java       |    30 +-
 .../internal/binary/BinaryReaderExImpl.java     |    24 +
 .../internal/binary/BinaryReaderHandles.java    |     2 +-
 .../binary/BinarySerializedFieldComparator.java |   343 +
 .../ignite/internal/binary/BinaryTypeProxy.java |    15 +-
 .../ignite/internal/binary/BinaryUtils.java     |    23 +-
 .../internal/binary/BinaryWriterExImpl.java     |    93 +-
 .../internal/binary/GridBinaryMarshaller.java   |     2 +-
 .../binary/builder/BinaryBuilderReader.java     |    11 +
 .../binary/builder/BinaryBuilderSerializer.java |     4 +
 .../binary/builder/BinaryObjectBuilderImpl.java |    46 +-
 .../streams/BinaryAbstractInputStream.java      |     5 +
 .../streams/BinaryAbstractOutputStream.java     |     5 +
 .../streams/BinaryByteBufferInputStream.java    |    10 +
 .../binary/streams/BinaryHeapInputStream.java   |     9 +-
 .../binary/streams/BinaryHeapOutputStream.java  |     7 +-
 .../streams/BinaryMemoryAllocatorChunk.java     |     3 +-
 .../streams/BinaryOffheapInputStream.java       |    14 +-
 .../streams/BinaryOffheapOutputStream.java      |     8 +-
 .../internal/binary/streams/BinaryStream.java   |    12 +-
 .../ignite/internal/client/GridClient.java      |     9 +
 .../internal/client/GridClientClusterState.java |    33 +
 .../client/GridClientConfiguration.java         |     1 -
 .../client/impl/GridClientClusterStateImpl.java |    75 +
 .../internal/client/impl/GridClientImpl.java    |    11 +
 .../impl/connection/GridClientConnection.java   |    17 +
 .../GridClientConnectionManagerAdapter.java     |     1 +
 .../connection/GridClientNioTcpConnection.java  |    21 +
 .../GridClientOptimizedMarshaller.java          |     5 +-
 .../GridClientZipOptimizedMarshaller.java       |     5 +-
 .../router/impl/GridRouterClientImpl.java       |     6 +
 .../internal/cluster/ClusterGroupAdapter.java   |     2 +-
 .../cluster/ClusterNodeLocalMapImpl.java        |     3 +-
 .../internal/commandline/CommandHandler.java    |    89 +
 .../igfs/common/IgfsControlResponse.java        |    19 +-
 .../internal/igfs/common/IgfsMarshaller.java    |    14 +-
 .../ignite/internal/jdbc/JdbcResultSet.java     |    10 +-
 .../apache/ignite/internal/jdbc/JdbcUtils.java  |     4 +-
 .../ignite/internal/jdbc2/JdbcConnection.java   |    17 +
 .../internal/jdbc2/JdbcPreparedStatement.java   |    71 +-
 .../ignite/internal/jdbc2/JdbcQueryTask.java    |     5 +-
 .../ignite/internal/jdbc2/JdbcQueryTaskV2.java  |   406 +
 .../ignite/internal/jdbc2/JdbcResultSet.java    |    81 +-
 .../internal/jdbc2/JdbcSqlFieldsQuery.java      |    49 +
 .../ignite/internal/jdbc2/JdbcStatement.java    |   213 +-
 .../apache/ignite/internal/jdbc2/JdbcUtils.java |    25 +-
 .../internal/managers/GridManagerAdapter.java   |    17 +-
 .../checkpoint/GridCheckpointManager.java       |     8 +-
 .../collision/GridCollisionManager.java         |     2 +-
 .../managers/communication/GridIoManager.java   |   226 +-
 .../managers/communication/GridIoMessage.java   |    13 +
 .../communication/GridIoMessageFactory.java     |    94 +-
 .../communication/IgniteIoTestMessage.java      |    13 +-
 .../deployment/GridDeploymentCommunication.java |     4 +-
 .../deployment/GridDeploymentManager.java       |     2 +-
 .../GridDeploymentPerVersionStore.java          |     2 +-
 .../discovery/GridDiscoveryManager.java         |   199 +-
 .../eventstorage/GridEventStorageManager.java   |    20 +-
 .../managers/failover/GridFailoverManager.java  |     2 +-
 .../managers/indexing/GridIndexingManager.java  |     2 +-
 .../loadbalancer/GridLoadBalancerManager.java   |    12 +-
 .../ignite/internal/pagemem/FullPageId.java     |    30 +-
 .../ignite/internal/pagemem/PageIdUtils.java    |     8 +
 .../pagemem/backup/BackupFinishedMessage.java   |   133 -
 .../StartFullBackupAckDiscoveryMessage.java     |   128 -
 .../backup/StartFullBackupDiscoveryMessage.java |   135 -
 .../pagemem/impl/PageMemoryNoStoreImpl.java     |     7 +-
 .../snapshot/SnapshotFinishedMessage.java       |   136 +
 .../snapshot/SnapshotProgressMessage.java       |   135 +
 .../StartFullSnapshotAckDiscoveryMessage.java   |   147 +
 .../StartFullSnapshotDiscoveryMessage.java      |   160 +
 .../pagemem/store/IgnitePageStoreManager.java   |    20 +-
 .../internal/pagemem/store/PageStore.java       |     7 +-
 .../pagemem/wal/IgniteWriteAheadLogManager.java |     3 +-
 .../wal/IgniteWriteAheadLogNoopManager.java     |    11 +
 .../internal/pagemem/wal/StorageException.java  |     9 +
 .../internal/pagemem/wal/record/DataEntry.java  |    32 +-
 .../internal/pagemem/wal/record/DataRecord.java |    22 +-
 .../wal/record/MemoryRecoveryRecord.java        |    23 +-
 .../internal/pagemem/wal/record/WALRecord.java  |    24 +-
 .../wal/record/delta/DataPageRemoveRecord.java  |     6 +
 .../wal/record/delta/MetaPageInitRecord.java    |    93 +
 .../record/delta/MetaPageInitRootRecord.java    |     2 +
 .../MetaPageUpdateCandidateAllocatedIndex.java  |    63 -
 .../MetaPageUpdateLastSuccessfulBackupId.java   |    59 -
 ...etaPageUpdateLastSuccessfulFullBackupId.java |    59 -
 ...aPageUpdateLastSuccessfulFullSnapshotId.java |    59 +
 .../MetaPageUpdateLastSuccessfulSnapshotId.java |    70 +
 .../delta/MetaPageUpdateNextBackupId.java       |    59 -
 .../delta/MetaPageUpdateNextSnapshotId.java     |    59 +
 .../MetaPageUpdatePartitionDataRecord.java      |    26 +-
 .../record/delta/MetaPageUpdateRootsRecord.java |    91 -
 .../delta/PageListMetaResetCountRecord.java     |    47 +
 .../record/delta/PartitionMetaStateRecord.java  |    82 +
 .../record/delta/SplitExistingPageRecord.java   |     9 +
 .../record/delta/TrackingPageDeltaRecord.java   |    28 +-
 .../processors/GridProcessorAdapter.java        |     4 +-
 .../processors/affinity/AffinityAssignment.java |    88 +
 .../affinity/GridAffinityAssignment.java        |     8 +-
 .../affinity/GridAffinityAssignmentCache.java   |    35 +-
 .../affinity/GridAffinityProcessor.java         |    93 +-
 .../processors/affinity/GridAffinityUtils.java  |    12 +-
 .../affinity/HistoryAffinityAssignment.java     |   169 +
 .../cache/CacheAffinitySharedManager.java       |    66 +-
 .../cache/CacheEntrySerializablePredicate.java  |     4 +-
 .../cache/CacheInvokeDirectResult.java          |     4 +-
 .../processors/cache/CacheLockCandidates.java   |    42 +
 .../cache/CacheLockCandidatesList.java          |    71 +
 .../internal/processors/cache/CacheState.java   |    33 -
 .../cache/CacheStoreBalancingWrapper.java       |     6 +
 .../cache/ChangeGlobalStateMessage.java         |   120 +
 .../internal/processors/cache/ClusterState.java |    38 +
 .../cache/DynamicCacheChangeBatch.java          |     7 +
 .../cache/DynamicCacheChangeRequest.java        |    23 +-
 .../processors/cache/GridCacheAdapter.java      |   779 +-
 .../cache/GridCacheAffinityManager.java         |     6 +-
 .../processors/cache/GridCacheContext.java      |    10 +-
 .../cache/GridCacheDeploymentManager.java       |     4 +-
 .../processors/cache/GridCacheEntryEx.java      |    19 +-
 .../processors/cache/GridCacheEventManager.java |    10 +-
 .../processors/cache/GridCacheIoManager.java    |    89 +-
 .../cache/GridCacheLoaderWriterStore.java       |     6 +
 .../processors/cache/GridCacheMapEntry.java     |   197 +-
 .../processors/cache/GridCacheMessage.java      |    11 +-
 .../processors/cache/GridCacheMvcc.java         |   376 +-
 .../processors/cache/GridCacheMvccCallback.java |     4 +-
 .../cache/GridCacheMvccCandidate.java           |    80 +-
 .../processors/cache/GridCacheMvccManager.java  |    96 +-
 .../GridCachePartitionExchangeManager.java      |   443 +-
 .../processors/cache/GridCachePreloader.java    |    27 +-
 .../cache/GridCachePreloaderAdapter.java        |    21 +-
 .../processors/cache/GridCacheProcessor.java    |   736 +-
 .../processors/cache/GridCacheProxyImpl.java    |    24 +-
 .../GridCacheReturnCompletableWrapper.java      |   101 +
 .../cache/GridCacheSharedContext.java           |    25 +-
 .../cache/GridCacheSharedTtlCleanupManager.java |   142 +
 .../processors/cache/GridCacheTtlManager.java   |   173 +-
 .../processors/cache/GridCacheUtilityKey.java   |     6 +-
 .../processors/cache/GridCacheUtils.java        |   136 +-
 .../GridChangeGlobalStateMessageResponse.java   |   177 +
 .../cache/GridDeferredAckMessageSender.java     |   219 +
 .../cache/IgniteCacheOffheapManager.java        |    36 +-
 .../cache/IgniteCacheOffheapManagerImpl.java    |   191 +-
 .../processors/cache/IgniteCacheProxy.java      |   141 +-
 .../processors/cache/IgniteInternalCache.java   |     8 +
 .../processors/cache/QueryCursorImpl.java       |   117 +-
 .../binary/CacheObjectBinaryProcessorImpl.java  |    49 +-
 .../IgniteCacheDatabaseSharedManager.java       |    58 +-
 .../cache/database/IgniteMemoryPoolMetrics.java |    33 +
 .../cache/database/freelist/PagesList.java      |     6 +-
 .../cache/database/tree/BPlusTree.java          |    21 +-
 .../cache/database/tree/io/DataPageIO.java      |     6 +-
 .../cache/database/tree/io/PageMetaIO.java      |    95 +-
 .../database/tree/io/PagePartitionMetaIO.java   |    19 +
 .../cache/database/tree/io/TrackingPageIO.java  |   124 +-
 .../cache/database/tree/util/PageHandler.java   |    15 +-
 .../CacheDataStructuresManager.java             |     6 +-
 .../distributed/GridCacheTxRecoveryFuture.java  |     4 +-
 .../distributed/GridDistributedCacheEntry.java  |   303 +-
 .../distributed/GridDistributedLockRequest.java |     5 +
 .../GridDistributedLockResponse.java            |     4 +-
 .../GridDistributedTxPrepareRequest.java        |     4 +-
 .../GridDistributedTxPrepareResponse.java       |     4 +-
 .../GridDistributedTxRemoteAdapter.java         |   432 +-
 .../GridDistributedUnlockRequest.java           |     5 +
 .../dht/GridClientPartitionTopology.java        |    89 +-
 .../dht/GridDhtAffinityAssignmentRequest.java   |     2 +-
 .../dht/GridDhtAffinityAssignmentResponse.java  |    12 +-
 .../distributed/dht/GridDhtCacheAdapter.java    |     3 +-
 .../distributed/dht/GridDhtCacheEntry.java      |    34 +-
 .../cache/distributed/dht/GridDhtGetFuture.java |     2 +-
 .../distributed/dht/GridDhtLocalPartition.java  |   134 +-
 .../distributed/dht/GridDhtLockFuture.java      |    70 +-
 .../distributed/dht/GridDhtLockResponse.java    |     9 +-
 .../dht/GridDhtPartitionTopology.java           |    21 +-
 .../dht/GridDhtPartitionTopologyImpl.java       |   313 +-
 .../dht/GridDhtTransactionalCacheAdapter.java   |     1 -
 .../distributed/dht/GridDhtTxFinishFuture.java  |    86 +-
 .../distributed/dht/GridDhtTxFinishRequest.java |    33 +-
 .../dht/GridDhtTxFinishResponse.java            |    56 +-
 .../cache/distributed/dht/GridDhtTxLocal.java   |   125 +-
 .../distributed/dht/GridDhtTxLocalAdapter.java  |     7 +-
 .../dht/GridDhtTxOnePhaseCommitAckRequest.java  |   134 +
 .../distributed/dht/GridDhtTxPrepareFuture.java |    60 +-
 .../dht/GridDhtTxPrepareRequest.java            |    93 +-
 .../cache/distributed/dht/GridDhtTxRemote.java  |     6 +-
 .../GridDhtAtomicAbstractUpdateFuture.java      |   471 +
 .../GridDhtAtomicAbstractUpdateRequest.java     |   287 +
 .../dht/atomic/GridDhtAtomicCache.java          |   819 +-
 .../atomic/GridDhtAtomicSingleUpdateFuture.java |   190 +
 .../GridDhtAtomicSingleUpdateRequest.java       |   683 +
 .../dht/atomic/GridDhtAtomicUpdateFuture.java   |   451 +-
 .../dht/atomic/GridDhtAtomicUpdateRequest.java  |   317 +-
 .../dht/atomic/GridDhtAtomicUpdateResponse.java |     4 +-
 ...idNearAtomicAbstractSingleUpdateRequest.java |   579 +
 .../GridNearAtomicAbstractUpdateFuture.java     |    15 +-
 .../GridNearAtomicAbstractUpdateRequest.java    |   231 +
 .../atomic/GridNearAtomicFullUpdateRequest.java |  1046 ++
 ...GridNearAtomicSingleUpdateFilterRequest.java |   228 +
 .../GridNearAtomicSingleUpdateFuture.java       |   140 +-
 ...GridNearAtomicSingleUpdateInvokeRequest.java |   309 +
 .../GridNearAtomicSingleUpdateRequest.java      |   362 +
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |    42 +-
 .../dht/atomic/GridNearAtomicUpdateRequest.java |  1119 --
 .../atomic/GridNearAtomicUpdateResponse.java    |     4 +-
 .../dht/colocated/GridDhtColocatedCache.java    |    13 -
 .../colocated/GridDhtColocatedLockFuture.java   |    12 +-
 .../dht/preloader/GridDhtForceKeysResponse.java |     4 +-
 .../GridDhtPartitionDemandMessage.java          |     4 +-
 .../dht/preloader/GridDhtPartitionDemander.java |   277 +-
 .../dht/preloader/GridDhtPartitionFullMap.java  |    36 +-
 .../dht/preloader/GridDhtPartitionMap2.java     |    57 +-
 .../GridDhtPartitionsAbstractMessage.java       |    43 +-
 .../GridDhtPartitionsExchangeFuture.java        |   331 +-
 .../preloader/GridDhtPartitionsFullMessage.java |   219 +-
 .../GridDhtPartitionsSingleMessage.java         |   205 +-
 .../GridDhtPartitionsSingleRequest.java         |     7 +-
 .../dht/preloader/GridDhtPreloader.java         |    69 +-
 .../distributed/near/GridNearAtomicCache.java   |    83 +-
 .../distributed/near/GridNearCacheAdapter.java  |     7 +
 .../distributed/near/GridNearCacheEntry.java    |    44 +-
 .../distributed/near/GridNearGetRequest.java    |     5 +
 .../distributed/near/GridNearGetResponse.java   |     4 +-
 .../distributed/near/GridNearLockFuture.java    |     7 +-
 ...arOptimisticSerializableTxPrepareFuture.java |     8 +-
 .../near/GridNearOptimisticTxPrepareFuture.java |    22 +-
 .../GridNearPessimisticTxPrepareFuture.java     |     8 +-
 .../near/GridNearSingleGetResponse.java         |     4 +-
 .../near/GridNearTransactionalCache.java        |     5 +-
 .../near/GridNearTxFinishFuture.java            |   158 +-
 .../near/GridNearTxFinishResponse.java          |     4 +-
 .../cache/distributed/near/GridNearTxLocal.java |    48 +-
 .../cache/local/GridLocalCacheEntry.java        |   173 +-
 .../cache/local/GridLocalLockFuture.java        |     2 +-
 .../local/atomic/GridLocalAtomicCache.java      |   174 +-
 .../processors/cache/query/CacheQuery.java      |     1 -
 .../processors/cache/query/CacheQueryType.java  |     2 +-
 .../query/GridCacheDistributedQueryManager.java |     2 +-
 .../cache/query/GridCacheLocalQueryFuture.java  |     4 +-
 .../cache/query/GridCacheQueryAdapter.java      |    10 -
 .../GridCacheQueryDetailMetricsAdapter.java     |   248 +
 .../query/GridCacheQueryDetailMetricsKey.java   |    82 +
 .../query/GridCacheQueryFutureAdapter.java      |     2 -
 .../cache/query/GridCacheQueryManager.java      |   183 +-
 .../query/GridCacheQueryMetricsAdapter.java     |    37 +-
 .../cache/query/GridCacheQueryRequest.java      |    18 +-
 .../cache/query/GridCacheQueryResponse.java     |     4 +-
 .../cache/query/GridCacheSqlQuery.java          |    14 +-
 .../cache/query/GridCacheTwoStepQuery.java      |   253 -
 .../cache/query/IgniteQueryErrorCode.java       |    91 +
 .../continuous/CacheContinuousQueryHandler.java |    40 +-
 .../CacheContinuousQueryListener.java           |     4 +-
 .../continuous/CacheContinuousQueryManager.java |     6 +-
 .../jdbc/GridCacheQueryJdbcMetadataTask.java    |     4 +-
 .../query/jdbc/GridCacheQueryJdbcTask.java      |     6 +-
 .../cache/store/CacheStoreManager.java          |     4 +-
 .../store/GridCacheStoreManagerAdapter.java     |    36 +-
 .../cache/store/GridCacheWriteBehindStore.java  |     8 +-
 .../cache/transactions/IgniteTxAdapter.java     |    46 +-
 .../cache/transactions/IgniteTxEntry.java       |    49 +-
 .../cache/transactions/IgniteTxHandler.java     |   180 +-
 .../transactions/IgniteTxLocalAdapter.java      |    65 +-
 .../cache/transactions/IgniteTxManager.java     |   168 +-
 .../GridCacheLazyPlainVersionedEntry.java       |     6 +
 .../version/GridCachePlainVersionedEntry.java   |     5 +-
 .../version/GridCacheRawVersionedEntry.java     |     8 +-
 .../cacheobject/IgniteCacheObjectProcessor.java |     2 +-
 .../IgniteCacheObjectProcessorImpl.java         |     3 +-
 .../clock/GridClockSyncProcessor.java           |    10 +-
 .../closure/GridClosureProcessor.java           |   110 +-
 .../processors/cluster/ClusterProcessor.java    |     4 +-
 .../cluster/GridClusterStateProcessor.java      |   936 ++
 .../processors/cluster/GridUpdateNotifier.java  |   108 +-
 .../cluster/IgniteChangeGlobalStateSupport.java |    40 +
 .../continuous/GridContinuousHandler.java       |    13 +-
 .../continuous/GridContinuousProcessor.java     |    56 +-
 .../processors/continuous/StartRequestData.java |     4 +-
 .../StartRoutineAckDiscoveryMessage.java        |    13 +-
 .../StartRoutineDiscoveryMessage.java           |    19 +-
 .../datastreamer/DataStreamProcessor.java       |   120 +-
 .../datastreamer/DataStreamerImpl.java          |   714 +-
 .../datastructures/DataStructuresProcessor.java |   132 +-
 .../datastructures/GridCacheAtomicLongImpl.java |    14 +-
 .../GridCacheAtomicReferenceImpl.java           |    16 +-
 .../GridCacheAtomicSequenceImpl.java            |    26 +-
 .../GridCacheAtomicStampedImpl.java             |    14 +-
 .../GridCacheCountDownLatchImpl.java            |    14 +-
 .../datastructures/GridCacheLockImpl.java       |    17 +-
 .../datastructures/GridCacheQueueAdapter.java   |     2 +-
 .../datastructures/GridCacheSemaphoreImpl.java  |    14 +-
 .../processors/hadoop/HadoopClassLoader.java    |   498 +
 .../processors/hadoop/HadoopClasspathUtils.java |   424 +
 .../processors/hadoop/HadoopDefaultJobInfo.java |   156 +
 .../processors/hadoop/HadoopHelper.java         |    62 +
 .../internal/processors/hadoop/HadoopJob.java   |     5 +
 .../internal/processors/hadoop/HadoopJobId.java |    79 +-
 .../processors/hadoop/HadoopJobInfo.java        |     4 +-
 .../processors/hadoop/HadoopJobProperty.java    |    64 +-
 .../processors/hadoop/HadoopLocations.java      |   123 +
 .../hadoop/HadoopMapReducePlanner.java          |     1 +
 .../hadoop/HadoopMapperAwareTaskOutput.java     |    32 +
 .../processors/hadoop/HadoopNoopHelper.java     |    71 +
 .../processors/hadoop/HadoopNoopProcessor.java  |     4 +-
 .../processors/hadoop/HadoopTaskContext.java    |     8 +
 .../processors/hadoop/HadoopTaskInfo.java       |    43 +
 .../io/PartiallyOffheapRawComparatorEx.java     |    33 +
 .../hadoop/message/HadoopMessage.java           |    27 +
 .../shuffle/HadoopDirectShuffleMessage.java     |   243 +
 .../hadoop/shuffle/HadoopShuffleAck.java        |   170 +
 .../shuffle/HadoopShuffleFinishRequest.java     |   172 +
 .../shuffle/HadoopShuffleFinishResponse.java    |   142 +
 .../hadoop/shuffle/HadoopShuffleMessage.java    |   361 +
 .../igfs/IgfsAbstractOutputStream.java          |   266 +
 .../processors/igfs/IgfsAckMessage.java         |     5 +-
 .../internal/processors/igfs/IgfsAsyncImpl.java |    12 +-
 .../internal/processors/igfs/IgfsContext.java   |    64 +-
 .../processors/igfs/IgfsDataManager.java        |   148 +-
 .../processors/igfs/IgfsDeleteMessage.java      |     5 +-
 .../ignite/internal/processors/igfs/IgfsEx.java |    18 -
 .../internal/processors/igfs/IgfsFileImpl.java  |     5 +-
 .../igfs/IgfsFragmentizerManager.java           |    29 +-
 .../internal/processors/igfs/IgfsImpl.java      |   601 +-
 .../processors/igfs/IgfsInputStreamAdapter.java |    51 -
 .../processors/igfs/IgfsInputStreamImpl.java    |   215 +-
 .../processors/igfs/IgfsIpcHandler.java         |     7 +-
 .../processors/igfs/IgfsKernalContextAware.java |    32 +
 .../processors/igfs/IgfsMetaManager.java        |     1 -
 .../processors/igfs/IgfsModeResolver.java       |     3 +-
 .../processors/igfs/IgfsOutputStreamImpl.java   |   319 +-
 .../igfs/IgfsOutputStreamProxyImpl.java         |   163 +
 .../internal/processors/igfs/IgfsPathIds.java   |     2 +-
 .../internal/processors/igfs/IgfsPaths.java     |     9 +-
 .../internal/processors/igfs/IgfsProcessor.java |    35 +-
 .../igfs/IgfsSecondaryFileSystemImpl.java       |     2 +-
 .../internal/processors/igfs/IgfsServer.java    |     5 +-
 .../processors/igfs/IgfsThreadFactory.java      |    61 +
 .../internal/processors/igfs/IgfsUtils.java     |    21 +-
 .../local/LocalFileSystemIgfsFile.java          |     9 +-
 .../local/LocalFileSystemSizeVisitor.java       |    60 +
 .../secondary/local/LocalFileSystemUtils.java   |   142 +
 .../processors/job/GridJobProcessor.java        |    23 +-
 .../internal/processors/job/GridJobWorker.java  |    86 +-
 .../jobmetrics/GridJobMetricsProcessor.java     |     2 +-
 .../OsDiscoveryNodeValidationProcessor.java     |     2 +-
 .../processors/odbc/OdbcMessageParser.java      |    26 +-
 .../processors/odbc/OdbcNioListener.java        |     2 +-
 .../internal/processors/odbc/OdbcProcessor.java |    61 +-
 .../odbc/OdbcQueryGetParamsMetaRequest.java     |    60 +
 .../odbc/OdbcQueryGetParamsMetaResult.java      |    40 +
 .../internal/processors/odbc/OdbcRequest.java   |     3 +
 .../processors/odbc/OdbcRequestHandler.java     |   212 +-
 .../internal/processors/odbc/OdbcTableMeta.java |    15 +-
 .../internal/processors/odbc/OdbcUtils.java     |     4 +-
 .../processors/odbc/escape/OdbcEscapeType.java  |    13 +-
 .../processors/odbc/escape/OdbcEscapeUtils.java |    58 +-
 .../offheap/GridOffHeapProcessor.java           |    18 +-
 .../platform/PlatformAbstractTarget.java        |   290 +-
 .../platform/PlatformAsyncTarget.java           |    44 +
 .../platform/PlatformConfigurationEx.java       |     8 +
 .../platform/PlatformContextImpl.java           |     5 +-
 .../platform/PlatformNoopProcessor.java         |    44 +-
 .../processors/platform/PlatformProcessor.java  |    51 +-
 .../platform/PlatformProcessorImpl.java         |   174 +-
 .../processors/platform/PlatformTarget.java     |   123 +-
 .../platform/PlatformTargetProxy.java           |   126 +
 .../platform/PlatformTargetProxyImpl.java       |   222 +
 .../binary/PlatformBinaryProcessor.java         |    96 +
 .../platform/cache/PlatformCache.java           |   980 +-
 .../cache/PlatformCacheEntryFilterImpl.java     |     4 +-
 .../cache/PlatformCacheEntryProcessorImpl.java  |    43 +-
 .../platform/cache/PlatformCacheExtension.java  |    47 +
 .../platform/cache/PlatformCacheIterator.java   |     2 +-
 .../cache/affinity/PlatformAffinity.java        |    18 +-
 .../affinity/PlatformAffinityFunction.java      |    66 +-
 .../PlatformAffinityFunctionTarget.java         |     4 +-
 .../cache/expiry/PlatformExpiryPolicy.java      |    93 +
 .../expiry/PlatformExpiryPolicyFactory.java     |    76 +
 .../query/PlatformAbstractQueryCursor.java      |    55 +-
 .../query/PlatformContinuousQueryProxy.java     |    55 +
 .../cache/query/PlatformFieldsQueryCursor.java  |     6 +
 .../cache/store/PlatformCacheStoreCallback.java |    61 -
 .../callback/PlatformCallbackGateway.java       |   273 +-
 .../platform/callback/PlatformCallbackOp.java   |   206 +
 .../callback/PlatformCallbackUtils.java         |   545 +-
 .../platform/cluster/PlatformClusterGroup.java  |   167 +-
 .../platform/compute/PlatformAbstractJob.java   |     2 +-
 .../platform/compute/PlatformAbstractTask.java  |    15 +-
 .../platform/compute/PlatformClosureJob.java    |    12 +-
 .../platform/compute/PlatformCompute.java       |   116 +-
 .../platform/compute/PlatformFullJob.java       |    15 +-
 .../platform/compute/PlatformFullTask.java      |    18 +-
 .../cpp/PlatformCppConfigurationClosure.java    |    13 +-
 .../cpp/PlatformCppConfigurationEx.java         |     7 +
 .../datastreamer/PlatformDataStreamer.java      |   107 +-
 .../PlatformStreamReceiverImpl.java             |    11 +-
 .../datastructures/PlatformAtomicLong.java      |   174 +-
 .../datastructures/PlatformAtomicReference.java |    44 +-
 .../datastructures/PlatformAtomicSequence.java  |   126 +-
 .../dotnet/PlatformDotNetCacheStore.java        |   128 +-
 .../PlatformDotNetConfigurationClosure.java     |    13 +-
 .../dotnet/PlatformDotNetConfigurationEx.java   |    15 +
 ...PlatformDotNetEntityFrameworkCacheEntry.java |   102 +
 ...formDotNetEntityFrameworkCacheExtension.java |   353 +
 .../PlatformDotNetEntityFrameworkCacheKey.java  |   164 +
 ...EntityFrameworkIncreaseVersionProcessor.java |    45 +
 .../platform/events/PlatformEvents.java         |   205 +-
 .../memory/PlatformInputStreamImpl.java         |    14 +-
 .../memory/PlatformOutputStreamImpl.java        |    14 +-
 .../platform/messaging/PlatformMessaging.java   |    90 +-
 .../services/PlatformAbstractService.java       |    25 +-
 .../platform/services/PlatformServices.java     |   249 +-
 .../transactions/PlatformTransactions.java      |   222 +-
 .../utils/PlatformConfigurationUtils.java       |    71 +-
 .../platform/utils/PlatformFutureUtils.java     |    18 +-
 .../utils/PlatformListenableTarget.java         |    62 +
 .../platform/utils/PlatformUtils.java           |    44 +-
 .../PlatformDotNetSessionCacheExtension.java    |   144 +
 .../websession/PlatformDotNetSessionData.java   |   260 +
 .../PlatformDotNetSessionLockProcessor.java     |    84 +
 .../PlatformDotNetSessionLockResult.java        |   106 +
 ...tformDotNetSessionSetAndUnlockProcessor.java |   179 +
 .../plugin/IgnitePluginProcessor.java           |     2 +-
 .../internal/processors/pool/PoolProcessor.java |   154 +
 .../processors/port/GridPortProcessor.java      |     2 +-
 .../processors/query/GridQueryCancel.java       |    83 +
 .../processors/query/GridQueryFieldsResult.java |     3 +-
 .../query/GridQueryFieldsResultAdapter.java     |     3 +-
 .../processors/query/GridQueryIndexing.java     |    49 +-
 .../processors/query/GridQueryProcessor.java    |   851 +-
 .../processors/query/GridQueryProperty.java     |    20 +
 .../query/GridQueryTypeDescriptor.java          |    25 +
 .../processors/query/IgniteSQLException.java    |    89 +
 .../twostep/messages/GridQueryFailResponse.java |    36 +-
 .../h2/twostep/messages/GridQueryRequest.java   |    31 +-
 .../resource/GridResourceProcessor.java         |     2 +-
 .../processors/rest/GridRestCommand.java        |    11 +-
 .../processors/rest/GridRestProcessor.java      |    22 +-
 .../client/message/GridClientStateRequest.java  |    80 +
 .../cluster/GridChangeStateCommandHandler.java  |    89 +
 .../handlers/redis/GridRedisCommandHandler.java |    39 +
 .../GridRedisConnectionCommandHandler.java      |    74 +
 .../redis/GridRedisRestCommandHandler.java      |   102 +
 .../exception/GridRedisGenericException.java    |    37 +
 .../redis/exception/GridRedisTypeException.java |    37 +
 .../redis/key/GridRedisDelCommandHandler.java   |    95 +
 .../key/GridRedisExistsCommandHandler.java      |    94 +
 .../server/GridRedisDbSizeCommandHandler.java   |    80 +
 .../string/GridRedisAppendCommandHandler.java   |   118 +
 .../string/GridRedisGetCommandHandler.java      |   107 +
 .../string/GridRedisGetRangeCommandHandler.java |   128 +
 .../string/GridRedisGetSetCommandHandler.java   |    94 +
 .../string/GridRedisIncrDecrCommandHandler.java |   193 +
 .../string/GridRedisMGetCommandHandler.java     |    94 +
 .../string/GridRedisMSetCommandHandler.java     |    91 +
 .../string/GridRedisSetCommandHandler.java      |   156 +
 .../string/GridRedisSetRangeCommandHandler.java |   149 +
 .../string/GridRedisStrlenCommandHandler.java   |    89 +
 .../handlers/task/GridTaskCommandHandler.java   |    10 +-
 .../protocols/tcp/GridClientPacketType.java     |     3 +
 .../tcp/GridTcpMemcachedNioListener.java        |    15 +-
 .../protocols/tcp/GridTcpRestNioListener.java   |    36 +-
 .../rest/protocols/tcp/GridTcpRestParser.java   |    43 +-
 .../protocols/tcp/redis/GridRedisCommand.java   |    80 +
 .../protocols/tcp/redis/GridRedisMessage.java   |   219 +
 .../tcp/redis/GridRedisNioListener.java         |   146 +
 .../tcp/redis/GridRedisProtocolParser.java      |   314 +
 .../request/GridRestChangeStateRequest.java     |    57 +
 .../service/GridServiceProcessor.java           |   214 +-
 .../processors/service/GridServiceProxy.java    |    18 +-
 .../session/GridTaskSessionProcessor.java       |    11 +-
 .../processors/task/GridTaskProcessor.java      |    17 +-
 .../processors/task/GridTaskWorker.java         |    27 +-
 .../timeout/GridTimeoutProcessor.java           |     2 +-
 .../util/GridBoundedConcurrentOrderedMap.java   |     5 +
 .../internal/util/GridBoundedPriorityQueue.java |    68 +
 .../ignite/internal/util/GridHandleTable.java   |    10 +-
 .../ignite/internal/util/GridLogThrottle.java   |    66 +-
 .../util/GridMultiCollectionWrapper.java        |    15 +
 .../apache/ignite/internal/util/GridUnsafe.java |    70 +-
 .../ignite/internal/util/IgniteUtils.java       |   617 +-
 .../internal/util/OffheapReadWriteLock.java     |     4 +
 .../internal/util/SerializableTransient.java    |    58 +
 .../ignite/internal/util/StripedExecutor.java   |   667 +
 .../util/future/GridCompoundFuture.java         |    56 +-
 .../util/future/GridFinishedFuture.java         |    24 +
 .../internal/util/future/GridFutureAdapter.java |    27 +-
 .../util/future/GridFutureChainListener.java    |    30 +-
 .../internal/util/io/GridUnsafeDataInput.java   |    12 +-
 .../internal/util/io/GridUnsafeDataOutput.java  |    12 +-
 .../internal/util/ipc/IpcToNioAdapter.java      |     2 +-
 .../ipc/shmem/IpcSharedMemoryNativeLoader.java  |     2 +-
 .../shmem/IpcSharedMemoryServerEndpoint.java    |    19 +-
 .../util/lang/IgniteSingletonIterator.java      |    56 +
 .../util/nio/GridCommunicationClient.java       |     4 +-
 .../nio/GridConnectionBytesVerifyFilter.java    |    17 +-
 .../util/nio/GridNioAsyncNotifyFilter.java      |    10 +-
 .../internal/util/nio/GridNioCodecFilter.java   |    19 +-
 .../ignite/internal/util/nio/GridNioFilter.java |    16 +-
 .../internal/util/nio/GridNioFilterAdapter.java |    10 +-
 .../internal/util/nio/GridNioFilterChain.java   |    16 +-
 .../ignite/internal/util/nio/GridNioFuture.java |     4 +-
 .../util/nio/GridNioRecoveryDescriptor.java     |    95 +-
 .../ignite/internal/util/nio/GridNioServer.java |  1345 +-
 .../internal/util/nio/GridNioSession.java       |    11 +
 .../internal/util/nio/GridNioSessionImpl.java   |    49 +-
 .../util/nio/GridNioSessionMetaKey.java         |     7 +-
 .../ignite/internal/util/nio/GridNioWorker.java |    48 +
 .../util/nio/GridSelectorNioSessionImpl.java    |   159 +-
 .../util/nio/GridTcpNioCommunicationClient.java |    49 +-
 .../internal/util/nio/SessionWriteRequest.java  |    85 +
 .../util/nio/ssl/BlockingSslHandler.java        |    61 +-
 .../internal/util/nio/ssl/GridNioSslFilter.java |    73 +-
 .../util/nio/ssl/GridNioSslHandler.java         |    21 +-
 .../internal/util/nio/ssl/GridSslMeta.java      |    94 +
 .../util/offheap/unsafe/GridUnsafeMemory.java   |    43 +-
 .../util/tostring/GridToStringBuilder.java      |     2 +-
 .../internal/visor/VisorMultiNodeTask.java      |     2 +-
 .../internal/visor/VisorTaskArgument.java       |     2 +-
 .../ignite/internal/visor/cache/VisorCache.java |    87 +-
 .../visor/cache/VisorCachePartition.java        |    14 +-
 .../visor/cache/VisorCachePartitions.java       |    10 +-
 .../visor/cache/VisorCachePartitionsTask.java   |     4 +-
 .../cache/VisorCacheQueryDetailMetrics.java     |   167 +
 ...sorCacheQueryDetailMetricsCollectorTask.java |   146 +
 .../VisorCacheResetQueryDetailMetricsTask.java  |    71 +
 .../cache/VisorCacheResetQueryMetricsTask.java  |    69 +
 .../visor/cache/VisorCacheSwapBackupsTask.java  |   102 -
 .../visor/cache/VisorCacheTypeMetadata.java     |    70 +-
 .../visor/event/VisorGridDiscoveryEvent.java    |    18 +-
 .../misc/VisorChangeGridActiveStateTask.java    |    65 +
 .../visor/misc/VisorResolveHostNameTask.java    |     4 +-
 .../visor/node/VisorNodeDataCollectorJob.java   |     5 +-
 .../visor/node/VisorNodeDataCollectorTask.java  |     2 +
 .../node/VisorNodeDataCollectorTaskResult.java  |    17 +
 .../internal/visor/query/VisorQueryJob.java     |     2 +-
 .../visor/service/VisorCancelServiceTask.java   |    70 +
 .../visor/service/VisorServiceDescriptor.java   |   132 +
 .../visor/service/VisorServiceTask.java         |    75 +
 .../internal/visor/util/VisorEventMapper.java   |    98 +-
 .../internal/visor/util/VisorTaskUtils.java     |    56 +-
 .../apache/ignite/logger/java/JavaLogger.java   |    18 +-
 .../logger/java/JavaLoggerFileHandler.java      |    10 +-
 .../ignite/marshaller/AbstractMarshaller.java   |    41 +-
 .../AbstractNodeNameAwareMarshaller.java        |   142 +
 .../ignite/marshaller/MarshallerUtils.java      |    80 +
 .../ignite/marshaller/jdk/JdkMarshaller.java    |    52 +-
 .../optimized/OptimizedClassDescriptor.java     |    90 +-
 .../optimized/OptimizedMarshaller.java          |    34 +-
 .../optimized/OptimizedObjectOutputStream.java  |    25 +-
 .../org/apache/ignite/mxbean/IgniteMXBean.java  |    21 +
 .../dotnet/PlatformDotNetAffinityFunction.java  |     9 +-
 .../security/SecurityBasicPermissionSet.java    |   107 +
 .../security/SecurityPermissionSetBuilder.java  |   222 +
 .../org/apache/ignite/services/Service.java     |    12 +-
 .../org/apache/ignite/spi/IgniteSpiAdapter.java |    11 +
 .../org/apache/ignite/spi/IgniteSpiContext.java |    26 +-
 .../sharedfs/SharedFsCheckpointSpi.java         |    10 +-
 .../spi/checkpoint/sharedfs/SharedFsUtils.java  |     4 +-
 .../communication/tcp/TcpCommunicationSpi.java  |   382 +-
 .../tcp/TcpCommunicationSpiMBean.java           |    40 +
 .../ignite/spi/discovery/tcp/ClientImpl.java    |    74 +-
 .../ignite/spi/discovery/tcp/ServerImpl.java    |   628 +-
 .../spi/discovery/tcp/TcpDiscoveryImpl.java     |    61 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |    50 +-
 .../tcp/internal/TcpDiscoveryNode.java          |     5 +-
 .../tcp/internal/TcpDiscoveryStatistics.java    |     4 +
 .../TcpDiscoveryMulticastIpFinder.java          |    11 +-
 .../sharedfs/TcpDiscoverySharedFsIpFinder.java  |     2 +-
 .../messages/TcpDiscoveryAbstractMessage.java   |     7 +
 .../messages/TcpDiscoveryClientAckResponse.java |     5 +
 .../TcpDiscoveryClientHeartbeatMessage.java     |     7 +-
 .../TcpDiscoveryConnectionCheckMessage.java     |     5 +
 .../TcpDiscoveryCustomEventMessage.java         |     3 +-
 .../messages/TcpDiscoveryHeartbeatMessage.java  |     5 +
 .../TcpDiscoveryNodeAddFinishedMessage.java     |    11 +
 .../messages/TcpDiscoveryNodeAddedMessage.java  |    33 +-
 .../RoundRobinGlobalLoadBalancer.java           |    16 +-
 .../org/apache/ignite/stream/StreamAdapter.java |     4 +-
 .../ignite/stream/socket/SocketStreamer.java    |    19 +-
 .../ignite/thread/IgniteThreadFactory.java      |     8 +-
 .../apache/ignite/util/AttributeNodeFilter.java |   108 +
 .../org/jsr166/ConcurrentLinkedHashMap.java     |     2 +-
 .../resources/META-INF/classnames.properties    |   174 +-
 .../core/src/main/resources/ignite.properties   |     2 +-
 .../AbstractAffinityFunctionSelfTest.java       |     2 +-
 .../CacheJdbcPojoStoreAbstractSelfTest.java     |   161 +-
 ...heJdbcPojoStoreBinaryMarshallerSelfTest.java |    26 +-
 ...reBinaryMarshallerWithSqlEscapeSelfTest.java |    28 +
 ...dbcPojoStoreOptimizedMarshallerSelfTest.java |     2 +-
 ...ptimizedMarshallerWithSqlEscapeSelfTest.java |    28 +
 .../jdbc/JdbcTypesDefaultTransformerTest.java   |   283 +
 .../apache/ignite/igfs/IgfsPathSelfTest.java    |     6 -
 .../ignite/internal/ClusterGroupSelfTest.java   |     2 +-
 .../internal/GridEventStorageSelfTest.java      |    97 +-
 .../IgniteClientReconnectCacheTest.java         |    35 +
 .../IgniteComputeTopologyExceptionTest.java     |     5 +-
 ...RoundRobinErrorAfterClientReconnectTest.java |    99 +
 .../MarshallerContextLockingSelfTest.java       |     2 +-
 .../BinaryArrayIdentityResolverSelfTest.java    |   300 +
 .../internal/binary/BinaryEnumsSelfTest.java    |    18 +
 .../BinaryFieldIdentityResolverSelfTest.java    |   333 +
 .../binary/BinaryFieldsOffheapSelfTest.java     |     2 +-
 .../BinaryFooterOffsetsOffheapSelfTest.java     |     2 +-
 ...ryIdentityResolverConfigurationSelfTest.java |   138 +
 .../binary/BinaryMarshallerSelfTest.java        |   500 +-
 .../BinaryObjectBuilderAdditionalSelfTest.java  |   171 +-
 ...naryObjectBuilderDefaultMappersSelfTest.java |     2 +-
 .../binary/BinaryObjectToStringSelfTest.java    |    92 +
 .../BinarySerialiedFieldComparatorSelfTest.java |   568 +
 ...GridManagerLocalMessageListenerSelfTest.java |   222 +
 .../managers/GridManagerStopSelfTest.java       |     2 +
 .../managers/GridNoopManagerSelfTest.java       |     2 +-
 ...unicationBalanceMultipleConnectionsTest.java |    28 +
 .../IgniteCommunicationBalanceTest.java         |   339 +
 .../communication/IgniteIoTestMessagesTest.java |    95 +
 .../IgniteVariousConnectionNumberTest.java      |   166 +
 .../GridDiscoveryManagerAliveCacheSelfTest.java |     6 +-
 .../discovery/GridDiscoveryManagerSelfTest.java |     6 +-
 .../pagemem/impl/PageMemoryNoLoadSelfTest.java  |     6 +-
 .../CacheAtomicSingleMessageCountSelfTest.java  |   259 +
 ...CacheExchangeMessageDuplicatedStateTest.java |   393 +
 .../cache/CacheGetEntryAbstractTest.java        |     4 +-
 .../cache/CacheRebalancingSelfTest.java         |    75 +
 .../CacheSerializableTransactionsTest.java      |   604 +-
 .../cache/CrossCacheTxRandomOperationsTest.java |    30 +-
 ...idAbstractCacheInterceptorRebalanceTest.java |   358 +
 .../cache/GridCacheAbstractFullApiSelfTest.java |    60 +-
 .../GridCacheAtomicMessageCountSelfTest.java    |    24 +-
 ...GridCacheConcurrentGetCacheOnClientTest.java |   129 +
 ...heInterceptorAtomicOffheapRebalanceTest.java |    30 +
 ...GridCacheInterceptorAtomicRebalanceTest.java |    36 +
 ...ceptorTransactionalOffheapRebalanceTest.java |    35 +
 ...heInterceptorTransactionalRebalanceTest.java |    36 +
 .../GridCacheMissingCommitVersionSelfTest.java  |     6 +-
 .../cache/GridCacheMvccFlagsTest.java           |     8 +-
 .../cache/GridCacheMvccPartitionedSelfTest.java |   334 +-
 .../processors/cache/GridCacheMvccSelfTest.java |   212 +-
 ...CacheOffHeapMultiThreadedUpdateSelfTest.java |     6 +-
 .../GridCachePartitionedAffinitySpreadTest.java |     7 +-
 ...ridCacheStoreManagerDeserializationTest.java |     1 +
 .../processors/cache/GridCacheTestEntryEx.java  |    88 +-
 .../GridCacheTtlManagerEvictionSelfTest.java    |   142 +
 .../GridCacheTtlManagerNotificationTest.java    |   107 +-
 .../cache/GridCacheUtilsSelfTest.java           |    64 +-
 ...idCacheValueConsistencyAbstractSelfTest.java |    21 +-
 ...calCacheStoreManagerDeserializationTest.java |     2 +-
 .../cache/GridLocalIgniteSerializationTest.java |   378 +
 .../IgniteCacheAtomicStopBusySelfTest.java      |    10 +-
 .../IgniteCacheConfigVariationsFullApiTest.java |     7 +-
 .../cache/IgniteCacheDynamicStopSelfTest.java   |    48 +-
 ...niteCacheExpireAndUpdateConsistencyTest.java |     7 +
 .../IgniteCacheInterceptorSelfTestSuite.java    |     5 +
 .../IgniteCacheP2pUnmarshallingErrorTest.java   |     2 +-
 .../cache/IgniteCachePeekModesAbstractTest.java |     2 +-
 .../cache/IgniteDynamicCacheStartSelfTest.java  |   217 +-
 .../IgniteTxStoreExceptionAbstractSelfTest.java |     1 +
 .../MarshallerCacheJobRunNodeRestartTest.java   |     2 +-
 ...heapCacheMetricsForClusterGroupSelfTest.java |   141 +
 .../cache/WithKeepBinaryCacheFullApiTest.java   |    10 +-
 .../GridCacheBinaryObjectsAbstractSelfTest.java |   297 +-
 .../database/tree/io/TrackingPageIOTest.java    |     4 +-
 .../GridCacheQueueApiSelfAbstractTest.java      |    66 +
 ...SemaphoreFailoverSafeReleasePermitsTest.java |   129 +
 ...achePartitionedAtomicSequenceTxSelfTest.java |   169 +
 ...CacheLoadingConcurrentGridStartSelfTest.java |   255 +-
 ...ncurrentGridStartSelfTestAllowOverwrite.java |    30 +
 .../CacheLockReleaseNodeLeaveTest.java          |   135 +
 .../distributed/GridCacheEventAbstractTest.java |   119 +-
 ...eAtomicMessageRecovery10ConnectionsTest.java |    28 +
 ...cMessageRecoveryNoPairedConnectionsTest.java |    47 +
 ...niteCacheClientNodeChangingTopologyTest.java |    74 +-
 ...acheConnectionRecovery10ConnectionsTest.java |    35 +
 .../distributed/IgniteCacheCreatePutTest.java   |     2 +-
 .../distributed/IgniteCacheGetRestartTest.java  |     3 +
 .../IgniteCachePartitionLossPolicySelfTest.java |     2 +-
 .../distributed/dht/GridCacheDhtTestUtils.java  |   232 -
 .../dht/IgniteCacheMultiTxLockSelfTest.java     |     6 +-
 ...artitionedBackupNodeFailureRecoveryTest.java |   193 +
 .../IgniteCachePutRetryAbstractSelfTest.java    |    38 +-
 ...gniteCachePutRetryTransactionalSelfTest.java |    75 +-
 ...eAtomicInvalidPartitionHandlingSelfTest.java |     2 +-
 ...nabledMultiNodeLongTxTimeoutFullApiTest.java |     2 +-
 ...tomicClientOnlyMultiNodeFullApiSelfTest.java |    17 +-
 ...eAtomicNearOnlyMultiNodeFullApiSelfTest.java |    17 +-
 ...idCacheNearOnlyMultiNodeFullApiSelfTest.java |     2 +-
 ...achePartitionedMultiNodeFullApiSelfTest.java |    37 +-
 ...edNoStripedPoolMultiNodeFullApiSelfTest.java |    35 +
 ...cingDelayedPartitionMapExchangeSelfTest.java |     8 +-
 .../GridCacheRebalancingSyncSelfTest.java       |    20 +-
 .../GridCacheSyncReplicatedPreloadSelfTest.java |     3 -
 .../IgniteCacheSyncRebalanceModeSelfTest.java   |     2 +-
 .../IgniteCacheExpiryPolicyAbstractTest.java    |    14 +-
 .../IgniteCacheExpiryPolicyTestSuite.java       |     2 +
 ...eCacheExpiryPolicyWithStoreAbstractTest.java |    40 +
 ...eCacheOnlyOneTtlCleanupThreadExistsTest.java |   102 +
 .../CacheOffHeapAndSwapMetricsSelfTest.java     |   617 -
 ...LocalCacheOffHeapAndSwapMetricsSelfTest.java |   617 +
 .../GridCacheQueryTransformerSelfTest.java      |     9 +-
 .../cache/query/IndexingSpiQuerySelfTest.java   |   218 +
 .../cache/query/IndexingSpiQueryTxSelfTest.java |   162 +
 ...eContinuousQueryAsyncFailoverTxSelfTest.java |     5 +
 ...ContinuousQueryFailoverAbstractSelfTest.java |   326 +-
 .../CacheContinuousQueryFailoverTxSelfTest.java |     5 +
 ...eEntryProcessorExternalizableFailedTest.java |   588 +
 ...eContinuousQueryMultiNodesFilteringTest.java |   161 +
 .../TxDeadlockDetectionNoHangsTest.java         |     2 +-
 .../TxOptimisticDeadlockDetectionTest.java      |    29 +-
 .../closure/GridClosureSerializationTest.java   |   177 +
 ...ComputeJobExecutionErrorToLogManualTest.java |    88 +
 .../compute/PublicThreadpoolStarvationTest.java |   123 +
 .../IgniteNoCustomEventsOnNodeStart.java        |     7 +
 .../database/FreeListImplSelfTest.java          |   527 +
 .../database/IgniteDbPutGetAbstractTest.java    |     4 +-
 .../database/MetadataStorageSelfTest.java       |     2 +-
 .../DataStreamProcessorSelfTest.java            |     4 +-
 .../datastreamer/DataStreamerImplSelfTest.java  |   170 +-
 .../DataStreamerMultiThreadedSelfTest.java      |     2 -
 .../datastreamer/DataStreamerTimeoutTest.java   |    92 +-
 .../igfs/IgfsAbstractBaseSelfTest.java          |    40 +-
 .../processors/igfs/IgfsAbstractSelfTest.java   |   215 +-
 .../IgfsAtomicPrimaryMultiNodeSelfTest.java     |    39 +
 .../IgfsAtomicPrimaryOffheapTieredSelfTest.java |    39 +
 .../IgfsAtomicPrimaryOffheapValuesSelfTest.java |    39 +
 .../igfs/IgfsAtomicPrimarySelfTest.java         |    39 +
 ...lockMessageSystemPoolStarvationSelfTest.java |    14 +-
 .../igfs/IgfsDataManagerSelfTest.java           |     6 +-
 .../igfs/IgfsDualAbstractSelfTest.java          |    70 +-
 .../processors/igfs/IgfsIgniteMock.java         |    19 +
 ...SecondaryFileSystemDualAbstractSelfTest.java |    92 +-
 ...lSecondaryFileSystemProxyClientSelfTest.java |    28 +
 ...fsLocalSecondaryFileSystemProxySelfTest.java |   267 +
 ...IgfsLocalSecondaryFileSystemTestAdapter.java |    27 +-
 .../processors/igfs/IgfsMaxSizeSelfTest.java    |   122 +
 .../igfs/IgfsMetaManagerSelfTest.java           |     4 +-
 .../processors/igfs/IgfsMetricsSelfTest.java    |    21 +-
 .../internal/processors/igfs/IgfsMock.java      |    15 +-
 .../igfs/IgfsModeResolverSelfTest.java          |     4 +-
 .../processors/igfs/IgfsProcessorSelfTest.java  |    11 +-
 .../igfs/IgfsProcessorValidationSelfTest.java   |    30 +
 .../processors/igfs/IgfsProxySelfTest.java      |    32 +
 ...IpcEndpointRegistrationAbstractSelfTest.java |    76 +-
 ...dpointRegistrationOnLinuxAndMacSelfTest.java |    11 +-
 .../processors/igfs/IgfsStreamsSelfTest.java    |     4 +-
 .../igfs/benchmark/IgfsBenchmark.java           |   561 +
 .../odbc/OdbcEscapeSequenceSelfTest.java        |   210 +-
 .../odbc/OdbcProcessorValidationSelfTest.java   |    37 +-
 .../handlers/log/GridLogCommandHandlerTest.java |     5 +-
 .../GridServiceProcessorProxySelfTest.java      |     2 +-
 ...gniteServiceProxyTimeoutInitializedTest.java |   284 +
 ...artupWithSpecifiedWorkDirectorySelfTest.java |   166 -
 .../util/future/GridFutureAdapterSelfTest.java  |   123 +-
 .../ipc/shmem/IgfsSharedMemoryTestServer.java   |     4 +-
 .../IpcSharedMemoryCrashDetectionSelfTest.java  |     9 +-
 .../IpcSharedMemoryBenchmarkReader.java         |     2 +-
 .../nio/impl/GridNioFilterChainSelfTest.java    |    18 +-
 .../utils/GridBoundedPriorityQueueSelfTest.java |   114 +
 .../loadtests/hashmap/GridCacheTestContext.java |     2 +
 .../loadtests/hashmap/GridHashMapLoadTest.java  |     7 +-
 .../loadtests/nio/GridNioBenchmarkClient.java   |     4 +-
 .../ignite/logger/java/JavaLoggerTest.java      |     3 +-
 .../marshaller/MarshallerContextSelfTest.java   |    90 +
 .../marshaller/MarshallerContextTestImpl.java   |    28 +-
 .../OptimizedMarshallerNodeFailoverTest.java    |     4 -
 .../p2p/GridP2PRecursionTaskSelfTest.java       |     2 +-
 .../platform/PlatformCacheWriteMetricsTask.java |   463 +
 .../SecurityPermissionSetBuilderTest.java       |   110 +
 ...heckpointSpiMultipleDirectoriesSelfTest.java |     6 +-
 .../GridAbstractCommunicationSelfTest.java      |     2 -
 ...mmunicationSpiConcurrentConnectSelfTest.java |    47 +-
 ...nicationSpiConcurrentConnectSslSelfTest.java |    35 +
 ...cpCommunicationSpiMultithreadedSelfTest.java |    15 +-
 ...dTcpCommunicationSpiRecoveryAckSelfTest.java |     6 +-
 ...ationSpiRecoveryNoPairedConnectionsTest.java |    28 +
 ...GridTcpCommunicationSpiRecoverySelfTest.java |    22 +
 ...dTcpCommunicationSpiRecoverySslSelfTest.java |    35 +
 ...CommunicationSpiSslSmallBuffersSelfTest.java |    43 +
 .../tcp/IgniteCacheSslStartStopSelfTest.java    |     1 -
 ...CommunicationRecoveryAckClosureSelfTest.java |     6 +-
 .../tcp/TcpClientDiscoverySpiMulticastTest.java |     2 +-
 .../spi/discovery/tcp/TcpDiscoverySelfTest.java |   138 +-
 .../tcp/TcpDiscoverySnapshotHistoryTest.java    |    14 +-
 .../TcpDiscoveryMulticastIpFinderSelfTest.java  |     6 +-
 .../GridInternalTasksLoadBalancingSelfTest.java |   201 +
 .../testframework/GridSpiTestContext.java       |   115 +-
 .../ignite/testframework/GridTestUtils.java     |   119 +-
 .../ignite/testframework/IgniteTestSuite.java   |   316 +-
 .../testframework/junits/GridAbstractTest.java  |    67 +-
 .../junits/GridTestKernalContext.java           |     8 +-
 .../ignite/testframework/junits/IgniteMock.java |    25 +
 .../junits/IgniteTestResources.java             |     2 -
 .../junits/common/GridCommonAbstractTest.java   |    31 +-
 .../junits/logger/GridTestLog4jLogger.java      |     4 +-
 .../multijvm/IgniteCacheProcessProxy.java       |    21 +
 .../junits/multijvm/IgniteNodeRunner.java       |     2 +-
 .../junits/multijvm/IgniteProcessProxy.java     |    17 +
 .../junits/spi/GridSpiAbstractTest.java         |     2 -
 .../ignite/testsuites/IgniteBasicTestSuite.java |    14 +
 .../testsuites/IgniteBinaryBasicTestSuite.java  |     2 -
 .../IgniteBinaryObjectsTestSuite.java           |    12 +
 .../IgniteCacheDataStructuresSelfTestSuite.java |     5 +
 .../IgniteCacheFullApiSelfTestSuite.java        |     4 +
 .../IgniteCacheMetricsSelfTestSuite.java        |     6 +-
 .../ignite/testsuites/IgniteCacheTestSuite.java |    25 +
 .../testsuites/IgniteCacheTestSuite2.java       |     7 +
 .../testsuites/IgniteCacheTestSuite4.java       |     6 +-
 .../testsuites/IgniteCacheTestSuite5.java       |     4 +
 .../testsuites/IgniteComputeGridTestSuite.java  |     4 +
 .../ignite/testsuites/IgniteIgfsTestSuite.java  |    19 +
 .../apache/ignite/testsuites/IgniteIgnore.java  |     9 +-
 .../testsuites/IgniteIgnoredTestSuite.java      |    63 -
 .../testsuites/IgniteKernalSelfTestSuite.java   |     6 +-
 .../testsuites/IgniteLangSelfTestSuite.java     |     4 +-
 .../IgniteSpiCommunicationSelfTestSuite.java    |    13 +-
 .../IgniteSpiLoadBalancingSelfTestSuite.java    |    34 +-
 .../ignite/testsuites/IgniteSpiTestSuite.java   |     6 +-
 .../testsuites/IgniteUtilSelfTestSuite.java     |     2 +
 .../ignite/thread/IgniteThreadPoolSizeTest.java |   131 +
 .../util/AttributeNodeFilterSelfTest.java       |   184 +
 .../apache/ignite/util/GridLogThrottleTest.java |    27 +-
 modules/docker/1.8.0/Dockerfile                 |    46 +
 modules/docker/1.8.0/run.sh                     |    51 +
 modules/docker/Dockerfile                       |     6 +-
 modules/extdata/p2p/pom.xml                     |     2 +-
 .../CacheNoValueClassOnServerTestClient.java    |     2 -
 .../CacheConfigurationP2PTestClient.java        |     2 -
 .../extdata/uri/modules/uri-dependency/pom.xml  |     2 +-
 modules/extdata/uri/pom.xml                     |     2 +-
 modules/flink/pom.xml                           |     2 +-
 .../apache/ignite/sink/flink/IgniteSink.java    |     2 +-
 modules/flume/README.txt                        |     2 +-
 modules/flume/pom.xml                           |     2 +-
 modules/gce/pom.xml                             |     2 +-
 modules/geospatial/pom.xml                      |     2 +-
 .../h2/GridBinaryH2IndexingGeoSelfTest.java     |    35 +
 .../query/h2/GridH2IndexingGeoSelfTest.java     |     2 +-
 .../testsuites/GeoSpatialIndexingTestSuite.java |     2 +
 modules/hadoop/pom.xml                          |    58 +-
 .../hadoop/fs/BasicHadoopFileSystemFactory.java |   132 +-
 .../fs/CachingHadoopFileSystemFactory.java      |    54 +-
 .../hadoop/fs/HadoopFileSystemFactory.java      |    11 +-
 .../fs/IgniteHadoopFileSystemCounterWriter.java |    79 +-
 .../fs/IgniteHadoopIgfsSecondaryFileSystem.java |   402 +-
 .../fs/KerberosHadoopFileSystemFactory.java     |    77 +-
 .../hadoop/fs/v1/IgniteHadoopFileSystem.java    |    47 +-
 .../hadoop/fs/v2/IgniteHadoopFileSystem.java    |    47 +-
 .../hadoop/io/PartiallyRawComparator.java       |    33 +
 .../org/apache/ignite/hadoop/io/RawMemory.java  |    86 +
 .../hadoop/io/TextPartiallyRawComparator.java   |   115 +
 .../apache/ignite/hadoop/io/package-info.java   |    22 +
 .../IgniteHadoopClientProtocolProvider.java     |   104 +-
 .../mapreduce/IgniteHadoopMapReducePlanner.java |    22 +-
 .../IgniteHadoopWeightedMapReducePlanner.java   |     4 +-
 .../ignite/hadoop/util/UserNameMapper.java      |     4 +-
 .../processors/hadoop/HadoopClassLoader.java    |   966 --
 .../processors/hadoop/HadoopClasspathMain.java  |    44 -
 .../processors/hadoop/HadoopClasspathUtils.java |   295 -
 .../processors/hadoop/HadoopCommonUtils.java    |   154 +
 .../processors/hadoop/HadoopContext.java        |     1 -
 .../processors/hadoop/HadoopDefaultJobInfo.java |   157 -
 .../processors/hadoop/HadoopExternalSplit.java  |    96 +
 .../processors/hadoop/HadoopHelperImpl.java     |   133 +
 .../processors/hadoop/HadoopLocations.java      |   123 -
 .../hadoop/HadoopMapReduceCounterGroup.java     |   123 -
 .../hadoop/HadoopMapReduceCounters.java         |   228 -
 .../processors/hadoop/HadoopMapperUtils.java    |    56 +
 .../processors/hadoop/HadoopProcessor.java      |    38 +-
 .../processors/hadoop/HadoopSplitWrapper.java   |   128 +
 .../internal/processors/hadoop/HadoopUtils.java |   436 -
 .../hadoop/counter/HadoopCounterAdapter.java    |     1 +
 .../counter/HadoopPerformanceCounter.java       |    12 +-
 .../hadoop/delegate/HadoopDelegateUtils.java    |   138 +
 .../HadoopFileSystemCounterWriterDelegate.java  |    36 +
 .../HadoopFileSystemFactoryDelegate.java        |    36 +
 .../HadoopIgfsSecondaryFileSystemDelegate.java  |    28 +
 .../hadoop/fs/HadoopFileSystemCacheUtils.java   |   242 -
 .../hadoop/fs/HadoopFileSystemsUtils.java       |    51 -
 .../hadoop/fs/HadoopLazyConcurrentMap.java      |   212 -
 .../hadoop/fs/HadoopLocalFileSystemV1.java      |    39 -
 .../hadoop/fs/HadoopLocalFileSystemV2.java      |    88 -
 .../processors/hadoop/fs/HadoopParameters.java  |    94 -
 .../hadoop/fs/HadoopRawLocalFileSystem.java     |   314 -
 .../processors/hadoop/igfs/HadoopIgfs.java      |   202 -
 .../igfs/HadoopIgfsCommunicationException.java  |    57 -
 .../processors/hadoop/igfs/HadoopIgfsEx.java    |    93 -
 .../hadoop/igfs/HadoopIgfsFuture.java           |    97 -
 .../hadoop/igfs/HadoopIgfsInProc.java           |   510 -
 .../hadoop/igfs/HadoopIgfsInputStream.java      |   629 -
 .../processors/hadoop/igfs/HadoopIgfsIo.java    |    76 -
 .../processors/hadoop/igfs/HadoopIgfsIpcIo.java |   624 -
 .../hadoop/igfs/HadoopIgfsIpcIoListener.java    |    36 -
 .../hadoop/igfs/HadoopIgfsJclLogger.java        |   116 -
 .../hadoop/igfs/HadoopIgfsOutProc.java          |   524 -
 .../hadoop/igfs/HadoopIgfsOutputStream.java     |   201 -
 .../hadoop/igfs/HadoopIgfsProperties.java       |    86 -
 .../hadoop/igfs/HadoopIgfsProxyInputStream.java |   337 -
 .../igfs/HadoopIgfsProxyOutputStream.java       |   165 -
 ...fsSecondaryFileSystemPositionedReadable.java |   105 -
 .../hadoop/igfs/HadoopIgfsStreamDelegate.java   |    96 -
 .../igfs/HadoopIgfsStreamEventListener.java     |    39 -
 .../processors/hadoop/igfs/HadoopIgfsUtils.java |   174 -
 .../hadoop/igfs/HadoopIgfsWrapper.java          |   552 -
 .../impl/HadoopMapReduceCounterGroup.java       |   124 +
 .../hadoop/impl/HadoopMapReduceCounters.java    |   229 +
 .../processors/hadoop/impl/HadoopUtils.java     |   331 +
 .../HadoopBasicFileSystemFactoryDelegate.java   |   178 +
 .../HadoopCachingFileSystemFactoryDelegate.java |    75 +
 .../HadoopDefaultFileSystemFactoryDelegate.java |    62 +
 ...doopFileSystemCounterWriterDelegateImpl.java |   108 +
 ...doopIgfsSecondaryFileSystemDelegateImpl.java |   470 +
 ...HadoopKerberosFileSystemFactoryDelegate.java |   117 +
 .../impl/fs/HadoopFileSystemCacheUtils.java     |   243 +
 .../hadoop/impl/fs/HadoopFileSystemsUtils.java  |    62 +
 .../hadoop/impl/fs/HadoopLazyConcurrentMap.java |   210 +
 .../hadoop/impl/fs/HadoopLocalFileSystemV1.java |    40 +
 .../hadoop/impl/fs/HadoopLocalFileSystemV2.java |    89 +
 .../hadoop/impl/fs/HadoopParameters.java        |    94 +
 .../impl/fs/HadoopRawLocalFileSystem.java       |   315 +
 .../processors/hadoop/impl/igfs/HadoopIgfs.java |   203 +
 .../igfs/HadoopIgfsCommunicationException.java  |    57 +
 .../hadoop/impl/igfs/HadoopIgfsEx.java          |    94 +
 .../hadoop/impl/igfs/HadoopIgfsFuture.java      |    97 +
 .../hadoop/impl/igfs/HadoopIgfsInProc.java      |   511 +
 .../hadoop/impl/igfs/HadoopIgfsInputStream.java |   630 +
 .../hadoop/impl/igfs/HadoopIgfsIo.java          |    76 +
 .../hadoop/impl/igfs/HadoopIgfsIpcIo.java       |   625 +
 .../impl/igfs/HadoopIgfsIpcIoListener.java      |    36 +
 .../hadoop/impl/igfs/HadoopIgfsJclLogger.java   |   116 +
 .../hadoop/impl/igfs/HadoopIgfsOutProc.java     |   525 +
 .../impl/igfs/HadoopIgfsOutputStream.java       |   202 +
 .../hadoop/impl/igfs/HadoopIgfsProperties.java  |    90 +
 .../impl/igfs/HadoopIgfsProxyInputStream.java   |   338 +
 .../impl/igfs/HadoopIgfsProxyOutputStream.java  |   166 +
 ...fsSecondaryFileSystemPositionedReadable.java |   106 +
 .../impl/igfs/HadoopIgfsStreamDelegate.java     |    96 +
 .../igfs/HadoopIgfsStreamEventListener.java     |    39 +
 .../hadoop/impl/igfs/HadoopIgfsUtils.java       |   175 +
 .../hadoop/impl/igfs/HadoopIgfsWrapper.java     |   554 +
 .../hadoop/impl/proto/HadoopClientProtocol.java |   379 +
 .../hadoop/impl/v1/HadoopV1CleanupTask.java     |    65 +
 .../hadoop/impl/v1/HadoopV1Counter.java         |   107 +
 .../hadoop/impl/v1/HadoopV1MapTask.java         |   122 +
 .../hadoop/impl/v1/HadoopV1OutputCollector.java |   138 +
 .../hadoop/impl/v1/HadoopV1Partitioner.java     |    44 +
 .../hadoop/impl/v1/HadoopV1ReduceTask.java      |   101 +
 .../hadoop/impl/v1/HadoopV1Reporter.java        |    81 +
 .../hadoop/impl/v1/HadoopV1SetupTask.java       |    57 +
 .../hadoop/impl/v1/HadoopV1Splitter.java        |   103 +
 .../processors/hadoop/impl/v1/HadoopV1Task.java |    98 +
 .../processors/hadoop/impl/v2/HadoopDaemon.java |   126 +
 .../impl/v2/HadoopSerializationWrapper.java     |   139 +
 .../impl/v2/HadoopShutdownHookManager.java      |    98 +
 .../hadoop/impl/v2/HadoopV2CleanupTask.java     |    73 +
 .../hadoop/impl/v2/HadoopV2Context.java         |   255 +
 .../hadoop/impl/v2/HadoopV2Counter.java         |    89 +
 ...DelegatingPartiallyOffheapRawComparator.java |    54 +
 .../processors/hadoop/impl/v2/HadoopV2Job.java  |   475 +
 .../impl/v2/HadoopV2JobResourceManager.java     |   321 +
 .../hadoop/impl/v2/HadoopV2MapTask.java         |   109 +
 .../hadoop/impl/v2/HadoopV2Partitioner.java     |    44 +
 .../hadoop/impl/v2/HadoopV2ReduceTask.java      |    91 +
 .../hadoop/impl/v2/HadoopV2SetupTask.java       |    66 +
 .../hadoop/impl/v2/HadoopV2Splitter.java        |   112 +
 .../processors/hadoop/impl/v2/HadoopV2Task.java |   186 +
 .../hadoop/impl/v2/HadoopV2TaskContext.java     |   584 +
 .../impl/v2/HadoopWritableSerialization.java    |    76 +
 .../processors/hadoop/io/OffheapRawMemory.java  |   131 +
 .../hadoop/jobtracker/HadoopJobTracker.java     |    92 +-
 .../hadoop/mapreduce/MapReduceClient.java       |   147 +
 .../hadoop/message/HadoopMessage.java           |    27 -
 .../planner/HadoopDefaultMapReducePlan.java     |     7 +-
 .../hadoop/proto/HadoopClientProtocol.java      |   349 -
 .../hadoop/shuffle/HadoopShuffle.java           |   112 +-
 .../hadoop/shuffle/HadoopShuffleAck.java        |    92 -
 .../hadoop/shuffle/HadoopShuffleJob.java        |   748 +-
 .../hadoop/shuffle/HadoopShuffleLocalState.java |    67 +
 .../hadoop/shuffle/HadoopShuffleMessage.java    |   242 -
 .../shuffle/HadoopShuffleRemoteState.java       |    61 +
 .../shuffle/collections/HadoopMultimapBase.java |     5 +-
 .../shuffle/collections/HadoopSkipList.java     |    14 +-
 .../shuffle/direct/HadoopDirectDataInput.java   |   166 +
 .../shuffle/direct/HadoopDirectDataOutput.java  |   221 +
 .../direct/HadoopDirectDataOutputContext.java   |   100 +
 .../direct/HadoopDirectDataOutputState.java     |    54 +
 .../shuffle/streams/HadoopDataOutStream.java    |     2 +-
 .../external/HadoopExternalTaskExecutor.java    |    13 +-
 .../child/HadoopChildProcessRunner.java         |    28 +-
 .../child/HadoopExternalProcessStarter.java     |    10 +-
 .../HadoopExternalCommunication.java            |    20 +-
 .../communication/HadoopIpcToNioAdapter.java    |     2 +-
 .../communication/HadoopMarshallerFilter.java   |    17 +-
 .../hadoop/v1/HadoopV1CleanupTask.java          |    64 -
 .../processors/hadoop/v1/HadoopV1Counter.java   |   106 -
 .../processors/hadoop/v1/HadoopV1MapTask.java   |   122 -
 .../hadoop/v1/HadoopV1OutputCollector.java      |   137 -
 .../hadoop/v1/HadoopV1Partitioner.java          |    44 -
 .../hadoop/v1/HadoopV1ReduceTask.java           |   101 -
 .../processors/hadoop/v1/HadoopV1Reporter.java  |    81 -
 .../processors/hadoop/v1/HadoopV1SetupTask.java |    56 -
 .../processors/hadoop/v1/HadoopV1Splitter.java  |   102 -
 .../processors/hadoop/v1/HadoopV1Task.java      |    97 -
 .../processors/hadoop/v2/HadoopDaemon.java      |   126 -
 .../hadoop/v2/HadoopExternalSplit.java          |    89 -
 .../hadoop/v2/HadoopSerializationWrapper.java   |   138 -
 .../hadoop/v2/HadoopShutdownHookManager.java    |    98 -
 .../hadoop/v2/HadoopSplitWrapper.java           |   119 -
 .../hadoop/v2/HadoopV2CleanupTask.java          |    72 -
 .../processors/hadoop/v2/HadoopV2Context.java   |   243 -
 .../processors/hadoop/v2/HadoopV2Counter.java   |    88 -
 .../processors/hadoop/v2/HadoopV2Job.java       |   443 -
 .../hadoop/v2/HadoopV2JobResourceManager.java   |   322 -
 .../processors/hadoop/v2/HadoopV2MapTask.java   |    99 -
 .../hadoop/v2/HadoopV2Partitioner.java          |    44 -
 .../hadoop/v2/HadoopV2ReduceTask.java           |    91 -
 .../processors/hadoop/v2/HadoopV2SetupTask.java |    65 -
 .../processors/hadoop/v2/HadoopV2Splitter.java  |   111 -
 .../processors/hadoop/v2/HadoopV2Task.java      |   185 -
 .../hadoop/v2/HadoopV2TaskContext.java          |   559 -
 .../hadoop/v2/HadoopWritableSerialization.java  |    75 -
 .../resources/META-INF/classnames.properties    |   114 +
 .../HadoopClientProtocolEmbeddedSelfTest.java   |    35 -
 .../hadoop/HadoopClientProtocolSelfTest.java    |   654 -
 .../hadoop/cache/HadoopTxConfigCacheTest.java   |    42 -
 ...KerberosHadoopFileSystemFactorySelfTest.java |   121 -
 .../util/BasicUserNameMapperSelfTest.java       |   133 -
 .../util/ChainedUserNameMapperSelfTest.java     |   107 -
 .../util/KerberosUserNameMapperSelfTest.java    |    99 -
 .../ignite/igfs/Hadoop1DualAbstractTest.java    |   158 -
 .../igfs/Hadoop1OverIgfsDualAsyncTest.java      |    30 -
 .../igfs/Hadoop1OverIgfsDualSyncTest.java       |    30 -
 .../igfs/HadoopFIleSystemFactorySelfTest.java   |   327 -
 .../HadoopIgfs20FileSystemAbstractSelfTest.java |  2040 ---
 ...Igfs20FileSystemLoopbackPrimarySelfTest.java |    74 -
 ...oopIgfs20FileSystemShmemPrimarySelfTest.java |    74 -
 .../igfs/HadoopIgfsDualAbstractSelfTest.java    |   321 -
 .../igfs/HadoopIgfsDualAsyncSelfTest.java       |    32 -
 .../ignite/igfs/HadoopIgfsDualSyncSelfTest.java |    32 -
 ...adoopIgfsSecondaryFileSystemTestAdapter.java |   149 -
 ...oopSecondaryFileSystemConfigurationTest.java |   575 -
 .../apache/ignite/igfs/IgfsEventsTestSuite.java |   285 -
 .../igfs/IgfsNearOnlyMultiNodeSelfTest.java     |   223 -
 .../IgniteHadoopFileSystemAbstractSelfTest.java |  2432 ---
 .../IgniteHadoopFileSystemClientSelfTest.java   |   212 -
 ...IgniteHadoopFileSystemHandshakeSelfTest.java |   389 -
 .../IgniteHadoopFileSystemIpcCacheSelfTest.java |   214 -
 .../IgniteHadoopFileSystemLoggerSelfTest.java   |   298 -
 ...niteHadoopFileSystemLoggerStateSelfTest.java |   329 -
 ...adoopFileSystemLoopbackAbstractSelfTest.java |    46 -
 ...SystemLoopbackEmbeddedDualAsyncSelfTest.java |    33 -
 ...eSystemLoopbackEmbeddedDualSyncSelfTest.java |    33 -
 ...leSystemLoopbackEmbeddedPrimarySelfTest.java |    33 -
 ...SystemLoopbackEmbeddedSecondarySelfTest.java |    34 -
 ...SystemLoopbackExternalDualAsyncSelfTest.java |    33 -
 ...eSystemLoopbackExternalDualSyncSelfTest.java |    33 -
 ...leSystemLoopbackExternalPrimarySelfTest.java |    33 -
 ...SystemLoopbackExternalSecondarySelfTest.java |    34 -
 ...condaryFileSystemInitializationSelfTest.java |   214 -
 ...teHadoopFileSystemShmemAbstractSelfTest.java |    91 -
 ...ileSystemShmemEmbeddedDualAsyncSelfTest.java |    33 -
 ...FileSystemShmemEmbeddedDualSyncSelfTest.java |    33 -
 ...pFileSystemShmemEmbeddedPrimarySelfTest.java |    33 -
 ...ileSystemShmemEmbeddedSecondarySelfTest.java |    33 -
 ...ileSystemShmemExternalDualAsyncSelfTest.java |    33 -
 ...FileSystemShmemExternalDualSyncSelfTest.java |    33 -
 ...pFileSystemShmemExternalPrimarySelfTest.java |    33 -
 ...ileSystemShmemExternalSecondarySelfTest.java |    33 -
 .../hadoop/HadoopAbstractMapReduceTest.java     |   429 -
 .../hadoop/HadoopAbstractSelfTest.java          |   239 -
 .../hadoop/HadoopAbstractWordCountTest.java     |   175 -
 .../hadoop/HadoopClassLoaderTest.java           |   110 -
 .../hadoop/HadoopCommandLineTest.java           |   474 -
 .../HadoopDefaultMapReducePlannerSelfTest.java  |   615 -
 .../processors/hadoop/HadoopErrorSimulator.java |   326 -
 .../hadoop/HadoopFileSystemsTest.java           |   155 -
 .../processors/hadoop/HadoopGroupingTest.java   |   307 -
 .../hadoop/HadoopJobTrackerSelfTest.java        |   345 -
 .../hadoop/HadoopMapReduceEmbeddedSelfTest.java |   253 -
 .../HadoopMapReduceErrorResilienceTest.java     |   154 -
 .../processors/hadoop/HadoopMapReduceTest.java  |    66 -
 .../hadoop/HadoopNoHadoopMapReduceTest.java     |    47 -
 .../processors/hadoop/HadoopPlannerMockJob.java |   168 -
 .../hadoop/HadoopPopularWordsTest.java          |   298 -
 .../HadoopSerializationWrapperSelfTest.java     |    79 -
 .../processors/hadoop/HadoopSharedMap.java      |     1 +
 .../hadoop/HadoopSnappyFullMapReduceTest.java   |    36 -
 .../processors/hadoop/HadoopSnappyTest.java     |   102 -
 .../hadoop/HadoopSortingExternalTest.java       |    46 -
 .../processors/hadoop/HadoopSortingTest.java    |   303 -
 .../hadoop/HadoopSplitWrapperSelfTest.java      |    72 -
 .../processors/hadoop/HadoopStartup.java        |    54 -
 .../hadoop/HadoopTaskExecutionSelfTest.java     |   567 -
 .../hadoop/HadoopTasksAllVersionsTest.java      |   260 -
 .../processors/hadoop/HadoopTasksV1Test.java    |    58 -
 .../processors/hadoop/HadoopTasksV2Test.java    |    77 -
 .../hadoop/HadoopTestClassLoader.java           |   106 +
 .../hadoop/HadoopTestRoundRobinMrPlanner.java   |    71 -
 .../hadoop/HadoopTestTaskContext.java           |   228 -
 .../processors/hadoop/HadoopTestUtils.java      |   107 -
 .../processors/hadoop/HadoopV2JobSelfTest.java  |   100 -
 .../hadoop/HadoopValidationSelfTest.java        |    53 -
 .../HadoopWeightedMapReducePlannerTest.java     |   599 -
 .../HadoopWeightedPlannerMapReduceTest.java     |    38 -
 .../hadoop/books/alice-in-wonderland.txt        |  3735 -----
 .../processors/hadoop/books/art-of-war.txt      |  6982 ---------
 .../hadoop/books/huckleberry-finn.txt           | 11733 ---------------
 .../processors/hadoop/books/sherlock-holmes.txt | 13052 -----------------
 .../processors/hadoop/books/tom-sawyer.txt      |  8858 -----------
 .../hadoop/deps/CircularWIthHadoop.java         |    32 -
 .../hadoop/deps/CircularWithoutHadoop.java      |    27 -
 .../processors/hadoop/deps/WithCast.java        |    41 -
 .../hadoop/deps/WithClassAnnotation.java        |    28 -
 .../hadoop/deps/WithConstructorInvocation.java  |    31 -
 .../processors/hadoop/deps/WithExtends.java     |    27 -
 .../processors/hadoop/deps/WithField.java       |    29 -
 .../processors/hadoop/deps/WithImplements.java  |    36 -
 .../hadoop/deps/WithIndirectField.java          |    27 -
 .../processors/hadoop/deps/WithInitializer.java |    33 -
 .../processors/hadoop/deps/WithInnerClass.java  |    31 -
 .../hadoop/deps/WithLocalVariable.java          |    38 -
 .../hadoop/deps/WithMethodAnnotation.java       |    32 -
 .../hadoop/deps/WithMethodArgument.java         |    31 -
 .../hadoop/deps/WithMethodCheckedException.java |    31 -
 .../hadoop/deps/WithMethodInvocation.java       |    31 -
 .../hadoop/deps/WithMethodReturnType.java       |    31 -
 .../hadoop/deps/WithMethodRuntimeException.java |    31 -
 .../processors/hadoop/deps/WithOuterClass.java  |    38 -
 .../hadoop/deps/WithParameterAnnotation.java    |    31 -
 .../processors/hadoop/deps/WithStaticField.java |    29 -
 .../hadoop/deps/WithStaticInitializer.java      |    34 -
 .../processors/hadoop/deps/Without.java         |    25 -
 .../hadoop/examples/HadoopWordCount1.java       |    94 -
 .../hadoop/examples/HadoopWordCount1Map.java    |    79 -
 .../hadoop/examples/HadoopWordCount1Reduce.java |    61 -
 .../hadoop/examples/HadoopWordCount2.java       |   111 -
 .../examples/HadoopWordCount2Combiner.java      |    45 -
 .../hadoop/examples/HadoopWordCount2Mapper.java |    88 -
 .../examples/HadoopWordCount2Reducer.java       |   113 -
 .../impl/HadoopAbstractMapReduceTest.java       |   430 +
 .../hadoop/impl/HadoopAbstractSelfTest.java     |   250 +
 .../impl/HadoopAbstractWordCountTest.java       |   175 +
 .../hadoop/impl/HadoopCommandLineTest.java      |   476 +
 .../HadoopDefaultMapReducePlannerSelfTest.java  |   619 +
 .../hadoop/impl/HadoopErrorSimulator.java       |   326 +
 .../hadoop/impl/HadoopFileSystemsTest.java      |   164 +
 .../hadoop/impl/HadoopGroupingTest.java         |   302 +
 .../hadoop/impl/HadoopJobTrackerSelfTest.java   |   332 +
 .../impl/HadoopMapReduceEmbeddedSelfTest.java   |   269 +
 .../HadoopMapReduceErrorResilienceTest.java     |   154 +
 .../hadoop/impl/HadoopMapReduceTest.java        |    66 +
 .../impl/HadoopNoHadoopMapReduceTest.java       |    47 +
 .../hadoop/impl/HadoopPlannerMockJob.java       |   182 +
 .../hadoop/impl/HadoopPopularWordsTest.java     |   298 +
 .../HadoopSerializationWrapperSelfTest.java     |    80 +
 .../impl/HadoopSnappyFullMapReduceTest.java     |    36 +
 .../hadoop/impl/HadoopSnappyTest.java           |   104 +
 .../hadoop/impl/HadoopSortingExternalTest.java  |    46 +
 .../hadoop/impl/HadoopSortingTest.java          |   304 +
 .../hadoop/impl/HadoopSplitWrapperSelfTest.java |    72 +
 .../processors/hadoop/impl/HadoopStartup.java   |    54 +
 .../impl/HadoopTaskExecutionSelfTest.java       |   548 +
 .../hadoop/impl/HadoopTasksAllVersionsTest.java |   264 +
 .../hadoop/impl/HadoopTasksV1Test.java          |    62 +
 .../hadoop/impl/HadoopTasksV2Test.java          |    81 +
 .../hadoop/impl/HadoopTeraSortTest.java         |   383 +
 .../impl/HadoopTestRoundRobinMrPlanner.java     |    75 +
 .../hadoop/impl/HadoopTestTaskContext.java      |   233 +
 .../processors/hadoop/impl/HadoopTestUtils.java |   178 +
 .../hadoop/impl/HadoopTxConfigCacheTest.java    |    42 +
 .../hadoop/impl/HadoopUserLibsSelfTest.java     |   261 +
 .../hadoop/impl/HadoopV2JobSelfTest.java        |   108 +
 .../hadoop/impl/HadoopValidationSelfTest.java   |    53 +
 .../HadoopWeightedMapReducePlannerTest.java     |   602 +
 .../HadoopWeightedPlannerMapReduceTest.java     |    38 +
 .../hadoop/impl/books/alice-in-wonderland.txt   |  3735 +++++
 .../processors/hadoop/impl/books/art-of-war.txt |  6982 +++++++++
 .../hadoop/impl/books/huckleberry-finn.txt      | 11733 +++++++++++++++
 .../hadoop/impl/books/sherlock-holmes.txt       | 13052 +++++++++++++++++
 .../processors/hadoop/impl/books/tom-sawyer.txt |  8858 +++++++++++
 .../HadoopClientProtocolEmbeddedSelfTest.java   |    35 +
 ...opClientProtocolMultipleServersSelfTest.java |   315 +
 .../client/HadoopClientProtocolSelfTest.java    |   670 +
 .../hadoop/impl/examples/HadoopWordCount1.java  |    94 +
 .../impl/examples/HadoopWordCount1Map.java      |    79 +
 .../impl/examples/HadoopWordCount1Reduce.java   |    61 +
 .../hadoop/impl/examples/HadoopWordCount2.java  |   111 +
 .../impl/examples/HadoopWordCount2Combiner.java |    45 +
 .../impl/examples/HadoopWordCount2Mapper.java   |    88 +
 .../impl/examples/HadoopWordCount2Reducer.java  |   113 +
 ...KerberosHadoopFileSystemFactorySelfTest.java |   127 +
 .../impl/igfs/Hadoop1DualAbstractTest.java      |   163 +
 .../impl/igfs/Hadoop1OverIgfsDualAsyncTest.java |    32 +
 .../impl/igfs/Hadoop1OverIgfsDualSyncTest.java  |    32 +
 .../igfs/HadoopFIleSystemFactorySelfTest.java   |   345 +
 .../HadoopIgfs20FileSystemAbstractSelfTest.java |  2047 +++
 ...Igfs20FileSystemLoopbackPrimarySelfTest.java |    77 +
 ...oopIgfs20FileSystemShmemPrimarySelfTest.java |    77 +
 .../igfs/HadoopIgfsDualAbstractSelfTest.java    |   328 +
 .../impl/igfs/HadoopIgfsDualAsyncSelfTest.java  |    32 +
 .../impl/igfs/HadoopIgfsDualSyncSelfTest.java   |    32 +
 ...adoopIgfsSecondaryFileSystemTestAdapter.java |   152 +
 ...oopSecondaryFileSystemConfigurationTest.java |   595 +
 .../hadoop/impl/igfs/IgfsEventsTestSuite.java   |   289 +
 .../igfs/IgfsNearOnlyMultiNodeSelfTest.java     |   226 +
 .../IgniteHadoopFileSystemAbstractSelfTest.java |  2435 +++
 .../IgniteHadoopFileSystemClientSelfTest.java   |   216 +
 ...IgniteHadoopFileSystemHandshakeSelfTest.java |   393 +
 .../IgniteHadoopFileSystemIpcCacheSelfTest.java |   215 +
 .../IgniteHadoopFileSystemLoggerSelfTest.java   |   299 +
 ...niteHadoopFileSystemLoggerStateSelfTest.java |   332 +
 ...adoopFileSystemLoopbackAbstractSelfTest.java |    50 +
 ...SystemLoopbackEmbeddedDualAsyncSelfTest.java |    33 +
 ...eSystemLoopbackEmbeddedDualSyncSelfTest.java |    33 +
 ...leSystemLoopbackEmbeddedPrimarySelfTest.java |    33 +
 ...SystemLoopbackEmbeddedSecondarySelfTest.java |    34 +
 ...SystemLoopbackExternalDualAsyncSelfTest.java |    33 +
 ...eSystemLoopbackExternalDualSyncSelfTest.java |    33 +
 ...leSystemLoopbackExternalPrimarySelfTest.java |    33 +
 ...SystemLoopbackExternalSecondarySelfTest.java |    34 +
 ...condaryFileSystemInitializationSelfTest.java |   217 +
 ...teHadoopFileSystemShmemAbstractSelfTest.java |    94 +
 ...ileSystemShmemEmbeddedDualAsyncSelfTest.java |    33 +
 ...FileSystemShmemEmbeddedDualSyncSelfTest.java |    33 +
 ...pFileSystemShmemEmbeddedPrimarySelfTest.java |    33 +
 ...ileSystemShmemEmbeddedSecondarySelfTest.java |    33 +
 ...ileSystemShmemExternalDualAsyncSelfTest.java |    33 +
 ...FileSystemShmemExternalDualSyncSelfTest.java |    33 +
 ...pFileSystemShmemExternalPrimarySelfTest.java |    33 +
 ...ileSystemShmemExternalSecondarySelfTest.java |    33 +
 .../collections/HadoopAbstractMapTest.java      |   181 +
 .../HadoopConcurrentHashMultimapSelftest.java   |   280 +
 .../collections/HadoopHashMapSelfTest.java      |   133 +
 .../collections/HadoopSkipListSelfTest.java     |   332 +
 .../streams/HadoopDataStreamSelfTest.java       |   153 +
 .../taskexecutor/HadoopExecutorServiceTest.java |   119 +
 .../HadoopExternalTaskExecutionSelfTest.java    |   234 +
 .../HadoopExternalCommunicationSelfTest.java    |   222 +
 .../impl/util/BasicUserNameMapperSelfTest.java  |   134 +
 .../util/ChainedUserNameMapperSelfTest.java     |   111 +
 .../util/KerberosUserNameMapperSelfTest.java    |   100 +
 .../collections/HadoopAbstractMapTest.java      |   174 -
 .../HadoopConcurrentHashMultimapSelftest.java   |   278 -
 .../collections/HadoopHashMapSelfTest.java      |   131 -
 .../collections/HadoopSkipListSelfTest.java     |   318 -
 .../streams/HadoopDataStreamSelfTest.java       |   150 -
 .../hadoop/state/HadoopGroupingTestState.java   |    40 +
 .../state/HadoopJobTrackerSelfTestState.java    |    45 +
 .../HadoopMapReduceEmbeddedSelfTestState.java   |    32 +
 .../HadoopTaskExecutionSelfTestValues.java      |    51 +
 .../taskexecutor/HadoopExecutorServiceTest.java |   118 -
 .../HadoopExternalTaskExecutionSelfTest.java    |   232 -
 .../HadoopExternalCommunicationSelfTest.java    |   220 -
 .../testsuites/IgniteHadoopTestSuite.java       |   120 +-
 .../IgniteIgfsLinuxAndMacOSTestSuite.java       |    25 +-
 modules/hibernate/pom.xml                       |     2 +-
 .../hibernate/CacheHibernateBlobStore.java      |     4 +-
 modules/ignored-tests/README.txt                |     4 +
 modules/ignored-tests/pom.xml                   |   241 +
 ...gniteIgnoredBinarySimpleMapperTestSuite.java |    41 +
 .../IgniteIgnoredBinaryTestSuite.java           |    42 +
 .../testsuites/IgniteIgnoredTestSuite.java      |    61 +
 .../apache/ignite/testsuites/package-info.java  |    22 +
 modules/indexing/pom.xml                        |     2 +-
 .../cache/query/GridCacheTwoStepQuery.java      |   253 +
 .../query/h2/DmlStatementsProcessor.java        |  1083 ++
 .../query/h2/GridH2ResultSetIterator.java       |     3 +-
 .../processors/query/h2/IgniteH2Indexing.java   |   497 +-
 .../query/h2/database/H2PkHashIndex.java        |   322 +
 .../query/h2/dml/FastUpdateArgument.java        |    27 +
 .../query/h2/dml/FastUpdateArguments.java       |    53 +
 .../query/h2/dml/KeyValueSupplier.java          |    30 +
 .../processors/query/h2/dml/UpdateMode.java     |    36 +
 .../processors/query/h2/dml/UpdatePlan.java     |   128 +
 .../query/h2/dml/UpdatePlanBuilder.java         |   486 +
 .../processors/query/h2/dml/package-info.java   |    22 +
 .../query/h2/opt/GridH2RowDescriptor.java       |    23 +
 .../processors/query/h2/opt/GridH2Table.java    |   141 +-
 .../query/h2/opt/GridH2TreeIndex.java           |     2 +-
 .../query/h2/opt/GridH2ValueCacheObject.java    |     8 -
 .../processors/query/h2/sql/DmlAstUtils.java    |   616 +
 .../processors/query/h2/sql/GridSqlArray.java   |     8 +
 .../processors/query/h2/sql/GridSqlConst.java   |     6 +
 .../processors/query/h2/sql/GridSqlDelete.java  |    68 +
 .../query/h2/sql/GridSqlFunction.java           |     5 +-
 .../processors/query/h2/sql/GridSqlInsert.java  |   149 +
 .../processors/query/h2/sql/GridSqlKeyword.java |    46 +
 .../processors/query/h2/sql/GridSqlMerge.java   |   143 +
 .../processors/query/h2/sql/GridSqlQuery.java   |    44 +-
 .../query/h2/sql/GridSqlQueryParser.java        |   323 +-
 .../query/h2/sql/GridSqlQuerySplitter.java      |   149 +-
 .../processors/query/h2/sql/GridSqlSelect.java  |     3 +-
 .../query/h2/sql/GridSqlStatement.java          |    64 +
 .../processors/query/h2/sql/GridSqlUpdate.java  |   105 +
 .../query/h2/twostep/GridMapQueryExecutor.java  |    66 +-
 .../query/h2/twostep/GridMergeIndex.java        |    61 +-
 .../h2/twostep/GridReduceQueryExecutor.java     |   181 +-
 .../h2/twostep/msg/GridH2QueryRequest.java      |    42 +-
 ...CacheAbstractQueryDetailMetricsSelfTest.java |   572 +
 .../CacheAbstractQueryMetricsSelfTest.java      |   307 +-
 .../cache/CacheConfigurationP2PTestServer.java  |     2 -
 .../CacheLocalQueryDetailMetricsSelfTest.java   |    33 +
 ...edQueryDetailMetricsDistributedSelfTest.java |    33 +
 ...titionedQueryDetailMetricsLocalSelfTest.java |    33 +
 ...edQueryDetailMetricsDistributedSelfTest.java |    33 +
 ...plicatedQueryDetailMetricsLocalSelfTest.java |    33 +
 ...niteBinaryObjectLocalQueryArgumentsTest.java |    28 +
 ...aryObjectQueryArgumentsOffheapLocalTest.java |    28 +
 ...teBinaryObjectQueryArgumentsOffheapTest.java |    30 +
 .../IgniteBinaryObjectQueryArgumentsTest.java   |   472 +-
 ...niteCacheAbstractInsertSqlQuerySelfTest.java |   559 +
 .../IgniteCacheAbstractSqlDmlQuerySelfTest.java |   243 +
 .../IgniteCacheDeleteSqlQuerySelfTest.java      |   106 +
 .../IgniteCacheInsertSqlQuerySelfTest.java      |   203 +
 .../cache/IgniteCacheLargeResultSelfTest.java   |    15 +-
 .../cache/IgniteCacheMergeSqlQuerySelfTest.java |   153 +
 .../cache/IgniteCacheOffheapEvictQueryTest.java |     9 +-
 .../IgniteCacheQueryMultiThreadedSelfTest.java  |    59 +
 .../IgniteCacheUpdateSqlQuerySelfTest.java      |   472 +
 .../IgniteCacheAtomicFieldsQuerySelfTest.java   |    21 -
 ...lientQueryReplicatedNodeRestartSelfTest.java |     7 +
 ...niteCacheDistributedQueryCancelSelfTest.java |   176 +
 ...butedQueryStopOnCancelOrTimeoutSelfTest.java |   262 +
 ...niteCachePartitionedFieldsQuerySelfTest.java |    25 +
 ...cheQueryAbstractDistributedJoinSelfTest.java |   290 +
 ...QueryNodeRestartDistributedJoinSelfTest.java |   262 +-
 .../IgniteCacheQueryNodeRestartSelfTest2.java   |   125 +-
 ...nCancelOrTimeoutDistributedJoinSelfTest.java |   140 +
 ...gniteCacheReplicatedFieldsQuerySelfTest.java |    11 +-
 .../IgniteCacheReplicatedQuerySelfTest.java     |     6 +-
 ...eCacheLocalQueryCancelOrTimeoutSelfTest.java |   158 +
 .../query/IgniteSqlSplitterSelfTest.java        |   330 +
 .../h2/GridIndexingSpiAbstractSelfTest.java     |    50 +-
 .../query/h2/sql/BaseH2CompareQueryTest.java    |     3 +-
 .../query/h2/sql/GridQueryParsingTest.java      |   124 +-
 ...narySimpleNameMapperCacheQueryTestSuite.java |     2 -
 .../IgniteCacheQuerySelfTestSuite.java          |   160 +-
 .../IgniteCacheQuerySelfTestSuite2.java         |    96 +-
 .../IgniteH2IndexingSpiTestSuite.java           |    16 +-
 modules/jcl/pom.xml                             |     2 +-
 modules/jms11/pom.xml                           |     2 +-
 .../stream/jms11/IgniteJmsStreamerTest.java     |   206 +-
 .../jms11/IgniteJmsStreamerTestSuite.java       |     2 +-
 modules/jta/pom.xml                             |     2 +-
 ...titionedCacheJtaLookupClassNameSelfTest.java |     4 +-
 .../ignite/testsuites/IgniteJtaTestSuite.java   |     3 +-
 modules/kafka/README.txt                        |     4 +
 modules/kafka/pom.xml                           |     2 +-
 .../ignite/stream/kafka/KafkaStreamer.java      |    50 +-
 .../kafka/connect/IgniteSinkConnector.java      |     9 +
 .../kafka/connect/IgniteSinkConstants.java      |     3 +
 .../stream/kafka/connect/IgniteSinkTask.java    |    47 +-
 .../kafka/connect/IgniteSourceConnector.java    |     9 +
 .../serialization/CacheEventDeserializer.java   |     3 +-
 .../serialization/CacheEventSerializer.java     |     3 +-
 .../kafka/KafkaIgniteStreamerSelfTest.java      |    36 +-
 .../kafka/connect/IgniteSinkConnectorMock.java  |    30 +
 .../kafka/connect/IgniteSinkConnectorTest.java  |    99 +-
 .../kafka/connect/IgniteSinkTaskMock.java       |    29 +
 .../connect/IgniteSourceConnectorTest.java      |    14 +-
 modules/log4j/pom.xml                           |     2 +-
 .../apache/ignite/logger/log4j/Log4JLogger.java |     4 +-
 modules/log4j2/pom.xml                          |     2 +-
 modules/mesos/pom.xml                           |     2 +-
 modules/mqtt/pom.xml                            |     2 +-
 modules/osgi-karaf/pom.xml                      |     2 +-
 .../osgi-karaf/src/main/resources/features.xml  |    12 +-
 modules/osgi-paxlogging/pom.xml                 |     2 +-
 modules/osgi/pom.xml                            |     3 +-
 modules/platforms/.gitignore                    |    31 +
 modules/platforms/cpp/DEVNOTES.txt              |    23 +-
 modules/platforms/cpp/README.txt                |    10 +-
 modules/platforms/cpp/binary/Makefile.am        |     4 +-
 .../include/ignite/binary/binary_raw_reader.h   |    21 +
 .../ignite/impl/binary/binary_reader_impl.h     |    11 +-
 .../ignite/impl/binary/binary_type_manager.h    |    14 +-
 .../cpp/binary/project/vs/binary.vcxproj        |     2 -
 .../src/impl/binary/binary_reader_impl.cpp      |    20 +-
 modules/platforms/cpp/common/Makefile.am        |     4 +-
 .../platforms/cpp/common/include/Makefile.am    |     5 +-
 .../common/include/ignite/common/concurrent.h   |    96 +-
 .../include/ignite/common/reference_impl.h      |   286 +
 .../cpp/common/include/ignite/ignite_error.h    |    15 +-
 .../cpp/common/include/ignite/reference.h       |   564 +
 .../cpp/common/project/vs/common.vcxproj        |     3 +-
 .../common/project/vs/common.vcxproj.filters    |     6 +
 .../platforms/cpp/common/src/ignite_error.cpp   |     6 +-
 modules/platforms/cpp/configure.ac              |     2 +-
 modules/platforms/cpp/configure.acrel           |     2 +-
 modules/platforms/cpp/core-test/Makefile.am     |    17 +-
 .../core-test/config/cache-query-continuous.xml |    87 +
 .../cpp/core-test/config/cache-query.xml        |     4 +-
 .../cpp/core-test/config/cache-test.xml         |     1 +
 .../platforms/cpp/core-test/config/invalid.xml  |    39 +
 .../cpp/core-test/project/vs/core-test.vcxproj  |    13 +-
 .../project/vs/core-test.vcxproj.filters        |    11 +-
 .../cpp/core-test/src/cache_query_test.cpp      |   238 +-
 .../cpp/core-test/src/continuous_query_test.cpp |   611 +
 .../cpp/core-test/src/decimal_test.cpp          |     2 +-
 .../cpp/core-test/src/handle_registry_test.cpp  |    18 +-
 .../cpp/core-test/src/interop_memory_test.cpp   |     5 +-
 .../cpp/core-test/src/interop_test.cpp          |    17 +-
 .../cpp/core-test/src/reference_test.cpp        |   412 +
 modules/platforms/cpp/core/Makefile.am          |     6 +-
 modules/platforms/cpp/core/include/Makefile.am  |     1 +
 .../cpp/core/include/ignite/cache/cache.h       |   119 +-
 .../cpp/core/include/ignite/cache/cache_entry.h |    40 +-
 .../ignite/cache/event/cache_entry_event.h      |   139 +
 .../cache/event/cache_entry_event_listener.h    |    71 +
 .../cache/query/continuous/continuous_query.h   |   239 +
 .../query/continuous/continuous_query_handle.h  |   133 +
 .../include/ignite/cache/query/query_cursor.h   |     6 +-
 .../ignite/cache/query/query_fields_cursor.h    |     4 +-
 .../impl/binary/binary_type_updater_impl.h      |    12 +-
 .../core/include/ignite/impl/cache/cache_impl.h |   153 +-
 .../continuous/continuous_query_handle_impl.h   |   101 +
 .../query/continuous/continuous_query_impl.h    |   351 +
 .../ignite/impl/cache/query/query_batch.h       |   148 +
 .../impl/cache/query/query_fields_row_impl.h    |    30 +-
 .../ignite/impl/cache/query/query_impl.h        |    30 +-
 .../core/include/ignite/impl/handle_registry.h  |    62 +-
 .../include/ignite/impl/ignite_environment.h    |    81 +-
 .../ignite/impl/interop/interop_target.h        |    18 +
 modules/platforms/cpp/core/namespaces.dox       |    74 +-
 .../platforms/cpp/core/project/vs/core.vcxproj  |    11 +-
 .../cpp/core/project/vs/core.vcxproj.filters    |    36 +
 modules/platforms/cpp/core/src/ignition.cpp     |    21 +-
 .../impl/binary/binary_type_updater_impl.cpp    |    13 +-
 .../cpp/core/src/impl/cache/cache_impl.cpp      |    67 +-
 .../continuous/continuous_query_handle_impl.cpp |    96 +
 .../core/src/impl/cache/query/query_batch.cpp   |    52 +
 .../core/src/impl/cache/query/query_impl.cpp    |   193 +-
 .../cpp/core/src/impl/handle_registry.cpp       |   102 +-
 .../cpp/core/src/impl/ignite_environment.cpp    |   183 +-
 .../core/src/impl/interop/interop_target.cpp    |    29 +-
 .../src/impl/transactions/transactions_impl.cpp |   135 +-
 modules/platforms/cpp/examples/Makefile.am      |     1 +
 modules/platforms/cpp/examples/README.txt       |     9 +-
 modules/platforms/cpp/examples/configure.ac     |    45 +-
 .../continuous-query-example/Makefile.am        |    58 +
 .../config/continuous-query-example.xml         |    52 +
 .../project/vs/continuous-query-example.vcxproj |   110 +
 .../vs/continuous-query-example.vcxproj.filters |    35 +
 .../src/continuous_query_example.cpp            |   142 +
 .../examples/include/ignite/examples/person.h   |     2 +-
 .../cpp/examples/odbc-example/Makefile.am       |     4 +-
 .../odbc-example/config/example-odbc.xml        |    38 +-
 .../project/vs/odbc-example.vcxproj             |     7 +-
 .../project/vs/odbc-example.vcxproj.filters     |     8 +
 .../examples/odbc-example/src/odbc_example.cpp  |   514 +-
 .../cpp/examples/project/vs/ignite-examples.sln |     6 +
 .../cpp/examples/putget-example/Makefile.am     |     4 +-
 .../putget-example/src/putget_example.cpp       |     2 +-
 .../cpp/examples/query-example/Makefile.am      |     4 +-
 .../query-example/src/query_example.cpp         |    58 +-
 modules/platforms/cpp/ignite/Makefile.am        |     4 +-
 .../cpp/ignite/project/vs/ignite.vcxproj        |     4 +-
 modules/platforms/cpp/jni/Makefile.am           |     4 +-
 .../cpp/jni/include/ignite/jni/exports.h        |   112 +-
 .../platforms/cpp/jni/include/ignite/jni/java.h |   329 +-
 .../cpp/jni/include/ignite/jni/utils.h          |    91 +-
 .../platforms/cpp/jni/project/vs/jni.vcxproj    |     1 -
 modules/platforms/cpp/jni/project/vs/module.def |   100 +-
 modules/platforms/cpp/jni/src/exports.cpp       |   375 +-
 modules/platforms/cpp/jni/src/java.cpp          |  1854 +--
 modules/platforms/cpp/odbc-test/Makefile.am     |     7 +-
 .../cpp/odbc-test/config/queries-default.xml    |   145 +
 .../odbc-test/config/queries-test-noodbc.xml    |    80 +-
 .../cpp/odbc-test/config/queries-test.xml       |    81 +-
 .../platforms/cpp/odbc-test/include/Makefile.am |     1 +
 .../cpp/odbc-test/include/complex_type.h        |   122 +
 .../odbc-test/include/sql_test_suite_fixture.h  |     6 +
 .../platforms/cpp/odbc-test/include/test_type.h |    42 +-
 .../cpp/odbc-test/include/test_utils.h          |     8 +
 .../cpp/odbc-test/project/vs/odbc-test.vcxproj  |     8 +-
 .../project/vs/odbc-test.vcxproj.filters        |    12 +
 .../cpp/odbc-test/src/api_robustness_test.cpp   |  1114 ++
 .../src/application_data_buffer_test.cpp        |   129 +-
 .../platforms/cpp/odbc-test/src/column_test.cpp |    10 +-
 .../cpp/odbc-test/src/configuration_test.cpp    |    14 +-
 .../cpp/odbc-test/src/queries_test.cpp          |   798 +-
 .../platforms/cpp/odbc-test/src/row_test.cpp    |     4 +-
 .../src/sql_date_time_functions_test.cpp        |   213 +
 .../cpp/odbc-test/src/sql_outer_join_test.cpp   |   498 +
 .../odbc-test/src/sql_string_functions_test.cpp |    63 +
 .../odbc-test/src/sql_test_suite_fixture.cpp    |    25 +-
 .../cpp/odbc-test/src/utility_test.cpp          |    27 +-
 modules/platforms/cpp/odbc/Makefile.am          |     7 +-
 modules/platforms/cpp/odbc/README.txt           |    23 +-
 .../platforms/cpp/odbc/include/ignite/odbc.h    |    28 +-
 .../ignite/odbc/app/application_data_buffer.h   |    58 +-
 .../odbc/include/ignite/odbc/app/parameter.h    |    29 +-
 .../cpp/odbc/include/ignite/odbc/common_types.h |    29 +-
 .../include/ignite/odbc/config/configuration.h  |    59 +-
 .../ignite/odbc/diagnostic/diagnosable.h        |     7 +
 .../odbc/diagnostic/diagnosable_adapter.h       |    10 +
 .../ignite/odbc/diagnostic/diagnostic_record.h  |    19 +
 .../odbc/diagnostic/diagnostic_record_storage.h |    16 +
 .../cpp/odbc/include/ignite/odbc/message.h      |   138 +-
 .../odbc/include/ignite/odbc/query/data_query.h |    12 +-
 .../cpp/odbc/include/ignite/odbc/query/query.h  |    44 +-
 .../cpp/odbc/include/ignite/odbc/result_page.h  |     3 -
 .../cpp/odbc/include/ignite/odbc/statement.h    |   183 +-
 .../odbc/system/ui/dsn_configuration_window.h   |     8 +
 .../cpp/odbc/include/ignite/odbc/type_traits.h  |     2 +-
 .../cpp/odbc/include/ignite/odbc/utility.h      |    11 +-
 .../cpp/odbc/install/ignite-odbc-amd64.wxs      |   114 +
 .../cpp/odbc/install/ignite-odbc-install.ini    |     1 +
 .../cpp/odbc/install/ignite-odbc-x86.wxs        |   114 +
 .../cpp/odbc/install/install_amd64.cmd          |    22 +-
 .../platforms/cpp/odbc/install/install_x86.cmd  |    11 +-
 .../odbc/os/win/src/system/socket_client.cpp    |     4 +-
 .../src/system/ui/dsn_configuration_window.cpp  |    23 +-
 .../cpp/odbc/os/win/src/system/ui/window.cpp    |     2 +-
 .../platforms/cpp/odbc/project/vs/module.def    |     1 -
 .../platforms/cpp/odbc/project/vs/odbc.vcxproj  |     6 +-
 .../odbc/src/app/application_data_buffer.cpp    |   382 +-
 .../platforms/cpp/odbc/src/app/parameter.cpp    |   129 +-
 modules/platforms/cpp/odbc/src/column.cpp       |    55 +-
 modules/platforms/cpp/odbc/src/common_types.cpp |     3 +
 .../cpp/odbc/src/config/configuration.cpp       |    49 +-
 .../cpp/odbc/src/config/connection_info.cpp     |    59 +-
 modules/platforms/cpp/odbc/src/connection.cpp   |    25 +-
 .../odbc/src/diagnostic/diagnostic_record.cpp   |    34 +-
 .../diagnostic/diagnostic_record_storage.cpp    |    18 +
 modules/platforms/cpp/odbc/src/dsn_config.cpp   |    14 +-
 modules/platforms/cpp/odbc/src/entry_points.cpp |    99 +-
 modules/platforms/cpp/odbc/src/odbc.cpp         |   434 +-
 .../odbc/src/query/column_metadata_query.cpp    |     2 +-
 .../platforms/cpp/odbc/src/query/data_query.cpp |     8 +-
 .../cpp/odbc/src/query/foreign_keys_query.cpp   |     2 +-
 .../cpp/odbc/src/query/primary_keys_query.cpp   |     2 +-
 .../odbc/src/query/special_columns_query.cpp    |     2 +-
 .../cpp/odbc/src/query/table_metadata_query.cpp |     2 +-
 .../cpp/odbc/src/query/type_info_query.cpp      |     2 +-
 modules/platforms/cpp/odbc/src/statement.cpp    |   531 +-
 modules/platforms/cpp/odbc/src/type_traits.cpp  |     3 +
 modules/platforms/cpp/odbc/src/utility.cpp      |    24 +-
 modules/platforms/cpp/project/vs/ignite.slnrel  |     3 +
 .../platforms/cpp/project/vs/ignite_x86.slnrel  |     3 +
 .../Apache.Ignite.AspNet.Tests.csproj           |    77 +
 .../Apache.Ignite.AspNet.Tests.snk              |   Bin 0 -> 596 bytes
 .../Apache.Ignite.AspNet.Tests/App.config       |    73 +
 .../ExpiryCacheHolderTest.cs                    |   503 +
 .../IgniteOutputCacheProviderTest.cs            |   172 +
 .../IgniteSessionStateItemCollectionTest.cs     |   267 +
 .../IgniteSessionStateStoreDataTest.cs          |   117 +
 .../IgniteSessionStateStoreProviderTest.cs      |   488 +
 .../Properties/AssemblyInfo.cs                  |    42 +
 .../Apache.Ignite.AspNet.Tests/packages.config  |    22 +
 .../Apache.Ignite.AspNet.csproj                 |     9 +-
 .../Apache.Ignite.AspNet.nuspec                 |     4 +-
 .../Apache.Ignite.AspNet.ruleset                |     3 +
 .../IgniteOutputCacheProvider.cs                |   120 +-
 .../IgniteSessionStateStoreProvider.cs          |   509 +
 .../Apache.Ignite.AspNet/Impl/ConfigUtil.cs     |   115 +
 .../Impl/ExpiryCacheHolder.cs                   |   113 +
 .../Impl/IgniteSessionStateItemCollection.cs    |   534 +
 .../Impl/IgniteSessionStateStoreData.cs         |   116 +
 .../Impl/SessionStateLockResult.cs              |    91 +
 .../Properties/AssemblyInfo.cs                  |    13 +-
 .../Properties/AssemblyInfo.cs                  |    40 +-
 .../Apache.Ignite.Core.Tests.NuGet.csproj       |    21 +
 .../EntityFrameworkCacheTest.cs                 |    62 +
 .../Log4NetTest.cs                              |    87 +
 .../Properties/AssemblyInfo.cs                  |    38 +-
 .../packages.config                             |     4 +
 .../Properties/AssemblyInfo.cs                  |    40 +-
 .../Apache.Ignite.Core.Tests.csproj             |    23 +-
 .../AspNet/IgniteOutputCacheProviderTest.cs     |   172 -
 .../Binary/BinaryCompactFooterInteropTest.cs    |    31 +-
 .../Binary/BinaryReaderWriterTest.cs            |    29 +
 .../Affinity/AffinityFunctionSpringTest.cs      |    38 +-
 .../Cache/Affinity/AffinityFunctionTest.cs      |    33 +-
 .../Cache/CacheAbstractTest.cs                  |   121 +-
 .../Cache/CacheConfigurationTest.cs             |    25 +-
 .../Cache/CacheMetricsTest.cs                   |   252 +
 .../Cache/CacheSwapSpaceTest.cs                 |   122 +
 .../Cache/CacheTestAsyncWrapper.cs              |    13 +
 .../Cache/Query/CacheLinqTest.cs                |    72 +-
 .../Query/CacheQueriesCodeConfigurationTest.cs  |    17 +-
 .../Cache/Query/CacheQueriesTest.cs             |    58 +-
 .../Compute/ComputeApiTest.cs                   |    26 +
 .../Dataload/DataStreamerTestTopologyChange.cs  |    27 +-
 .../Examples/Example.cs                         |    11 +-
 .../Examples/ExamplesTest.cs                    |   126 +-
 .../Apache.Ignite.Core.Tests/ExceptionsTest.cs  |     3 +
 .../Apache.Ignite.Core.Tests/ExecutableTest.cs  |    64 +-
 .../IgniteConfigurationSectionTest.cs           |    20 +
 .../IgniteConfigurationSerializerTest.cs        |    48 +-
 .../IgniteConfigurationTest.cs                  |    48 +-
 .../Log/Log4NetLoggerTest.cs                    |   188 +
 .../Process/IgniteProcess.cs                    |    21 +-
 .../ProjectFilesTest.cs                         |    98 +-
 .../Properties/AssemblyInfo.cs                  |    40 +-
 .../Apache.Ignite.Core.Tests/ReconnectTest.cs   |   100 +-
 .../Services/ServicesTest.cs                    |    48 +-
 .../Apache.Ignite.Core.Tests/TestRunner.cs      |    37 +-
 .../Apache.Ignite.Core.Tests/TestUtils.cs       |     8 +-
 .../dotnet/Apache.Ignite.Core.Tests/app.config  |     1 +
 .../Apache.Ignite.Core.Tests/custom_app.config  |     1 +
 .../Apache.Ignite.Core.Tests/packages.config    |    22 +-
 .../Apache.Ignite.Core.csproj                   |    14 +-
 .../Binary/BinaryConfiguration.cs               |     5 +-
 .../dotnet/Apache.Ignite.Core/Binary/IBinary.cs |     3 +-
 .../Cache/Configuration/CacheConfiguration.cs   |    22 +
 .../dotnet/Apache.Ignite.Core/Cache/ICache.cs   |    19 +-
 .../Apache.Ignite.Core/Cache/ICacheLock.cs      |     2 +-
 .../Apache.Ignite.Core/Cache/ICacheMetrics.cs   |   244 +-
 .../Apache.Ignite.Core/Cache/Query/QueryBase.cs |    15 +-
 .../Apache.Ignite.Core/Cluster/IClusterGroup.cs |    14 +
 .../Compute/ComputeTaskSplitAdapter.cs          |     2 +-
 .../Apache.Ignite.Core/Compute/ICompute.cs      |     6 +-
 .../Apache.Ignite.Core/IgniteConfiguration.cs   |    39 +-
 .../IgniteConfigurationSection.xsd              |    63 +-
 .../dotnet/Apache.Ignite.Core/Ignition.cs       |    12 +
 .../Apache.Ignite.Core/Impl/Binary/Binary.cs    |     2 +-
 .../Impl/Binary/BinaryObjectHeader.cs           |     2 +-
 .../Impl/Binary/BinaryObjectSchemaSerializer.cs |     2 +-
 .../Impl/Binary/BinaryProcessor.cs              |   156 +
 .../Impl/Binary/BinaryReader.cs                 |     3 +-
 .../Impl/Binary/BinaryUtils.cs                  |    28 +
 .../Impl/Binary/BinaryWriter.cs                 |     6 +-
 .../Impl/Binary/Io/BinaryStreamBase.cs          |     4 +-
 .../Impl/Binary/Marshaller.cs                   |    11 +-
 .../Impl/Cache/CacheAffinityImpl.cs             |     5 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheImpl.cs  |   583 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheLock.cs  |    24 +-
 .../Impl/Cache/CacheMetricsImpl.cs              |   617 +-
 .../Apache.Ignite.Core/Impl/Cache/CacheOp.cs    |    47 +-
 .../Impl/Cache/Expiry/ExpiryPolicyFactory.cs    |    46 +
 .../Impl/Cache/Expiry/ExpiryPolicySerializer.cs |   134 +
 .../Impl/Cache/ICacheInternal.cs                |    14 +
 .../Impl/Cache/ICacheLockInternal.cs            |    47 +
 .../Impl/Cache/Query/AbstractQueryCursor.cs     |    10 +-
 .../Continuous/ContinuousQueryHandleImpl.cs     |   117 +-
 .../Impl/Cache/Query/FieldsQueryCursor.cs       |     3 +
 .../Impl/Cache/Store/CacheStore.cs              |   108 +-
 .../Impl/Cluster/ClusterGroupImpl.cs            |   150 +-
 .../Impl/Cluster/IClusterGroupEx.cs             |    35 -
 .../Apache.Ignite.Core/Impl/Common/Fnv1Hash.cs  |     2 +-
 .../Apache.Ignite.Core/Impl/Common/Future.cs    |    39 +-
 .../Common/IgniteConfigurationXmlSerializer.cs  |    21 +-
 .../Impl/Common/Listenable.cs                   |    49 +
 .../Impl/Compute/ComputeFunc.cs                 |     5 +-
 .../Impl/Compute/ComputeImpl.cs                 |    50 +-
 .../Impl/Compute/ComputeJob.cs                  |    10 +-
 .../Impl/Compute/ComputeOutFunc.cs              |     5 +-
 .../Impl/Compute/ComputeTaskHolder.cs           |    14 +-
 .../Impl/DataStructures/AtomicLong.cs           |    34 +-
 .../Impl/DataStructures/AtomicReference.cs      |     8 +-
 .../Impl/DataStructures/AtomicSequence.cs       |    26 +-
 .../Impl/Datastream/DataStreamerImpl.cs         |    49 +-
 .../Apache.Ignite.Core/Impl/Events/Events.cs    |   180 +-
 .../Apache.Ignite.Core/Impl/ExceptionUtils.cs   |     1 +
 .../Impl/Handle/HandleRegistry.cs               |     8 +-
 .../dotnet/Apache.Ignite.Core/Impl/Ignite.cs    |    41 +-
 .../Apache.Ignite.Core/Impl/IgniteProxy.cs      |    15 +-
 .../Apache.Ignite.Core/Impl/IgniteUtils.cs      |     2 +-
 .../Memory/PlatformBigEndianMemoryStream.cs     |    34 +-
 .../Impl/Messaging/Messaging.cs                 |   113 +-
 .../Apache.Ignite.Core/Impl/PlatformTarget.cs   |   268 +-
 .../Impl/Services/Services.cs                   |   148 +-
 .../Impl/SwapSpace/SwapSpaceSerializer.cs       |    99 +
 .../Impl/Transactions/TransactionsImpl.cs       |    64 +-
 .../Impl/Unmanaged/IgniteJniNativeMethods.cs    |   288 +-
 .../Impl/Unmanaged/UnmanagedCallbackHandlers.cs |    79 +-
 .../Impl/Unmanaged/UnmanagedCallbackOp.cs       |    86 +
 .../Impl/Unmanaged/UnmanagedCallbacks.cs        |  1260 +-
 .../Impl/Unmanaged/UnmanagedTarget.cs           |     2 +-
 .../Impl/Unmanaged/UnmanagedUtils.cs            |   569 +-
 .../dotnet/Apache.Ignite.Core/NuGet/Install.ps1 |    14 +
 .../NuGet/LINQPad/PutGetExample.linq            |     2 +-
 .../NuGet/LINQPad/QueryExample.linq             |     6 +-
 .../Apache.Ignite.Core/NuGet/Uninstall.ps1      |    14 +
 .../Properties/AssemblyInfo.cs                  |    43 +-
 .../SwapSpace/File/FileSwapSpaceSpi.cs          |   105 +
 .../SwapSpace/ISwapSpaceSpi.cs                  |    35 +
 .../Transactions/ITransactions.cs               |     2 +-
 .../TransactionDeadlockException.cs             |    71 +
 .../Apache.Ignite.EntityFramework.Tests.csproj  |    96 +
 .../Apache.Ignite.EntityFramework.Tests.snk     |   Bin 0 -> 596 bytes
 .../App.config                                  |    71 +
 .../ArrayDbDataReaderTests.cs                   |   192 +
 .../DbCachingPolicyTest.cs                      |    43 +
 .../EntityFrameworkCacheInitializationTest.cs   |   137 +
 .../EntityFrameworkCacheTest.cs                 |  1003 ++
 .../Properties/AssemblyInfo.cs                  |    39 +
 .../packages.config                             |    23 +
 .../Apache.Ignite.EntityFramework.csproj        |    95 +
 .../Apache.Ignite.EntityFramework.nuspec        |    57 +
 .../Apache.Ignite.EntityFramework.snk           |   Bin 0 -> 596 bytes
 .../DbCachingMode.cs                            |    48 +
 .../DbCachingPolicy.cs                          |    72 +
 .../DbQueryInfo.cs                              |    78 +
 .../IDbCachingPolicy.cs                         |    58 +
 .../IgniteDbConfiguration.cs                    |   340 +
 .../Impl/ArrayDbDataReader.cs                   |   305 +
 .../Impl/DataReaderField.cs                     |    74 +
 .../Impl/DataReaderResult.cs                    |    93 +
 .../Impl/DbCache.cs                             |   295 +
 .../Impl/DbCacheKey.cs                          |    92 +
 .../Impl/DbCommandDefinitionProxy.cs            |    51 +
 .../Impl/DbCommandInfo.cs                       |   175 +
 .../Impl/DbCommandProxy.cs                      |   263 +
 .../Impl/DbProviderServicesProxy.cs             |   169 +
 .../Impl/DbTransactionInterceptor.cs            |   134 +
 .../Properties/AssemblyInfo.cs                  |    41 +
 .../packages.config                             |    20 +
 .../Apache.Ignite.Linq.csproj                   |     2 +-
 .../Apache.Ignite.Linq/ICacheQueryable.cs       |    32 +-
 .../Impl/CacheQueryExpressionVisitor.cs         |    12 +-
 .../Apache.Ignite.Linq/Impl/ExpressionWalker.cs |     8 +
 .../Apache.Ignite.Linq/Impl/MethodVisitor.cs    |    34 +-
 .../NuGet/LINQPad/QueryExample.linq             |     4 +-
 .../Properties/AssemblyInfo.cs                  |    42 +-
 .../Apache.Ignite.Log4Net.csproj                |    76 +
 .../Apache.Ignite.Log4Net.nuspec                |    50 +
 .../Apache.Ignite.Log4Net.snk                   |   Bin 0 -> 596 bytes
 .../IgniteLog4NetLogger.cs                      |   123 +
 .../Properties/AssemblyInfo.cs                  |    40 +
 .../Apache.Ignite.Log4Net/packages.config       |    20 +
 .../Apache.Ignite.NLog.csproj                   |     4 +-
 .../Properties/AssemblyInfo.cs                  |     8 +-
 .../dotnet/Apache.Ignite.NLog/packages.config   |    18 +
 modules/platforms/dotnet/Apache.Ignite.sln      |    63 +
 .../dotnet/Apache.Ignite.sln.DotSettings        |     3 +-
 .../Apache.Ignite.sln.TeamCity.DotSettings      |     1 +
 .../Apache.Ignite/Config/ArgsConfigurator.cs    |     7 +-
 .../dotnet/Apache.Ignite/Config/Configurator.cs |    10 +
 .../Apache.Ignite/Properties/AssemblyInfo.cs    |    40 +-
 modules/platforms/dotnet/DEVNOTES.txt           |    12 +-
 modules/platforms/dotnet/README.md              |   150 +
 modules/platforms/dotnet/README.txt             |    13 +-
 modules/platforms/dotnet/build.bat              |    19 +
 modules/platforms/dotnet/build.ps1              |   211 +
 .../Apache.Ignite.Examples.csproj               |     9 +
 .../examples/Apache.Ignite.Examples/App.config  |     1 +
 .../DataStructures/AtomicLongExample.cs         |    65 +
 .../DataStructures/AtomicReferenceExample.cs    |    65 +
 .../DataStructures/AtomicSequenceExample.cs     |    88 +
 .../Datagrid/EntryProcessorExample.cs           |    90 +
 .../Datagrid/LinqExample.cs                     |     6 +-
 .../Datagrid/MultiTieredCacheExample.cs         |   138 +
 .../Datagrid/NearCacheExample.cs                |    87 +
 .../Datagrid/OptimisticTransactionExample.cs    |   110 +
 .../Datagrid/QueryExample.cs                    |    24 +-
 .../TransactionDeadlockDetectionExample.cs      |   121 +
 .../Misc/ClientReconnectExample.cs              |   159 +
 .../Properties/AssemblyInfo.cs                  |    44 +-
 .../Apache.Ignite.ExamplesDll.csproj            |     6 +
 .../Binary/Employee.cs                          |     5 +-
 .../Compute/AverageSalaryJob.cs                 |     5 +-
 .../DataStructures/AtomicLongIncrementAction.cs |    49 +
 .../AtomicReferenceModifyAction.cs              |    61 +
 .../AtomicSequenceIncrementAction.cs            |    49 +
 .../Datagrid/CacheIncrementEntryProcessor.cs    |    45 +
 .../Datagrid/CachePutEntryProcessor.cs          |    45 +
 .../Datagrid/ScanQueryFilter.cs                 |    50 +
 .../Events/LocalListener.cs                     |     2 +-
 .../Properties/AssemblyInfo.cs                  |    42 +-
 modules/rest-http/pom.xml                       |     2 +-
 modules/scalar-2.10/pom.xml                     |     2 +-
 modules/scalar/pom.xml                          |     2 +-
 modules/schedule/pom.xml                        |     2 +-
 .../schedule/IgniteScheduleProcessor.java       |     2 +-
 modules/schema-import-db/pom.xml                |     2 +-
 .../apache/ignite/schema/parser/DbColumn.java   |    16 +-
 .../parser/dialect/DatabaseMetadataDialect.java |     9 +
 .../parser/dialect/JdbcMetadataDialect.java     |    21 +-
 .../parser/dialect/MySQLMetadataDialect.java    |    24 +-
 .../parser/dialect/OracleMetadataDialect.java   |     5 +-
 modules/schema-import/pom.xml                   |     2 +-
 .../ignite/schema/model/PojoDescriptor.java     |    24 +-
 modules/slf4j/pom.xml                           |     2 +-
 modules/spark-2.10/pom.xml                      |     2 +-
 modules/spark/pom.xml                           |     2 +-
 modules/spring/pom.xml                          |     2 +-
 .../org/apache/ignite/IgniteSpringBean.java     |    23 +-
 .../src/test/config/incorrect-store-cache.xml   |     2 +
 .../src/test/config/jdbc-pojo-store-builtin.xml |    15 +-
 .../src/test/config/jdbc-pojo-store-obj.xml     |    15 +-
 modules/spring/src/test/config/node.xml         |     2 +
 modules/spring/src/test/config/node1.xml        |     2 +
 .../test/config/pojo-incorrect-store-cache.xml  |     2 +
 modules/spring/src/test/config/store-cache.xml  |     2 +
 modules/spring/src/test/config/store-cache1.xml |     2 +
 .../jdbc/CacheJdbcBlobStoreFactorySelfTest.java |    12 +-
 .../jdbc/CacheJdbcPojoStoreFactorySelfTest.java |    14 +-
 .../store/jdbc/CachePojoStoreXmlSelfTest.java   |    13 +-
 .../CachePojoStoreXmlWithSqlEscapeSelfTest.java |    28 +
 .../p2p/GridP2PUserVersionChangeSelfTest.java   |     7 +-
 .../IgniteStartFromStreamConfigurationTest.java |    18 +-
 .../testsuites/IgniteResourceSelfTestSuite.java |    11 +-
 .../testsuites/IgniteSpringTestSuite.java       |    20 +-
 modules/ssh/pom.xml                             |     2 +-
 modules/storm/pom.xml                           |     2 +-
 modules/tools/pom.xml                           |     2 +-
 .../ignite/tools/classgen/ClassesGenerator.java |     8 +-
 modules/twitter/pom.xml                         |     2 +-
 modules/urideploy/pom.xml                       |     2 +-
 .../spi/deployment/uri/UriDeploymentSpi.java    |     4 +-
 .../scanners/http/UriDeploymentHttpScanner.java |     8 +-
 modules/visor-console-2.10/pom.xml              |     2 +-
 modules/visor-console/pom.xml                   |     2 +-
 .../ignite/visor/commands/VisorConsole.scala    |     1 -
 .../commands/cache/VisorCacheCommand.scala      |    44 +-
 .../commands/cache/VisorCacheSwapCommand.scala  |   145 -
 .../commands/disco/VisorDiscoveryCommand.scala  |     2 +-
 .../commands/events/VisorEventsCommand.scala    |     8 +-
 .../scala/org/apache/ignite/visor/visor.scala   |     2 +-
 .../cswap/VisorCacheSwapCommandSpec.scala       |    89 -
 .../testsuites/VisorConsoleSelfTestSuite.scala  |     2 -
 modules/visor-plugins/pom.xml                   |     2 +-
 modules/web-agent/.gitignore                    |     2 -
 modules/web-agent/README.txt                    |    88 -
 .../web-agent/assembly/release-web-agent.xml    |    72 -
 modules/web-agent/bin/ignite-web-agent.bat      |    70 -
 modules/web-agent/bin/ignite-web-agent.sh       |    87 -
 modules/web-agent/demo/README.txt               |     4 -
 modules/web-agent/demo/db-init.sql              |   102 -
 modules/web-agent/jdbc-drivers/README.txt       |    10 -
 modules/web-agent/logs/README.txt               |     5 -
 modules/web-agent/pom.xml                       |   189 -
 .../console/agent/AgentConfiguration.java       |   268 -
 .../ignite/console/agent/AgentLauncher.java     |   344 -
 .../apache/ignite/console/agent/AgentUtils.java |   111 -
 .../console/agent/handlers/AbstractHandler.java |   110 -
 .../console/agent/handlers/DatabaseHandler.java |   298 -
 .../console/agent/handlers/RestHandler.java     |   276 -
 .../ignite/console/demo/AgentClusterDemo.java   |   638 -
 .../ignite/console/demo/AgentMetadataDemo.java  |    92 -
 .../apache/ignite/console/demo/model/Car.java   |   152 -
 .../ignite/console/demo/model/Country.java      |   152 -
 .../ignite/console/demo/model/Department.java   |   152 -
 .../ignite/console/demo/model/Employee.java     |   356 -
 .../ignite/console/demo/model/Parking.java      |   152 -
 .../src/main/resources/log4j.properties         |    53 -
 modules/web-console/.gitignore                  |     6 +
 modules/web-console/DEVNOTES.txt                |    37 +-
 modules/web-console/backend/.eslintrc           |   186 +
 modules/web-console/backend/.gitignore          |     6 +
 .../web-console/backend/agent_dists/README.txt  |     7 +
 modules/web-console/backend/app/agent.js        |   848 ++
 modules/web-console/backend/app/app.js          |    63 +
 modules/web-console/backend/app/browser.js      |   469 +
 modules/web-console/backend/app/configure.js    |    86 +
 modules/web-console/backend/app/mongo.js        |   893 ++
 modules/web-console/backend/app/mongoose.js     |    29 +
 modules/web-console/backend/app/nconf.js        |    48 +
 modules/web-console/backend/app/routes.js       |    64 +
 modules/web-console/backend/app/settings.js     |    78 +
 .../backend/config/settings.json.sample         |    23 +
 .../backend/errors/AppErrorException.js         |    36 +
 .../backend/errors/AuthFailedException.js       |    30 +
 .../backend/errors/DuplicateKeyException.js     |    28 +
 .../backend/errors/IllegalAccessError.js        |    29 +
 .../backend/errors/IllegalArgumentException.js  |    29 +
 .../backend/errors/MissingResourceException.js  |    30 +
 .../backend/errors/ServerErrorException.js      |    36 +
 modules/web-console/backend/errors/index.js     |    41 +
 modules/web-console/backend/index.js            |   106 +
 modules/web-console/backend/injector.js         |    30 +
 modules/web-console/backend/middlewares/api.js  |    44 +
 modules/web-console/backend/middlewares/host.js |    40 +
 modules/web-console/backend/middlewares/user.js |    36 +
 modules/web-console/backend/package.json        |    62 +
 modules/web-console/backend/routes/admin.js     |    84 +
 modules/web-console/backend/routes/agent.js     |    51 +
 modules/web-console/backend/routes/caches.js    |    65 +
 modules/web-console/backend/routes/clusters.js  |    64 +
 .../web-console/backend/routes/configuration.js |    41 +
 modules/web-console/backend/routes/demo.js      |   130 +
 .../web-console/backend/routes/demo/caches.json |    87 +
 .../backend/routes/demo/clusters.json           |    50 +
 .../backend/routes/demo/domains.json            |   312 +
 .../web-console/backend/routes/demo/igfss.json  |    10 +
 modules/web-console/backend/routes/domains.js   |    76 +
 modules/web-console/backend/routes/igfss.js     |    65 +
 modules/web-console/backend/routes/notebooks.js |    80 +
 modules/web-console/backend/routes/profile.js   |    74 +
 modules/web-console/backend/routes/public.js    |   129 +
 modules/web-console/backend/services/agents.js  |    83 +
 modules/web-console/backend/services/auth.js    |   118 +
 modules/web-console/backend/services/caches.js  |   154 +
 .../web-console/backend/services/clusters.js    |   148 +
 .../backend/services/configurations.js          |    59 +
 modules/web-console/backend/services/domains.js |   195 +
 modules/web-console/backend/services/igfss.js   |   144 +
 modules/web-console/backend/services/mails.js   |   131 +
 .../web-console/backend/services/notebooks.js   |   110 +
 .../web-console/backend/services/sessions.js    |    65 +
 modules/web-console/backend/services/spaces.js  |    90 +
 modules/web-console/backend/services/users.js   |   229 +
 modules/web-console/backend/test/app/db.js      |    66 +
 .../web-console/backend/test/app/httpAgent.js   |    50 +
 .../web-console/backend/test/app/mockgoose.js   |    30 +
 .../backend/test/config/settings.json           |    20 +
 .../web-console/backend/test/data/accounts.json |    19 +
 .../web-console/backend/test/data/caches.json   |    97 +
 .../web-console/backend/test/data/clusters.json |    54 +
 .../web-console/backend/test/data/domains.json  |   317 +
 .../web-console/backend/test/data/igfss.json    |    12 +
 .../web-console/backend/test/data/spaces.json   |    14 +
 modules/web-console/backend/test/index.js       |    35 +
 modules/web-console/backend/test/injector.js    |    48 +
 .../web-console/backend/test/routes/clusters.js |    83 +
 .../web-console/backend/test/routes/public.js   |    68 +
 .../backend/test/unit/AuthService.test.js       |   105 +
 .../backend/test/unit/CacheService.test.js      |   147 +
 .../backend/test/unit/ClusterService.test.js    |   147 +
 .../backend/test/unit/DomainService.test.js     |   167 +
 .../backend/test/unit/IgfsService.test.js       |   145 +
 .../docker/compose/backend/.dockerignore        |     3 +
 .../docker/compose/backend/Dockerfile           |    30 +
 .../web-console/docker/compose/backend/build.sh |    57 +
 .../docker/compose/docker-compose.yml           |    54 +
 .../docker/compose/frontend/.dockerignore       |     3 +
 .../docker/compose/frontend/Dockerfile          |    32 +
 .../docker/compose/frontend/DockerfileBuild     |    30 +
 .../docker/compose/frontend/build.sh            |    59 +
 .../docker/compose/frontend/nginx/nginx.conf    |    57 +
 .../compose/frontend/nginx/web-console.conf     |    68 +
 .../web-console/docker/standalone/.dockerignore |     7 +
 .../web-console/docker/standalone/Dockerfile    |    87 +
 modules/web-console/docker/standalone/build.sh  |    59 +
 .../docker/standalone/docker-compose.yml        |    36 +
 .../web-console/docker/standalone/entrypoint.sh |    23 +
 .../docker/standalone/nginx/nginx.conf          |    55 +
 .../docker/standalone/nginx/web-console.conf    |    63 +
 modules/web-console/frontend/.babelrc           |     9 +
 modules/web-console/frontend/.eslintrc          |   198 +
 modules/web-console/frontend/.gitignore         |     7 +
 modules/web-console/frontend/app/app.config.js  |    96 +
 modules/web-console/frontend/app/app.js         |   267 +
 .../frontend/app/controllers/auth.controller.js |    30 +
 .../controllers/reset-password.controller.js    |    50 +
 .../web-console/frontend/app/data/colors.json   |    22 +
 .../frontend/app/data/countries.json            |    94 +
 .../frontend/app/data/demo-info.json            |    14 +
 .../web-console/frontend/app/data/dialects.json |     9 +
 .../frontend/app/data/event-groups.json         |   169 +
 .../frontend/app/data/getting-started.json      |   109 +
 .../frontend/app/data/java-classes.json         |    21 +
 .../frontend/app/data/java-keywords.json        |    55 +
 .../frontend/app/data/java-primitives.json      |     9 +
 .../frontend/app/data/jdbc-types.json           |    44 +
 .../frontend/app/data/pom-dependencies.json     |    20 +
 .../frontend/app/data/sql-keywords.json         |    41 +
 .../frontend/app/decorator/select.js            |    77 +
 .../frontend/app/decorator/tooltip.js           |    73 +
 .../app/directives/auto-focus.directive.js      |    26 +
 .../app/directives/bs-affix-update.directive.js |    34 +
 .../app/directives/centered/centered.css        |    37 +
 .../directives/centered/centered.directive.js   |    26 +
 .../directives/copy-to-clipboard.directive.js   |    29 +
 .../hide-on-state-change.directive.js           |    31 +
 .../information/information.directive.js        |    30 +
 .../app/directives/information/information.jade |    20 +
 .../app/directives/information/information.scss |    56 +
 .../frontend/app/directives/match.directive.js  |    27 +
 .../app/directives/on-click-focus.directive.js  |    26 +
 .../directives/on-enter-focus-move.directive.js |    29 +
 .../app/directives/on-enter.directive.js        |    32 +
 .../app/directives/on-escape.directive.js       |    32 +
 .../app/directives/on-focus-out.directive.js    |    37 +
 .../directives/restore-input-focus.directive.js |    24 +
 .../directives/retain-selection.directive.js    |    67 +
 .../ui-ace-docker/ui-ace-docker.controller.js   |    33 +
 .../ui-ace-docker/ui-ace-docker.directive.js    |    46 +
 .../directives/ui-ace-docker/ui-ace-docker.jade |    31 +
 .../ui-ace-java/ui-ace-java.controller.js       |    92 +
 .../ui-ace-java/ui-ace-java.directive.js        |    63 +
 .../app/directives/ui-ace-java/ui-ace-java.jade |    22 +
 .../ui-ace-pojos/ui-ace-pojos.controller.js     |    95 +
 .../ui-ace-pojos/ui-ace-pojos.directive.js      |    46 +
 .../directives/ui-ace-pojos/ui-ace-pojos.jade   |    40 +
 .../ui-ace-pom/ui-ace-pom.controller.js         |    33 +
 .../ui-ace-pom/ui-ace-pom.directive.js          |    41 +
 .../app/directives/ui-ace-pom/ui-ace-pom.jade   |    17 +
 .../ui-ace-sharp/ui-ace-sharp.controller.js     |    32 +
 .../ui-ace-sharp/ui-ace-sharp.directive.js      |   133 +
 .../directives/ui-ace-sharp/ui-ace-sharp.jade   |    22 +
 .../ui-ace-spring/ui-ace-spring.controller.js   |    88 +
 .../ui-ace-spring/ui-ace-spring.directive.js    |    66 +
 .../directives/ui-ace-spring/ui-ace-spring.jade |    17 +
 .../app/directives/ui-ace-tabs.directive.js     |    24 +
 .../ui-grid-settings/ui-grid-settings.jade      |    33 +
 .../ui-grid-settings/ui-grid-settings.scss      |    38 +
 .../frontend/app/filters/byName.filter.js       |    23 +
 .../frontend/app/filters/default-name.filter.js |    21 +
 .../app/filters/domainsValidation.filter.js     |    33 +
 .../frontend/app/filters/duration.filter.js     |    41 +
 .../frontend/app/filters/hasPojo.filter.js      |    21 +
 .../frontend/app/helpers/jade/form.jade         |    28 +
 .../helpers/jade/form/form-field-checkbox.jade  |    38 +
 .../helpers/jade/form/form-field-datalist.jade  |    51 +
 .../app/helpers/jade/form/form-field-down.jade  |    18 +
 .../helpers/jade/form/form-field-dropdown.jade  |    51 +
 .../helpers/jade/form/form-field-feedback.jade  |    32 +
 .../app/helpers/jade/form/form-field-label.jade |    23 +
 .../helpers/jade/form/form-field-number.jade    |    53 +
 .../helpers/jade/form/form-field-password.jade  |    47 +
 .../app/helpers/jade/form/form-field-text.jade  |    64 +
 .../app/helpers/jade/form/form-field-up.jade    |    18 +
 .../app/helpers/jade/form/form-group.jade       |    23 +
 .../frontend/app/helpers/jade/mixins.jade       |   609 +
 .../frontend/app/modules/Demo/Demo.module.js    |   166 +
 .../frontend/app/modules/ace.module.js          |   269 +
 .../frontend/app/modules/agent/agent.module.js  |   343 +
 .../app/modules/branding/branding.module.js     |    45 +
 .../app/modules/branding/branding.provider.js   |   111 +
 .../app/modules/branding/features.directive.js  |    35 +
 .../app/modules/branding/footer.directive.js    |    34 +
 .../modules/branding/header-logo.directive.js   |    34 +
 .../app/modules/branding/header-logo.jade       |    18 +
 .../modules/branding/header-title.directive.js  |    35 +
 .../branding/powered-by-apache.directive.js     |    35 +
 .../app/modules/branding/powered-by-apache.jade |    18 +
 .../app/modules/branding/terms.directive.js     |    30 +
 .../modules/configuration/Sidebar.provider.js   |    39 +
 .../modules/configuration/Version.service.js    |    95 +
 .../configuration/configuration.module.js       |    68 +
 .../generator/AbstractTransformer.js            |   358 +
 .../modules/configuration/generator/Beans.js    |   390 +
 .../generator/ConfigurationGenerator.js         |  1843 +++
 .../configuration/generator/Custom.service.js   |    23 +
 .../configuration/generator/Docker.service.js   |    76 +
 .../generator/JavaTransformer.service.js        |  1750 +++
 .../configuration/generator/Maven.service.js    |   234 +
 .../generator/PlatformGenerator.js              |   522 +
 .../generator/Properties.service.js             |    93 +
 .../configuration/generator/Readme.service.js   |    79 +
 .../generator/SharpTransformer.service.js       |   256 +
 .../generator/SpringTransformer.service.js      |   330 +
 .../configuration/generator/StringBuilder.js    |    76 +
 .../defaults/Cache.platform.service.js          |    56 +
 .../generator/defaults/Cache.service.js         |   131 +
 .../defaults/Cluster.platform.service.js        |    43 +
 .../generator/defaults/Cluster.service.js       |   289 +
 .../generator/defaults/Event-groups.service.js  |    27 +
 .../generator/defaults/IGFS.service.js          |    64 +
 .../modules/configuration/sidebar.directive.js  |    30 +
 .../modules/dialog/dialog-content.directive.js  |    31 +
 .../modules/dialog/dialog-title.directive.js    |    31 +
 .../app/modules/dialog/dialog.controller.js     |    40 +
 .../app/modules/dialog/dialog.directive.js      |    32 +
 .../app/modules/dialog/dialog.factory.js        |    32 +
 .../frontend/app/modules/dialog/dialog.jade     |    26 +
 .../app/modules/dialog/dialog.module.js         |    32 +
 .../field/bs-select-placeholder.directive.js    |    47 +
 .../app/modules/form/field/down.directive.js    |    39 +
 .../app/modules/form/field/feedback.scss        |    37 +
 .../frontend/app/modules/form/field/field.scss  |    43 +
 .../field/form-control-feedback.directive.js    |    40 +
 .../form/field/input/autofocus.directive.js     |    30 +
 .../app/modules/form/field/input/text.scss      |    40 +
 .../app/modules/form/field/label.directive.js   |    47 +
 .../app/modules/form/field/tooltip.directive.js |    49 +
 .../app/modules/form/field/up.directive.js      |    39 +
 .../frontend/app/modules/form/form.module.js    |    94 +
 .../app/modules/form/group/add.directive.js     |    40 +
 .../app/modules/form/group/tooltip.directive.js |    40 +
 .../app/modules/form/panel/chevron.directive.js |    53 +
 .../app/modules/form/panel/field.directive.js   |    69 +
 .../app/modules/form/panel/panel.directive.js   |    37 +
 .../app/modules/form/panel/revert.directive.js  |    54 +
 .../modules/form/services/FormGUID.service.js   |    22 +
 .../form/validator/ipaddress.directive.js       |    86 +
 .../validator/java-built-in-class.directive.js  |    35 +
 .../form/validator/java-identifier.directive.js |    35 +
 .../form/validator/java-keywords.directive.js   |    39 +
 .../validator/java-package-name.directive.js    |    31 +
 .../java-package-specified.directive.js         |    39 +
 .../form/validator/property-unique.directive.js |    47 +
 .../property-value-specified.directive.js       |    31 +
 .../modules/form/validator/unique.directive.js  |    49 +
 .../modules/form/validator/uuid.directive.js    |    31 +
 .../getting-started/GettingStarted.provider.js  |   112 +
 .../frontend/app/modules/loading/loading.css    |    73 +
 .../app/modules/loading/loading.directive.js    |    51 +
 .../frontend/app/modules/loading/loading.jade   |    23 +
 .../app/modules/loading/loading.module.js       |    26 +
 .../app/modules/loading/loading.service.js      |    48 +
 .../app/modules/navbar/Navbar.provider.js       |    28 +
 .../app/modules/navbar/Userbar.provider.js      |    28 +
 .../app/modules/navbar/navbar.directive.js      |    30 +
 .../app/modules/navbar/navbar.module.js         |    33 +
 .../app/modules/navbar/userbar.directive.js     |    48 +
 .../frontend/app/modules/nodes/Nodes.service.js |    69 +
 .../modules/nodes/nodes-dialog.controller.js    |    68 +
 .../app/modules/nodes/nodes-dialog.jade         |    35 +
 .../app/modules/nodes/nodes-dialog.scss         |    37 +
 .../frontend/app/modules/nodes/nodes.module.js  |    27 +
 .../frontend/app/modules/socket.module.js       |    41 +
 .../frontend/app/modules/sql/Notebook.data.js   |   168 +
 .../app/modules/sql/Notebook.service.js         |    74 +
 .../app/modules/sql/notebook.controller.js      |    60 +
 .../frontend/app/modules/sql/sql.controller.js  |  1734 +++
 .../frontend/app/modules/sql/sql.module.js      |    58 +
 .../frontend/app/modules/states/admin.state.js  |    35 +
 .../app/modules/states/configuration.state.js   |    99 +
 .../configuration/Configuration.resource.js     |    42 +
 .../configuration/caches/client-near-cache.jade |    50 +
 .../configuration/caches/concurrency.jade       |    65 +
 .../states/configuration/caches/general.jade    |    69 +
 .../states/configuration/caches/memory.jade     |   109 +
 .../configuration/caches/near-cache-client.jade |    51 +
 .../configuration/caches/near-cache-server.jade |    52 +
 .../configuration/caches/node-filter.jade       |    59 +
 .../states/configuration/caches/query.jade      |   114 +
 .../states/configuration/caches/rebalance.jade  |    66 +
 .../states/configuration/caches/statistics.jade |    39 +
 .../states/configuration/caches/store.jade      |   250 +
 .../states/configuration/clusters/atomic.jade   |    54 +
 .../configuration/clusters/attributes.jade      |    57 +
 .../states/configuration/clusters/binary.jade   |    77 +
 .../configuration/clusters/cache-key-cfg.jade   |    50 +
 .../configuration/clusters/checkpoint.jade      |    86 +
 .../configuration/clusters/checkpoint/fs.jade   |    66 +
 .../configuration/clusters/checkpoint/jdbc.jade |    48 +
 .../configuration/clusters/checkpoint/s3.jade   |   178 +
 .../configuration/clusters/collision.jade       |    63 +
 .../clusters/collision/custom.jade              |    24 +
 .../clusters/collision/fifo-queue.jade          |    27 +
 .../clusters/collision/job-stealing.jade        |    63 +
 .../clusters/collision/priority-queue.jade      |    42 +
 .../configuration/clusters/communication.jade   |   100 +
 .../configuration/clusters/connector.jade       |   104 +
 .../configuration/clusters/deployment.jade      |   237 +
 .../configuration/clusters/discovery.jade       |    88 +
 .../states/configuration/clusters/events.jade   |    68 +
 .../states/configuration/clusters/failover.jade |    73 +
 .../states/configuration/clusters/general.jade  |    76 +
 .../clusters/general/discovery/cloud.jade       |   134 +
 .../clusters/general/discovery/google.jade      |    38 +
 .../clusters/general/discovery/jdbc.jade        |    31 +
 .../clusters/general/discovery/multicast.jade   |    99 +
 .../clusters/general/discovery/s3.jade          |    27 +
 .../clusters/general/discovery/shared.jade      |    23 +
 .../clusters/general/discovery/vm.jade          |    79 +
 .../clusters/general/discovery/zookeeper.jade   |    85 +
 .../bounded-exponential-backoff.jade            |    27 +
 .../discovery/zookeeper/retrypolicy/custom.jade |    24 +
 .../retrypolicy/exponential-backoff.jade        |    27 +
 .../zookeeper/retrypolicy/forever.jade          |    22 +
 .../zookeeper/retrypolicy/n-times.jade          |    25 +
 .../zookeeper/retrypolicy/one-time.jade         |    23 +
 .../zookeeper/retrypolicy/until-elapsed.jade    |    25 +
 .../states/configuration/clusters/igfs.jade     |    38 +
 .../configuration/clusters/load-balancing.jade  |   107 +
 .../states/configuration/clusters/logger.jade   |    66 +
 .../configuration/clusters/logger/custom.jade   |    25 +
 .../configuration/clusters/logger/log4j.jade    |    50 +
 .../configuration/clusters/logger/log4j2.jade   |    39 +
 .../configuration/clusters/marshaller.jade      |    76 +
 .../states/configuration/clusters/metrics.jade  |    51 +
 .../states/configuration/clusters/odbc.jade     |    48 +
 .../states/configuration/clusters/ssl.jade      |   110 +
 .../states/configuration/clusters/swap.jade     |    72 +
 .../states/configuration/clusters/thread.jade   |    48 +
 .../states/configuration/clusters/time.jade     |    47 +
 .../configuration/clusters/transactions.jade    |    69 +
 .../states/configuration/domains/general.jade   |    52 +
 .../states/configuration/domains/query.jade     |   172 +
 .../states/configuration/domains/store.jade     |   127 +
 .../modules/states/configuration/igfs/dual.jade |    42 +
 .../states/configuration/igfs/fragmentizer.jade |    43 +
 .../states/configuration/igfs/general.jade      |    57 +
 .../modules/states/configuration/igfs/ipc.jade  |    60 +
 .../modules/states/configuration/igfs/misc.jade |   108 +
 .../states/configuration/igfs/secondary.jade    |    45 +
 .../configuration/preview-panel.directive.js    |   239 +
 .../summary/summary-tabs.directive.js           |    50 +
 .../summary/summary-zipper.service.js           |    37 +
 .../configuration/summary/summary.controller.js |   340 +
 .../configuration/summary/summary.worker.js     |   123 +
 .../frontend/app/modules/states/errors.state.js |    43 +
 .../frontend/app/modules/states/logout.state.js |    35 +
 .../app/modules/states/password.state.js        |    46 +
 .../app/modules/states/profile.state.js         |    35 +
 .../frontend/app/modules/states/signin.state.js |    43 +
 .../app/modules/user/AclRoute.provider.js       |    47 +
 .../frontend/app/modules/user/Auth.service.js   |    55 +
 .../frontend/app/modules/user/User.service.js   |    51 +
 .../frontend/app/modules/user/permissions.js    |    28 +
 .../frontend/app/modules/user/user.module.js    |    73 +
 .../app/services/ChartColors.service.js         |    22 +
 .../frontend/app/services/Clone.service.js      |    64 +
 .../frontend/app/services/Confirm.service.js    |    68 +
 .../app/services/ConfirmBatch.service.js        |    92 +
 .../app/services/CopyToClipboard.service.js     |    50 +
 .../frontend/app/services/Countries.service.js  |    31 +
 .../app/services/ErrorPopover.service.js        |   129 +
 .../frontend/app/services/Focus.service.js      |    33 +
 .../frontend/app/services/FormUtils.service.js  |   439 +
 .../app/services/InetAddress.service.js         |    53 +
 .../frontend/app/services/JavaTypes.service.js  |   177 +
 .../app/services/LegacyTable.service.js         |   229 +
 .../app/services/LegacyUtils.service.js         |   548 +
 .../frontend/app/services/Messages.service.js   |    66 +
 .../app/services/ModelNormalizer.service.js     |    59 +
 .../frontend/app/services/SqlTypes.service.js   |    65 +
 .../app/services/UnsavedChangesGuard.service.js |    38 +
 modules/web-console/frontend/app/vendor.js      |    56 +
 .../frontend/controllers/admin-controller.js    |   234 +
 .../frontend/controllers/caches-controller.js   |   619 +
 .../frontend/controllers/clusters-controller.js |   852 ++
 .../frontend/controllers/domains-controller.js  |  1860 +++
 .../frontend/controllers/igfs-controller.js     |   416 +
 .../frontend/controllers/profile-controller.js  |    94 +
 .../frontend/gulpfile.babel.js/index.js         |    26 +
 .../frontend/gulpfile.babel.js/paths.js         |    83 +
 .../frontend/gulpfile.babel.js/tasks/build.js   |    21 +
 .../frontend/gulpfile.babel.js/tasks/bundle.js  |    32 +
 .../frontend/gulpfile.babel.js/tasks/clean.js   |    32 +
 .../frontend/gulpfile.babel.js/tasks/copy.js    |    33 +
 .../gulpfile.babel.js/tasks/ignite-modules.js   |    55 +
 .../frontend/gulpfile.babel.js/tasks/jade.js    |    49 +
 .../frontend/gulpfile.babel.js/tasks/watch.js   |    33 +
 .../gulpfile.babel.js/webpack/common.js         |   191 +
 .../webpack/environments/development.js         |    79 +
 .../webpack/environments/production.js          |    44 +
 .../webpack/environments/test.js                |    52 +
 .../frontend/gulpfile.babel.js/webpack/index.js |    34 +
 .../frontend/ignite_modules/README.txt          |     6 +
 .../frontend/ignite_modules/index.js            |    27 +
 modules/web-console/frontend/package.json       |   127 +
 modules/web-console/frontend/public/favicon.ico |   Bin 0 -> 1150 bytes
 .../frontend/public/images/cache.png            |   Bin 0 -> 24791 bytes
 .../frontend/public/images/cluster.png          |   Bin 0 -> 29376 bytes
 .../frontend/public/images/docker.png           |   Bin 0 -> 521 bytes
 .../frontend/public/images/domains.png          |   Bin 0 -> 22131 bytes
 .../web-console/frontend/public/images/igfs.png |   Bin 0 -> 14139 bytes
 .../frontend/public/images/ignite-logo.png      |   Bin 0 -> 1982 bytes
 .../frontend/public/images/ignite-logo@2x.png   |   Bin 0 -> 3325 bytes
 .../frontend/public/images/ignite-puzzle.png    |   Bin 0 -> 71974 bytes
 .../web-console/frontend/public/images/java.png |   Bin 0 -> 170 bytes
 .../frontend/public/images/pb-ignite.png        |   Bin 0 -> 3493 bytes
 .../frontend/public/images/pb-ignite@2x.png     |   Bin 0 -> 8558 bytes
 .../frontend/public/images/query-chart.png      |   Bin 0 -> 17142 bytes
 .../frontend/public/images/query-metadata.png   |   Bin 0 -> 39361 bytes
 .../frontend/public/images/query-table.png      |   Bin 0 -> 28065 bytes
 .../frontend/public/images/summary.png          |   Bin 0 -> 33650 bytes
 .../web-console/frontend/public/images/xml.png  |   Bin 0 -> 232 bytes
 .../public/stylesheets/_bootstrap-custom.scss   |    65 +
 .../stylesheets/_bootstrap-variables.scss       |   891 ++
 .../stylesheets/_font-awesome-custom.scss       |    71 +
 .../public/stylesheets/blocks/error.scss        |    31 +
 .../frontend/public/stylesheets/form-field.scss |   145 +
 .../frontend/public/stylesheets/style.scss      |  2329 +++
 .../frontend/public/stylesheets/variables.scss  |    28 +
 .../frontend/test/e2e/exampe.test.js            |    40 +
 .../frontend/test/karma.conf.babel.js           |    91 +
 modules/web-console/frontend/test/karma.conf.js |    19 +
 .../frontend/test/protractor.conf.js            |    50 +
 .../frontend/test/unit/JavaTransformer.test.js  |    57 +
 .../frontend/test/unit/JavaTypes.test.js        |   133 +
 .../frontend/test/unit/SharpTransformer.test.js |    55 +
 .../test/unit/SpringTransformer.test.js         |    57 +
 .../frontend/test/unit/SqlTypes.test.js         |    51 +
 .../frontend/test/unit/UserAuth.test.js         |    35 +
 .../frontend/test/unit/Version.test.js          |    88 +
 .../test/unit/defaultName.filter.test.js        |    38 +
 modules/web-console/frontend/views/403.jade     |    22 +
 modules/web-console/frontend/views/404.jade     |    22 +
 modules/web-console/frontend/views/base.jade    |    22 +
 .../frontend/views/configuration/caches.jade    |    54 +
 .../frontend/views/configuration/clusters.jade  |    68 +
 .../views/configuration/domains-import.jade     |   170 +
 .../frontend/views/configuration/domains.jade   |    66 +
 .../frontend/views/configuration/igfs.jade      |    51 +
 .../frontend/views/configuration/sidebar.jade   |    29 +
 .../summary-project-structure.jade              |    27 +
 .../views/configuration/summary-tabs.jade       |    25 +
 .../frontend/views/configuration/summary.jade   |    90 +
 .../frontend/views/includes/footer.jade         |    23 +
 .../frontend/views/includes/header.jade         |    52 +
 modules/web-console/frontend/views/index.jade   |    47 +
 modules/web-console/frontend/views/reset.jade   |    48 +
 .../frontend/views/settings/admin.jade          |    51 +
 .../frontend/views/settings/profile.jade        |    76 +
 modules/web-console/frontend/views/signin.jade  |   163 +
 .../frontend/views/sql/cache-metadata.jade      |    40 +
 .../frontend/views/sql/chart-settings.jade      |    40 +
 .../frontend/views/sql/notebook-new.jade        |    33 +
 .../frontend/views/sql/paragraph-rate.jade      |    31 +
 modules/web-console/frontend/views/sql/sql.jade |   278 +
 .../views/templates/agent-download.jade         |    50 +
 .../frontend/views/templates/alert.jade         |    21 +
 .../frontend/views/templates/batch-confirm.jade |    34 +
 .../frontend/views/templates/clone.jade         |    39 +
 .../frontend/views/templates/confirm.jade       |    33 +
 .../frontend/views/templates/demo-info.jade     |    47 +
 .../frontend/views/templates/dropdown.jade      |    24 +
 .../views/templates/getting-started.jade        |    34 +
 .../frontend/views/templates/message.jade       |    28 +
 .../frontend/views/templates/pagination.jade    |    32 +
 .../frontend/views/templates/select.jade        |    26 +
 .../views/templates/validation-error.jade       |    25 +
 modules/web-console/pom.xml                     |    35 +-
 modules/web-console/src/main/js/.babelrc        |     3 -
 modules/web-console/src/main/js/.eslintrc       |   202 -
 modules/web-console/src/main/js/.gitignore      |     9 -
 .../web-console/src/main/js/app/app.config.js   |    86 -
 modules/web-console/src/main/js/app/app.js      |   274 -
 .../main/js/app/controllers/auth.controller.js  |    30 -
 .../js/app/controllers/notebooks.controller.js  |    69 -
 .../controllers/reset-password.controller.js    |    51 -
 .../src/main/js/app/data/colors.json            |    22 -
 .../src/main/js/app/data/countries.json         |    94 -
 .../src/main/js/app/data/demo-info.json         |    14 -
 .../src/main/js/app/data/event-types.json       |   169 -
 .../src/main/js/app/data/getting-started.json   |   109 -
 .../src/main/js/app/data/java-classes.json      |    18 -
 .../src/main/js/app/data/java-keywords.json     |    55 -
 .../src/main/js/app/data/java-primitives.json   |     9 -
 .../src/main/js/app/data/pom-dependencies.json  |    20 -
 .../src/main/js/app/decorator/select.js         |    77 -
 .../src/main/js/app/decorator/tooltip.js        |    56 -
 .../js/app/directives/auto-focus.directive.js   |    26 -
 .../app/directives/bs-affix-update.directive.js |    34 -
 .../js/app/directives/centered/centered.css     |    37 -
 .../directives/centered/centered.directive.js   |    26 -
 .../directives/copy-to-clipboard.directive.js   |    29 -
 .../hide-on-state-change.directive.js           |    31 -
 .../information/information.directive.js        |    30 -
 .../app/directives/information/information.jade |    20 -
 .../app/directives/information/information.scss |    56 -
 .../main/js/app/directives/match.directive.js   |    27 -
 .../app/directives/on-click-focus.directive.js  |    26 -
 .../directives/on-enter-focus-move.directive.js |    29 -
 .../js/app/directives/on-enter.directive.js     |    32 -
 .../js/app/directives/on-escape.directive.js    |    32 -
 .../ui-ace-docker/ui-ace-docker.controller.js   |    33 -
 .../ui-ace-docker/ui-ace-docker.directive.js    |    46 -
 .../directives/ui-ace-docker/ui-ace-docker.jade |    31 -
 .../ui-ace-java/ui-ace-java.controller.js       |    32 -
 .../ui-ace-java/ui-ace-java.directive.js        |   133 -
 .../app/directives/ui-ace-java/ui-ace-java.jade |    22 -
 .../ui-ace-pojos/ui-ace-pojos.controller.js     |    95 -
 .../ui-ace-pojos/ui-ace-pojos.directive.js      |    46 -
 .../directives/ui-ace-pojos/ui-ace-pojos.jade   |    40 -
 .../ui-ace-pom/ui-ace-pom.controller.js         |    33 -
 .../ui-ace-pom/ui-ace-pom.directive.js          |    41 -
 .../app/directives/ui-ace-pom/ui-ace-pom.jade   |    17 -
 .../js/app/directives/ui-ace-tabs.directive.js  |    23 -
 .../ui-ace-xml/ui-ace-xml.controller.js         |    27 -
 .../ui-ace-xml/ui-ace-xml.directive.js          |   133 -
 .../app/directives/ui-ace-xml/ui-ace-xml.jade   |    17 -
 .../src/main/js/app/filters/byName.filter.js    |    23 -
 .../js/app/filters/domainsValidation.filter.js  |    33 -
 .../src/main/js/app/filters/hasPojo.filter.js   |    18 -
 .../src/main/js/app/helpers/jade/mixins.jade    |   588 -
 .../src/main/js/app/modules/Demo/Demo.module.js |   166 -
 .../js/app/modules/Version/Version.provider.js  |    32 -
 .../src/main/js/app/modules/ace.module.js       |   269 -
 .../main/js/app/modules/agent/agent.module.js   |   323 -
 .../js/app/modules/branding/branding.module.js  |    45 -
 .../app/modules/branding/branding.provider.js   |   111 -
 .../app/modules/branding/features.directive.js  |    35 -
 .../js/app/modules/branding/footer.directive.js |    34 -
 .../modules/branding/header-logo.directive.js   |    34 -
 .../js/app/modules/branding/header-logo.jade    |    18 -
 .../modules/branding/header-title.directive.js  |    35 -
 .../branding/powered-by-apache.directive.js     |    35 -
 .../app/modules/branding/powered-by-apache.jade |    18 -
 .../js/app/modules/branding/terms.directive.js  |    30 -
 .../configuration/EventGroups.provider.js       |    30 -
 .../modules/configuration/Sidebar.provider.js   |    39 -
 .../configuration/configuration.module.js       |    41 -
 .../configuration/generator/Docker.service.js   |    78 -
 .../configuration/generator/Java.service.js     |    21 -
 .../configuration/generator/Pom.service.js      |   210 -
 .../configuration/generator/Xml.service.js      |    21 -
 .../modules/configuration/sidebar.directive.js  |    30 -
 .../modules/dialog/dialog-content.directive.js  |    31 -
 .../modules/dialog/dialog-title.directive.js    |    31 -
 .../js/app/modules/dialog/dialog.controller.js  |    40 -
 .../js/app/modules/dialog/dialog.directive.js   |    32 -
 .../js/app/modules/dialog/dialog.factory.js     |    32 -
 .../src/main/js/app/modules/dialog/dialog.jade  |    26 -
 .../main/js/app/modules/dialog/dialog.module.js |    32 -
 .../field/bs-select-placeholder.directive.js    |    47 -
 .../js/app/modules/form/field/down.directive.js |    43 -
 .../modules/form/field/dropdown.directive.js    |    83 -
 .../js/app/modules/form/field/dropdown.jade     |    61 -
 .../main/js/app/modules/form/field/field.css    |    23 -
 .../app/modules/form/field/field.directive.js   |    44 -
 .../main/js/app/modules/form/field/field.jade   |    27 -
 .../field/form-control-feedback.directive.js    |    40 -
 .../form/field/input/autofocus.directive.js     |    30 -
 .../form/field/input/checkbox.directive.js      |    66 -
 .../app/modules/form/field/input/checkbox.jade  |    30 -
 .../form/field/input/datalist.directive.js      |   122 -
 .../app/modules/form/field/input/datalist.jade  |    51 -
 .../form/field/input/number.directive.js        |    76 -
 .../js/app/modules/form/field/input/number.jade |    50 -
 .../js/app/modules/form/field/input/text.css    |    41 -
 .../modules/form/field/input/text.directive.js  |   126 -
 .../js/app/modules/form/field/input/text.jade   |    48 -
 .../app/modules/form/field/label.directive.js   |    47 -
 .../app/modules/form/field/tooltip.directive.js |    49 -
 .../js/app/modules/form/field/up.directive.js   |    44 -
 .../src/main/js/app/modules/form/form.module.js |   101 -
 .../js/app/modules/form/group/add.directive.js  |    40 -
 .../app/modules/form/group/group.directive.js   |    81 -
 .../main/js/app/modules/form/group/group.jade   |    21 -
 .../app/modules/form/group/table.directive.js   |    29 -
 .../main/js/app/modules/form/group/table.jade   |    17 -
 .../app/modules/form/group/tooltip.directive.js |    40 -
 .../app/modules/form/panel/chevron.directive.js |    53 -
 .../app/modules/form/panel/panel.directive.js   |    37 -
 .../app/modules/form/panel/revert.directive.js  |    53 -
 .../form/validator/ipaddress.directive.js       |    86 -
 .../validator/java-built-in-class.directive.js  |    31 -
 .../form/validator/java-identifier.directive.js |    31 -
 .../form/validator/java-keywords.directive.js   |    42 -
 .../validator/java-package-name.directive.js    |    31 -
 .../java-package-specified.directive.js         |    34 -
 .../form/validator/property-unique.directive.js |    47 -
 .../property-value-specified.directive.js       |    31 -
 .../modules/form/validator/unique.directive.js  |    49 -
 .../getting-started/GettingStarted.provider.js  |   112 -
 .../src/main/js/app/modules/loading/loading.css |    73 -
 .../js/app/modules/loading/loading.directive.js |    51 -
 .../main/js/app/modules/loading/loading.jade    |    23 -
 .../js/app/modules/loading/loading.module.js    |    26 -
 .../js/app/modules/loading/loading.service.js   |    48 -
 .../js/app/modules/navbar/Navbar.provider.js    |    28 -
 .../js/app/modules/navbar/Userbar.provider.js   |    28 -
 .../js/app/modules/navbar/navbar.directive.js   |    30 -
 .../main/js/app/modules/navbar/navbar.module.js |    33 -
 .../js/app/modules/navbar/userbar.directive.js  |    48 -
 .../query-notebooks/query-notebooks.module.js   |   115 -
 .../src/main/js/app/modules/socket.module.js    |    41 -
 .../main/js/app/modules/states/admin.state.js   |    34 -
 .../app/modules/states/configuration.state.js   |   226 -
 .../caches/concurrency.directive.js             |    27 -
 .../configuration/caches/concurrency.jade       |    65 -
 .../configuration/caches/general.directive.js   |    27 -
 .../states/configuration/caches/general.jade    |    65 -
 .../configuration/caches/memory.directive.js    |    27 -
 .../states/configuration/caches/memory.jade     |    88 -
 .../configuration/caches/query.directive.js     |    27 -
 .../states/configuration/caches/query.jade      |    93 -
 .../configuration/caches/rebalance.directive.js |    27 -
 .../states/configuration/caches/rebalance.jade  |    65 -
 .../caches/server-near-cache.directive.js       |    27 -
 .../configuration/caches/server-near-cache.jade |    45 -
 .../caches/statistics.directive.js              |    27 -
 .../states/configuration/caches/statistics.jade |    37 -
 .../configuration/caches/store.directive.js     |    27 -
 .../states/configuration/caches/store.jade      |   271 -
 .../configuration/clusters/atomic.directive.js  |    27 -
 .../states/configuration/clusters/atomic.jade   |    53 -
 .../clusters/attributes.directive.js            |    27 -
 .../configuration/clusters/attributes.jade      |    58 -
 .../configuration/clusters/binary.directive.js  |    27 -
 .../states/configuration/clusters/binary.jade   |   100 -
 .../clusters/collision.directive.js             |    27 -
 .../configuration/clusters/collision.jade       |    60 -
 .../clusters/collision/custom.directive.js      |    27 -
 .../clusters/collision/custom.jade              |    24 -
 .../clusters/collision/fifo-queue.directive.js  |    27 -
 .../clusters/collision/fifo-queue.jade          |    28 -
 .../collision/job-stealing.directive.js         |    27 -
 .../clusters/collision/job-stealing.jade        |    64 -
 .../collision/priority-queue.directive.js       |    27 -
 .../clusters/collision/priority-queue.jade      |    43 -
 .../clusters/communication.directive.js         |    27 -
 .../configuration/clusters/communication.jade   |    96 -
 .../clusters/connector.directive.js             |    27 -
 .../configuration/clusters/connector.jade       |   103 -
 .../clusters/deployment.directive.js            |    27 -
 .../configuration/clusters/deployment.jade      |   119 -
 .../clusters/discovery.directive.js             |    27 -
 .../configuration/clusters/discovery.jade       |    83 -
 .../configuration/clusters/events.directive.js  |    27 -
 .../states/configuration/clusters/events.jade   |    37 -
 .../clusters/failover.directive.js              |    27 -
 .../states/configuration/clusters/failover.jade |    82 -
 .../configuration/clusters/general.directive.js |    27 -
 .../states/configuration/clusters/general.jade  |    68 -
 .../general/discovery/cloud.directive.js        |    27 -
 .../clusters/general/discovery/cloud.jade       |   127 -
 .../general/discovery/google.directive.js       |    27 -
 .../clusters/general/discovery/google.jade      |    38 -
 .../general/discovery/jdbc.directive.js         |    27 -
 .../clusters/general/discovery/jdbc.jade        |    24 -
 .../general/discovery/multicast.directive.js    |    27 -
 .../clusters/general/discovery/multicast.jade   |   109 -
 .../clusters/general/discovery/s3.directive.js  |    27 -
 .../clusters/general/discovery/s3.jade          |    27 -
 .../general/discovery/shared.directive.js       |    27 -
 .../clusters/general/discovery/shared.jade      |    23 -
 .../clusters/general/discovery/vm.directive.js  |    27 -
 .../clusters/general/discovery/vm.jade          |    90 -
 .../general/discovery/zookeeper.directive.js    |    27 -
 .../clusters/general/discovery/zookeeper.jade   |    74 -
 .../bounded-exponential-backoff.directive.js    |    27 -
 .../bounded-exponential-backoff.jade            |    27 -
 .../zookeeper/retrypolicy/custom.directive.js   |    27 -
 .../discovery/zookeeper/retrypolicy/custom.jade |    24 -
 .../exponential-backoff.directive.js            |    27 -
 .../retrypolicy/exponential-backoff.jade        |    27 -
 .../zookeeper/retrypolicy/forever.directive.js  |    27 -
 .../zookeeper/retrypolicy/forever.jade          |    22 -
 .../zookeeper/retrypolicy/n-times.directive.js  |    27 -
 .../zookeeper/retrypolicy/n-times.jade          |    25 -
 .../zookeeper/retrypolicy/one-time.directive.js |    27 -
 .../zookeeper/retrypolicy/one-time.jade         |    23 -
 .../retrypolicy/until-elapsed.directive.js      |    27 -
 .../zookeeper/retrypolicy/until-elapsed.jade    |    25 -
 .../configuration/clusters/igfs.directive.js    |    27 -
 .../states/configuration/clusters/igfs.jade     |    37 -
 .../configuration/clusters/logger.directive.js  |    27 -
 .../states/configuration/clusters/logger.jade   |    65 -
 .../clusters/logger/custom.directive.js         |    27 -
 .../configuration/clusters/logger/custom.jade   |    24 -
 .../clusters/logger/log4j.directive.js          |    27 -
 .../configuration/clusters/logger/log4j.jade    |    49 -
 .../clusters/logger/log4j2.directive.js         |    27 -
 .../configuration/clusters/logger/log4j2.jade   |    38 -
 .../clusters/marshaller.directive.js            |    27 -
 .../configuration/clusters/marshaller.jade      |    69 -
 .../configuration/clusters/metrics.directive.js |    27 -
 .../states/configuration/clusters/metrics.jade  |    50 -
 .../configuration/clusters/ssl.directive.js     |    27 -
 .../states/configuration/clusters/ssl.jade      |   108 -
 .../configuration/clusters/swap.directive.js    |    27 -
 .../states/configuration/clusters/swap.jade     |    67 -
 .../configuration/clusters/thread.directive.js  |    27 -
 .../states/configuration/clusters/thread.jade   |    48 -
 .../configuration/clusters/time.directive.js    |    27 -
 .../states/configuration/clusters/time.jade     |    47 -
 .../clusters/transactions.directive.js          |    27 -
 .../configuration/clusters/transactions.jade    |    59 -
 .../configuration/domains/general.directive.js  |    27 -
 .../states/configuration/domains/general.jade   |    46 -
 .../configuration/domains/query.directive.js    |    27 -
 .../states/configuration/domains/query.jade     |   169 -
 .../configuration/domains/store.directive.js    |    27 -
 .../states/configuration/domains/store.jade     |   126 -
 .../states/configuration/igfs/dual.directive.js |    27 -
 .../modules/states/configuration/igfs/dual.jade |    42 -
 .../igfs/fragmentizer.directive.js              |    27 -
 .../states/configuration/igfs/fragmentizer.jade |    43 -
 .../configuration/igfs/general.directive.js     |    27 -
 .../states/configuration/igfs/general.jade      |    53 -
 .../states/configuration/igfs/ipc.directive.js  |    27 -
 .../modules/states/configuration/igfs/ipc.jade  |    57 -
 .../states/configuration/igfs/misc.directive.js |    27 -
 .../modules/states/configuration/igfs/misc.jade |   108 -
 .../configuration/igfs/secondary.directive.js   |    27 -
 .../states/configuration/igfs/secondary.jade    |    44 -
 .../configuration/preview-panel.directive.js    |   239 -
 .../summary/summary-tabs.directive.js           |    50 -
 .../configuration/summary/summary.controller.js |   359 -
 .../configuration/summary/summary.resource.js   |    40 -
 .../main/js/app/modules/states/logout.state.js  |    36 -
 .../js/app/modules/states/password.state.js     |    46 -
 .../main/js/app/modules/states/profile.state.js |    34 -
 .../main/js/app/modules/states/signin.state.js  |    53 -
 .../src/main/js/app/modules/states/sql.state.js |    46 -
 .../main/js/app/modules/user/Auth.service.js    |    76 -
 .../main/js/app/modules/user/User.service.js    |    65 -
 .../src/main/js/app/modules/user/user.module.js |    28 -
 .../main/js/app/services/ChartColors.service.js |    22 -
 .../src/main/js/app/services/Clone.service.js   |    64 -
 .../src/main/js/app/services/Confirm.service.js |    70 -
 .../js/app/services/ConfirmBatch.service.js     |    92 -
 .../js/app/services/CopyToClipboard.service.js  |    50 -
 .../main/js/app/services/Countries.service.js   |    31 -
 .../src/main/js/app/services/Focus.service.js   |    33 -
 .../main/js/app/services/InetAddress.service.js |    53 -
 .../main/js/app/services/JavaTypes.service.js   |    84 -
 .../main/js/app/services/LegacyTable.service.js |   205 -
 .../main/js/app/services/LegacyUtils.service.js |   948 --
 .../main/js/app/services/Messages.service.js    |    63 -
 .../js/app/services/ModelNormalizer.service.js  |    59 -
 .../app/services/UnsavedChangesGuard.service.js |    38 -
 modules/web-console/src/main/js/app/vendor.js   |    54 -
 .../src/main/js/controllers/admin-controller.js |    91 -
 .../main/js/controllers/caches-controller.js    |   470 -
 .../main/js/controllers/clusters-controller.js  |   626 -
 .../main/js/controllers/domains-controller.js   |  1746 ---
 .../src/main/js/controllers/igfs-controller.js  |   401 -
 .../main/js/controllers/profile-controller.js   |    91 -
 .../src/main/js/controllers/sql-controller.js   |  1588 --
 .../src/main/js/generator/generator-common.js   |   611 -
 .../src/main/js/generator/generator-java.js     |  3404 -----
 .../src/main/js/generator/generator-optional.js |    25 -
 .../main/js/generator/generator-properties.js   |   150 -
 .../src/main/js/generator/generator-readme.js   |    85 -
 .../src/main/js/generator/generator-xml.js      |  1978 ---
 .../src/main/js/gulpfile.babel.js/index.js      |    26 -
 .../src/main/js/gulpfile.babel.js/paths.js      |    70 -
 .../main/js/gulpfile.babel.js/tasks/build.js    |    21 -
 .../main/js/gulpfile.babel.js/tasks/bundle.js   |    32 -
 .../main/js/gulpfile.babel.js/tasks/clean.js    |    32 -
 .../src/main/js/gulpfile.babel.js/tasks/copy.js |    33 -
 .../gulpfile.babel.js/tasks/ignite-modules.js   |    55 -
 .../src/main/js/gulpfile.babel.js/tasks/jade.js |    40 -
 .../main/js/gulpfile.babel.js/tasks/watch.js    |    31 -
 .../main/js/gulpfile.babel.js/webpack/common.js |   192 -
 .../webpack/environments/development.js         |    64 -
 .../webpack/environments/production.js          |    45 -
 .../main/js/gulpfile.babel.js/webpack/index.js  |    32 -
 .../webpack/plugins/progress.js                 |    82 -
 .../src/main/js/ignite_modules/README.txt       |     6 -
 .../src/main/js/ignite_modules/index.js         |    27 -
 modules/web-console/src/main/js/package.json    |   128 -
 .../web-console/src/main/js/public/favicon.ico  |   Bin 1150 -> 0 bytes
 .../src/main/js/public/images/cache.png         |   Bin 23700 -> 0 bytes
 .../src/main/js/public/images/cluster.png       |   Bin 29376 -> 0 bytes
 .../src/main/js/public/images/docker.png        |   Bin 521 -> 0 bytes
 .../src/main/js/public/images/domains.png       |   Bin 23828 -> 0 bytes
 .../src/main/js/public/images/igfs.png          |   Bin 14307 -> 0 bytes
 .../src/main/js/public/images/ignite-logo.png   |   Bin 1982 -> 0 bytes
 .../main/js/public/images/ignite-logo@2x.png    |   Bin 3325 -> 0 bytes
 .../src/main/js/public/images/ignite-puzzle.png |   Bin 71974 -> 0 bytes
 .../src/main/js/public/images/java.png          |   Bin 170 -> 0 bytes
 .../src/main/js/public/images/pb-ignite.png     |   Bin 3493 -> 0 bytes
 .../src/main/js/public/images/pb-ignite@2x.png  |   Bin 8558 -> 0 bytes
 .../src/main/js/public/images/query-chart.png   |   Bin 16637 -> 0 bytes
 .../main/js/public/images/query-metadata.png    |   Bin 32298 -> 0 bytes
 .../src/main/js/public/images/query-table.png   |   Bin 29189 -> 0 bytes
 .../src/main/js/public/images/summary.png       |   Bin 31997 -> 0 bytes
 .../src/main/js/public/images/xml.png           |   Bin 232 -> 0 bytes
 .../public/stylesheets/_bootstrap-custom.scss   |    65 -
 .../stylesheets/_bootstrap-variables.scss       |   891 --
 .../stylesheets/_font-awesome-custom.scss       |    32 -
 .../src/main/js/public/stylesheets/style.scss   |  2156 ---
 .../main/js/public/stylesheets/variables.scss   |    28 -
 modules/web-console/src/main/js/serve.js        |   116 -
 modules/web-console/src/main/js/serve/agent.js  |   714 -
 .../src/main/js/serve/agent_dists/README.txt    |     7 -
 modules/web-console/src/main/js/serve/app.js    |    42 -
 .../web-console/src/main/js/serve/browser.js    |   378 -
 .../main/js/serve/config/settings.json.sample   |    26 -
 .../web-console/src/main/js/serve/configure.js  |    84 -
 modules/web-console/src/main/js/serve/mail.js   |    75 -
 modules/web-console/src/main/js/serve/mongo.js  |   676 -
 .../src/main/js/serve/routes/admin.js           |   126 -
 .../src/main/js/serve/routes/agent.js           |    81 -
 .../src/main/js/serve/routes/caches.js          |   132 -
 .../src/main/js/serve/routes/clusters.js        |   146 -
 .../src/main/js/serve/routes/demo.js            |   135 -
 .../src/main/js/serve/routes/demo/caches.json   |    87 -
 .../src/main/js/serve/routes/demo/clusters.json |    50 -
 .../src/main/js/serve/routes/demo/domains.json  |   307 -
 .../src/main/js/serve/routes/demo/igfss.json    |    10 -
 .../src/main/js/serve/routes/domains.js         |   195 -
 .../src/main/js/serve/routes/igfs.js            |   122 -
 .../src/main/js/serve/routes/notebooks.js       |   121 -
 .../src/main/js/serve/routes/profile.js         |   102 -
 .../src/main/js/serve/routes/public.js          |   235 -
 .../src/main/js/serve/routes/routes.js          |   103 -
 .../web-console/src/main/js/serve/settings.js   |    84 -
 modules/web-console/src/main/js/views/base.jade |    22 -
 .../src/main/js/views/configuration/caches.jade |    52 -
 .../main/js/views/configuration/clusters.jade   |    64 -
 .../js/views/configuration/domains-import.jade  |   211 -
 .../main/js/views/configuration/domains.jade    |    66 -
 .../src/main/js/views/configuration/igfs.jade   |    51 -
 .../main/js/views/configuration/sidebar.jade    |    29 -
 .../summary-project-structure.jade              |    27 -
 .../js/views/configuration/summary-tabs.jade    |    25 -
 .../main/js/views/configuration/summary.jade    |   152 -
 .../src/main/js/views/includes/footer.jade      |    23 -
 .../src/main/js/views/includes/header.jade      |    51 -
 .../web-console/src/main/js/views/index.jade    |    48 -
 .../web-console/src/main/js/views/reset.jade    |    48 -
 .../src/main/js/views/settings/admin.jade       |    76 -
 .../src/main/js/views/settings/profile.jade     |    76 -
 .../web-console/src/main/js/views/signin.jade   |   163 -
 .../src/main/js/views/sql/cache-metadata.jade   |    40 -
 .../src/main/js/views/sql/chart-settings.jade   |    40 -
 .../src/main/js/views/sql/notebook-new.jade     |    31 -
 .../src/main/js/views/sql/paragraph-rate.jade   |    31 -
 .../web-console/src/main/js/views/sql/sql.jade  |   201 -
 .../main/js/views/templates/agent-download.jade |    48 -
 .../src/main/js/views/templates/alert.jade      |    21 -
 .../main/js/views/templates/batch-confirm.jade  |    32 -
 .../src/main/js/views/templates/clone.jade      |    31 -
 .../src/main/js/views/templates/confirm.jade    |    31 -
 .../src/main/js/views/templates/demo-info.jade  |    45 -
 .../src/main/js/views/templates/dropdown.jade   |    21 -
 .../js/views/templates/getting-started.jade     |    32 -
 .../src/main/js/views/templates/message.jade    |    26 -
 .../src/main/js/views/templates/pagination.jade |    32 -
 .../src/main/js/views/templates/select.jade     |    26 -
 .../js/views/templates/validation-error.jade    |    25 -
 modules/web-console/src/test/js/routes/agent.js |    94 -
 modules/web-console/web-agent/.gitignore        |     2 +
 modules/web-console/web-agent/README.txt        |    88 +
 .../web-agent/assembly/release-web-agent.xml    |    66 +
 .../web-agent/bin/ignite-web-agent.bat          |    75 +
 .../web-agent/bin/ignite-web-agent.sh           |    91 +
 modules/web-console/web-agent/demo/README.txt   |     4 +
 modules/web-console/web-agent/demo/db-init.sql  |   102 +
 .../web-agent/jdbc-drivers/README.txt           |    10 +
 modules/web-console/web-agent/logs/README.txt   |     5 +
 modules/web-console/web-agent/pom.xml           |   199 +
 .../console/agent/AgentConfiguration.java       |   265 +
 .../ignite/console/agent/AgentLauncher.java     |   342 +
 .../apache/ignite/console/agent/AgentUtils.java |   111 +
 .../console/agent/handlers/AbstractHandler.java |   110 +
 .../console/agent/handlers/DatabaseHandler.java |   298 +
 .../console/agent/handlers/RestHandler.java     |   276 +
 .../ignite/console/demo/AgentClusterDemo.java   |   639 +
 .../ignite/console/demo/AgentMetadataDemo.java  |    92 +
 .../apache/ignite/console/demo/model/Car.java   |   152 +
 .../ignite/console/demo/model/Country.java      |   152 +
 .../ignite/console/demo/model/Department.java   |   152 +
 .../ignite/console/demo/model/Employee.java     |   356 +
 .../ignite/console/demo/model/Parking.java      |   152 +
 .../src/main/resources/log4j.properties         |    53 +
 modules/web/ignite-appserver-test/pom.xml       |     2 +-
 modules/web/ignite-websphere-test/pom.xml       |     2 +-
 modules/web/pom.xml                             |     2 +-
 .../ignite/cache/websession/WebSessionV2.java   |    26 +-
 .../IgniteWebSessionSelfTestSuite.java          |    68 +-
 .../WebSessionReplicatedSelfTest.java           |    28 +
 .../WebSessionReplicatedV1SelfTest.java         |    28 +
 .../internal/websession/WebSessionSelfTest.java |     2 +
 .../WebSessionTransactionalSelfTest.java        |    48 +
 .../WebSessionTransactionalV1SelfTest.java      |    28 +
 .../websession/WebSessionV1SelfTest.java        |    28 +
 .../config/benchmark-bin-identity.properties    |    94 +
 .../config/benchmark-client-mode.properties     |     2 +
 .../config/benchmark-multicast.properties       |    15 +
 .../config/benchmark-sql-dml.properties         |    72 +
 .../config/benchmark-tx-win.properties          |     2 +
 .../yardstick/config/benchmark-tx.properties    |     2 +
 .../yardstick/config/benchmark-win.properties   |     2 +
 modules/yardstick/config/benchmark.properties   |     2 +
 modules/yardstick/config/ignite-base-config.xml |    71 +-
 .../config/ignite-bin-multicast-config.xml      |    86 +
 modules/yardstick/pom.xml                       |     2 +-
 .../yardstick/IgniteAbstractBenchmark.java      |    30 +
 .../yardstick/IgniteBenchmarkArguments.java     |    11 +
 .../ignite/yardstick/IgniteBenchmarkUtils.java  |    42 +-
 .../org/apache/ignite/yardstick/IgniteNode.java |    74 +-
 .../apache/ignite/yardstick/PreloadLogger.java  |   155 +
 .../yardstick/cache/CacheEntryEventProbe.java   |     2 +-
 .../cache/IgniteAtomicSequenceBenchmark.java    |    47 +
 .../cache/IgniteBinaryIdentityBenchmark.java    |   108 +
 .../cache/IgniteBinaryIdentityGetBenchmark.java |    34 +
 .../cache/IgniteBinaryIdentityPutBenchmark.java |    35 +
 .../IgniteFieldsBinaryIdentityGetBenchmark.java |    30 +
 .../IgniteFieldsBinaryIdentityPutBenchmark.java |    30 +
 .../cache/IgniteGetAndPutBenchmark.java         |    41 +
 .../cache/IgniteGetAndPutTxBenchmark.java       |    70 +
 .../cache/IgniteInvokeTxBenchmark.java          |    40 +
 .../yardstick/cache/IgniteIoTestBenchmark.java  |    73 +
 .../IgniteLegacyBinaryIdentityGetBenchmark.java |    30 +
 .../IgniteLegacyBinaryIdentityPutBenchmark.java |    30 +
 ...IgnitePutIfAbsentIndexedValue1Benchmark.java |    45 +
 .../IgniteReplaceIndexedValue1Benchmark.java    |    79 +
 .../cache/dml/IgniteSqlDeleteBenchmark.java     |    83 +
 .../dml/IgniteSqlDeleteFilteredBenchmark.java   |    88 +
 .../IgniteSqlInsertIndexedValue1Benchmark.java  |    48 +
 .../IgniteSqlInsertIndexedValue2Benchmark.java  |    48 +
 .../IgniteSqlInsertIndexedValue8Benchmark.java  |    48 +
 .../cache/dml/IgniteSqlMergeAllBenchmark.java   |    82 +
 .../cache/dml/IgniteSqlMergeBenchmark.java      |    42 +
 .../IgniteSqlMergeIndexedValue1Benchmark.java   |    43 +
 .../IgniteSqlMergeIndexedValue2Benchmark.java   |    43 +
 .../IgniteSqlMergeIndexedValue8Benchmark.java   |    43 +
 .../cache/dml/IgniteSqlMergeQueryBenchmark.java |   116 +
 .../cache/dml/IgniteSqlUpdateBenchmark.java     |    82 +
 .../dml/IgniteSqlUpdateFilteredBenchmark.java   |    88 +
 .../IgniteCacheRandomOperationBenchmark.java    |    22 +-
 .../yardstick/cache/model/SampleValue.java      |     2 +
 .../io/IgniteIoTestAbstractBenchmark.java       |    61 +
 .../io/IgniteIoTestSendAllBenchmark.java        |    32 +
 .../io/IgniteIoTestSendRandomBenchmark.java     |    35 +
 modules/yarn/pom.xml                            |     2 +-
 modules/zookeeper/pom.xml                       |     2 +-
 parent/pom.xml                                  |    24 +-
 pom.xml                                         |    20 +-
 3192 files changed, 251454 insertions(+), 163299 deletions(-)
----------------------------------------------------------------------



[11/24] ignite git commit: ignite-gg-11414 Add iterator wrapper for cursor

Posted by sb...@apache.org.
ignite-gg-11414 Add iterator wrapper for cursor


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

Branch: refs/heads/ignite-gg-11810
Commit: c1c15a6db0bd84de49c0f828cdeab1aed4bcd863
Parents: 8852c80
Author: Dmitriy Govorukhin <dg...@grigain.com>
Authored: Tue Jan 3 19:59:44 2017 +0300
Committer: Dmitriy Govorukhin <dg...@grigain.com>
Committed: Tue Jan 3 19:59:44 2017 +0300

----------------------------------------------------------------------
 .../util/GridCursorIteratorWrapper.java         |   8 +
 .../ignite/internal/util/lang/GridCursor.java   |   1 -
 .../query/h2/database/H2PkHashIndex.java        |  30 ++--
 .../query/h2/database/H2TreeIndex.java          |   5 +-
 .../query/h2/opt/GridH2IndexBase.java           | 163 ++++++++++++++-----
 .../query/h2/opt/GridH2TreeIndex.java           |  12 +-
 .../IgniteDistributedJoinTestSuite.java         |  38 +++++
 7 files changed, 193 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c1c15a6d/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
index bd30ace..927e365 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
@@ -9,17 +9,25 @@ import java.util.*;
  * Wrap {@code Iterator} and adapt it to {@code GridCursor}.
  */
 public class GridCursorIteratorWrapper<V> implements GridCursor<V> {
+    /** Iterator. */
     private Iterator<V> iter;
+
+    /** Next. */
     private V next;
 
+    /**
+     * @param iter Iterator.
+     */
     public GridCursorIteratorWrapper(Iterator<V> iter) {
         this.iter = iter;
     }
 
+    /** {@inheritDoc} */
     @Override public V get() throws IgniteCheckedException {
         return next;
     }
 
+    /** {@inheritDoc} */
     @Override public boolean next() throws IgniteCheckedException {
         next = iter.hasNext() ? iter.next() : null;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1c15a6d/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java
index da85f99..37d3a48 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal.util.lang;
 
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.processors.cache.database.*;
 
 /**
  * Simple cursor abstraction. Initial state must be "before first".

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1c15a6d/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
index b0647b6..eb34be6 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
@@ -101,9 +101,8 @@ public class H2PkHashIndex extends GridH2IndexBase {
         try {
             List<GridCursor<? extends CacheDataRow>> cursors = new ArrayList<>();
 
-            for (IgniteCacheOffheapManager.CacheDataStore store : cctx.offheap().cacheDataStores()) {
+            for (IgniteCacheOffheapManager.CacheDataStore store : cctx.offheap().cacheDataStores())
                 cursors.add(store.cursor(lowerObj, upperObj));
-            }
 
             return new H2Cursor(new CompositeGridCursor<>(cursors.iterator()), p);
         }
@@ -123,9 +122,8 @@ public class H2PkHashIndex extends GridH2IndexBase {
             for (IgniteCacheOffheapManager.CacheDataStore store : cctx.offheap().cacheDataStores()) {
                 CacheDataRow found = store.find(row.key);
 
-                if (found != null) {
+                if (found != null)
                     tbl.rowDescriptor().createRow(row.key(), row.partition(), row.value(), row.version(), 0);
-                }
             }
 
             return null;
@@ -191,7 +189,7 @@ public class H2PkHashIndex extends GridH2IndexBase {
     }
 
     /** {@inheritDoc} */
-    @Override public Cursor findFirstOrLast(Session session, boolean b) {
+    @Override public Cursor findFirstOrLast(Session ses, boolean b) {
         throw new UnsupportedOperationException();
     }
 
@@ -283,30 +281,30 @@ public class H2PkHashIndex extends GridH2IndexBase {
      */
     private static class CompositeGridCursor<T> implements GridCursor<T> {
         /** */
-        private final Iterator<GridCursor<? extends T>> iterator;
+        private final Iterator<GridCursor<? extends T>> iter;
 
         /** */
-        private GridCursor<? extends T> current;
+        private GridCursor<? extends T> curr;
 
         /**
          *
          */
-        public CompositeGridCursor(Iterator<GridCursor<? extends T>> iterator) {
-            this.iterator = iterator;
+        public CompositeGridCursor(Iterator<GridCursor<? extends T>> iter) {
+            this.iter = iter;
 
-            if (iterator.hasNext())
-                current = iterator.next();
+            if (iter.hasNext())
+                curr = iter.next();
         }
 
         /** {@inheritDoc} */
         @Override public boolean next() throws IgniteCheckedException {
-            if (current.next())
+            if (curr.next())
                 return true;
 
-            while (iterator.hasNext()) {
-                current = iterator.next();
+            while (iter.hasNext()) {
+                curr = iter.next();
 
-                if (current.next())
+                if (curr.next())
                     return true;
             }
 
@@ -315,7 +313,7 @@ public class H2PkHashIndex extends GridH2IndexBase {
 
         /** {@inheritDoc} */
         @Override public T get() throws IgniteCheckedException {
-            return current.get();
+            return curr.get();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1c15a6d/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
index c1eb986..31df27c 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
@@ -219,11 +219,14 @@ public class H2TreeIndex extends GridH2IndexBase {
         return tree;
     }
 
+    /** {@inheritDoc} */
     protected IgniteTree<SearchRow, GridH2Row> treeForRead() {
         return tree;
     }
 
-    protected GridCursor<GridH2Row> doFind0(IgniteTree t,
+    /** {@inheritDoc} */
+    protected GridCursor<GridH2Row> doFind0(
+        IgniteTree t,
         @Nullable SearchRow first,
         boolean includeFirst,
         @Nullable SearchRow last,

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1c15a6d/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
index bd569df..c5e836a 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.processors.query.h2.opt;
 
 import java.util.*;
 import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ConcurrentNavigableMap;
 import java.util.concurrent.Future;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
@@ -487,6 +486,8 @@ public abstract class GridH2IndexBase extends BaseIndex {
                         maxRows -= range.rows().size();
                 }
 
+                assert !ranges.isEmpty();
+
                 if (src.hasMoreRows()) {
                     // Save source for future fetches.
                     if (msg.bounds() != null)
@@ -497,8 +498,6 @@ public abstract class GridH2IndexBase extends BaseIndex {
                     qctx.putSource(node.id(), msg.batchLookupId(), null);
                 }
 
-                assert !ranges.isEmpty();
-
                 res.ranges(ranges);
                 res.status(STATUS_OK);
             }
@@ -1359,14 +1358,14 @@ public abstract class GridH2IndexBase extends BaseIndex {
         int curRangeId = -1;
 
         /** */
-        GridCursor<GridH2Row> curRange = EMPTY_CURSOR;
-
-        /** */
         final IgniteTree tree;
 
         /** */
         final IndexingQueryFilter filter;
 
+        /** Iterator. */
+        Iterator<GridH2Row> iter = emptyIterator();
+
         /**
          * @param bounds Bounds.
          * @param tree Snapshot.
@@ -1386,7 +1385,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
          * @return {@code true} If there are more rows in this source.
          */
         public boolean hasMoreRows() throws IgniteCheckedException {
-            return boundsIter.hasNext() || curRange.next();
+            return boundsIter.hasNext() || iter.hasNext();
         }
 
         /**
@@ -1396,60 +1395,56 @@ public abstract class GridH2IndexBase extends BaseIndex {
         public GridH2RowRange next(int maxRows) {
             assert maxRows > 0 : maxRows;
 
-            try {
-                for (;;) {
-                    if (curRange.next()) {
-                        // Here we are getting last rows from previously partially fetched range.
-                        List<GridH2RowMessage> rows = new ArrayList<>();
+            for (; ; ) {
+                if (iter.hasNext()) {
+                    // Here we are getting last rows from previously partially fetched range.
+                    List<GridH2RowMessage> rows = new ArrayList<>();
 
-                        GridH2RowRange nextRange = new GridH2RowRange();
+                    GridH2RowRange nextRange = new GridH2RowRange();
 
-                        nextRange.rangeId(curRangeId);
-                        nextRange.rows(rows);
+                    nextRange.rangeId(curRangeId);
+                    nextRange.rows(rows);
 
-                        do {
-                            rows.add(toRowMessage(curRange.get()));
-                        }
-                        while (rows.size() < maxRows && curRange.next());
+                    do {
+                        rows.add(toRowMessage(iter.next()));
+                    }
+                    while (rows.size() < maxRows && iter.hasNext());
 
-                        if (curRange.next())
-                            nextRange.setPartial();
-                        else
-                            curRange = EMPTY_CURSOR;
+                    if (iter.hasNext())
+                        nextRange.setPartial();
+                    else
+                        iter = emptyIterator();
 
-                        return nextRange;
-                    }
+                    return nextRange;
+                }
 
-                    curRange = EMPTY_CURSOR;
+                iter = emptyIterator();
 
-                    if (!boundsIter.hasNext()) {
-                        boundsIter = emptyIterator();
+                if (!boundsIter.hasNext()) {
+                    boundsIter = emptyIterator();
 
-                        return null;
-                    }
+                    return null;
+                }
 
-                    GridH2RowRangeBounds bounds = boundsIter.next();
+                GridH2RowRangeBounds bounds = boundsIter.next();
 
-                    curRangeId = bounds.rangeId();
+                curRangeId = bounds.rangeId();
 
-                    SearchRow first = toSearchRow(bounds.first());
-                    SearchRow last = toSearchRow(bounds.last());
+                SearchRow first = toSearchRow(bounds.first());
+                SearchRow last = toSearchRow(bounds.last());
 
-                    IgniteTree t = tree != null ? tree : treeForRead();
+                IgniteTree t = tree != null ? tree : treeForRead();
 
-                    curRange = doFind0(t, first, true, last, filter);
+                iter = new CursorIteratorWrapper(doFind0(t, first, true, last, filter));
 
-                    if (!curRange.next()) {
-                        // We have to return empty range here.
-                        GridH2RowRange emptyRange = new GridH2RowRange();
+                if (!iter.hasNext()) {
+                    // We have to return empty range here.
+                    GridH2RowRange emptyRange = new GridH2RowRange();
 
-                        emptyRange.rangeId(curRangeId);
+                    emptyRange.rangeId(curRangeId);
 
-                        return emptyRange;
-                    }
+                    return emptyRange;
                 }
-            } catch (IgniteCheckedException e) {
-                throw DbException.convert(e);
             }
         }
     }
@@ -1469,7 +1464,8 @@ public abstract class GridH2IndexBase extends BaseIndex {
      * @param filter Filter.
      * @return Iterator over rows in given range.
      */
-    protected GridCursor<GridH2Row> doFind0(IgniteTree t,
+    protected GridCursor<GridH2Row> doFind0(
+        IgniteTree t,
         @Nullable SearchRow first,
         boolean includeFirst,
         @Nullable SearchRow last,
@@ -1492,6 +1488,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
         /** Is value required for filtering predicate? */
         private final boolean isValRequired;
 
+        /** */
         private GridH2Row next;
 
         /**
@@ -1540,6 +1537,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
             return fltr.apply(key, val);
         }
 
+        /** {@inheritDoc} */
         @Override public boolean next() throws IgniteCheckedException {
             next = null;
 
@@ -1555,6 +1553,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
             return false;
         }
 
+        /** {@inheritDoc} */
         @Override public GridH2Row get() throws IgniteCheckedException {
             if (next == null)
                 throw new NoSuchElementException();
@@ -1563,6 +1562,80 @@ public abstract class GridH2IndexBase extends BaseIndex {
         }
     }
 
+    /**
+     *
+     */
+    private static final class CursorIteratorWrapper implements Iterator<GridH2Row> {
+        /** */
+        private final GridCursor<GridH2Row> cursor;
+
+        /** First next. */
+        private GridH2Row firstNext;
+
+        /** Second next. */
+        private GridH2Row secondNext;
+
+        /**
+         * @param cursor Cursor.
+         */
+        private CursorIteratorWrapper(GridCursor<GridH2Row> cursor) {
+            this.cursor = cursor;
+
+            fetch();
+        }
+
+        /** {@inheritDoc} */
+        @Override public boolean hasNext() {
+            return firstNext != null;
+        }
+
+        /** {@inheritDoc} */
+        @Override public GridH2Row next() {
+            try {
+                if (firstNext != null) {
+                    GridH2Row res = firstNext;
+
+                    firstNext = secondNext;
+
+                    if (cursor.next())
+                        secondNext = cursor.get();
+                    else
+                        secondNext = null;
+                    return res;
+                }
+                else
+                    return null;
+            }
+            catch (Exception e) {
+                return null;
+            }
+        }
+
+        /**
+         *
+         */
+        private void fetch() {
+            try {
+                if (firstNext == null && secondNext == null) {
+                    if (cursor.next()) {
+                        firstNext = cursor.get();
+
+                        if (cursor.next())
+                            secondNext = cursor.get();
+                    }
+                }
+            }
+            catch (IgniteCheckedException ignored) {
+
+            }
+        }
+
+        /** {@inheritDoc} */
+        @Override public void remove() {
+            throw new UnsupportedOperationException("operation is not supported");
+        }
+    }
+
     /** Empty cursor. */
     protected static final GridCursor<GridH2Row> EMPTY_CURSOR = new GridCursor<GridH2Row>() {
         /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1c15a6d/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
index 002b432..014cf2e 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
@@ -503,20 +503,27 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
      * Adapter from {@link NavigableMap} to {@link IgniteTree}.
      */
     private final class IgniteNavigableMapTree implements IgniteTree<GridSearchRowPointer, GridH2Row> {
-        private NavigableMap<GridSearchRowPointer, GridH2Row> tree;
+        /** Tree. */
+        private final NavigableMap<GridSearchRowPointer, GridH2Row> tree;
 
+        /**
+         * @param tree Tree.
+         */
         public IgniteNavigableMapTree(NavigableMap<GridSearchRowPointer, GridH2Row> tree) {
             this.tree = tree;
         }
 
+        /** {@inheritDoc} */
         @Override public GridH2Row put(GridH2Row value) throws IgniteCheckedException {
             return tree.put(value, value);
         }
 
+        /** {@inheritDoc} */
         @Override public GridH2Row findOne(GridSearchRowPointer key) throws IgniteCheckedException {
             return tree.get(key);
         }
 
+        /** {@inheritDoc} */
         @Override public GridCursor<GridH2Row> find(GridSearchRowPointer lower, GridSearchRowPointer upper)
             throws IgniteCheckedException {
             if (lower == null || upper == null)
@@ -528,14 +535,17 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
             return new GridCursorIteratorWrapper<GridH2Row>(subMap.values().iterator());
         }
 
+        /** {@inheritDoc} */
         @Override public GridH2Row remove(GridSearchRowPointer key) throws IgniteCheckedException {
             return tree.remove(key);
         }
 
+        /** {@inheritDoc} */
         @Override public long size() throws IgniteCheckedException {
             return tree.size();
         }
 
+        /** {@inheritDoc} */
         @Override public IgniteNavigableMapTree clone() {
             AbstractMap copy;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1c15a6d/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDistributedJoinTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDistributedJoinTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDistributedJoinTestSuite.java
new file mode 100644
index 0000000..dca640f
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDistributedJoinTestSuite.java
@@ -0,0 +1,38 @@
+package org.apache.ignite.testsuites;
+
+import junit.framework.TestSuite;
+import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinCollocatedAndNotTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinCustomAffinityMapper;
+import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinNoIndexTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinPartitionedAndReplicatedTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinQueryConditionsTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNodeRestartDistributedJoinSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryStopOnCancelOrTimeoutDistributedJoinSelfTest;
+import org.apache.ignite.internal.processors.query.IgniteSqlDistributedJoinSelfTest;
+import org.apache.ignite.internal.processors.query.h2.sql.H2CompareBigQueryDistributedJoinsTest;
+
+/**
+ *
+ */
+public class IgniteDistributedJoinTestSuite extends TestSuite {
+    /**
+     *
+     */
+    public static TestSuite suite() {
+        TestSuite suite = new TestSuite("Distributed Joins Test Suite.");
+
+        suite.addTestSuite(H2CompareBigQueryDistributedJoinsTest.class);
+        suite.addTestSuite(IgniteCacheDistributedJoinCollocatedAndNotTest.class);
+        suite.addTestSuite(IgniteCacheDistributedJoinCustomAffinityMapper.class);
+        suite.addTestSuite(IgniteCacheDistributedJoinNoIndexTest.class);
+        suite.addTestSuite(IgniteCacheDistributedJoinPartitionedAndReplicatedTest.class);
+        suite.addTestSuite(IgniteCacheDistributedJoinQueryConditionsTest.class);
+        suite.addTestSuite(IgniteCacheDistributedJoinTest.class);
+        suite.addTestSuite(IgniteCacheQueryNodeRestartDistributedJoinSelfTest.class);
+        suite.addTestSuite(IgniteCacheQueryStopOnCancelOrTimeoutDistributedJoinSelfTest.class);
+        suite.addTestSuite(IgniteSqlDistributedJoinSelfTest.class);
+
+        return suite;
+    }
+}


[22/24] ignite git commit: Merge branch 'ignite-3477' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-gg-8.0.2.ea2

Posted by sb...@apache.org.
Merge branch 'ignite-3477' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-gg-8.0.2.ea2


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

Branch: refs/heads/ignite-gg-11810
Commit: 79a546a97448aba01c67ef52177e6c293dd3cf74
Parents: 43eefb0 3443c4e
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Wed Jan 11 20:26:53 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Jan 11 20:26:53 2017 +0300

----------------------------------------------------------------------
 .../JettyRestProcessorAbstractSelfTest.java     |   2 +-
 .../internal/managers/GridManagerAdapter.java   |   3 +-
 .../processors/cache/GridCacheAdapter.java      |   7 +-
 .../cache/GridCacheConcurrentMapImpl.java       |   7 +-
 .../processors/cache/GridCacheMapEntry.java     |   8 ++
 .../GridCachePartitionExchangeManager.java      | 115 +++++++++----------
 .../cache/GridCacheSharedContext.java           |  23 +++-
 .../distributed/dht/GridDhtCacheEntry.java      |   2 +-
 .../distributed/dht/GridDhtLocalPartition.java  |   9 +-
 .../dht/GridDhtPartitionTopologyImpl.java       |   8 +-
 .../dht/GridPartitionedGetFuture.java           |   4 +-
 .../dht/GridPartitionedSingleGetFuture.java     |   4 +-
 .../dht/atomic/GridDhtAtomicCache.java          |  60 +++++-----
 .../dht/preloader/GridDhtForceKeysFuture.java   |  10 +-
 .../GridDhtPartitionsExchangeFuture.java        |  30 ++---
 .../dht/preloader/GridDhtPreloader.java         |   2 +-
 .../extras/GridCacheAttributesEntryExtras.java  |   4 +-
 .../GridCacheAttributesMvccEntryExtras.java     |   2 +-
 ...dCacheAttributesMvccObsoleteEntryExtras.java |   2 +-
 ...cheAttributesMvccObsoleteTtlEntryExtras.java |   4 +-
 .../GridCacheAttributesMvccTtlEntryExtras.java  |   4 +-
 .../GridCacheAttributesObsoleteEntryExtras.java |   2 +-
 ...idCacheAttributesObsoleteTtlEntryExtras.java |   4 +-
 .../GridCacheAttributesTtlEntryExtras.java      |   4 +-
 .../GridCacheMvccObsoleteEntryExtras.java       |   2 +-
 .../GridCacheMvccObsoleteTtlEntryExtras.java    |   4 +-
 .../extras/GridCacheMvccTtlEntryExtras.java     |   3 +-
 .../extras/GridCacheObsoleteTtlEntryExtras.java |   3 +-
 .../cache/extras/GridCacheTtlEntryExtras.java   |   2 +-
 .../cache/CacheConfigurationLeakTest.java       |   4 +-
 .../cache/GridCacheAbstractMetricsSelfTest.java |  28 ++---
 .../GridCacheValueBytesPreloadingSelfTest.java  |  17 +--
 ...CacheLoadingConcurrentGridStartSelfTest.java |   2 +
 ...tractPartitionedByteArrayValuesSelfTest.java |   1 +
 ...GridCachePreloadRestartAbstractSelfTest.java |  12 +-
 .../GridCacheDhtEvictionsDisabledSelfTest.java  |   3 +-
 .../GridCacheReplicatedPreloadSelfTest.java     |  25 ++--
 .../testsuites/IgniteCacheTestSuite2.java       |  15 +--
 .../testsuites/IgniteCacheTestSuite3.java       |  13 ++-
 .../testsuites/IgniteCacheTestSuite5.java       |   4 +-
 .../IgniteCacheQuerySelfTestSuite2.java         |   5 +-
 modules/yardstick/config/ignite-base-config.xml |   2 +-
 .../yardstick/cache/IgniteGetAllBenchmark.java  |  42 +++++++
 .../yardstick/cache/IgniteGetBenchmark.java     |  38 +++++-
 .../cache/jdbc/JdbcAbstractBenchmark.java       |  17 +++
 .../yardstick/cache/jdbc/JdbcPutBenchmark.java  |  17 +++
 .../cache/jdbc/JdbcPutGetBenchmark.java         |  17 +++
 .../jdbc/JdbcPutIndexedValue8Benchmark.java     |  17 +++
 .../cache/jdbc/JdbcSqlQueryBenchmark.java       |  17 +++
 .../cache/jdbc/JdbcSqlQueryJoinBenchmark.java   |  17 +++
 50 files changed, 442 insertions(+), 205 deletions(-)
----------------------------------------------------------------------



[17/24] ignite git commit: ignite-gg-11414 distribution join in one suit

Posted by sb...@apache.org.
ignite-gg-11414 distribution join in one suit


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

Branch: refs/heads/ignite-gg-11810
Commit: 9af39adbd353c2fbebf982f239c78f8e0aa9e77c
Parents: 2b6484a
Author: Dmitriy Govorukhin <dg...@gridgain.com>
Authored: Tue Jan 10 15:31:19 2017 +0300
Committer: Dmitriy Govorukhin <dg...@gridgain.com>
Committed: Tue Jan 10 15:31:19 2017 +0300

----------------------------------------------------------------------
 .../query/IgniteSqlDistributedJoinSelfTest.java      |  7 +++++++
 .../testsuites/IgniteCacheQuerySelfTestSuite.java    | 15 ---------------
 .../testsuites/IgniteCacheQuerySelfTestSuite3.java   |  2 ++
 3 files changed, 9 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/9af39adb/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
index d851a31..e9f41c8 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
@@ -80,6 +80,9 @@ public class IgniteSqlDistributedJoinSelfTest extends GridCommonAbstractTest {
             .setIndexedTypes(idxTypes);
     }
 
+    /**
+     *
+     */
     public void testNonCollocatedDistributedJoin() throws Exception {
         CacheConfiguration ccfg1 = cacheConfig("pers", true, String.class, Person.class);
         CacheConfiguration ccfg2 = cacheConfig("org", true, String.class, Organization.class);
@@ -111,6 +114,10 @@ public class IgniteSqlDistributedJoinSelfTest extends GridCommonAbstractTest {
         }
     }
 
+    /**
+     * @param c1 Cache1.
+     * @param c2 Cache2.
+     */
     private void populateDataIntoCaches(IgniteCache<String, Person> c1, IgniteCache<String, Organization> c2) {
         int personId = 0;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/9af39adb/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
index fbbdf76..1f93656 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
@@ -45,12 +45,6 @@ import org.apache.ignite.internal.processors.cache.IgniteBinaryObjectQueryArgume
 import org.apache.ignite.internal.processors.cache.IgniteBinaryWrappedObjectFieldsQuerySelfTest;
 import org.apache.ignite.internal.processors.cache.IgniteCacheCollocatedQuerySelfTest;
 import org.apache.ignite.internal.processors.cache.IgniteCacheDeleteSqlQuerySelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinCollocatedAndNotTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinCustomAffinityMapper;
-import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinNoIndexTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinPartitionedAndReplicatedTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinQueryConditionsTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheDistributedJoinTest;
 import org.apache.ignite.internal.processors.cache.IgniteCacheDuplicateEntityConfigurationSelfTest;
 import org.apache.ignite.internal.processors.cache.IgniteCacheFieldsQueryNoDataSelfTest;
 import org.apache.ignite.internal.processors.cache.IgniteCacheInsertSqlQuerySelfTest;
@@ -82,7 +76,6 @@ import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheP
 import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCachePartitionedSnapshotEnabledQuerySelfTest;
 import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryAbstractDistributedJoinSelfTest;
 import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNoRebalanceSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryStopOnCancelOrTimeoutDistributedJoinSelfTest;
 import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedFieldsQueryP2PEnabledSelfTest;
 import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedFieldsQuerySelfTest;
 import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedQueryP2PDisabledSelfTest;
@@ -165,18 +158,11 @@ public class IgniteCacheQuerySelfTestSuite extends TestSuite {
         suite.addTestSuite(IgniteCachePrimitiveFieldsQuerySelfTest.class);
 
         suite.addTestSuite(IgniteCacheJoinQueryWithAffinityKeyTest.class);
-        suite.addTestSuite(IgniteCacheDistributedJoinCollocatedAndNotTest.class);
-        suite.addTestSuite(IgniteCacheDistributedJoinPartitionedAndReplicatedTest.class);
-        suite.addTestSuite(IgniteCacheDistributedJoinQueryConditionsTest.class);
-        suite.addTestSuite(IgniteCacheDistributedJoinTest.class);
         suite.addTestSuite(IgniteCacheJoinPartitionedAndReplicatedTest.class);
-        suite.addTestSuite(IgniteCacheDistributedJoinNoIndexTest.class);
         suite.addTestSuite(IgniteCrossCachesJoinsQueryTest.class);
 
         suite.addTestSuite(IgniteCacheMultipleIndexedTypesTest.class);
 
-        suite.addTestSuite(IgniteCacheDistributedJoinCustomAffinityMapper.class);
-
         suite.addTestSuite(IgniteCacheMergeSqlQuerySelfTest.class);
         suite.addTestSuite(IgniteCacheInsertSqlQuerySelfTest.class);
         suite.addTestSuite(IgniteCacheUpdateSqlQuerySelfTest.class);
@@ -237,7 +223,6 @@ public class IgniteCacheQuerySelfTestSuite extends TestSuite {
 
         suite.addTestSuite(IgniteCacheDistributedQueryCancelSelfTest.class);
         suite.addTestSuite(IgniteCacheLocalQueryCancelOrTimeoutSelfTest.class);
-        suite.addTestSuite(IgniteCacheQueryStopOnCancelOrTimeoutDistributedJoinSelfTest.class);
 
         // Other.
         suite.addTestSuite(CacheQueryNewClientSelfTest.class);

http://git-wip-us.apache.org/repos/asf/ignite/blob/9af39adb/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite3.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite3.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite3.java
index a379947..4eaaab8 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite3.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite3.java
@@ -122,6 +122,8 @@ public class IgniteCacheQuerySelfTestSuite3 extends TestSuite {
         suite.addTestSuite(IgniteCacheContinuousQueryBackupQueueTest.class);
         suite.addTestSuite(IgniteCacheContinuousQueryNoUnsubscribeTest.class);
 
+        suite.addTest(IgniteDistributedJoinTestSuite.suite());
+
         return suite;
     }
 }


[20/24] ignite git commit: Merge branch 'ignite-gg-11414' into ignite-gg-8.0.2.ea2

Posted by sb...@apache.org.
Merge branch 'ignite-gg-11414' into ignite-gg-8.0.2.ea2


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

Branch: refs/heads/ignite-gg-11810
Commit: 2266e2ac3af446ab36c9d646d2b8abde719295e9
Parents: 6c6cbd3 e03a980
Author: Dmitriy Govorukhin <dg...@gridgain.com>
Authored: Wed Jan 11 14:39:56 2017 +0300
Committer: Dmitriy Govorukhin <dg...@gridgain.com>
Committed: Wed Jan 11 14:39:56 2017 +0300

----------------------------------------------------------------------
 .../configuration/CacheConfiguration.java       |  30 ---
 .../cache/IgniteCacheOffheapManagerImpl.java    |   6 +-
 .../cache/database/tree/BPlusTree.java          |  19 +-
 .../util/GridCursorIteratorWrapper.java         |  36 ++++
 .../apache/ignite/internal/util/IgniteTree.java |  70 +++++++
 .../offheap/unsafe/GridOffHeapSnapTreeMap.java  |  11 +-
 .../internal/util/snaptree/SnapTreeMap.java     |  10 +-
 .../processors/database/BPlusTreeSelfTest.java  |  33 ++++
 .../query/h2/opt/GridH2SpatialIndex.java        |  24 ++-
 .../internal/processors/query/h2/H2Cursor.java  | 105 ++++++++++
 .../processors/query/h2/IgniteH2Indexing.java   |  42 +---
 .../query/h2/database/H2PkHashIndex.java        |  37 ++--
 .../query/h2/database/H2TreeIndex.java          | 133 +++++--------
 .../query/h2/opt/GridH2IndexBase.java           | 182 ++++++++++++-----
 .../processors/query/h2/opt/GridH2Table.java    |   4 +-
 .../query/h2/opt/GridH2TreeIndex.java           | 195 ++++++++++++-------
 .../cache/IgniteCacheAbstractQuerySelfTest.java |   2 +-
 .../query/IgniteSqlDistributedJoinSelfTest.java | 179 +++++++++++++++++
 .../query/IgniteSqlSplitterSelfTest.java        |   6 +-
 .../query/h2/opt/GridH2TableSelfTest.java       |  29 +--
 .../query/h2/sql/GridQueryParsingTest.java      |   2 +-
 .../IgniteCacheQuerySelfTestSuite.java          |  15 --
 .../IgniteCacheQuerySelfTestSuite3.java         |   2 +
 .../IgniteDistributedJoinTestSuite.java         |  38 ++++
 24 files changed, 862 insertions(+), 348 deletions(-)
----------------------------------------------------------------------



[12/24] ignite git commit: Merge branch 'ignite-gg-8.0.2.ea2' of https://github.com/gridgain/apache-ignite into ignite-gg-11414

Posted by sb...@apache.org.
Merge branch 'ignite-gg-8.0.2.ea2' of https://github.com/gridgain/apache-ignite into ignite-gg-11414


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

Branch: refs/heads/ignite-gg-11810
Commit: d63b3862a43a142f248ac96bc3fd1c02705172da
Parents: c1c15a6 06de699
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Mon Jan 9 17:59:15 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Jan 9 17:59:15 2017 +0300

----------------------------------------------------------------------
 .../cache/CacheOffheapEvictionManager.java      |  90 +++++++++++++
 .../cache/CacheOfheapEvictionManager.java       |  90 -------------
 .../cache/DynamicCacheDescriptor.java           |  17 +++
 .../processors/cache/GridCacheProcessor.java    |  49 +++++---
 .../cache/GridCacheSharedTtlCleanupManager.java |   5 +-
 .../processors/cache/GridCacheTtlManager.java   |  11 +-
 .../GridChangeGlobalStateMessageResponse.java   |   2 +-
 .../cache/IgniteCacheOffheapManager.java        |   6 +
 .../cache/IgniteCacheOffheapManagerImpl.java    |  40 ++++--
 .../IgniteCacheDatabaseSharedManager.java       |  16 ++-
 .../cache/database/tree/BPlusTree.java          |   4 +-
 .../GridDistributedTxRemoteAdapter.java         |  14 +--
 .../distributed/dht/GridDhtLocalPartition.java  |  40 +++++-
 .../dht/GridDhtPartitionTopologyImpl.java       | 126 +++++++++----------
 .../GridDhtPartitionsExchangeFuture.java        |  51 +++++---
 .../processors/cache/local/GridLocalCache.java  |   7 +-
 .../continuous/CacheContinuousQueryHandler.java |  20 +--
 .../cluster/GridClusterStateProcessor.java      |   9 +-
 .../util/future/IgniteRemoteMapTask.java        |  17 +++
 .../ignite/spi/discovery/tcp/ServerImpl.java    |  16 ++-
 .../GridCommunicationSendMessageSelfTest.java   |   7 +-
 .../cache/CacheClientStoreSelfTest.java         |   6 +-
 .../cache/GridCacheAbstractTxReadTest.java      |   2 -
 .../cache/GridCacheBasicStoreAbstractTest.java  |   2 +-
 .../IgniteCacheConfigVariationsFullApiTest.java |  35 ++++--
 .../IgniteCacheReadThroughEvictionSelfTest.java |   5 +-
 .../database/tree/io/TrackingPageIOTest.java    |  17 +++
 ...teSynchronizationModesMultithreadedTest.java |   2 +-
 .../near/GridCacheNearReadersSelfTest.java      |   3 +-
 .../near/NoneRebalanceModeSelfTest.java         |   4 +-
 ...cheLocalBasicStoreMultithreadedSelfTest.java |   1 +
 .../GridCacheContinuousQueryConcurrentTest.java |  47 +++----
 .../IgniteCacheQueryMultiThreadedSelfTest.java  |  10 +-
 .../IgniteCacheQueryNodeRestartSelfTest.java    |   3 +-
 34 files changed, 475 insertions(+), 299 deletions(-)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/ignite/blob/d63b3862/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
----------------------------------------------------------------------


[03/24] ignite git commit: tests have been fixed

Posted by sb...@apache.org.
tests have been fixed


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

Branch: refs/heads/ignite-gg-11810
Commit: df7b4f65fbea86310c953c7bd41d2fd7ab85831e
Parents: b2999f2
Author: Sergey Sidorov <ss...@gridgain.com>
Authored: Wed Nov 16 16:50:55 2016 +0300
Committer: Sergey Sidorov <ss...@gridgain.com>
Committed: Wed Nov 16 16:50:55 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/query/IgniteSqlSplitterSelfTest.java   | 6 ++++--
 .../internal/processors/query/h2/sql/GridQueryParsingTest.java | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/df7b4f65/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
index b5c3d7c..4e9f3c7 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
@@ -269,8 +269,10 @@ public class IgniteSqlSplitterSelfTest extends GridCommonAbstractTest {
             c1.put(4, new Person2(2, "p2"));
             c1.put(5, new Person2(3, "p3"));
 
-            String select = "select o.name n1, p.name n2 from Person2 p, Organization o where p.orgId = o._key and o._key=1" +
-                " union select o.name n1, p.name n2 from Person2 p, Organization o where p.orgId = o._key and o._key=2";
+            String select = "select o.name n1, p.name n2 from Person2 p, \"org\".Organization o" +
+                            " where p.orgId = o._key and o._key=1" +
+                            " union select o.name n1, p.name n2 from Person2 p, \"org\".Organization o" +
+                            " where p.orgId = o._key and o._key=2";
 
             String plan = (String)c1.query(new SqlFieldsQuery("explain " + select)
                 .setDistributedJoins(true).setEnforceJoinOrder(true))

http://git-wip-us.apache.org/repos/asf/ignite/blob/df7b4f65/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
index 9e65835..5c7139f 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
@@ -155,7 +155,7 @@ public class GridQueryParsingTest extends GridCommonAbstractTest {
 
         checkQuery("select avg(old) from Person left join \"addr\".Address where Person.addrId = Address.id " +
             "and lower(Address.street) = lower(?)");
-        checkQuery("select avg(old) from Person right join Address where Person.addrId = Address.id " +
+        checkQuery("select avg(old) from Person right join \"addr\".Address where Person.addrId = Address.id " +
             "and lower(Address.street) = lower(?)");
 
         checkQuery("select avg(old) from Person, \"addr\".Address where Person.addrId = Address.id " +


[14/24] ignite git commit: ignite-gg-11414 minor update

Posted by sb...@apache.org.
ignite-gg-11414 minor update


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

Branch: refs/heads/ignite-gg-11810
Commit: bb2ad161888b676bd8afc7d4783fe939332f7064
Parents: c7f1cce
Author: Dmitriy Govorukhin <dg...@gridgain.com>
Authored: Mon Jan 9 18:38:43 2017 +0300
Committer: Dmitriy Govorukhin <dg...@gridgain.com>
Committed: Mon Jan 9 18:38:43 2017 +0300

----------------------------------------------------------------------
 .../ignite/internal/processors/query/h2/opt/GridH2IndexBase.java   | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/bb2ad161/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
index b1a594c..4ef015b 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
@@ -1576,6 +1576,8 @@ public abstract class GridH2IndexBase extends BaseIndex {
          * @param cursor Cursor.
          */
         private CursorIteratorWrapper(GridCursor<GridH2Row> cursor) {
+            assert cursor != null;
+
             this.cursor = cursor;
 
             try {


[05/24] ignite git commit: gg-11414: distributed join test

Posted by sb...@apache.org.
gg-11414: distributed join test


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

Branch: refs/heads/ignite-gg-11810
Commit: ccc1956463eae5f46457824bed251cd1d4c2552b
Parents: 37eb93b
Author: Sergey Sidorov <ss...@gridgain.com>
Authored: Fri Nov 25 12:01:45 2016 +0300
Committer: Sergey Sidorov <ss...@gridgain.com>
Committed: Fri Nov 25 12:01:45 2016 +0300

----------------------------------------------------------------------
 .../query/IgniteSqlDistributedJoinSelfTest.java | 172 +++++++++++++++++++
 1 file changed, 172 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ccc19564/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
new file mode 100644
index 0000000..d851a31
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
@@ -0,0 +1,172 @@
+/*
+ * 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.processors.query;
+
+import org.apache.ignite.*;
+import org.apache.ignite.cache.*;
+import org.apache.ignite.cache.query.*;
+import org.apache.ignite.cache.query.annotations.*;
+import org.apache.ignite.configuration.*;
+import org.apache.ignite.plugin.*;
+import org.apache.ignite.spi.discovery.tcp.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+import org.apache.ignite.testframework.junits.common.*;
+
+import java.util.*;
+
+/**
+ * Tests for correct distributed sql joins.
+ */
+public class IgniteSqlDistributedJoinSelfTest extends GridCommonAbstractTest {
+    /** */
+    private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
+    private static final int NODES_COUNT = 2;
+    private static final int ORG_COUNT = NODES_COUNT;
+    private static final int PERSON_PER_ORG_COUNT = 50;
+
+    /** {@inheritDoc} */
+    @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+        IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+        cfg.setPeerClassLoadingEnabled(false);
+
+        TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+        disco.setIpFinder(IP_FINDER);
+
+        cfg.setDiscoverySpi(disco);
+
+        return cfg;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void beforeTestsStarted() throws Exception {
+        startGridsMultiThreaded(NODES_COUNT, false);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        stopAllGrids();
+    }
+
+    /**
+     * @param name Cache name.
+     * @param partitioned Partition or replicated cache.
+     * @param idxTypes Indexed types.
+     * @return Cache configuration.
+     */
+    private static CacheConfiguration cacheConfig(String name, boolean partitioned, Class<?>... idxTypes) {
+        return new CacheConfiguration()
+            .setName(name)
+            .setCacheMode(partitioned ? CacheMode.PARTITIONED : CacheMode.REPLICATED)
+            .setAtomicityMode(CacheAtomicityMode.ATOMIC)
+            .setBackups(1)
+            .setIndexedTypes(idxTypes);
+    }
+
+    public void testNonCollocatedDistributedJoin() throws Exception {
+        CacheConfiguration ccfg1 = cacheConfig("pers", true, String.class, Person.class);
+        CacheConfiguration ccfg2 = cacheConfig("org", true, String.class, Organization.class);
+
+        IgniteCache<String, Person> c1 = ignite(0).getOrCreateCache(ccfg1);
+        IgniteCache<String, Organization> c2 = ignite(0).getOrCreateCache(ccfg2);
+
+        try {
+            awaitPartitionMapExchange();
+
+            populateDataIntoCaches(c1, c2);
+
+            String joinSql =
+                "select * from Person, \"org\".Organization as org " +
+                    "where Person.orgId = org.id " +
+                    "and lower(org.name) = lower(?)";
+
+            SqlQuery qry = new SqlQuery<String, Person>(Person.class, joinSql).setArgs("Organization #0");
+
+            qry.setDistributedJoins(true);
+
+            List<Person> prns = c1.query(qry).getAll();
+
+            assertEquals(PERSON_PER_ORG_COUNT, prns.size());
+        }
+        finally {
+            c1.destroy();
+            c2.destroy();
+        }
+    }
+
+    private void populateDataIntoCaches(IgniteCache<String, Person> c1, IgniteCache<String, Organization> c2) {
+        int personId = 0;
+
+        for (int i = 0; i < ORG_COUNT; i++) {
+            Organization org = new Organization();
+            org.setId("org" + i);
+            org.setName("Organization #" + i);
+
+            c2.put(org.getId(), org);
+
+            for (int j = 0; j < PERSON_PER_ORG_COUNT; j++) {
+                Person prsn = new Person();
+                prsn.setId("pers" + personId);
+                prsn.setOrgId(org.getId());
+                prsn.setName("Person name #" + personId);
+
+                c1.put(prsn.getId(), prsn);
+
+                personId++;
+            }
+        }
+    }
+
+    private static class Person {
+        @QuerySqlField(index = true)
+        private String id;
+        @QuerySqlField(index = true)
+        private String orgId;
+        @QuerySqlField(index = true)
+        private String name;
+
+        public String getId() { return id; }
+
+        public void setId(String id) { this.id = id; }
+
+        public String getOrgId() { return orgId; }
+
+        public void setOrgId(String orgId) { this.orgId = orgId; }
+
+        public String getName() { return name; }
+
+        public void setName(String name) { this.name = name; }
+    }
+
+    private static class Organization {
+        @QuerySqlField(index = true)
+        private String id;
+        @QuerySqlField(index = true)
+        private String name;
+
+        public void setId(String id) { this.id = id; }
+
+        public String getId() { return id; }
+
+        public String getName() { return name; }
+
+        public void setName(String name) { this.name = name; }
+    }
+}


[18/24] ignite git commit: Merge remote-tracking branch 'remotes/professional/ignite-gg-8.0.2.ea2' into ignite-gg-11414

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/professional/ignite-gg-8.0.2.ea2' into ignite-gg-11414


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

Branch: refs/heads/ignite-gg-11810
Commit: e03a9805e5e7ea653f10fe1abc6f2bd981bec71d
Parents: 9af39ad f5fd34e
Author: Dmitriy Govorukhin <dg...@gridgain.com>
Authored: Tue Jan 10 15:38:42 2017 +0300
Committer: Dmitriy Govorukhin <dg...@gridgain.com>
Committed: Tue Jan 10 15:38:42 2017 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheMapEntry.java     | 52 +++++++++++---------
 .../GridCachePartitionExchangeManager.java      | 24 +++++----
 .../processors/cache/GridCacheTtlManager.java   |  2 +-
 .../cache/IgniteCacheOffheapManager.java        |  2 +-
 .../cache/IgniteCacheOffheapManagerImpl.java    |  4 +-
 .../distributed/dht/GridDhtLocalPartition.java  |  8 ++-
 .../dht/GridDhtPartitionTopologyImpl.java       | 11 ++---
 .../distributed/dht/GridDhtTxFinishFuture.java  |  7 ++-
 .../dht/preloader/GridDhtPreloader.java         | 27 +++++-----
 .../cache/CacheConfigurationLeakTest.java       | 15 ++++++
 .../cache/CacheEntryProcessorCopySelfTest.java  |  8 ---
 ...idAbstractCacheInterceptorRebalanceTest.java |  2 +
 .../cache/GridCacheBasicStoreAbstractTest.java  |  5 +-
 .../GridCacheOffHeapTieredAbstractSelfTest.java |  4 ++
 .../cache/GridCacheP2PUndeploySelfTest.java     |  5 --
 ...idCacheValueConsistencyAbstractSelfTest.java | 30 -----------
 .../IgniteCacheInterceptorSelfTestSuite.java    | 10 ++--
 .../cache/IgniteCachePeekModesAbstractTest.java |  6 +++
 .../GridDataStreamerImplSelfTest.java           |  8 +--
 ...CacheLoadingConcurrentGridStartSelfTest.java | 20 ++++++--
 ...tractDistributedByteArrayValuesSelfTest.java |  3 ++
 .../IgniteTxCachePrimarySyncTest.java           |  7 +++
 ...teSynchronizationModesMultithreadedTest.java |  3 +-
 .../dht/GridCacheTxNodeFailureSelfTest.java     | 13 +++--
 ...eAtomicInvalidPartitionHandlingSelfTest.java | 16 +++---
 ...maryWriteOrderWithStoreExpiryPolicyTest.java |  2 +-
 ...eCacheExpiryPolicyWithStoreAbstractTest.java | 21 +++++---
 ...ContinuousQueryFailoverAbstractSelfTest.java |  4 +-
 .../CacheKeepBinaryIterationTest.java           |  3 ++
 ...teCacheContinuousQueryNoUnsubscribeTest.java |  2 +
 .../ignite/testsuites/IgniteCacheTestSuite.java | 12 +++--
 .../testsuites/IgniteCacheTestSuite2.java       |  3 +-
 ...niteCacheLockPartitionOnAffinityRunTest.java | 36 ++++++++++----
 33 files changed, 223 insertions(+), 152 deletions(-)
----------------------------------------------------------------------


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


[24/24] ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-3477' into ignite-gg-11810

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-3477' into ignite-gg-11810

# Conflicts:
#	modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java


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

Branch: refs/heads/ignite-gg-11810
Commit: c1d5081f92020a57781ca7cb110d928c7d35c987
Parents: 1b1ca16
Author: sboikov <sb...@gridgain.com>
Authored: Thu Jan 12 11:01:28 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Thu Jan 12 11:01:28 2017 +0300

----------------------------------------------------------------------
 .../util/GridCursorIteratorWrapper.java         |  7 ++-
 .../apache/ignite/internal/util/IgniteTree.java | 31 +++++++------
 .../internal/processors/query/h2/H2Cursor.java  |  9 ++--
 .../query/IgniteSqlDistributedJoinSelfTest.java | 46 ++++++++++++++------
 .../IgniteDistributedJoinTestSuite.java         |  2 +-
 5 files changed, 60 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c1d5081f/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
index 927e365..201c8dd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
@@ -1,9 +1,8 @@
 package org.apache.ignite.internal.util;
 
-import org.apache.ignite.*;
-import org.apache.ignite.internal.util.lang.*;
-
-import java.util.*;
+import java.util.Iterator;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.util.lang.GridCursor;
 
 /**
  * Wrap {@code Iterator} and adapt it to {@code GridCursor}.

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1d5081f/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
index 0c08cd9..8dcd205 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
@@ -17,10 +17,8 @@
 
 package org.apache.ignite.internal.util;
 
-import org.apache.ignite.*;
-import org.apache.ignite.internal.util.lang.*;
-
-import java.util.*;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.util.lang.GridCursor;
 
 /**
  * Interface for ignite internal tree.
@@ -29,10 +27,11 @@ public interface IgniteTree<L, T> {
     /**
      * Put value in this tree.
      *
-     * @param value value to be associated with the specified key
-     * @return the previous value associated with key
+     * @param val Value to be associated with the specified key.
+     * @return The previous value associated with key.
+     * @throws IgniteCheckedException If failed.
      */
-    T put(T value) throws IgniteCheckedException;
+    public T put(T val) throws IgniteCheckedException;
 
     /**
      * Returns the value to which the specified key is mapped, or {@code null} if this tree contains no mapping for the
@@ -40,9 +39,10 @@ public interface IgniteTree<L, T> {
      *
      * @param key the key whose associated value is to be returned
      * @return the value to which the specified key is mapped, or {@code null} if this tree contains no mapping for the
-     * key
+     *  key.
+     * @throws IgniteCheckedException If failed.
      */
-    T findOne(L key) throws IgniteCheckedException;
+    public T findOne(L key) throws IgniteCheckedException;
 
     /**
      * Returns a cursor from lower to upper bounds inclusive.
@@ -50,21 +50,24 @@ public interface IgniteTree<L, T> {
      * @param lower Lower bound or {@code null} if unbounded.
      * @param upper Upper bound or {@code null} if unbounded.
      * @return Cursor.
+     * @throws IgniteCheckedException If failed.
      */
-    GridCursor<T> find(L lower, L upper) throws IgniteCheckedException;
+    public GridCursor<T> find(L lower, L upper) throws IgniteCheckedException;
 
     /**
      * Removes the mapping for a key from this tree if it is present.
      *
-     * @param key key whose mapping is to be removed from the tree
-     * @return the previous value associated with key, or null if there was no mapping for key.
+     * @param key Key whose mapping is to be removed from the tree.
+     * @return The previous value associated with key, or null if there was no mapping for key.
+     * @throws IgniteCheckedException If failed.
      */
-    T remove(L key) throws IgniteCheckedException;
+    public T remove(L key) throws IgniteCheckedException;
 
     /**
      * Returns the number of elements in this tree.
      *
      * @return the number of elements in this tree
+     * @throws IgniteCheckedException If failed.
      */
-    long size() throws IgniteCheckedException;
+    public long size() throws IgniteCheckedException;
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1d5081f/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
index cc71813..de3111d 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
@@ -31,13 +31,13 @@ import org.h2.result.*;
  */
 public class H2Cursor implements Cursor {
     /** */
-    final GridCursor<GridH2Row> cursor;
+    private final GridCursor<GridH2Row> cursor;
 
     /** */
-    final IgniteBiPredicate<Object,Object> filter;
+    private final IgniteBiPredicate<Object,Object> filter;
 
     /** */
-    final long time = U.currentTimeMillis();
+    private final long time = U.currentTimeMillis();
 
     /**
      * @param cursor Cursor.
@@ -50,6 +50,9 @@ public class H2Cursor implements Cursor {
         this.filter = filter;
     }
 
+    /**
+     * @param cursor Cursor.
+     */
     public H2Cursor(GridCursor<GridH2Row> cursor) {
         this(cursor, null);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1d5081f/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
index e9f41c8..81201c8 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
@@ -17,18 +17,18 @@
 
 package org.apache.ignite.internal.processors.query;
 
-import org.apache.ignite.*;
-import org.apache.ignite.cache.*;
-import org.apache.ignite.cache.query.*;
-import org.apache.ignite.cache.query.annotations.*;
-import org.apache.ignite.configuration.*;
-import org.apache.ignite.plugin.*;
-import org.apache.ignite.spi.discovery.tcp.*;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
-import org.apache.ignite.testframework.junits.common.*;
-
-import java.util.*;
+import java.util.List;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.query.SqlQuery;
+import org.apache.ignite.cache.query.annotations.QuerySqlField;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
 /**
  * Tests for correct distributed sql joins.
@@ -36,8 +36,14 @@ import java.util.*;
 public class IgniteSqlDistributedJoinSelfTest extends GridCommonAbstractTest {
     /** */
     private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
+
+    /** */
     private static final int NODES_COUNT = 2;
+
+    /** */
     private static final int ORG_COUNT = NODES_COUNT;
+
+    /** */
     private static final int PERSON_PER_ORG_COUNT = 50;
 
     /** {@inheritDoc} */
@@ -81,7 +87,7 @@ public class IgniteSqlDistributedJoinSelfTest extends GridCommonAbstractTest {
     }
 
     /**
-     *
+     * @throws Exception If failed.
      */
     public void testNonCollocatedDistributedJoin() throws Exception {
         CacheConfiguration ccfg1 = cacheConfig("pers", true, String.class, Person.class);
@@ -141,11 +147,19 @@ public class IgniteSqlDistributedJoinSelfTest extends GridCommonAbstractTest {
         }
     }
 
+    /**
+     *
+     */
     private static class Person {
+        /** */
         @QuerySqlField(index = true)
         private String id;
+
+        /** */
         @QuerySqlField(index = true)
         private String orgId;
+
+        /** */
         @QuerySqlField(index = true)
         private String name;
 
@@ -162,9 +176,15 @@ public class IgniteSqlDistributedJoinSelfTest extends GridCommonAbstractTest {
         public void setName(String name) { this.name = name; }
     }
 
+    /**
+     *
+     */
     private static class Organization {
+        /** */
         @QuerySqlField(index = true)
         private String id;
+
+        /** */
         @QuerySqlField(index = true)
         private String name;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/c1d5081f/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDistributedJoinTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDistributedJoinTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDistributedJoinTestSuite.java
index dca640f..0882188 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDistributedJoinTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteDistributedJoinTestSuite.java
@@ -17,7 +17,7 @@ import org.apache.ignite.internal.processors.query.h2.sql.H2CompareBigQueryDistr
  */
 public class IgniteDistributedJoinTestSuite extends TestSuite {
     /**
-     *
+     * @return Suite.
      */
     public static TestSuite suite() {
         TestSuite suite = new TestSuite("Distributed Joins Test Suite.");


[10/24] ignite git commit: GG-11414 - Fixed cursor issue with expire time

Posted by sb...@apache.org.
GG-11414 - Fixed cursor issue with expire time


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

Branch: refs/heads/ignite-gg-11810
Commit: 8852c80a0c6b52531ae6a287344f1ab776e3b32f
Parents: 1ffd04a
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Thu Dec 29 16:52:59 2016 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Thu Dec 29 16:52:59 2016 +0300

----------------------------------------------------------------------
 .../query/h2/database/H2TreeIndex.java          | 36 ++++++++++++--------
 .../query/h2/opt/GridH2IndexBase.java           |  2 +-
 2 files changed, 23 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/8852c80a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
index f685f3a..c1eb986 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
@@ -79,18 +79,24 @@ public class H2TreeIndex extends GridH2IndexBase {
 
         name = BPlusTree.treeName(name, "H2Tree");
 
-        IgniteCacheDatabaseSharedManager dbMgr = cctx.shared().database();
-
-        RootPage page = cctx.offheap().rootPageForIndex(name);
-
-        tree = new H2Tree(name, cctx.offheap().reuseListForIndex(name), cctx.cacheId(),
-            dbMgr.pageMemory(), cctx.shared().wal(), cctx.offheap().globalRemoveId(),
-            tbl.rowFactory(), page.pageId().pageId(), page.isAllocated()) {
-            @Override protected int compare(BPlusIO<SearchRow> io, ByteBuffer buf, int idx, SearchRow row)
-                throws IgniteCheckedException {
-                return compareRows(getRow(io, buf, idx), row);
-            }
-        };
+        if (!cctx.kernalContext().clientNode()) {
+            IgniteCacheDatabaseSharedManager dbMgr = cctx.shared().database();
+
+            RootPage page = cctx.offheap().rootPageForIndex(name);
+
+            tree = new H2Tree(name, cctx.offheap().reuseListForIndex(name), cctx.cacheId(),
+                dbMgr.pageMemory(), cctx.shared().wal(), cctx.offheap().globalRemoveId(),
+                tbl.rowFactory(), page.pageId().pageId(), page.isAllocated()) {
+                @Override
+                protected int compare(BPlusIO<SearchRow> io, ByteBuffer buf, int idx, SearchRow row)
+                    throws IgniteCheckedException {
+                    return compareRows(getRow(io, buf, idx), row);
+                }
+            };
+        }
+        else
+            // We need indexes on the client node, but index will not contain any data.
+            tree = null;
 
         initDistributedJoinMessaging(tbl);
     }
@@ -194,9 +200,11 @@ public class H2TreeIndex extends GridH2IndexBase {
     /** {@inheritDoc} */
     @Override public void destroy() {
         try {
-            tree.destroy();
+            if (!cctx.kernalContext().clientNode()) {
+                tree.destroy();
 
-            cctx.offheap().dropRootPageForIndex(tree.getName());
+                cctx.offheap().dropRootPageForIndex(tree.getName());
+            }
         }
         catch (IgniteCheckedException e) {
             throw new IgniteException(e);

http://git-wip-us.apache.org/repos/asf/ignite/blob/8852c80a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
index 56c9edc..bd569df 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
@@ -1525,7 +1525,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
          */
         @SuppressWarnings("unchecked")
         protected boolean accept(GridH2Row row) {
-            if (row.expireTime() <= time)
+            if (row.expireTime() != 0 && row.expireTime() <= time)
                 return false;
 
             if (fltr == null)


[15/24] ignite git commit: Merge remote-tracking branch 'community/ignite-gg-11414' into ignite-gg-11414

Posted by sb...@apache.org.
Merge remote-tracking branch 'community/ignite-gg-11414' into ignite-gg-11414


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

Branch: refs/heads/ignite-gg-11810
Commit: 6107ddb8e987eb381ffdc4a16f928d8fe89fe003
Parents: d63b386 bb2ad16
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Mon Jan 9 19:38:48 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Jan 9 19:38:48 2017 +0300

----------------------------------------------------------------------
 .../query/h2/opt/GridH2IndexBase.java           | 57 +++++++-------------
 1 file changed, 19 insertions(+), 38 deletions(-)
----------------------------------------------------------------------



[02/24] ignite git commit: GG-11414: Remove snapshotableIndex flag from CacheConfiguration, Get rid of all usages of GridH2TreeIndex

Posted by sb...@apache.org.
GG-11414: Remove snapshotableIndex flag from CacheConfiguration, Get rid of all usages of GridH2TreeIndex


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

Branch: refs/heads/ignite-gg-11810
Commit: b2999f2e4d490fdb140483e4283f0fe2d8004a67
Parents: ef015d3
Author: Sergey Sidorov <ss...@gridgain.com>
Authored: Tue Nov 15 18:50:24 2016 +0300
Committer: Sergey Sidorov <ss...@gridgain.com>
Committed: Wed Nov 16 16:49:52 2016 +0300

----------------------------------------------------------------------
 .../configuration/CacheConfiguration.java       |  30 ----
 .../cache/IgniteCacheOffheapManagerImpl.java    |   6 +-
 .../cache/database/tree/BPlusTree.java          |  30 +++-
 .../util/GridCursorIteratorWrapper.java         |  28 +++
 .../apache/ignite/internal/util/IgniteTree.java |  79 ++++----
 .../ignite/internal/util/lang/GridCursor.java   |   1 +
 .../offheap/unsafe/GridOffHeapSnapTreeMap.java  |  85 ++++++---
 .../internal/util/snaptree/SnapTreeMap.java     |  92 +++++++---
 .../internal/processors/query/h2/H2Cursor.java  |  84 +++++++++
 .../processors/query/h2/IgniteH2Indexing.java   |  36 +---
 .../query/h2/database/H2TreeIndex.java          |  92 +++-------
 .../query/h2/opt/GridH2IndexBase.java           | 178 ++++++++-----------
 .../processors/query/h2/opt/GridH2Table.java    |   4 +-
 .../query/h2/opt/GridH2TreeIndex.java           | 154 +++++++++++-----
 .../cache/IgniteCacheAbstractQuerySelfTest.java |   2 +-
 .../query/h2/opt/GridH2TableSelfTest.java       |  29 +--
 16 files changed, 536 insertions(+), 394 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index e15c989..44c23c0 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -371,9 +371,6 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
     /** */
     private transient Class<?>[] indexedTypes;
 
-    /** */
-    private boolean snapshotableIdx;
-
     /** Copy on read flag. */
     private boolean cpOnRead = DFLT_COPY_ON_READ;
 
@@ -466,7 +463,6 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
         rebalancePoolSize = cc.getRebalanceThreadPoolSize();
         rebalanceTimeout = cc.getRebalanceTimeout();
         rebalanceThrottle = cc.getRebalanceThrottle();
-        snapshotableIdx = cc.isSnapshotableIndex();
         sqlSchema = cc.getSqlSchema();
         sqlEscapeAll = cc.isSqlEscapeAll();
         sqlFuncCls = cc.getSqlFunctionClasses();
@@ -1930,32 +1926,6 @@ public class CacheConfiguration<K, V> extends MutableConfiguration<K, V> {
     }
 
     /**
-     * Gets flag indicating whether SQL indexes should support snapshots.
-     *
-     * @return {@code True} if SQL indexes should support snapshots.
-     */
-    public boolean isSnapshotableIndex() {
-        return snapshotableIdx;
-    }
-
-    /**
-     * Sets flag indicating whether SQL indexes should support snapshots.
-     * <p>
-     * Default value is {@code false}.
-     * <p>
-     * <b>Note</b> that this flag is ignored if indexes are stored in offheap memory,
-     * for offheap indexes snapshots are always enabled.
-     *
-     * @param snapshotableIdx {@code True} if SQL indexes should support snapshots.
-     * @return {@code this} for chaining.
-     */
-    public CacheConfiguration<K, V> setSnapshotableIndex(boolean snapshotableIdx) {
-        this.snapshotableIdx = snapshotableIdx;
-
-        return this;
-    }
-
-    /**
      * Gets array of cache plugin configurations.
      *
      * @return Cache plugin configurations.

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index e431f58..66896d2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -570,9 +570,11 @@ public class IgniteCacheOffheapManagerImpl extends GridCacheManagerAdapter imple
      * @throws IgniteCheckedException If failed.
      */
     private long allocateForTree() throws IgniteCheckedException {
-        long pageId = cctx.shared().database().globalReuseList().takeRecycledPage();
+        ReuseList reuseList = cctx.shared().database().globalReuseList();
 
-        if (pageId == 0L)
+        long pageId;
+
+        if (reuseList == null || (pageId = reuseList.takeRecycledPage()) == 0L)
             pageId = cctx.shared().database().pageMemory().allocatePage(cctx.cacheId(), INDEX_PARTITION, FLAG_IDX);
 
         return pageId;

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index 2aab831..f761975 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -55,8 +55,7 @@ import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
 import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseBag;
 import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseList;
 import org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler;
-import org.apache.ignite.internal.util.GridArrays;
-import org.apache.ignite.internal.util.GridLongList;
+import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.lang.GridCursor;
 import org.apache.ignite.internal.util.lang.GridTreePrinter;
 import org.apache.ignite.internal.util.typedef.F;
@@ -83,7 +82,7 @@ import static org.apache.ignite.internal.processors.cache.database.tree.util.Pag
  * Abstract B+Tree.
  */
 @SuppressWarnings({"RedundantThrowsDeclaration", "ConstantValueVariableUse"})
-public abstract class BPlusTree<L, T extends L> extends DataStructure {
+public abstract class BPlusTree<L, T extends L> extends DataStructure implements IgniteTree<L, T> {
     /** */
     private static final Object[] EMPTY = {};
 
@@ -752,6 +751,16 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
         }
     }
 
+    public GridCursor<T> find(L lower, boolean lowerInclusive,
+                              L upper, boolean upperInclusive) throws IgniteCheckedException {
+        // TODO inclusive / exclusive logic should be implemented
+        return find(lower, upper);
+    }
+
+    public GridCursor<T> findAll() throws IgniteCheckedException {
+        return find(null, null);
+    }
+
     /**
      * @param row Lookup row for exact match.
      * @return Found row.
@@ -1253,6 +1262,10 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
         return doRemove(row, false, null);
     }
 
+    @Override public T removeNode(L key) throws IgniteCheckedException {
+        return doRemove(key, false, null);
+    }
+
     /**
      * @param row Lookup row.
      * @param ceil If we can remove ceil row when we can not find exact.
@@ -1503,9 +1516,14 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure {
     }
 
     /**
-     * @param row Row.
-     * @return Old row.
-     * @throws IgniteCheckedException If failed.
+     * {@inheritDoc}
+     */
+    public final long treeSize() throws IgniteCheckedException {
+        return size();
+    }
+
+    /**
+     * {@inheritDoc}
      */
     public final T put(T row) throws IgniteCheckedException {
         return put(row, null);

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
new file mode 100644
index 0000000..bd30ace
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridCursorIteratorWrapper.java
@@ -0,0 +1,28 @@
+package org.apache.ignite.internal.util;
+
+import org.apache.ignite.*;
+import org.apache.ignite.internal.util.lang.*;
+
+import java.util.*;
+
+/**
+ * Wrap {@code Iterator} and adapt it to {@code GridCursor}.
+ */
+public class GridCursorIteratorWrapper<V> implements GridCursor<V> {
+    private Iterator<V> iter;
+    private V next;
+
+    public GridCursorIteratorWrapper(Iterator<V> iter) {
+        this.iter = iter;
+    }
+
+    @Override public V get() throws IgniteCheckedException {
+        return next;
+    }
+
+    @Override public boolean next() throws IgniteCheckedException {
+        next = iter.hasNext() ? iter.next() : null;
+
+        return next != null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
index 2c1e1af..512792b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteTree.java
@@ -17,20 +17,22 @@
 
 package org.apache.ignite.internal.util;
 
+import org.apache.ignite.*;
+import org.apache.ignite.internal.util.lang.*;
+
 import java.util.*;
 
 /**
  * Interface for ignite internal tree.
  */
-public interface IgniteTree<K, V> {
+public interface IgniteTree<L, T> {
     /**
-     * Associates the specified value with the specified key in this tree.
+     * Put value in this tree.
      *
-     * @param key key with which the specified value is to be associated
      * @param value value to be associated with the specified key
      * @return the previous value associated with key
      */
-    V put(K key, V value);
+    T put(T value) throws IgniteCheckedException;
 
     /**
      * Returns the value to which the specified key is mapped, or {@code null} if this tree contains no mapping for the
@@ -40,66 +42,49 @@ public interface IgniteTree<K, V> {
      * @return the value to which the specified key is mapped, or {@code null} if this tree contains no mapping for the
      * key
      */
-    V get(Object key);
-
-    /**
-     * Removes the mapping for a key from this tree if it is present.
-     *
-     * @param key key whose mapping is to be removed from the tree
-     * @return the previous value associated with key, or null if there was no mapping for key.
-     */
-    V remove(Object key);
+    T findOne(L key) throws IgniteCheckedException;
 
     /**
-     * Returns the number of elements in this tree.
+     * Returns a cursor from lower to upper bounds.
      *
-     * @return the number of elements in this tree
+     * @param lower Lower bound or {@code null} if unbounded.
+     * @param lowerInclusive {@code true} if the low bound
+     *        is to be included in the returned view
+     * @param upper Upper bound or {@code null} if unbounded.
+     * @param upperInclusive {@code true} if the upper bound
+     *        is to be included in the returned view
+     * @return Cursor.
      */
-    int size();
+    GridCursor<T> find(L lower, boolean lowerInclusive,  L upper, boolean upperInclusive) throws IgniteCheckedException;
 
     /**
-     * Returns a {@link Collection} view of the values contained in this tree.
+     * Returns a cursor from lower to upper bounds inclusive.
      *
-     * @return a collection view of the values contained in this map
+     * @param lower Lower bound or {@code null} if unbounded.
+     * @param upper Upper bound or {@code null} if unbounded.
+     * @return Cursor.
      */
-    Collection<V> values();
+    GridCursor<T> find(L lower, L upper) throws IgniteCheckedException;
 
     /**
-     * Returns a view of the portion of this tree whose keys are less than (or equal to, if {@code inclusive} is true)
-     * {@code toKey}.  The returned tree is backed by this tree, so changes in the returned tree are reflected in this
-     * tree, and vice-versa.  The returned tree supports all optional tree operations that this tree supports.
-     *
-     * @param toKey high endpoint of the keys in the returned tree
-     * @param inclusive {@code true} if the high endpoint is to be included in the returned view
-     * @return a view of the portion of this tree whose keys are less than (or equal to, if {@code inclusive} is true)
-     * {@code toKey}
+     * Returns a cursor over all values.
+     * @return Cursor.
+     * @throws IgniteCheckedException
      */
-    IgniteTree<K, V> headTree(K toKey, boolean inclusive);
+    GridCursor<T> findAll() throws IgniteCheckedException;
 
     /**
-     * Returns a view of the portion of this tree whose keys are greater than (or equal to, if {@code inclusive} is
-     * true) {@code fromKey}.  The returned tree is backed by this tree, so changes in the returned tree are reflected
-     * in this tree, and vice-versa.  The returned tree supports all optional tree operations that this tree supports.
+     * Removes the mapping for a key from this tree if it is present.
      *
-     * @param fromKey low endpoint of the keys in the returned tree
-     * @param inclusive {@code true} if the low endpoint is to be included in the returned view
-     * @return a view of the portion of this tree whose keys are greater than (or equal to, if {@code inclusive} is
-     * true) {@code fromKey}
+     * @param key key whose mapping is to be removed from the tree
+     * @return the previous value associated with key, or null if there was no mapping for key.
      */
-    IgniteTree<K, V> tailTree(K fromKey, boolean inclusive);
+    T removeNode(L key) throws IgniteCheckedException;
 
     /**
-     * Returns a view of the portion of this tree whose keys range from {@code fromKey} to {@code toKey}.  If {@code
-     * fromKey} and {@code toKey} are equal, the returned tree is empty unless {@code fromInclusive} and {@code
-     * toInclusive} are both true.  The returned tree is backed by this tree, so changes in the returned tree are
-     * reflected in this tree, and vice-versa.  The returned tree supports all optional tree operations that this tree
-     * supports.
+     * Returns the number of elements in this tree.
      *
-     * @param fromKey low endpoint of the keys in the returned tree
-     * @param fromInclusive {@code true} if the low endpoint is to be included in the returned view
-     * @param toKey high endpoint of the keys in the returned tree
-     * @param toInclusive {@code true} if the high endpoint is to be included in the returned view
-     * @return a view of the portion of this tree whose keys range from {@code fromKey} to {@code toKey}
+     * @return the number of elements in this tree
      */
-    IgniteTree<K, V> subTree(final K fromKey, final boolean fromInclusive, final K toKey, final boolean toInclusive);
+    long treeSize() throws IgniteCheckedException;
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java
index 37d3a48..da85f99 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridCursor.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.util.lang;
 
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.processors.cache.database.*;
 
 /**
  * Simple cursor abstraction. Initial state must be "before first".

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
index 681394f..eb09af5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/offheap/unsafe/GridOffHeapSnapTreeMap.java
@@ -54,8 +54,11 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+import org.apache.ignite.*;
 import org.apache.ignite.internal.processors.cache.distributed.dht.GridReservable;
 import org.apache.ignite.internal.util.*;
+import org.apache.ignite.internal.util.lang.*;
 import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.jetbrains.annotations.Nullable;
 import org.jsr166.ConcurrentHashMap8;
@@ -3824,30 +3827,48 @@ public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer, V extends
 
     //////////////// IgniteTree
 
-    /** {@inheritDoc} */
-    @Override public IgniteTree<K, V> headTree(final K toKey, final boolean inclusive) {
-        return new SubMap(this, null, null, false, toKey, comparable(toKey), inclusive, false);
+    @Override public V put(V value) throws IgniteCheckedException {
+        return put((K)value, value);
     }
 
-    /** {@inheritDoc} */
-    @Override public IgniteTree<K, V> tailTree(final K fromKey, final boolean inclusive) {
-        return new SubMap(this, fromKey, comparable(fromKey), inclusive, null, null, false, false);
+    @Override public V findOne(K key) throws IgniteCheckedException {
+        return get(key);
     }
 
-    /** {@inheritDoc} */
-    @Override public IgniteTree<K, V> subTree(final K fromKey, final boolean fromInclusive, final K toKey,
-        final boolean toInclusive) {
-        final Comparable<? super K> fromCmp = comparable(fromKey);
-        if (fromCmp.compareTo(toKey) > 0) {
+    @Override public GridCursor<V> findAll() throws IgniteCheckedException {
+        return find(null, null);
+    }
+
+    @Override public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {
+        return find(lower, true, upper, true);
+    }
+
+    @Override public GridCursor<V> find(K lower, boolean lowerInclusive,  K upper, boolean upperInclusive)
+        throws IgniteCheckedException {
+
+        final Comparable<? super K> fromCmp = comparable(lower);
+
+        if (fromCmp.compareTo(upper) > 0) {
             throw new IllegalArgumentException();
         }
-        return new SubMap(this, fromKey, fromCmp, fromInclusive, toKey, comparable(toKey), toInclusive, false);
+
+        SubMap subMap = new SubMap(this, lower, fromCmp, lowerInclusive, upper, comparable(upper), upperInclusive, false);
+
+        return new GridCursorIteratorWrapper<>(subMap.values().iterator());
+    }
+
+    @Override public V removeNode(K key) throws IgniteCheckedException {
+        return remove(key);
+    }
+
+    @Override public long treeSize() throws IgniteCheckedException {
+        return size();
     }
 
     /**
      * Submap.
      */
-    private class SubMap extends AbstractMap<K,V> implements ConcurrentNavigableMap<K,V>, IgniteTree<K, V> {
+    private class SubMap extends AbstractMap<K, V> implements ConcurrentNavigableMap<K, V>, IgniteTree<K, V> {
         /** */
         private final GridOffHeapSnapTreeMap<K,V> m;
 
@@ -4456,22 +4477,36 @@ public class GridOffHeapSnapTreeMap<K extends GridOffHeapSmartPointer, V extends
 
         /////////// IgniteTree
 
-        /** {@inheritDoc} */
-        @Override public IgniteTree<K, V> headTree(K toKey, boolean inclusive) {
-            return headMap(toKey, inclusive);
+        @Override public V put(V value) throws IgniteCheckedException {
+            return put((K)value, value);
         }
 
-        /** {@inheritDoc} */
-        @Override public IgniteTree<K, V> tailTree(K fromKey, boolean inclusive) {
-            return tailMap(fromKey, inclusive);
+        @Override public V findOne(K key) throws IgniteCheckedException {
+            return get(key);
         }
 
-        /** {@inheritDoc} */
-        @Override public IgniteTree<K, V> subTree(final K fromKey,
-            final boolean fromInclusive,
-            final K toKey,
-            final boolean toInclusive) {
-            return subMap(fromKey, fromInclusive, toKey, toInclusive);
+        @Override public GridCursor<V> findAll() throws IgniteCheckedException {
+            return find(null, null);
+        }
+
+        @Override public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {
+            return find(lower, true, upper, true);
+        }
+
+        @Override public GridCursor<V> find(K lower, boolean lowerInclusive,  K upper, boolean upperInclusive)
+            throws IgniteCheckedException {
+
+            SubMap subMap = subMap(lower, lowerInclusive, upper, upperInclusive);
+
+            return new GridCursorIteratorWrapper(subMap.values().iterator());
+        }
+
+        @Override public V removeNode(K key) throws IgniteCheckedException {
+            return remove(key);
+        }
+
+        @Override public long treeSize() throws IgniteCheckedException {
+            return size();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java b/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
index 064e7b0..8bd5f59 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/snaptree/SnapTreeMap.java
@@ -35,7 +35,9 @@
 
 package org.apache.ignite.internal.util.snaptree;
 
+import org.apache.ignite.*;
 import org.apache.ignite.internal.util.*;
+import org.apache.ignite.internal.util.lang.*;
 
 import java.io.IOException;
 import java.io.ObjectInputStream;
@@ -2347,24 +2349,43 @@ public class SnapTreeMap<K, V> extends AbstractMap<K, V> implements ConcurrentNa
 
     //////////////// IgniteTree
 
-    /** {@inheritDoc} */
-    @Override public IgniteTree<K, V> headTree(final K toKey, final boolean inclusive) {
-        return new SubMap<K,V>(this, null, null, false, toKey, comparable(toKey), inclusive, false);
+    @Override public GridCursor<V> find(K lower, boolean lowerInclusive,
+                                        K upper, boolean upperInclusive) throws IgniteCheckedException {
+        if (lower == null)
+            if (upper == null) // all
+                return new GridCursorIteratorWrapper<>(values().iterator());
+            else // head
+                return new GridCursorIteratorWrapper<>(headMap(upper, upperInclusive).values().iterator());
+        else
+            if (upper == null) // tail
+                return new GridCursorIteratorWrapper<>(tailMap(lower, lowerInclusive).values().iterator());
+            else // interval
+                return new GridCursorIteratorWrapper<>(subMap(lower, lowerInclusive, upper, upperInclusive)
+                    .values().iterator());
     }
 
-    /** {@inheritDoc} */
-    @Override public IgniteTree<K, V> tailTree(final K fromKey, final boolean inclusive) {
-        return new SubMap<K,V>(this, fromKey, comparable(fromKey), inclusive, null, null, false, false);
+    public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {
+        return find(lower, true, upper, true);
     }
 
-    /** {@inheritDoc} */
-    @Override public IgniteTree<K, V> subTree(final K fromKey, final boolean fromInclusive, final K toKey,
-        final boolean toInclusive) {
-        final Comparable<? super K> fromCmp = comparable(fromKey);
-        if (fromCmp.compareTo(toKey) > 0) {
-            throw new IllegalArgumentException();
-        }
-        return new SubMap<K,V>(this, fromKey, fromCmp, fromInclusive, toKey, comparable(toKey), toInclusive, false);
+    public GridCursor<V> findAll() throws IgniteCheckedException {
+        return find(null, null);
+    }
+
+    @Override public V findOne(K key) throws IgniteCheckedException {
+        return get(key);
+    }
+
+    @Override public long treeSize() throws IgniteCheckedException {
+        return size();
+    }
+
+    @Override public V put(V value) throws IgniteCheckedException {
+        return put((K)value, value);
+    }
+
+    @Override public V removeNode(K key) throws IgniteCheckedException {
+        return remove(key);
     }
 
     private static class SubMap<K, V> extends AbstractMap<K, V> implements ConcurrentNavigableMap<K, V>, Serializable,
@@ -2893,20 +2914,43 @@ public class SnapTreeMap<K, V> extends AbstractMap<K, V> implements ConcurrentNa
 
         /////// IgniteTree
 
-        /** {@inheritDoc} */
-        @Override public IgniteTree<K, V> headTree(final K toKey, final boolean inclusive) {
-            return headMap(toKey, inclusive);
+        @Override public V findOne(K key) throws IgniteCheckedException {
+            return get(key);
+        }
+
+        @Override public GridCursor<V> find(K lower, boolean lowerInclusive,
+                                            K upper, boolean upperInclusive) throws IgniteCheckedException {
+
+            if (lower == null)
+                if (upper == null) // all
+                    return new GridCursorIteratorWrapper<>(values().iterator());
+                else // head
+                    return new GridCursorIteratorWrapper<>(headMap(upper, upperInclusive).values().iterator());
+            else
+            if (upper == null) // tail
+                return new GridCursorIteratorWrapper<>(tailMap(lower, lowerInclusive).values().iterator());
+            else // interval
+                return new GridCursorIteratorWrapper<>(subMap(lower, lowerInclusive, upper, upperInclusive).values().iterator());
+        }
+
+        public GridCursor<V> find(K lower, K upper) throws IgniteCheckedException {
+            return find(lower, true, upper, true);
+        }
+
+        public GridCursor<V> findAll() throws IgniteCheckedException {
+            return find(null, null);
+        }
+
+        @Override public long treeSize() throws IgniteCheckedException {
+            return size();
         }
 
-        /** {@inheritDoc} */
-        @Override public IgniteTree<K, V> tailTree(final K fromKey, final boolean inclusive) {
-            return tailMap(fromKey, inclusive);
+        @Override public V put(V value) throws IgniteCheckedException {
+            return put((K)value, value);
         }
 
-        /** {@inheritDoc} */
-        @Override public IgniteTree<K, V> subTree(final K fromKey, final boolean fromInclusive, final K toKey,
-            final boolean toInclusive) {
-            return subMap(fromKey, fromInclusive, toKey, toInclusive);
+        @Override public V removeNode(K key) throws IgniteCheckedException {
+            return remove(key);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
new file mode 100644
index 0000000..d3b6265
--- /dev/null
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2Cursor.java
@@ -0,0 +1,84 @@
+package org.apache.ignite.internal.processors.query.h2;
+
+import org.apache.ignite.*;
+import org.apache.ignite.internal.processors.query.h2.opt.*;
+import org.apache.ignite.internal.util.lang.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.lang.*;
+import org.h2.index.*;
+import org.h2.message.*;
+import org.h2.result.*;
+
+/**
+ * Cursor.
+ */
+public class H2Cursor implements Cursor {
+    /** */
+    final GridCursor<GridH2Row> cursor;
+
+    /** */
+    final IgniteBiPredicate<Object,Object> filter;
+
+    /** */
+    final long time = U.currentTimeMillis();
+
+    /**
+     * @param cursor Cursor.
+     * @param filter Filter.
+     */
+    public H2Cursor(GridCursor<GridH2Row> cursor, IgniteBiPredicate<Object, Object> filter) {
+        assert cursor != null;
+
+        this.cursor = cursor;
+        this.filter = filter;
+    }
+
+    /** {@inheritDoc} */
+    @Override public Row get() {
+        try {
+            return cursor.get();
+        }
+        catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override public SearchRow getSearchRow() {
+        return get();
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean next() {
+        try {
+            while (cursor.next()) {
+                GridH2Row row = cursor.get();
+
+                if (row.expireTime() > 0 && row.expireTime() <= time)
+                    continue;
+
+                if (filter == null)
+                    return true;
+
+                Object key = row.getValue(0).getObject();
+                Object val = row.getValue(1).getObject();
+
+                assert key != null;
+                assert val != null;
+
+                if (filter.apply(key, val))
+                    return true;
+            }
+
+            return false;
+        }
+        catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean previous() {
+        throw DbException.getUnsupportedException("previous");
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 55d1b57..47ca598 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -98,7 +98,6 @@ import org.apache.ignite.internal.processors.query.h2.opt.GridH2Row;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowFactory;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
-import org.apache.ignite.internal.processors.query.h2.opt.GridH2TreeIndex;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2ValueCacheObject;
 import org.apache.ignite.internal.processors.query.h2.opt.GridLuceneIndex;
 import org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuerySplitter;
@@ -2431,7 +2430,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
 
             // Add explicit affinity key index if nothing alike was found.
             if (affCol != null && !affIdxFound) {
-                idxs.add(new GridH2TreeIndex("AFFINITY_KEY", tbl, false,
+                idxs.add(createSortedIndex(cacheId, "AFFINITY_KEY", tbl, false,
                     treeIndexColumns(new ArrayList<IndexColumn>(2), affCol, keyCol)));
             }
 
@@ -2454,14 +2453,14 @@ public class IgniteH2Indexing implements GridQueryIndexing {
             List<IndexColumn> cols
         ) {
             try {
-                GridCacheSharedContext<Object,Object> scctx = ctx.cache().context();
+                GridCacheSharedContext<Object, Object> scctx = ctx.cache().context();
 
                 GridCacheContext cctx = scctx.cacheContext(cacheId);
 
-                if (cctx.affinityNode() && cctx.offheapIndex())
-                    return createIndex(cctx, name, tbl, pk, cols);
+                if (log.isInfoEnabled())
+                    log.info("Creating cache index [cacheId=" + cctx.cacheId() + ", idxName=" + name + ']');
 
-                return new GridH2TreeIndex(name, tbl, pk, cols);
+                return new H2TreeIndex(cctx, tbl, name, pk, cols);
             }
             catch (IgniteCheckedException e) {
                 throw new IgniteException(e);
@@ -2469,31 +2468,6 @@ public class IgniteH2Indexing implements GridQueryIndexing {
         }
 
         /**
-         * @param name Index name.
-         * @param tbl Table.
-         * @param pk Primary key flag.
-         * @param cols Columns.
-         * @return Index.
-         */
-        private Index createIndex(
-            GridCacheContext cctx,
-            String name,
-            GridH2Table tbl,
-            boolean pk,
-            List<IndexColumn> cols
-        ) throws IgniteCheckedException {
-            if (log.isInfoEnabled())
-                log.info("Creating cache index [cacheId=" + cctx.cacheId() + ", idxName=" + name + ']');
-
-            return new H2TreeIndex(
-                cctx,
-                tbl,
-                name,
-                pk,
-                cols);
-        }
-
-        /**
          *
          */
         void onDrop() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
index 8bd8ebe..b56b1ed 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
@@ -26,18 +26,16 @@ import org.apache.ignite.internal.processors.cache.database.IgniteCacheDatabaseS
 import org.apache.ignite.internal.processors.cache.database.RootPage;
 import org.apache.ignite.internal.processors.cache.database.tree.BPlusTree;
 import org.apache.ignite.internal.processors.cache.database.tree.io.BPlusIO;
-import org.apache.ignite.internal.processors.query.h2.opt.GridH2IndexBase;
-import org.apache.ignite.internal.processors.query.h2.opt.GridH2Row;
-import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
-import org.apache.ignite.internal.util.lang.GridCursor;
-import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.processors.query.h2.*;
+import org.apache.ignite.internal.processors.query.h2.opt.*;
+import org.apache.ignite.internal.util.*;
+import org.apache.ignite.internal.util.lang.*;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.spi.indexing.IndexingQueryFilter;
 import org.h2.engine.Session;
 import org.h2.index.Cursor;
 import org.h2.index.IndexType;
 import org.h2.message.DbException;
-import org.h2.result.Row;
 import org.h2.result.SearchRow;
 import org.h2.result.SortOrder;
 import org.h2.table.IndexColumn;
@@ -215,77 +213,27 @@ public class H2TreeIndex extends GridH2IndexBase {
         return this;
     }
 
-    /**
-     * Cursor.
-     */
-    private static class H2Cursor implements Cursor {
-        /** */
-        final GridCursor<GridH2Row> cursor;
-
-        /** */
-        final IgniteBiPredicate<Object,Object> filter;
-
-        /** */
-        final long time = U.currentTimeMillis();
-
-        /**
-         * @param cursor Cursor.
-         * @param filter Filter.
-         */
-        private H2Cursor(GridCursor<GridH2Row> cursor, IgniteBiPredicate<Object,Object> filter) {
-            assert cursor != null;
-
-            this.cursor = cursor;
-            this.filter = filter;
-        }
-
-        /** {@inheritDoc} */
-        @Override public Row get() {
-            try {
-                return cursor.get();
-            }
-            catch (IgniteCheckedException e) {
-                throw DbException.convert(e);
-            }
-        }
-
-        /** {@inheritDoc} */
-        @Override public SearchRow getSearchRow() {
-            return get();
-        }
-
-        /** {@inheritDoc} */
-        @Override public boolean next() {
-            try {
-                while (cursor.next()) {
-                    GridH2Row row = cursor.get();
-
-                    if (row.expireTime() > 0 && row.expireTime() <= time)
-                        continue;
-
-                    if (filter == null)
-                        return true;
+    protected IgniteTree<SearchRow, GridH2Row> treeForRead() {
+        return tree;
+    }
 
-                    Object key = row.getValue(0).getObject();
-                    Object val = row.getValue(1).getObject();
+    protected GridCursor<GridH2Row> doFind0(IgniteTree t,
+        @Nullable SearchRow first,
+        boolean includeFirst,
+        @Nullable SearchRow last,
+        IndexingQueryFilter filter) {
+        includeFirst &= first != null;
 
-                    assert key != null;
-                    assert val != null;
+        try {
+            GridCursor<GridH2Row> range = tree.find(first, last);
 
-                    if (filter.apply(key, val))
-                        return true;
-                }
+            if (range == null)
+                return EMPTY_CURSOR;
 
-                return false;
-            }
-            catch (IgniteCheckedException e) {
-                throw DbException.convert(e);
-            }
+            return filter(range, filter);
         }
-
-        /** {@inheritDoc} */
-        @Override public boolean previous() {
-            throw DbException.getUnsupportedException("previous");
+        catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
index 032b548..84d3b6a 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
@@ -44,7 +44,7 @@ import org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2RowRange
 import org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2ValueMessage;
 import org.apache.ignite.internal.processors.query.h2.twostep.msg.GridH2ValueMessageFactory;
 import org.apache.ignite.internal.util.*;
-import org.apache.ignite.internal.util.lang.GridFilteredIterator;
+import org.apache.ignite.internal.util.lang.*;
 import org.apache.ignite.internal.util.typedef.CIX2;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.CU;
@@ -306,12 +306,12 @@ public abstract class GridH2IndexBase extends BaseIndex {
     /**
      * Filters rows from expired ones and using predicate.
      *
-     * @param iter Iterator over rows.
+     * @param cursor GridCursor over rows.
      * @param filter Optional filter.
      * @return Filtered iterator.
      */
-    protected Iterator<GridH2Row> filter(Iterator<GridH2Row> iter, IndexingQueryFilter filter) {
-        return new FilteringIterator(iter, U.currentTimeMillis(), filter, getTable().spaceName());
+    protected GridCursor<GridH2Row> filter(GridCursor<GridH2Row> cursor, IndexingQueryFilter filter) {
+        return new FilteringCursor(cursor, U.currentTimeMillis(), filter, getTable().spaceName());
     }
 
     /**
@@ -460,13 +460,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
 
                     assert !msg.bounds().isEmpty() : "empty bounds";
 
-                    IgniteTree snapshotTree;
-
-                    if (snapshot0 instanceof IgniteTree)
-                        snapshotTree = (IgniteTree)snapshot0;
-                    else
-                        snapshotTree = new IgniteNavigableMapTree(
-                            (NavigableMap<GridSearchRowPointer, GridH2Row>) snapshot0);
+                    IgniteTree snapshotTree = (IgniteTree)snapshot0;
 
                     src = new RangeSource(msg.bounds(), snapshotTree, qctx.filter());
                 }
@@ -1367,7 +1361,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
         int curRangeId = -1;
 
         /** */
-        Iterator<GridH2Row> curRange = emptyIterator();
+        GridCursor<GridH2Row> curRange = EMPTY_CURSOR;
 
         /** */
         final IgniteTree tree;
@@ -1393,8 +1387,8 @@ public abstract class GridH2IndexBase extends BaseIndex {
         /**
          * @return {@code true} If there are more rows in this source.
          */
-        public boolean hasMoreRows() {
-            return boundsIter.hasNext() || curRange.hasNext();
+        public boolean hasMoreRows() throws IgniteCheckedException {
+            return boundsIter.hasNext() || curRange.next();
         }
 
         /**
@@ -1404,56 +1398,60 @@ public abstract class GridH2IndexBase extends BaseIndex {
         public GridH2RowRange next(int maxRows) {
             assert maxRows > 0 : maxRows;
 
-            for (;;) {
-                if (curRange.hasNext()) {
-                    // Here we are getting last rows from previously partially fetched range.
-                    List<GridH2RowMessage> rows = new ArrayList<>();
+            try {
+                for (;;) {
+                    if (curRange.next()) {
+                        // Here we are getting last rows from previously partially fetched range.
+                        List<GridH2RowMessage> rows = new ArrayList<>();
 
-                    GridH2RowRange nextRange = new GridH2RowRange();
+                        GridH2RowRange nextRange = new GridH2RowRange();
 
-                    nextRange.rangeId(curRangeId);
-                    nextRange.rows(rows);
+                        nextRange.rangeId(curRangeId);
+                        nextRange.rows(rows);
 
-                    do {
-                        rows.add(toRowMessage(curRange.next()));
-                    }
-                    while (rows.size() < maxRows && curRange.hasNext());
+                        do {
+                            rows.add(toRowMessage(curRange.get()));
+                        }
+                        while (rows.size() < maxRows && curRange.next());
 
-                    if (curRange.hasNext())
-                        nextRange.setPartial();
-                    else
-                        curRange = emptyIterator();
+                        if (curRange.next())
+                            nextRange.setPartial();
+                        else
+                            curRange = EMPTY_CURSOR;
 
-                    return nextRange;
-                }
+                        return nextRange;
+                    }
 
-                curRange = emptyIterator();
+                    curRange = EMPTY_CURSOR;
 
-                if (!boundsIter.hasNext()) {
-                    boundsIter = emptyIterator();
+                    if (!boundsIter.hasNext()) {
+                        boundsIter = emptyIterator();
 
-                    return null;
-                }
+                        return null;
+                    }
 
-                GridH2RowRangeBounds bounds = boundsIter.next();
+                    GridH2RowRangeBounds bounds = boundsIter.next();
 
-                curRangeId = bounds.rangeId();
+                    curRangeId = bounds.rangeId();
 
-                SearchRow first = toSearchRow(bounds.first());
-                SearchRow last = toSearchRow(bounds.last());
+                    SearchRow first = toSearchRow(bounds.first());
+                    SearchRow last = toSearchRow(bounds.last());
 
-                IgniteTree t = tree != null ? tree : treeForRead();
+                    IgniteTree t = tree != null ? tree : treeForRead();
 
-                curRange = doFind0(t, first, true, last, filter);
+                    curRange = doFind0(t, first, true, last, filter);
 
-                if (!curRange.hasNext()) {
-                    // We have to return empty range here.
-                    GridH2RowRange emptyRange = new GridH2RowRange();
+                    if (!curRange.next()) {
+                        // We have to return empty range here.
+                        GridH2RowRange emptyRange = new GridH2RowRange();
 
-                    emptyRange.rangeId(curRangeId);
+                        emptyRange.rangeId(curRangeId);
 
-                    return emptyRange;
+                        return emptyRange;
+                    }
                 }
+            } catch (IgniteCheckedException e) {
+                throw DbException.convert(e);
             }
         }
     }
@@ -1461,7 +1459,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
     /**
      * @return Snapshot for current thread if there is one.
      */
-    protected IgniteTree treeForRead() {
+    protected <K, V> IgniteTree<K, V> treeForRead() {
         throw new UnsupportedOperationException();
     }
 
@@ -1473,7 +1471,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
      * @param filter Filter.
      * @return Iterator over rows in given range.
      */
-    protected Iterator<GridH2Row> doFind0(IgniteTree t,
+    protected GridCursor<GridH2Row> doFind0(IgniteTree t,
         @Nullable SearchRow first,
         boolean includeFirst,
         @Nullable SearchRow last,
@@ -1482,9 +1480,11 @@ public abstract class GridH2IndexBase extends BaseIndex {
     }
 
     /**
-     * Iterator which filters by expiration time and predicate.
+     * Cursor which filters by expiration time and predicate.
      */
-    protected static class FilteringIterator extends GridFilteredIterator<GridH2Row> {
+    protected static class FilteringCursor implements GridCursor<GridH2Row> {
+        /** */
+        private final GridCursor<GridH2Row> cursor;
         /** */
         private final IgniteBiPredicate<Object, Object> fltr;
 
@@ -1494,17 +1494,19 @@ public abstract class GridH2IndexBase extends BaseIndex {
         /** Is value required for filtering predicate? */
         private final boolean isValRequired;
 
+        private GridH2Row next;
+
         /**
-         * @param iter Iterator.
+         * @param cursor GridCursor.
          * @param time Time for expired rows filtering.
          * @param qryFilter Filter.
          * @param spaceName Space name.
          */
-        protected FilteringIterator(Iterator<GridH2Row> iter,
+        protected FilteringCursor(GridCursor<GridH2Row> cursor,
             long time,
             IndexingQueryFilter qryFilter,
             String spaceName) {
-            super(iter);
+            this.cursor = cursor;
 
             this.time = time;
 
@@ -1524,7 +1526,7 @@ public abstract class GridH2IndexBase extends BaseIndex {
          * @return If this row was accepted.
          */
         @SuppressWarnings("unchecked")
-        @Override protected boolean accept(GridH2Row row) {
+        protected boolean accept(GridH2Row row) {
             if (row.expireTime() <= time)
                 return false;
 
@@ -1539,62 +1541,40 @@ public abstract class GridH2IndexBase extends BaseIndex {
 
             return fltr.apply(key, val);
         }
-    }
-
-    /**
-     * Adapter from {@link NavigableMap} to {@link IgniteTree}.
-     */
-    protected static class IgniteNavigableMapTree implements IgniteTree<GridSearchRowPointer, GridH2Row> {
-        private NavigableMap<GridSearchRowPointer, GridH2Row> tree;
-
-        /**
-         * @param map the {@link NavigableMap} which should be adapted.
-         */
-        public IgniteNavigableMapTree(final NavigableMap<GridSearchRowPointer, GridH2Row> map) {
-            this.tree = map;
-        }
 
-        /** {@inheritDoc} */
-        @Override public GridH2Row put(final GridSearchRowPointer key, final GridH2Row value) {
-            return tree.put(key, value);
-        }
+        @Override public boolean next() throws IgniteCheckedException {
+            next = null;
 
-        /** {@inheritDoc} */
-        @Override public GridH2Row get(final Object key) {
-            return tree.get(key);
-        }
+            while (cursor.next()) {
+                GridH2Row t = cursor.get();
 
-        /** {@inheritDoc} */
-        @Override public GridH2Row remove(final Object key) {
-            return tree.remove(key);
-        }
+                if (accept(t)) {
+                    next = t;
+                    return true;
+                }
+            }
 
-        /** {@inheritDoc} */
-        @Override public int size() {
-            return tree.size();
+            return false;
         }
 
-        /** {@inheritDoc} */
-        @Override public Collection<GridH2Row> values() {
-            return tree.values();
-        }
+        @Override public GridH2Row get() throws IgniteCheckedException {
+            if (next == null)
+                throw new NoSuchElementException();
 
-        /** {@inheritDoc} */
-        @Override
-        public IgniteTree<GridSearchRowPointer, GridH2Row> headTree(GridSearchRowPointer toKey, boolean inclusive) {
-            return new IgniteNavigableMapTree(tree.headMap(toKey, inclusive));
+            return next;
         }
+    }
 
+    /** Empty cursor. */
+    protected static final GridCursor<GridH2Row> EMPTY_CURSOR = new GridCursor<GridH2Row>() {
         /** {@inheritDoc} */
-        @Override
-        public IgniteTree<GridSearchRowPointer, GridH2Row> tailTree(GridSearchRowPointer fromKey, boolean inclusive) {
-            return new IgniteNavigableMapTree(tree.tailMap(fromKey, inclusive));
+        @Override public boolean next() {
+            return false;
         }
 
         /** {@inheritDoc} */
-        @Override public IgniteTree<GridSearchRowPointer, GridH2Row> subTree(GridSearchRowPointer fromKey,
-            boolean fromInclusive, GridSearchRowPointer toKey, boolean toInclusive) {
-            return new IgniteNavigableMapTree(tree.subMap(fromKey, fromInclusive, toKey, toInclusive));
+        @Override public GridH2Row get() {
+            return null;
         }
-    }
+    };
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
index ef3dd35..bf390ba 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
@@ -34,7 +34,7 @@ import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
-import org.apache.ignite.internal.processors.query.h2.database.H2RowFactory;
+import org.apache.ignite.internal.processors.query.h2.database.*;
 import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafeMemory;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.lang.IgniteBiTuple;
@@ -893,7 +893,7 @@ public class GridH2Table extends TableBase {
         /**
          * Create list of indexes. First must be primary key, after that all unique indexes and
          * only then non-unique indexes.
-         * All indexes must be subtypes of {@link GridH2TreeIndex}.
+         * All indexes must be subtypes of {@link H2TreeIndex}.
          *
          * @param tbl Table to create indexes for.
          * @return List of indexes.

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
index b4cd76f..e03c1a1 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
@@ -18,13 +18,14 @@
 package org.apache.ignite.internal.processors.query.h2.opt;
 
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.List;
 import java.util.NavigableMap;
-import java.util.concurrent.ConcurrentNavigableMap;
 import java.util.concurrent.ConcurrentSkipListMap;
 
+import org.apache.ignite.*;
+import org.apache.ignite.internal.processors.query.h2.*;
 import org.apache.ignite.internal.util.*;
+import org.apache.ignite.internal.util.lang.*;
 import org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap;
 import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafeGuard;
 import org.apache.ignite.internal.util.snaptree.SnapTreeMap;
@@ -93,7 +94,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
             }
             else {
                 tree = new IgniteNavigableMapTree(
-                    new ConcurrentSkipListMap<>(
+                    new ConcurrentSkipListMap<GridSearchRowPointer, GridH2Row>(
                         new Comparator<GridSearchRowPointer>() {
                             @Override public int compare(GridSearchRowPointer o1, GridSearchRowPointer o2) {
                                 if (o1 instanceof ComparableRow)
@@ -178,16 +179,22 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
 
         // Fast path if we don't need to perform any filtering.
         if (f == null || f.forSpace((getTable()).spaceName()) == null)
-            return treeForRead().size();
+            try {
+                return treeForRead().treeSize();
+            } catch (IgniteCheckedException e) {
+                throw DbException.convert(e);
+            }
 
-        Iterator<GridH2Row> iter = doFind(null, false, null);
+        GridCursor<GridH2Row> cursor = doFind(null, false, null);
 
         long size = 0;
 
-        while (iter.hasNext()) {
-            iter.next();
-
-            size++;
+        try {
+            while (cursor.next())
+                size++;
+        }
+        catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
         }
 
         return size;
@@ -240,12 +247,12 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
 
     /** {@inheritDoc} */
     @Override public Cursor find(Session ses, @Nullable SearchRow first, @Nullable SearchRow last) {
-        return new GridH2Cursor(doFind(first, true, last));
+        return new H2Cursor(doFind(first, true, last), null);
     }
 
     /** {@inheritDoc} */
     @Override public Cursor findNext(Session ses, SearchRow higherThan, SearchRow last) {
-        return new GridH2Cursor(doFind(higherThan, false, last));
+        return new H2Cursor(doFind(higherThan, false, last), null);
     }
 
     /**
@@ -257,7 +264,11 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
      * @return Row.
      */
     public GridH2Row findOne(GridH2Row row) {
-        return tree.get(row);
+        try {
+            return tree.findOne(row);
+        } catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
+        }
     }
 
     /**
@@ -269,14 +280,14 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
      * @return Iterator over rows in given range.
      */
     @SuppressWarnings("unchecked")
-    private Iterator<GridH2Row> doFind(@Nullable SearchRow first, boolean includeFirst, @Nullable SearchRow last) {
+    private GridCursor<GridH2Row> doFind(@Nullable SearchRow first, boolean includeFirst, @Nullable SearchRow last) {
         IgniteTree t = treeForRead();
 
         return doFind0(t, first, includeFirst, last, threadLocalFilter());
     }
 
     /** {@inheritDoc} */
-    @Override protected final Iterator<GridH2Row> doFind0(
+    @Override protected final GridCursor<GridH2Row> doFind0(
         IgniteTree t,
         @Nullable SearchRow first,
         boolean includeFirst,
@@ -285,13 +296,13 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
     ) {
         includeFirst &= first != null;
 
-        IgniteTree<GridSearchRowPointer, GridH2Row> range = subTree(t, comparable(first, includeFirst ? -1 : 1),
+        GridCursor<GridH2Row> range = subTree(t, comparable(first, includeFirst ? -1 : 1),
             comparable(last, 1));
 
         if (range == null)
-            return new GridEmptyIterator<>();
+            return EMPTY_CURSOR;
 
-        return filter(range.values().iterator(), filter);
+        return filter(range, filter);
     }
 
     /**
@@ -318,25 +329,19 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
      * @return Sub-map.
      */
     @SuppressWarnings({"IfMayBeConditional", "TypeMayBeWeakened"})
-    private IgniteTree subTree(IgniteTree tree,
+    private GridCursor<GridH2Row> subTree(IgniteTree tree,
         @Nullable GridSearchRowPointer first, @Nullable GridSearchRowPointer last) {
-        // We take exclusive bounds because it is possible that one search row will be equal to multiple key rows
-        // in tree and we must return them all.
-        if (first == null) {
-            if (last == null)
-                return tree;
-            else
-                return tree.headTree(last, false);
-        }
-        else {
-            if (last == null)
-                return tree.tailTree(first, false);
-            else {
-                if (compare(first, last) > 0)
-                    return null;
 
-                return tree.subTree(first, false, last, false);
-            }
+        if (first != null && last != null && compare(first, last) > 0)
+            return null;
+
+        try {
+            // We take exclusive bounds because it is possible that one search row will be equal to multiple key rows
+            // in tree and we must return them all.
+            return tree.find(first, false, last, false);
+        }
+        catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
         }
     }
 
@@ -345,7 +350,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
      *
      * @return Rows iterator.
      */
-    Iterator<GridH2Row> rows() {
+    GridCursor<GridH2Row> rows() {
         return doFind(null, false, null);
     }
 
@@ -361,12 +366,22 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
 
     /** {@inheritDoc} */
     @Override public GridH2Row put(GridH2Row row) {
-        return tree.put(row, row);
+        try {
+            return tree.put(row);
+        }
+        catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
+        }
     }
 
     /** {@inheritDoc} */
     @Override public GridH2Row remove(SearchRow row) {
-        return tree.remove(comparable(row, 0));
+        try {
+            return tree.removeNode(comparable(row, 0));
+        }
+        catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
+        }
     }
 
     /**
@@ -471,14 +486,69 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS
 
         long i = 0;
 
-        for (GridH2Row row : tree.values()) {
-            // Check for interruptions every 1000 iterations.
-            if (++i % 1000 == 0 && thread.isInterrupted())
-                throw new InterruptedException();
+        try {
+            GridCursor<GridH2Row> cursor = tree.findAll();
 
-            idx.tree.put(row, row);
+            while(cursor.next()) {
+                GridH2Row row = cursor.get();
+
+                // Check for interruptions every 1000 iterations.
+                if (++i % 1000 == 0 && thread.isInterrupted())
+                    throw new InterruptedException();
+
+                idx.tree.put(row);
+            }
+        }
+        catch (IgniteCheckedException e) {
+            throw DbException.convert(e);
         }
 
         return idx;
     }
+
+    /**
+     * Adapter from {@link NavigableMap} to {@link IgniteTree}.
+     */
+    private final class IgniteNavigableMapTree implements IgniteTree<GridSearchRowPointer, GridH2Row> {
+        private NavigableMap<GridSearchRowPointer, GridH2Row> tree;
+
+        public IgniteNavigableMapTree(NavigableMap<GridSearchRowPointer, GridH2Row> tree) {
+            this.tree = tree;
+        }
+
+        @Override public GridH2Row put(GridH2Row value) throws IgniteCheckedException {
+            return tree.put(value, value);
+        }
+
+        @Override public GridH2Row findOne(GridSearchRowPointer key) throws IgniteCheckedException {
+            return tree.get(key);
+        }
+
+        @Override public GridCursor<GridH2Row> find(GridSearchRowPointer lower, boolean lowerInclusive,
+                                                    GridSearchRowPointer upper, boolean upperInclusive)
+            throws IgniteCheckedException {
+
+            NavigableMap<GridSearchRowPointer, GridH2Row> subMap =
+                tree.subMap(lower, lowerInclusive, upper, upperInclusive);
+
+            return new GridCursorIteratorWrapper<GridH2Row>(subMap.values().iterator());
+        }
+
+        public GridCursor<GridH2Row> find(GridSearchRowPointer lower, GridSearchRowPointer upper)
+            throws IgniteCheckedException {
+            return find(lower, true, upper, true);
+        }
+
+        public GridCursor<GridH2Row> findAll() throws IgniteCheckedException {
+            return find(null, null);
+        }
+
+        @Override public GridH2Row removeNode(GridSearchRowPointer key) throws IgniteCheckedException {
+            return tree.remove(key);
+        }
+
+        @Override public long treeSize() throws IgniteCheckedException {
+            return tree.size();
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
index e4b7dd3..15f110f 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
@@ -172,7 +172,7 @@ public abstract class IgniteCacheAbstractQuerySelfTest extends GridCommonAbstrac
         if (cacheMode() == CacheMode.PARTITIONED)
             cc.setBackups(gridCount());
 
-        cc.setSnapshotableIndex(snapshotableIndex());
+        //cc.setSnapshotableIndex(snapshotableIndex());
 
         return cc;
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/b2999f2e/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TableSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TableSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TableSelfTest.java
index a0ac181..5daf415 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TableSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TableSelfTest.java
@@ -33,7 +33,10 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.ignite.*;
 import org.apache.ignite.internal.processors.query.h2.database.H2RowFactory;
+import org.apache.ignite.internal.util.lang.*;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.h2.Driver;
@@ -283,11 +286,11 @@ public class GridH2TableSelfTest extends GridCommonAbstractTest {
      *
      * @param idx Index.
      */
-    private void dumpRows(GridH2TreeIndex idx) {
-        Iterator<GridH2Row> iter = idx.rows();
+    private void dumpRows(GridH2TreeIndex idx) throws IgniteCheckedException {
+        GridCursor<GridH2Row> cursor = idx.rows();
 
-        while (iter.hasNext())
-            System.out.println(iter.next().toString());
+        while (cursor.next())
+            System.out.println(cursor.get().toString());
     }
 
     /**
@@ -584,17 +587,17 @@ public class GridH2TableSelfTest extends GridCommonAbstractTest {
      * @param rowSet Rows.
      * @return Rows.
      */
-    private Set<Row> checkIndexesConsistent(ArrayList<Index> idxs, @Nullable Set<Row> rowSet) {
+    private Set<Row> checkIndexesConsistent(ArrayList<Index> idxs, @Nullable Set<Row> rowSet) throws IgniteCheckedException {
         for (Index idx : idxs) {
             if (!(idx instanceof GridH2TreeIndex))
                 continue;
 
             Set<Row> set = new HashSet<>();
 
-            Iterator<GridH2Row> iter = ((GridH2TreeIndex)idx).rows();
+            GridCursor<GridH2Row> cursor = ((GridH2TreeIndex)idx).rows();
 
-            while(iter.hasNext())
-                assertTrue(set.add(iter.next()));
+            while(cursor.next())
+                assertTrue(set.add(cursor.get()));
 
             //((GridH2SnapTreeSet)((GridH2Index)idx).tree).print();
 
@@ -610,7 +613,7 @@ public class GridH2TableSelfTest extends GridCommonAbstractTest {
     /**
      * @param idxs Indexes list.
      */
-    private void checkOrdered(ArrayList<Index> idxs) {
+    private void checkOrdered(ArrayList<Index> idxs) throws IgniteCheckedException {
         for (Index idx : idxs) {
             if (!(idx instanceof GridH2TreeIndex))
                 continue;
@@ -625,13 +628,13 @@ public class GridH2TableSelfTest extends GridCommonAbstractTest {
      * @param idx Index.
      * @param cmp Comparator.
      */
-    private void checkOrdered(GridH2TreeIndex idx, Comparator<? super GridH2Row> cmp) {
-        Iterator<GridH2Row> rows = idx.rows();
+    private void checkOrdered(GridH2TreeIndex idx, Comparator<? super GridH2Row> cmp) throws IgniteCheckedException {
+        GridCursor<GridH2Row> cursor = idx.rows();
 
         GridH2Row min = null;
 
-        while (rows.hasNext()) {
-            GridH2Row row = rows.next();
+        while (cursor.next()) {
+            GridH2Row row = cursor.get();
 
             assertNotNull(row);
 


[07/24] ignite git commit: Merge ignite-gg-8.0.2.ea2 into ignite-gg-11414

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/ignite/blob/12130467/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
----------------------------------------------------------------------

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

http://git-wip-us.apache.org/repos/asf/ignite/blob/12130467/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/12130467/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --cc modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 47ca598,07a198f..6ea3387
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@@ -2468,6 -2690,73 +2690,39 @@@ public class IgniteH2Indexing implement
          }
  
          /**
+          * @return Index.
+          */
+         private Index createHashIndex(
+             int cacheId,
+             String name,
+             GridH2Table tbl,
+             List<IndexColumn> cols
+         ) {
+             try {
+                 GridCacheSharedContext<Object, Object> scctx = ctx.cache().context();
+ 
+                 GridCacheContext cctx = scctx.cacheContext(cacheId);
+ 
+                 if (cctx.affinityNode() && cctx.offheapIndex()) {
+                     assert pkHashIdx == null : pkHashIdx;
+ 
+                     pkHashIdx = new H2PkHashIndex(
+                         cctx,
+                         tbl,
+                         name,
+                         cols);
+ 
+                     return pkHashIdx;
+                 }
+ 
+                 return new GridH2TreeIndex(name, tbl, true, cols);
+             }
+             catch (IgniteCheckedException e) {
+                 throw new IgniteException(e);
+             }
+         }
+ 
+         /**
 -         * @param name Index name.
 -         * @param tbl Table.
 -         * @param pk Primary key flag.
 -         * @param cols Columns.
 -         * @return Index.
 -         */
 -        private Index createIndex(
 -            GridCacheContext cctx,
 -            String name,
 -            GridH2Table tbl,
 -            boolean pk,
 -            List<IndexColumn> cols
 -        ) throws IgniteCheckedException {
 -            if (log.isInfoEnabled())
 -                log.info("Creating cache index [cacheId=" + cctx.cacheId() + ", idxName=" + name + ']');
 -
 -            Index idx = new H2TreeIndex(
 -                cctx,
 -                tbl,
 -                name,
 -                pk,
 -                cols);
 -
 -            if (pk) {
 -                assert pkTreeIdx == null : pkTreeIdx;
 -
 -                pkTreeIdx = idx;
 -            }
 -
 -            return idx;
 -
 -        }
 -
 -        /**
           *
           */
          void onDrop() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/12130467/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/12130467/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/12130467/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/12130467/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
----------------------------------------------------------------------


[21/24] ignite git commit: ignite-gg-8.0.2.ea2 fix CacheExpiryTest.iteratorNextShouldCallGetExpiryForAccessedEntry TCK test

Posted by sb...@apache.org.
ignite-gg-8.0.2.ea2 fix CacheExpiryTest.iteratorNextShouldCallGetExpiryForAccessedEntry TCK test


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

Branch: refs/heads/ignite-gg-11810
Commit: 43eefb0c77f448af9b3634414bef0e97cb2d7838
Parents: 2266e2a
Author: Dmitriy Govorukhin <dg...@gridgain.com>
Authored: Wed Jan 11 15:30:52 2017 +0300
Committer: Dmitriy Govorukhin <dg...@gridgain.com>
Committed: Wed Jan 11 15:30:52 2017 +0300

----------------------------------------------------------------------
 .../cache/query/GridCacheQueryManager.java      |  23 ++--
 ...QueryNodeRestartDistributedJoinSelfTest.java | 104 +++++++++++--------
 2 files changed, 78 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/43eefb0c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index c584066..081a27c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -69,7 +69,6 @@ import org.apache.ignite.internal.processors.cache.IgniteCacheExpiryPolicy;
 import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.database.CacheDataRow;
-import org.apache.ignite.internal.processors.cache.database.tree.BPlusTree;
 import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter;
 import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLocalPartition;
 import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtUnreservedPartitionException;
@@ -2897,6 +2896,9 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
         /** */
         private GridIterator<CacheDataRow> it;
 
+        /** Need advance. */
+        private boolean needAdvance;
+
         /**
          * @param it Iterator.
          * @param plc Expiry policy.
@@ -2925,24 +2927,31 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
             this.keepBinary = keepBinary;
             expiryPlc = cctx.cache().expiryPolicy(plc);
 
-            advance();
+            needAdvance = true;
         }
 
         /** {@inheritDoc} */
         @Override public boolean onHasNext() {
+            if (needAdvance) {
+                advance();
+
+                needAdvance = false;
+            }
+
             return next != null;
         }
 
         /** {@inheritDoc} */
         @Override public IgniteBiTuple<K, V> onNext() {
+            if (needAdvance)
+                advance();
+            else
+                needAdvance = true;
+
             if (next == null)
                 throw new NoSuchElementException();
 
-            IgniteBiTuple<K, V> next0 = next;
-
-            advance();
-
-            return next0;
+            return next;
         }
 
         /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/43eefb0c/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java
index ced28bc..d022b0f 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartDistributedJoinSelfTest.java
@@ -103,72 +103,86 @@ public class IgniteCacheQueryNodeRestartDistributedJoinSelfTest extends IgniteCa
         final AtomicInteger qryCnt = new AtomicInteger();
         final AtomicBoolean qrysDone = new AtomicBoolean();
 
+        final AtomicBoolean fail = new AtomicBoolean();
+
         IgniteInternalFuture<?> fut1 = multithreadedAsync(new CAX() {
             @Override public void applyx() throws IgniteCheckedException {
                 GridRandom rnd = new GridRandom();
 
-                while (!qrysDone.get()) {
-                    int g;
+                try {
+                    while (!qrysDone.get()) {
+                        int g;
 
-                    do {
-                        g = rnd.nextInt(locks.length());
-                    }
-                    while (!locks.compareAndSet(g, 0, 1));
+                        do {
+                            g = rnd.nextInt(locks.length());
 
-                    if (rnd.nextBoolean()) {
-                        IgniteCache<?, ?> cache = grid(g).cache("pu");
+                            if (fail.get())
+                                return;
+                        }
+                        while (!locks.compareAndSet(g, 0, 1));
 
-                        SqlFieldsQuery qry;
+                        if (rnd.nextBoolean()) {
+                            IgniteCache<?, ?> cache = grid(g).cache("pu");
 
-                        if (broadcastQry)
-                            qry = new SqlFieldsQuery(QRY_0_BROADCAST).setDistributedJoins(true).setEnforceJoinOrder(true);
-                        else
-                            qry = new SqlFieldsQuery(QRY_0).setDistributedJoins(true);
+                            SqlFieldsQuery qry;
 
-                        boolean smallPageSize = rnd.nextBoolean();
+                            if (broadcastQry)
+                                qry = new SqlFieldsQuery(QRY_0_BROADCAST).setDistributedJoins(true).setEnforceJoinOrder(true);
+                            else
+                                qry = new SqlFieldsQuery(QRY_0).setDistributedJoins(true);
 
-                        qry.setPageSize(smallPageSize ? 30 : 1000);
+                            boolean smallPageSize = rnd.nextBoolean();
 
-                        try {
-                            assertEquals(pRes, cache.query(qry).getAll());
-                        }
-                        catch (CacheException e) {
-                            assertTrue("On large page size must retry.", smallPageSize);
+                            qry.setPageSize(smallPageSize ? 30 : 1000);
+
+                            try {
+                                assertEquals(pRes, cache.query(qry).getAll());
+                            }
+                            catch (CacheException e) {
+                                assertTrue("On large page size must retry.", smallPageSize);
 
-                            boolean failedOnRemoteFetch = false;
+                                boolean failedOnRemoteFetch = false;
 
-                            for (Throwable th = e; th != null; th = th.getCause()) {
-                                if (!(th instanceof CacheException))
-                                    continue;
+                                for (Throwable th = e; th != null; th = th.getCause()) {
+                                    if (!(th instanceof CacheException))
+                                        continue;
 
-                                if (th.getMessage() != null &&
-                                    th.getMessage().startsWith("Failed to fetch data from node:")) {
-                                    failedOnRemoteFetch = true;
+                                    if (th.getMessage() != null &&
+                                        th.getMessage().startsWith("Failed to fetch data from node:")) {
+                                        failedOnRemoteFetch = true;
 
-                                    break;
+                                        break;
+                                    }
                                 }
-                            }
 
-                            if (!failedOnRemoteFetch) {
-                                e.printStackTrace();
+                                if (!failedOnRemoteFetch) {
+                                    e.printStackTrace();
 
-                                fail("Must fail inside of GridResultPage.fetchNextPage or subclass.");
+                                    fail("Must fail inside of GridResultPage.fetchNextPage or subclass.");
+                                }
                             }
                         }
-                    }
-                    else {
-                        IgniteCache<?, ?> cache = grid(g).cache("co");
+                        else {
+                            IgniteCache<?, ?> cache = grid(g).cache("co");
 
-                        assertEquals(rRes, cache.query(qry1).getAll());
-                    }
+                            assertEquals(rRes, cache.query(qry1).getAll());
+                        }
 
-                    locks.set(g, 0);
+                        locks.set(g, 0);
 
-                    int c = qryCnt.incrementAndGet();
+                        int c = qryCnt.incrementAndGet();
 
-                    if (c % logFreq == 0)
-                        info("Executed queries: " + c);
+                        if (c % logFreq == 0)
+                            info("Executed queries: " + c);
+                    }
+                }catch (Throwable e){
+                    e.printStackTrace();
+
+                    error("Got exception: " + e.getMessage());
+
+                    fail.set(true);
                 }
+
             }
         }, qryThreadNum, "query-thread");
 
@@ -186,6 +200,9 @@ public class IgniteCacheQueryNodeRestartDistributedJoinSelfTest extends IgniteCa
 
                     do {
                         g = rnd.nextInt(locks.length());
+
+                        if (fail.get())
+                            return null;
                     }
                     while (!locks.compareAndSet(g, 0, -1));
 
@@ -215,7 +232,7 @@ public class IgniteCacheQueryNodeRestartDistributedJoinSelfTest extends IgniteCa
 
         Thread.sleep(duration);
 
-        info("Stopping..");
+        info("Stopping...");
 
         restartsDone.set(true);
         qrysDone.set(true);
@@ -223,6 +240,9 @@ public class IgniteCacheQueryNodeRestartDistributedJoinSelfTest extends IgniteCa
         fut2.get();
         fut1.get();
 
+        if (fail.get())
+            fail("See message above");
+
         info("Stopped.");
     }
 }
\ No newline at end of file


[09/24] ignite git commit: GG-11414 - Fixing compilation after merge.

Posted by sb...@apache.org.
GG-11414 - Fixing compilation after merge.


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

Branch: refs/heads/ignite-gg-11810
Commit: 1ffd04aaedf09afa588a37479b6d74ced910137b
Parents: 1213046
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Thu Dec 29 14:19:50 2016 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Thu Dec 29 14:19:50 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/query/h2/database/H2PkHashIndex.java  | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/1ffd04aa/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
index d00bfa7..b0647b6 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
@@ -29,6 +29,7 @@ import org.apache.ignite.internal.processors.cache.database.CacheDataRow;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2IndexBase;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2Row;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
+import org.apache.ignite.internal.util.IgniteTree;
 import org.apache.ignite.internal.util.lang.GridCursor;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.spi.indexing.IndexingQueryFilter;
@@ -195,10 +196,8 @@ public class H2PkHashIndex extends GridH2IndexBase {
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override protected Object doTakeSnapshot() {
-        assert false;
-
-        return this;
+    @Nullable @Override protected IgniteTree doTakeSnapshot() {
+        throw new AssertionError("This method must not be called for PK index");
     }
 
     /**