You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vk...@apache.org on 2015/07/23 04:53:04 UTC

[01/24] incubator-ignite git commit: ignite-1015

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-104 2ac79893c -> b544e80b8


ignite-1015


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

Branch: refs/heads/ignite-104
Commit: f1f3da8ed047bf3df173b74b6430d52fe06c9f57
Parents: f9fe999
Author: S.Vladykin <sv...@gridgain.com>
Authored: Tue Jul 21 20:29:58 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Tue Jul 21 20:29:58 2015 +0300

----------------------------------------------------------------------
 .../processors/query/h2/sql/GridSqlElement.java |  17 +-
 .../query/h2/sql/GridSqlOperation.java          |  14 --
 .../processors/query/h2/sql/GridSqlQuery.java   |  17 +-
 .../query/h2/sql/GridSqlQueryParser.java        |  11 +-
 .../query/h2/sql/GridSqlQuerySplitter.java      | 196 ++++++++++---------
 .../processors/query/h2/sql/GridSqlSelect.java  |  72 +------
 .../processors/query/h2/sql/GridSqlType.java    |  10 +-
 .../processors/query/h2/sql/GridSqlUnion.java   |  11 --
 .../cache/GridCacheCrossCacheQuerySelfTest.java |  70 -------
 9 files changed, 125 insertions(+), 293 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f1f3da8e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
index a1c91ff..9a6b410 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
@@ -22,7 +22,7 @@ import java.util.*;
 /**
  * Abstract SQL element.
  */
-public abstract class GridSqlElement implements Cloneable, Iterable<GridSqlElement> {
+public abstract class GridSqlElement implements Iterable<GridSqlElement> {
     /** */
     protected List<GridSqlElement> children = new ArrayList<>();
 
@@ -78,21 +78,6 @@ public abstract class GridSqlElement implements Cloneable, Iterable<GridSqlEleme
         return children.get(idx);
     }
 
-    /** {@inheritDoc} */
-    @SuppressWarnings({"CloneCallsConstructors", "CloneDoesntDeclareCloneNotSupportedException"})
-    @Override public GridSqlElement clone() {
-        try {
-            GridSqlElement res = (GridSqlElement)super.clone();
-
-            res.children = new ArrayList<>(children);
-
-            return res;
-        }
-        catch (CloneNotSupportedException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
     /**
      * @param idx Index.
      * @param child New child.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f1f3da8e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java
index 625444c..6100618 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java
@@ -54,20 +54,6 @@ public class GridSqlOperation extends GridSqlElement {
     }
 
     /**
-     * @return Left.
-     */
-    public GridSqlElement left() {
-        return child(0);
-    }
-
-    /**
-     * @return Right.
-     */
-    public GridSqlElement right() {
-        return child(1);
-    }
-
-    /**
      * @return Operation type.
      */
     public GridSqlOperationType opType() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f1f3da8e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java
index 207588e..b562279 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java
@@ -24,7 +24,7 @@ import java.util.*;
 /**
  * Select query.
  */
-public abstract class GridSqlQuery implements Cloneable {
+public abstract class GridSqlQuery {
     /** */
     protected boolean distinct;
 
@@ -185,19 +185,4 @@ public abstract class GridSqlQuery implements Cloneable {
             buff.append(" OFFSET ").append(StringUtils.unEnclose(offset.getSQL()));
 
     }
-
-    /** {@inheritDoc} */
-    @SuppressWarnings({"CloneCallsConstructors", "CloneDoesntDeclareCloneNotSupportedException"})
-    @Override public GridSqlQuery clone() {
-        try {
-            GridSqlQuery res = (GridSqlQuery)super.clone();
-
-            res.sort = new ArrayList<>(sort);
-
-            return res;
-        }
-        catch (CloneNotSupportedException e) {
-            throw new RuntimeException(e); // Never thrown.
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f1f3da8e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
index 74e4748..4267b4a 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
@@ -276,21 +276,14 @@ public class GridSqlQueryParser {
 
         int[] grpIdx = GROUP_INDEXES.get(select);
 
-        if (grpIdx != null) {
+        if (grpIdx != null)
             res.groupColumns(grpIdx);
 
-            for (int idx : grpIdx)
-                res.addGroupExpression(parseExpression(expressions.get(idx)));
-        }
-
         int havingIdx = HAVING_INDEX.get(select);
 
-        if (havingIdx >= 0) {
+        if (havingIdx >= 0)
             res.havingColumn(havingIdx);
 
-            res.having(parseExpression(expressions.get(havingIdx)));
-        }
-
         processSortOrder(select.getSortOrder(), res);
 
         res.limit(parseExpression(select.getLimit()));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f1f3da8e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 7ffbc16..b1dc0dc 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -70,77 +70,85 @@ public class GridSqlQuerySplitter {
     }
 
     /**
-     * @param stmt Prepared statement.
-     * @param params Parameters.
-     * @param collocated Collocated query.
-     * @return Two step query.
+     * @param qry Query.
+     * @return Select query.
      */
-    public static GridCacheTwoStepQuery split(JdbcPreparedStatement stmt, Object[] params, boolean collocated) {
-        if (params == null)
-            params = GridCacheSqlQuery.EMPTY_PARAMS;
+    private static GridSqlSelect wrapUnion(GridSqlQuery qry) {
+        if (qry instanceof GridSqlSelect)
+            return (GridSqlSelect)qry;
 
-        final GridSqlQuery qry0 = GridSqlQueryParser.parse(stmt);
+        // Handle UNION.
+        GridSqlSelect wrapQry = new GridSqlSelect().from(new GridSqlSubquery(qry));
 
-        GridSqlSelect srcQry;
+        wrapQry.explain(qry.explain());
+        qry.explain(false);
 
-        if (qry0 instanceof GridSqlSelect)
-            srcQry = (GridSqlSelect)qry0;
-        else { // Handle UNION.
-            srcQry = new GridSqlSelect().from(new GridSqlSubquery(qry0));
+        GridSqlSelect left = leftest(qry);
 
-            srcQry.explain(qry0.explain());
+        int c = 0;
 
-            GridSqlSelect left = leftest(qry0);
+        for (GridSqlElement expr : left.select(true)) {
+            String colName;
 
-            int c = 0;
+            if (expr instanceof GridSqlAlias)
+                colName = ((GridSqlAlias)expr).alias();
+            else if (expr instanceof GridSqlColumn)
+                colName = ((GridSqlColumn)expr).columnName();
+            else {
+                colName = columnName(c);
 
-            for (GridSqlElement expr : left.select(true)) {
-                String colName;
+                expr = alias(colName, expr);
 
-                if (expr instanceof GridSqlAlias)
-                    colName = ((GridSqlAlias)expr).alias();
-                else if (expr instanceof GridSqlColumn)
-                    colName = ((GridSqlColumn)expr).columnName();
-                else {
-                    colName = columnName(c);
+                // Set generated alias to the expression.
+                left.setSelectExpression(c, expr);
+            }
 
-                    expr = alias(colName, expr);
+            GridSqlColumn col = column(colName);
 
-                    // Set generated alias to the expression.
-                    left.setSelectExpression(c, expr);
-                }
+            wrapQry.addSelectExpression(col, true);
 
-                GridSqlColumn col = column(colName);
+            c++;
+        }
 
-                srcQry.addSelectExpression(col, true);
+        // ORDER BY
+        if (!qry.sort().isEmpty()) {
+            for (GridSqlSortColumn col : qry.sort())
+                wrapQry.addSort(col);
+        }
 
-                qry0.sort();
+        return wrapQry;
+    }
 
-                c++;
-            }
+    /**
+     * @param stmt Prepared statement.
+     * @param params Parameters.
+     * @param collocated Collocated query.
+     * @return Two step query.
+     */
+    public static GridCacheTwoStepQuery split(JdbcPreparedStatement stmt, Object[] params, boolean collocated) {
+        if (params == null)
+            params = GridCacheSqlQuery.EMPTY_PARAMS;
 
-            // ORDER BY
-            if (!qry0.sort().isEmpty()) {
-                for (GridSqlSortColumn col : qry0.sort())
-                    srcQry.addSort(col);
-            }
-        }
+        Set<String> spaces = new HashSet<>();
+
+        // Map query will be direct reference to the original query AST.
+        // Thus all the modifications will be performed on the original AST, so we should be careful when
+        // nullifying or updating things, have to make sure that we will not need them in the original form later.
+        final GridSqlSelect mapQry = wrapUnion(collectAllSpaces(GridSqlQueryParser.parse(stmt), spaces));
 
         final String mergeTable = TABLE_FUNC_NAME + "()"; // table(0); TODO
 
-        // Create map and reduce queries.
-        GridSqlSelect mapQry = srcQry.clone();
+        final boolean explain = mapQry.explain();
 
         mapQry.explain(false);
 
         GridSqlSelect rdcQry = new GridSqlSelect().from(new GridSqlFunction(null, TABLE_FUNC_NAME)); // table(mergeTable)); TODO
 
         // Split all select expressions into map-reduce parts.
-        List<GridSqlElement> mapExps = F.addAll(
-            new ArrayList<GridSqlElement>(srcQry.allColumns()),
-            srcQry.select(false));
+        List<GridSqlElement> mapExps = F.addAll(new ArrayList<GridSqlElement>(mapQry.allColumns()),
+            mapQry.select(false));
 
-        GridSqlElement[] rdcExps = new GridSqlElement[srcQry.visibleColumns()];
+        GridSqlElement[] rdcExps = new GridSqlElement[mapQry.visibleColumns()];
 
         Set<String> colNames = new HashSet<>();
 
@@ -162,66 +170,56 @@ public class GridSqlQuerySplitter {
             rdcQry.addSelectExpression(column(((GridSqlAlias)mapExps.get(i)).alias()), false);
 
         // -- GROUP BY
-        if (srcQry.hasGroupBy()) {
-            mapQry.clearGroups();
-
-            for (int col : srcQry.groupColumns())
-                mapQry.addGroupExpression(column(((GridSqlAlias)mapExps.get(col)).alias()));
-
-            if (!collocated) {
-                for (int col : srcQry.groupColumns())
-                    rdcQry.addGroupExpression(column(((GridSqlAlias)mapExps.get(col)).alias()));
-            }
-        }
+        if (mapQry.groupColumns() != null && !collocated)
+            rdcQry.groupColumns(mapQry.groupColumns());
 
         // -- HAVING
-        if (srcQry.having() != null && !collocated) {
-            // TODO Find aggregate functions in HAVING clause.
-            rdcQry.whereAnd(column(columnName(srcQry.havingColumn())));
+        if (mapQry.havingColumn() >= 0 && !collocated) {
+            // TODO Find aggregate functions in HAVING clause or rewrite query to put all aggregates to SELECT clause.
+            rdcQry.whereAnd(column(columnName(mapQry.havingColumn())));
 
-            mapQry.having(null);
+            mapQry.havingColumn(-1);
         }
 
         // -- ORDER BY
-        if (!srcQry.sort().isEmpty()) {
+        if (!mapQry.sort().isEmpty()) {
+            for (GridSqlSortColumn sortCol : mapQry.sort())
+                rdcQry.addSort(sortCol);
+
             if (aggregateFound) // Ordering over aggregates does not make sense.
                 mapQry.clearSort(); // Otherwise map sort will be used by offset-limit.
-
-            for (GridSqlSortColumn sortCol : srcQry.sort())
-                rdcQry.addSort(sortCol);
+            // TODO Check if sorting is done over aggregated expression, otherwise we can sort and use offset-limit.
         }
 
         // -- LIMIT
-        if (srcQry.limit() != null) {
+        if (mapQry.limit() != null) {
+            rdcQry.limit(mapQry.limit());
+
             if (aggregateFound)
                 mapQry.limit(null);
-
-            rdcQry.limit(srcQry.limit());
         }
 
         // -- OFFSET
-        if (srcQry.offset() != null) {
-            mapQry.offset(null);
+        if (mapQry.offset() != null) {
+            rdcQry.offset(mapQry.offset());
 
-            rdcQry.offset(srcQry.offset());
+            mapQry.offset(null);
         }
 
         // -- DISTINCT
-        if (srcQry.distinct()) {
-            mapQry.distinct(false);
+        if (mapQry.distinct()) {
+            mapQry.distinct(!aggregateFound && mapQry.groupColumns() == null && mapQry.havingColumn() < 0);
             rdcQry.distinct(true);
         }
 
         // Build resulting two step query.
-        GridCacheTwoStepQuery res = new GridCacheTwoStepQuery(
-            collectAllSpaces(qry0, new HashSet<String>()),
-            rdcQry.getSQL(),
+        GridCacheTwoStepQuery res = new GridCacheTwoStepQuery(spaces, rdcQry.getSQL(),
             findParams(rdcQry, params, new ArrayList<>()).toArray());
 
         res.addMapQuery(mergeTable, mapQry.getSQL(),
             findParams(mapQry, params, new ArrayList<>(params.length)).toArray());
 
-        res.explain(qry0.explain());
+        res.explain(explain);
 
         return res;
     }
@@ -229,19 +227,27 @@ public class GridSqlQuerySplitter {
     /**
      * @param qry Query.
      * @param spaces Space names.
-     * @return Space names.
+     * @return Query.
      */
-    private static Set<String> collectAllSpaces(GridSqlQuery qry, Set<String> spaces) {
+    private static GridSqlQuery collectAllSpaces(GridSqlQuery qry, Set<String> spaces) {
         if (qry instanceof GridSqlUnion) {
             GridSqlUnion union = (GridSqlUnion)qry;
 
             collectAllSpaces(union.left(), spaces);
             collectAllSpaces(union.right(), spaces);
         }
-        else
-            collectAllSpacesInFrom(((GridSqlSelect)qry).from(), spaces);
+        else {
+            GridSqlSelect select = (GridSqlSelect)qry;
+
+            collectAllSpacesInFrom(select.from(), spaces);
+
+            for (GridSqlElement el : select.select(false))
+                collectAllSpacesInSubqueries(el, spaces);
+
+            collectAllSpacesInSubqueries(select.where(), spaces);
+        }
 
-        return spaces;
+        return qry;
     }
 
     /**
@@ -271,6 +277,23 @@ public class GridSqlQuerySplitter {
     }
 
     /**
+     * Searches spaces in subqueries in SELECT and WHERE clauses.
+     * @param el Element.
+     * @param spaces Space names.
+     */
+    private static void collectAllSpacesInSubqueries(GridSqlElement el, Set<String> spaces) {
+        if (el instanceof GridSqlAlias)
+            el = el.child();
+
+        if (el instanceof GridSqlOperation || el instanceof GridSqlFunction || el instanceof GridSqlAggregateFunction) {
+            for (GridSqlElement child : el)
+                collectAllSpacesInSubqueries(child, spaces);
+        }
+        else if (el instanceof GridSqlSubquery)
+            collectAllSpaces(((GridSqlSubquery)el).select(), spaces);
+    }
+
+    /**
      * @param qry Select.
      * @param params Parameters.
      * @param target Extracted parameters.
@@ -307,10 +330,7 @@ public class GridSqlQuerySplitter {
         findParams(qry.from(), params, target);
         findParams(qry.where(), params, target);
 
-        for (GridSqlElement el : qry.groups())
-            findParams(el, params, target);
-
-        findParams(qry.having(), params, target);
+        // Don't search in GROUP BY and HAVING since they expected to be in select list.
 
         findParams(qry.limit(), params, target);
         findParams(qry.offset(), params, target);
@@ -362,7 +382,7 @@ public class GridSqlQuerySplitter {
      * @return {@code true} If aggregate was found.
      */
     private static boolean splitSelectExpression(List<GridSqlElement> mapSelect, GridSqlElement[] rdcSelect,
-        Set<String> colNames, int idx, boolean collocated) {
+        Set<String> colNames, final int idx, boolean collocated) {
         GridSqlElement el = mapSelect.get(idx);
 
         GridSqlAlias alias = null;
@@ -416,7 +436,6 @@ public class GridSqlQuerySplitter {
                 case MAX: // MAX( MAX(x) )
                 case MIN: // MIN( MIN(x) )
                     mapAgg = aggregate(agg.distinct(), agg.type()).addChild(agg.child());
-
                     rdcAgg = aggregate(agg.distinct(), agg.type()).addChild(column(mapAggAlias));
 
                     break;
@@ -429,7 +448,6 @@ public class GridSqlQuerySplitter {
                         mapAgg.addChild(agg.child());
 
                     rdcAgg = aggregate(false, SUM).addChild(column(mapAggAlias));
-
                     rdcAgg = function(CAST).setCastType("BIGINT").addChild(rdcAgg);
 
                     break;
@@ -469,7 +487,7 @@ public class GridSqlQuerySplitter {
                 GridSqlType type = el.expressionResultType();
 
                 if (type != null && type.type() == Value.UUID) // There is no JDBC type UUID, so conversion to bytes occurs.
-                    rdcEl = function(CAST).setCastType("UUID").addChild(rdcEl);
+                    rdcEl = function(CAST).setCastType("UUID").addChild(rdcEl); // TODO remove this cast when table function removed
 
                 if (colNames.add(rdcColAlias)) // To handle column name duplication (usually wildcard for few tables).
                     rdcEl = alias(rdcColAlias, rdcEl);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f1f3da8e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
index 9972bba..84b0031 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
@@ -32,9 +32,6 @@ public class GridSqlSelect extends GridSqlQuery {
     private List<GridSqlElement> select = new ArrayList<>();
 
     /** */
-    private List<GridSqlElement> groups = new ArrayList<>();
-
-    /** */
     private int[] grpCols;
 
     /** */
@@ -44,9 +41,6 @@ public class GridSqlSelect extends GridSqlQuery {
     private GridSqlElement where;
 
     /** */
-    private GridSqlElement having;
-
-    /** */
     private int havingCol = -1;
 
     /** {@inheritDoc} */
@@ -84,12 +78,14 @@ public class GridSqlSelect extends GridSqlQuery {
         if (where != null)
             buff.append("\nWHERE ").append(StringUtils.unEnclose(where.getSQL()));
 
-        if (!groups.isEmpty()) {
+        if (grpCols != null) {
             buff.append("\nGROUP BY ");
 
             buff.resetCount();
 
-            for (GridSqlElement expression : groups) {
+            for (int grpCol : grpCols) {
+                GridSqlElement expression = allExprs.get(grpCol);
+
                 buff.appendExceptFirst(", ");
 
                 if (expression instanceof GridSqlAlias)
@@ -99,8 +95,8 @@ public class GridSqlSelect extends GridSqlQuery {
             }
         }
 
-        if (having != null)
-            buff.append("\nHAVING ").append(StringUtils.unEnclose(having.getSQL()));
+        if (havingCol >= 0)
+            buff.append("\nHAVING ").append(StringUtils.unEnclose(allExprs.get(havingCol).getSQL()));
 
         getSortLimitSQL(buff);
 
@@ -158,38 +154,6 @@ public class GridSqlSelect extends GridSqlQuery {
     }
 
     /**
-     * @return Expressions.
-     */
-    public Iterable<GridSqlElement> groups() {
-        return groups;
-    }
-
-    /**
-     * @return {@code true} If the select has group by expression.
-     */
-    public boolean hasGroupBy() {
-        return !groups.isEmpty();
-    }
-
-    /**
-     *
-     */
-    public void clearGroups() {
-        groups = new ArrayList<>();
-        grpCols = null;
-    }
-
-    /**
-     * @param expression Expression.
-     */
-    public void addGroupExpression(GridSqlElement expression) {
-        if (expression == null)
-            throw new NullPointerException();
-
-        groups.add(expression);
-    }
-
-    /**
      * @return Group columns.
      */
     public int[] groupColumns() {
@@ -253,20 +217,15 @@ public class GridSqlSelect extends GridSqlQuery {
      * @return Having.
      */
     public GridSqlElement having() {
-        return having;
-    }
-
-    /**
-     * @param having New having.
-     */
-    public void having(GridSqlElement having) {
-        this.having = having;
+        return havingCol >= 0 ? allExprs.get(havingCol) : null;
     }
 
     /**
      * @param col Index of HAVING column.
      */
     public void havingColumn(int col) {
+        assert col >= -1 : col;
+
         havingCol = col;
     }
 
@@ -276,17 +235,4 @@ public class GridSqlSelect extends GridSqlQuery {
     public int havingColumn() {
         return havingCol;
     }
-
-    /** {@inheritDoc} */
-    @SuppressWarnings({"CloneCallsConstructors", "CloneDoesntDeclareCloneNotSupportedException"})
-    @Override public GridSqlSelect clone() {
-        GridSqlSelect res = (GridSqlSelect)super.clone();
-
-        res.groups = new ArrayList<>(groups);
-        res.grpCols =  grpCols == null ? null : grpCols.clone();
-        res.select = new ArrayList<>(select);
-        res.allExprs = new ArrayList<>(allExprs);
-
-        return res;
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f1f3da8e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlType.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlType.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlType.java
index 117313d..1dbcd46 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlType.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlType.java
@@ -22,19 +22,19 @@ package org.apache.ignite.internal.processors.query.h2.sql;
  */
 public class GridSqlType {
     /** H2 type. */
-    private int type;
+    private final int type;
 
     /** */
-    private int scale;
+    private final int scale;
 
     /** */
-    private long precision;
+    private final long precision;
 
     /** */
-    private int displaySize;
+    private final int displaySize;
 
     /** */
-    private String sql;
+    private final String sql;
 
     /**
      * @param type H2 Type.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f1f3da8e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java
index 96beb6b..721c288 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlUnion.java
@@ -79,17 +79,6 @@ public class GridSqlUnion extends GridSqlQuery {
         return buff.toString();
     }
 
-    /** {@inheritDoc} */
-    @SuppressWarnings({"CloneCallsConstructors", "CloneDoesntDeclareCloneNotSupportedException"})
-    @Override public GridSqlUnion clone() {
-        GridSqlUnion res = (GridSqlUnion)super.clone();
-
-        res.right = right.clone();
-        res.left = left.clone();
-
-        return res;
-    }
-
     /**
      * @return Union type.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f1f3da8e/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
index b295c46..f94d695 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
@@ -23,17 +23,14 @@ import org.apache.ignite.cache.query.*;
 import org.apache.ignite.cache.query.annotations.*;
 import org.apache.ignite.configuration.*;
 import org.apache.ignite.internal.*;
-import org.apache.ignite.internal.processors.cache.query.*;
 import org.apache.ignite.internal.processors.query.*;
 import org.apache.ignite.internal.util.typedef.*;
-import org.apache.ignite.marshaller.optimized.*;
 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.concurrent.*;
 
 import static org.apache.ignite.cache.CacheAtomicityMode.*;
 import static org.apache.ignite.cache.CacheRebalanceMode.*;
@@ -113,37 +110,6 @@ public class GridCacheCrossCacheQuerySelfTest extends GridCommonAbstractTest {
     /**
      * @throws Exception If failed.
      */
-    public void testTwoStep() throws Exception {
-        fail("https://issues.apache.org/jira/browse/IGNITE-827");
-
-        String cache = "partitioned";
-
-        GridQueryProcessor qryProc = ((IgniteKernal) ignite).context().query();
-
-//        for (Map.Entry<Integer, FactPurchase> e : qx.createSqlQuery(FactPurchase.class, "1 = 1").execute().get())
-//            X.println("___ "  + e);
-
-        GridCacheTwoStepQuery q = new GridCacheTwoStepQuery(null,
-            "select cast(sum(x) as long) from _cnts_ where ? = ?", 1, 1);
-
-        q.addMapQuery("_cnts_", "select count(*) x from \"partitioned\".FactPurchase where ? = ?", 2, 2);
-
-        Iterator<List<?>> it = qryProc.queryTwoStep(cache, q).iterator();
-
-        try {
-            Object cnt = it.next().get(0);
-
-            assertEquals(10L, cnt);
-        }
-        finally {
-            if (it instanceof AutoCloseable)
-                ((AutoCloseable)it).close();
-        }
-    }
-
-    /**
-     * @throws Exception If failed.
-     */
     public void testTwoStepGroupAndAggregates() throws Exception {
         IgniteInternalCache<Integer, FactPurchase> cache =
             ((IgniteKernal)ignite).getCache("partitioned");
@@ -258,42 +224,6 @@ public class GridCacheCrossCacheQuerySelfTest extends GridCommonAbstractTest {
 //        return 10 * 60 * 1000;
 //    }
 
-    public void testLoop() throws Exception {
-        fail("https://issues.apache.org/jira/browse/IGNITE-827");
-
-        final IgniteCache<Object,Object> c = ignite.cache("partitioned");
-
-        X.println("___ GET READY");
-
-        Thread.sleep(20000);
-
-        X.println("___ GO");
-
-        multithreaded(new Callable<Object>() {
-            @Override public Object call() throws Exception {
-                long start = System.currentTimeMillis();
-
-                for (int i = 0; i < 1000000; i++) {
-                    if (i % 10000 == 0) {
-                        long t = System.currentTimeMillis();
-
-                        X.println(Thread.currentThread().getId() + "__ " + i + " -> " + (t - start));
-
-                        start = t;
-                    }
-
-                    c.query(new SqlFieldsQuery("select * from FactPurchase")).getAll();
-                }
-
-                return null;
-            }
-        }, 20);
-
-        X.println("___ OK");
-
-        Thread.sleep(300000);
-    }
-
     /**
      * @param l List.
      * @param idx Index.


[21/24] incubator-ignite git commit: IGNITE-104 - Ordered ATOMIC updates

Posted by vk...@apache.org.
IGNITE-104 - Ordered ATOMIC updates


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

Branch: refs/heads/ignite-104
Commit: b18141183bfe7a6b0d566ed00585e4894dec887d
Parents: 1fee086
Author: Valentin Kulichenko <vk...@gridgain.com>
Authored: Wed Jul 22 16:51:41 2015 -0700
Committer: Valentin Kulichenko <vk...@gridgain.com>
Committed: Wed Jul 22 16:51:41 2015 -0700

----------------------------------------------------------------------
 .../internal/processors/cache/GridCacheContext.java  |  8 ++++++--
 .../cache/distributed/dht/GridDhtLocalPartition.java | 15 +++++++++++----
 .../cache/distributed/near/GridNearAtomicCache.java  |  4 +++-
 3 files changed, 20 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b1814118/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index 5f17746..05ce183 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -537,8 +537,12 @@ public class GridCacheContext<K, V> implements Externalizable {
      * @return {@code True} if entries should not be deleted from cache immediately.
      */
     public boolean deferredDelete(GridCacheAdapter<?, ?> cache) {
-        return cache.isDht() || cache.isDhtAtomic() || cache.isColocated() ||
-            (cache.isNear() && cache.configuration().getAtomicityMode() == ATOMIC);
+        boolean nearAtomic = cache.isNear() && cache.configuration().getAtomicityMode() == ATOMIC;
+        boolean orderedUpdates = cache.configuration().isAtomicOrderedUpdates();
+
+        return cache.isDht() || cache.isColocated() ||
+            (cache.isDhtAtomic() && !orderedUpdates) ||
+            (nearAtomic && !orderedUpdates);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b1814118/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java
index 87c7f0e..1d47840 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java
@@ -90,7 +90,7 @@ public class GridDhtLocalPartition implements Comparable<GridDhtLocalPartition>,
     private final LongAdder8 mapPubSize = new LongAdder8();
 
     /** Remove queue. */
-    private final GridCircularBuffer<T2<KeyCacheObject, GridCacheVersion>> rmvQueue;
+    private GridCircularBuffer<T2<KeyCacheObject, GridCacheVersion>> rmvQueue;
 
     /** Group reservations. */
     private final CopyOnWriteArrayList<GridDhtPartitionsReservation> reservations = new CopyOnWriteArrayList<>();
@@ -120,7 +120,8 @@ public class GridDhtLocalPartition implements Comparable<GridDhtLocalPartition>,
         int delQueueSize = CU.isSystemCache(cctx.name()) ? 100 :
             Math.max(MAX_DELETE_QUEUE_SIZE / cctx.affinity().partitions(), 20);
 
-        rmvQueue = new GridCircularBuffer<>(U.ceilPow2(delQueueSize));
+        if (cctx.deferredDelete())
+            rmvQueue = new GridCircularBuffer<>(U.ceilPow2(delQueueSize));
     }
 
     /**
@@ -270,6 +271,8 @@ public class GridDhtLocalPartition implements Comparable<GridDhtLocalPartition>,
      * @throws IgniteCheckedException If failed.
      */
     public void onDeferredDelete(KeyCacheObject key, GridCacheVersion ver) throws IgniteCheckedException {
+        assert cctx.deferredDelete();
+
         try {
             T2<KeyCacheObject, GridCacheVersion> evicted = rmvQueue.add(new T2<>(key, ver));
 
@@ -471,7 +474,8 @@ public class GridDhtLocalPartition implements Comparable<GridDhtLocalPartition>,
 
             ((GridDhtPreloader)cctx.preloader()).onPartitionEvicted(this, updateSeq);
 
-            clearDeferredDeletes();
+            if (cctx.deferredDelete())
+                clearDeferredDeletes();
 
             return new GridFinishedFuture<>(true);
         }
@@ -522,7 +526,8 @@ public class GridDhtLocalPartition implements Comparable<GridDhtLocalPartition>,
 
             ((GridDhtPreloader)cctx.preloader()).onPartitionEvicted(this, updateSeq);
 
-            clearDeferredDeletes();
+            if (cctx.deferredDelete())
+                clearDeferredDeletes();
 
             return true;
         }
@@ -681,6 +686,8 @@ public class GridDhtLocalPartition implements Comparable<GridDhtLocalPartition>,
      *
      */
     private void clearDeferredDeletes() {
+        assert cctx.deferredDelete();
+
         rmvQueue.forEach(new CI1<T2<KeyCacheObject, GridCacheVersion>>() {
             @Override public void apply(T2<KeyCacheObject, GridCacheVersion> t) {
                 cctx.dht().removeVersionedEntry(t.get1(), t.get2());

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b1814118/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index 041f83a..ed07f8f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -71,7 +71,8 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
         int size = CU.isSystemCache(ctx.name()) ? 100 :
             Integer.getInteger(IGNITE_ATOMIC_CACHE_DELETE_HISTORY_SIZE, 1_000_000);
 
-        rmvQueue = new GridCircularBuffer<>(U.ceilPow2(size / 10));
+        if (ctx.deferredDelete())
+            rmvQueue = new GridCircularBuffer<>(U.ceilPow2(size / 10));
     }
 
     /** {@inheritDoc} */
@@ -642,6 +643,7 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
 
     /** {@inheritDoc} */
     @Override public void onDeferredDelete(GridCacheEntryEx entry, GridCacheVersion ver) {
+        assert ctx.deferredDelete();
         assert entry.isNear();
 
         try {


[13/24] incubator-ignite git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite

Posted by vk...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite


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

Branch: refs/heads/ignite-104
Commit: a57707f6ef387ea6f48fd878747e8c5044e7758e
Parents: 0b25ec2 c044bb8
Author: Denis Magda <dm...@gridgain.com>
Authored: Wed Jul 22 15:49:04 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Wed Jul 22 15:49:04 2015 +0300

----------------------------------------------------------------------
 modules/apache-license-gen/pom.xml              | 13 --------
 .../processors/cache/GridCacheMvccManager.java  | 14 +++++++++
 .../distributed/dht/GridDhtTxFinishFuture.java  | 13 +++++++-
 .../GridDhtPartitionsExchangeFuture.java        | 10 +++++--
 .../near/GridNearOptimisticTxPrepareFuture.java |  4 ++-
 .../GridNearPessimisticTxPrepareFuture.java     |  2 +-
 .../near/GridNearTxFinishFuture.java            | 17 ++++++++++-
 .../cache/transactions/IgniteTxManager.java     |  5 ++--
 .../cache/GridCachePutAllFailoverSelfTest.java  |  3 ++
 .../GridCacheAbstractNodeRestartSelfTest.java   |  9 ++++++
 ...NearDisabledOptimisticTxNodeRestartTest.java | 31 ++++++++++++++++++++
 .../GridCachePartitionedFailoverSelfTest.java   |  5 ----
 ...ePartitionedOptimisticTxNodeRestartTest.java | 12 +++++++-
 .../IgniteCacheFailoverTestSuite2.java          |  4 +++
 .../testsuites/IgniteCacheRestartTestSuite.java |  5 ++--
 ...QueryOffheapEvictsMultiThreadedSelfTest.java |  5 ++++
 .../org/apache/ignite/spark/IgniteContext.scala | 14 +++++++++
 17 files changed, 135 insertions(+), 31 deletions(-)
----------------------------------------------------------------------



[11/24] incubator-ignite git commit: Merge branches 'ignite-1015' and 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-1015

Posted by vk...@apache.org.
Merge branches 'ignite-1015' and 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-1015


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

Branch: refs/heads/ignite-104
Commit: 2e1dea945b486006214eaa8005a7d3b398c8f549
Parents: 5202527 c044bb8
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 15:11:38 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 15:11:38 2015 +0300

----------------------------------------------------------------------
 .../IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest.java     | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------



[08/24] incubator-ignite git commit: ignite-1015 - fixes

Posted by vk...@apache.org.
ignite-1015 - fixes


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

Branch: refs/heads/ignite-104
Commit: 301f573dd05788eb6e154c16ad2403700a5b1e9e
Parents: 0871a7a
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 09:04:41 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 09:04:41 2015 +0300

----------------------------------------------------------------------
 .../query/h2/sql/GridSqlQuerySplitter.java      | 56 ++++++++++++++++++--
 .../cache/GridCacheCrossCacheQuerySelfTest.java |  5 +-
 2 files changed, 55 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/301f573d/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 536f72d..056aafe 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -395,15 +395,17 @@ public class GridSqlQuerySplitter {
             el = alias.child();
         }
 
-        if (!collocated && el instanceof GridSqlAggregateFunction) {
+        if (!collocated && hasAggregates(el)) {
             aggregateFound = true;
 
             if (alias == null)
                 alias = alias(columnName(idx), el);
 
-            splitAggregate(alias, 0, mapSelect, idx, true);
+            // We can update original alias here as well since it will be dropped from mapSelect.
+            splitAggregates(alias, 0, mapSelect, idx, true);
 
-            rdcSelect[idx] = alias;
+            if (idx < rdcSelect.length)
+                rdcSelect[idx] = alias;
         }
         else {
             String mapColAlias = columnName(idx);
@@ -417,7 +419,7 @@ public class GridSqlQuerySplitter {
             // Always wrap map column into generated alias.
             mapSelect.set(idx, alias(mapColAlias, el)); // `el` is known not to be an alias.
 
-            if (idx < rdcSelect.length) { // SELECT __C0 AS orginal_alias
+            if (idx < rdcSelect.length) { // SELECT __C0 AS original_alias
                 GridSqlElement rdcEl = column(mapColAlias);
 
                 GridSqlType type = el.expressionResultType();
@@ -436,6 +438,52 @@ public class GridSqlQuerySplitter {
     }
 
     /**
+     * @param el Expression.
+     * @return {@code true} If expression contains aggregates.
+     */
+    private static boolean hasAggregates(GridSqlElement el) {
+        if (el instanceof GridSqlAggregateFunction)
+            return true;
+
+        for (GridSqlElement child : el) {
+            if (hasAggregates(child))
+                return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * @param parentExpr Parent expression.
+     * @param childIdx Child index to try to split.
+     * @param mapSelect List of expressions in map SELECT clause.
+     * @param exprIdx Index of the original expression in map SELECT clause.
+     * @param first If the first aggregate is already found in this expression.
+     * @return {@code true} If the first aggregate is already found.
+     */
+    private static boolean splitAggregates(
+        final GridSqlElement parentExpr,
+        final int childIdx,
+        final List<GridSqlElement> mapSelect,
+        final int exprIdx,
+        boolean first) {
+        GridSqlElement el = parentExpr.child(childIdx);
+
+        if (el instanceof GridSqlAggregateFunction) {
+            splitAggregate(parentExpr, childIdx, mapSelect, exprIdx, first);
+
+            return true;
+        }
+
+        for (int i = 0; i < el.size(); i++) {
+            if (splitAggregates(el, i, mapSelect, exprIdx, first))
+                first = false;
+        }
+
+        return !first;
+    }
+
+    /**
      * @param parentExpr Parent expression.
      * @param aggIdx Index of the aggregate to split in this expression.
      * @param mapSelect List of expressions in map SELECT clause.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/301f573d/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
index f94d695..a393991 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
@@ -145,12 +145,12 @@ public class GridCacheCrossCacheQuerySelfTest extends GridCommonAbstractTest {
 
         assertEquals(set0, set1);
 
-        X.println("___ GROUP BY AVG MIN MAX SUM COUNT(*) COUNT(x)");
+        X.println("___ GROUP BY AVG MIN MAX SUM COUNT(*) COUNT(x) (MAX - MIN) * 2 as");
 
         Set<String> names = new HashSet<>();
 
         qry = new SqlFieldsQuery("select p.name, avg(f.price), min(f.price), max(f.price), sum(f.price), count(*), " +
-            "count(nullif(f.price, 5)) " +
+            "count(nullif(f.price, 5)), (max(f.price) - min(f.price)) * 3 as nn " +
             "from FactPurchase f, \"replicated\".DimProduct p " +
             "where p.id = f.productId " +
             "group by f.productId, p.name");
@@ -160,6 +160,7 @@ public class GridCacheCrossCacheQuerySelfTest extends GridCommonAbstractTest {
 
             assertTrue(names.add((String)o.get(0)));
             assertEquals(i(o, 4), i(o, 2) + i(o, 3));
+            assertEquals(i(o, 7), (i(o, 3) - i(o, 2)) * 3);
         }
 
         X.println("___ SUM HAVING");


[17/24] incubator-ignite git commit: HELPDESC-777 Add IGNITE_MBEAN_APPEND_CLASS_LOADER_ID system property. (cherry picked from commit 2581a12)

Posted by vk...@apache.org.
HELPDESC-777 Add IGNITE_MBEAN_APPEND_CLASS_LOADER_ID system property.
(cherry picked from commit 2581a12)


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

Branch: refs/heads/ignite-104
Commit: 4092c0fdcbc63dbbd162151164e4b060851f9949
Parents: ec0f7c8
Author: sevdokimov <se...@jetbrains.com>
Authored: Wed Jul 22 13:38:09 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Wed Jul 22 20:31:46 2015 +0300

----------------------------------------------------------------------
 .../main/java/org/apache/ignite/IgniteSystemProperties.java  | 8 ++++++++
 .../java/org/apache/ignite/internal/util/IgniteUtils.java    | 6 ++++--
 2 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4092c0fd/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 40fc873..b5685b2 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -317,6 +317,14 @@ public final class IgniteSystemProperties {
     public static final String IGNITE_MBEAN_APPEND_JVM_ID = "IGNITE_MBEAN_APPEND_JVM_ID";
 
     /**
+     * If this property is set to {@code true} then Ignite will append
+     * hash code of class loader to bean name returned by {@link RuntimeMXBean#getName()}.
+     * <p>
+     * Default is {@code true}.
+     */
+    public static final String IGNITE_MBEAN_APPEND_CLASS_LOADER_ID = "IGNITE_MBEAN_APPEND_CLASS_LOADER_ID";
+
+    /**
      * Property controlling size of buffer holding last exception. Default value of {@code 1000}.
      */
     public static final String IGNITE_EXCEPTION_REGISTRY_MAX_SIZE = "IGNITE_EXCEPTION_REGISTRY_MAX_SIZE";

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4092c0fd/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index 351af06..ec72a4b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -4034,9 +4034,11 @@ public abstract class IgniteUtils {
      * @param sb Sb.
      */
     private static void appendClassLoaderHash(SB sb) {
-        String clsLdrHash = Integer.toHexString(Ignite.class.getClassLoader().hashCode());
+        if (getBoolean(IGNITE_MBEAN_APPEND_CLASS_LOADER_ID, true)) {
+            String clsLdrHash = Integer.toHexString(Ignite.class.getClassLoader().hashCode());
 
-        sb.a("clsLdr=").a(clsLdrHash).a(',');
+            sb.a("clsLdr=").a(clsLdrHash).a(',');
+        }
     }
 
     /**


[03/24] incubator-ignite git commit: ignite-1015 - HAVING alias fix

Posted by vk...@apache.org.
ignite-1015 - HAVING alias fix


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

Branch: refs/heads/ignite-104
Commit: cbdc6143a7df7a7c39c11ef073c64de300414360
Parents: 1486aea
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 06:09:33 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 06:09:33 2015 +0300

----------------------------------------------------------------------
 .../processors/query/h2/sql/GridSqlSelect.java  | 25 +++++++++++++-------
 1 file changed, 17 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cbdc6143/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
index 84b0031..08304aa 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
@@ -84,19 +84,17 @@ public class GridSqlSelect extends GridSqlQuery {
             buff.resetCount();
 
             for (int grpCol : grpCols) {
-                GridSqlElement expression = allExprs.get(grpCol);
-
                 buff.appendExceptFirst(", ");
 
-                if (expression instanceof GridSqlAlias)
-                    buff.append(StringUtils.unEnclose((expression.child().getSQL())));
-                else
-                    buff.append(StringUtils.unEnclose(expression.getSQL()));
+                addAlias(buff, allExprs.get(grpCol));
             }
         }
 
-        if (havingCol >= 0)
-            buff.append("\nHAVING ").append(StringUtils.unEnclose(allExprs.get(havingCol).getSQL()));
+        if (havingCol >= 0) {
+            buff.append("\nHAVING ");
+
+            addAlias(buff, allExprs.get(havingCol));
+        }
 
         getSortLimitSQL(buff);
 
@@ -104,6 +102,17 @@ public class GridSqlSelect extends GridSqlQuery {
     }
 
     /**
+     * @param buff Statement builder.
+     * @param expression Alias expression.
+     */
+    private static void addAlias(StatementBuilder buff, GridSqlElement expression) {
+        if (expression instanceof GridSqlAlias)
+            expression = expression.child();
+
+        buff.append(StringUtils.unEnclose(expression.getSQL()));
+    }
+
+    /**
      * @param visibleOnly If only visible expressions needed.
      * @return Select phrase expressions.
      */


[19/24] incubator-ignite git commit: Merge branches 'ignite-104' and 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-104

Posted by vk...@apache.org.
Merge branches 'ignite-104' and 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-104


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

Branch: refs/heads/ignite-104
Commit: af8ed9a2548497cd4603ad0f0cb485aae80eacc9
Parents: 2ac7989 0055b40
Author: Valentin Kulichenko <vk...@gridgain.com>
Authored: Wed Jul 22 15:10:01 2015 -0700
Committer: Valentin Kulichenko <vk...@gridgain.com>
Committed: Wed Jul 22 15:10:01 2015 -0700

----------------------------------------------------------------------
 .../apache/ignite/IgniteSystemProperties.java   |   8 +
 .../ignite/internal/util/IgniteUtils.java       |   6 +-
 .../tcp/TcpDiscoveryMultiThreadedTest.java      |   2 +
 .../processors/query/h2/sql/GridSqlAlias.java   |   4 +
 .../processors/query/h2/sql/GridSqlColumn.java  |   4 +
 .../processors/query/h2/sql/GridSqlConst.java   |   4 +
 .../processors/query/h2/sql/GridSqlElement.java |  40 +-
 .../query/h2/sql/GridSqlFunction.java           |   2 +
 .../processors/query/h2/sql/GridSqlJoin.java    |   4 +
 .../query/h2/sql/GridSqlOperation.java          |  21 +-
 .../query/h2/sql/GridSqlOperationType.java      |   2 +
 .../query/h2/sql/GridSqlParameter.java          |   4 +
 .../query/h2/sql/GridSqlPlaceholder.java        |   4 +
 .../processors/query/h2/sql/GridSqlQuery.java   |  25 +-
 .../query/h2/sql/GridSqlQueryParser.java        |  11 +-
 .../query/h2/sql/GridSqlQuerySplitter.java      | 405 ++++++++++++-------
 .../processors/query/h2/sql/GridSqlSelect.java  |  91 ++---
 .../query/h2/sql/GridSqlSubquery.java           |   4 +
 .../processors/query/h2/sql/GridSqlTable.java   |   4 +
 .../processors/query/h2/sql/GridSqlType.java    |  10 +-
 .../processors/query/h2/sql/GridSqlUnion.java   |  11 -
 .../cache/GridCacheCrossCacheQuerySelfTest.java |  77 +---
 ...QueryOffheapEvictsMultiThreadedSelfTest.java |   5 +
 .../IgniteCacheQueryNodeRestartSelfTest.java    |   5 -
 24 files changed, 367 insertions(+), 386 deletions(-)
----------------------------------------------------------------------



[06/24] incubator-ignite git commit: ignite-1015 - minor

Posted by vk...@apache.org.
ignite-1015 - minor


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

Branch: refs/heads/ignite-104
Commit: 38d2a93d0031e599d2e6917a3d070f362892ba47
Parents: 12af70b
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 08:23:09 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 08:23:09 2015 +0300

----------------------------------------------------------------------
 .../processors/query/h2/sql/GridSqlAlias.java       | 16 +++-------------
 .../processors/query/h2/sql/GridSqlElement.java     |  7 ++++---
 2 files changed, 7 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/38d2a93d/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java
index 5e827a0..d683370 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java
@@ -45,24 +45,14 @@ public class GridSqlAlias extends GridSqlElement {
      * @param useAs Use 'AS' keyword.
      */
     public GridSqlAlias(String alias, GridSqlElement expr, boolean useAs) {
-        super(list(expr));
+        super(new ArrayList<GridSqlElement>(1));
+
+        addChild(expr);
 
         this.useAs = useAs;
         this.alias = alias;
     }
 
-    /**
-     * @param el Element.
-     * @return List.
-     */
-    private static List<GridSqlElement> list(GridSqlElement el) {
-        List<GridSqlElement> res = new ArrayList<>(1);
-
-        res.add(el);
-
-        return res;
-    }
-
     /** {@inheritDoc} */
     @Override public String getSQL() {
         return child().getSQL() + (useAs ? " AS " : " ") + Parser.quoteIdentifier(alias);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/38d2a93d/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
index 7ad8d5a..44705de 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
@@ -75,7 +75,7 @@ public abstract class GridSqlElement implements Iterable<GridSqlElement> {
     /**
      * @return First child.
      */
-    public GridSqlElement child() {
+    public <E extends GridSqlElement> E child() {
         return child(0);
     }
 
@@ -83,8 +83,9 @@ public abstract class GridSqlElement implements Iterable<GridSqlElement> {
      * @param idx Index.
      * @return Child.
      */
-    public GridSqlElement child(int idx) {
-        return children.get(idx);
+    @SuppressWarnings("unchecked")
+    public <E extends GridSqlElement> E child(int idx) {
+        return (E)children.get(idx);
     }
 
     /**


[16/24] incubator-ignite git commit: master - enabled test, IGNITE-484 is already fixed

Posted by vk...@apache.org.
master - enabled test, IGNITE-484 is already fixed


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

Branch: refs/heads/ignite-104
Commit: ec0f7c8c6cc8c9061adca550d845ea43520dee7e
Parents: 624ec83
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 19:02:50 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 19:02:50 2015 +0300

----------------------------------------------------------------------
 .../distributed/near/IgniteCacheQueryNodeRestartSelfTest.java   | 5 -----
 1 file changed, 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ec0f7c8c/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest.java
index 5c87603..410f492 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheQueryNodeRestartSelfTest.java
@@ -45,11 +45,6 @@ import static org.apache.ignite.cache.CacheRebalanceMode.*;
  * Test for distributed queries with node restarts.
  */
 public class IgniteCacheQueryNodeRestartSelfTest extends GridCacheAbstractSelfTest {
-    /** {@inheritDoc} */
-    @Override protected void beforeTest() throws Exception {
-        fail("https://issues.apache.org/jira/browse/IGNITE-484");
-    }
-
     /** */
     private static final int GRID_CNT = 3;
 


[23/24] incubator-ignite git commit: IGNITE-104 - Ordered ATOMIC updates

Posted by vk...@apache.org.
IGNITE-104 - Ordered ATOMIC updates


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

Branch: refs/heads/ignite-104
Commit: 0f54d4c4530ee750a6d333d5346832def9556830
Parents: 73f1be6
Author: Valentin Kulichenko <vk...@gridgain.com>
Authored: Wed Jul 22 19:48:38 2015 -0700
Committer: Valentin Kulichenko <vk...@gridgain.com>
Committed: Wed Jul 22 19:48:38 2015 -0700

----------------------------------------------------------------------
 .../internal/processors/cache/GridCacheMapEntry.java      |  6 ++++--
 .../cache/distributed/dht/atomic/GridDhtAtomicCache.java  | 10 ++++++----
 .../distributed/dht/atomic/GridDhtAtomicUpdateFuture.java |  3 ++-
 .../cache/distributed/near/GridNearAtomicCache.java       |  4 ++++
 4 files changed, 16 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0f54d4c4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index b0237f8..78e975e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -2164,7 +2164,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx {
                 }
 
                 if (!cctx.deferredDelete())
-                    markObsolete(rmvVer);
+                    markObsolete0(rmvVer, true);
 
                 res = hadVal;
             }
@@ -4016,7 +4016,9 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx {
      */
     protected void deletedUnlocked(boolean deleted) {
         assert Thread.holdsLock(this);
-        assert cctx.deferredDelete();
+
+        if (!cctx.deferredDelete())
+            return;
 
         if (deleted) {
             assert !deletedUnlocked() : this;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0f54d4c4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index fb309c3..bb036da 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -1194,6 +1194,8 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
 
                             assert entry.obsolete();
 
+                            entry.onMarkedObsolete();
+
                             removeEntry(entry);
                         }
                     }
@@ -1749,12 +1751,10 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
                         else if (conflictCtx.isMerge())
                             newConflictVer = null; // Conflict version is discarded in case of merge.
 
-                        EntryProcessor<Object, Object, Object> entryProcessor = null;
-
                         if (!readersOnly) {
                             dhtFut.addWriteEntry(entry,
                                 updRes.newValue(),
-                                entryProcessor,
+                                op == TRANSFORM ? req.entryProcessor(i) : null,
                                 updRes.newTtl(),
                                 updRes.conflictExpireTime(),
                                 newConflictVer);
@@ -1764,7 +1764,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
                             dhtFut.addNearWriteEntries(filteredReaders,
                                 entry,
                                 updRes.newValue(),
-                                entryProcessor,
+                                null,
                                 updRes.newTtl(),
                                 updRes.conflictExpireTime());
                     }
@@ -2480,6 +2480,8 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
                             else {
                                 assert entry.obsolete();
 
+                                entry.onMarkedObsolete();
+
                                 removeEntry(entry);
                             }
                         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0f54d4c4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
index f1d37f5..3a68263 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
@@ -123,7 +123,8 @@ public class GridDhtAtomicUpdateFuture extends GridFutureAdapter<Void>
         waitForExchange = !topLocked;
 
         // We can send entry processor instead of value to backup if updates are ordered.
-        forceTransformBackups = cctx.config().isAtomicOrderedUpdates();
+        forceTransformBackups = updateReq.operation() == GridCacheOperation.TRANSFORM &&
+            cctx.config().isAtomicOrderedUpdates();
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0f54d4c4/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index f8fa573..ab3b06f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -247,6 +247,8 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
                         else {
                             assert entry.obsolete();
 
+                            entry.onMarkedObsolete();
+
                             removeEntry(entry);
                         }
                     }
@@ -352,6 +354,8 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
                             else {
                                 assert entry.obsolete();
 
+                                entry.onMarkedObsolete();
+
                                 removeEntry(entry);
                             }
                         }


[20/24] incubator-ignite git commit: IGNITE-104 - Ordered ATOMIC updates

Posted by vk...@apache.org.
IGNITE-104 - Ordered ATOMIC updates


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

Branch: refs/heads/ignite-104
Commit: 1fee08635e5222a9765a8c775f5d792dc3103cc7
Parents: af8ed9a
Author: Valentin Kulichenko <vk...@gridgain.com>
Authored: Wed Jul 22 16:25:37 2015 -0700
Committer: Valentin Kulichenko <vk...@gridgain.com>
Committed: Wed Jul 22 16:25:37 2015 -0700

----------------------------------------------------------------------
 .../cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java   | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1fee0863/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
index 23b2161..f1d37f5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
@@ -121,6 +121,9 @@ public class GridDhtAtomicUpdateFuture extends GridFutureAdapter<Void>
         boolean topLocked = updateReq.topologyLocked() || (updateReq.fastMap() && !updateReq.clientRequest());
 
         waitForExchange = !topLocked;
+
+        // We can send entry processor instead of value to backup if updates are ordered.
+        forceTransformBackups = cctx.config().isAtomicOrderedUpdates();
     }
 
     /** {@inheritDoc} */


[04/24] incubator-ignite git commit: ignite-1015 - minor

Posted by vk...@apache.org.
ignite-1015 - minor


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

Branch: refs/heads/ignite-104
Commit: 0bb26bb1d8823104012c764d890919b08a449462
Parents: cbdc614
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 06:17:04 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 06:17:04 2015 +0300

----------------------------------------------------------------------
 .../internal/processors/query/h2/sql/GridSqlQuery.java       | 8 ++------
 .../internal/processors/query/h2/sql/GridSqlSelect.java      | 2 +-
 2 files changed, 3 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0bb26bb1/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java
index b562279..ad13dfe 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java
@@ -145,13 +145,10 @@ public abstract class GridSqlQuery {
 
             int visibleCols = visibleColumns();
 
-            boolean first = true;
+            buff.resetCount();
 
             for (GridSqlSortColumn col : sort) {
-                if (first)
-                    first = false;
-                else
-                    buff.append(", ");
+                buff.appendExceptFirst(", ");
 
                 int idx = col.column();
 
@@ -183,6 +180,5 @@ public abstract class GridSqlQuery {
 
         if (offset != null)
             buff.append(" OFFSET ").append(StringUtils.unEnclose(offset.getSQL()));
-
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0bb26bb1/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
index 08304aa..fb2643e 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSelect.java
@@ -70,7 +70,7 @@ public class GridSqlSelect extends GridSqlQuery {
         for (GridSqlElement expression : select) {
             buff.appendExceptFirst(",");
             buff.append('\n');
-            buff.append(StringUtils.indent(expression.getSQL(), 4, false));
+            buff.append(expression.getSQL());
         }
 
         buff.append("\nFROM ").append(from.getSQL());


[02/24] incubator-ignite git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-1015

Posted by vk...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-1015


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

Branch: refs/heads/ignite-104
Commit: 1486aea6cdddc35c0eb6d07e036eb5f4f256d700
Parents: f1f3da8 73a2b14
Author: S.Vladykin <sv...@gridgain.com>
Authored: Tue Jul 21 20:30:29 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Tue Jul 21 20:30:29 2015 +0300

----------------------------------------------------------------------
 DEVNOTES.txt                                    |    8 +
 RELEASE_NOTES.txt                               |   14 +
 assembly/LICENSE_FABRIC                         |  306 +++++
 assembly/LICENSE_HADOOP                         |  259 ++++
 assembly/NOTICE_FABRIC                          |   13 +
 assembly/NOTICE_HADOOP                          |   12 +
 assembly/dependencies-fabric.xml                |   14 +
 assembly/dependencies-hadoop.xml                |   12 +
 assembly/dependencies-visor-console.xml         |   20 +-
 assembly/release-base.xml                       |   10 -
 assembly/release-fabric.xml                     |   12 +
 assembly/release-hadoop.xml                     |   12 +
 bin/ignite.bat                                  |    8 +-
 bin/ignite.sh                                   |    6 +-
 bin/include/parseargs.bat                       |    1 +
 bin/include/parseargs.sh                        |    3 +
 dev-tools/slurp.sh                              |    2 +-
 examples/pom.xml                                |    2 +-
 .../examples/ScalarCacheAffinityExample.scala   |    2 +-
 .../scalar/examples/ScalarCacheExample.scala    |    2 +-
 .../ScalarCachePopularNumbersExample.scala      |    2 +-
 .../examples/ScalarCacheQueryExample.scala      |    2 +-
 .../examples/ScalarSnowflakeSchemaExample.scala |    4 +-
 modules/aop/licenses/aspectj-epl-license.txt    |   69 -
 modules/aop/pom.xml                             |    2 +-
 modules/apache-license-gen/pom.xml              |   35 +
 .../src/main/resources/META-INF/licenses.txt.vm |   42 +
 modules/aws/pom.xml                             |    2 +-
 modules/clients/pom.xml                         |    2 +-
 .../ClientAbstractConnectivitySelfTest.java     |    4 +-
 modules/cloud/pom.xml                           |    2 +-
 modules/codegen/pom.xml                         |    2 +-
 modules/core/licenses/jsr166-license.txt        |    3 +
 modules/core/licenses/snaptree-bsd-license.txt  |    2 +-
 modules/core/pom.xml                            |   13 +-
 .../src/main/java/org/apache/ignite/Ignite.java |    2 +-
 .../java/org/apache/ignite/IgniteCache.java     |   22 +-
 .../IgniteClientDisconnectedException.java      |   61 +
 .../java/org/apache/ignite/IgniteCluster.java   |    8 +
 .../apache/ignite/IgniteSystemProperties.java   |    3 +
 .../org/apache/ignite/cache/CacheManager.java   |   13 +-
 .../apache/ignite/cache/CacheTypeMetadata.java  |   53 +-
 .../AffinityNodeAddressHashResolver.java        |    8 +-
 .../affinity/AffinityNodeHashResolver.java      |    5 +
 .../affinity/AffinityNodeIdHashResolver.java    |    6 +
 .../affinity/fair/FairAffinityFunction.java     |    5 +-
 .../rendezvous/RendezvousAffinityFunction.java  |   22 +-
 .../cache/eviction/fifo/FifoEvictionPolicy.java |    5 -
 .../cache/eviction/lru/LruEvictionPolicy.java   |    5 -
 .../eviction/sorted/SortedEvictionPolicy.java   |   19 +-
 .../org/apache/ignite/cluster/ClusterGroup.java |   18 +-
 .../org/apache/ignite/cluster/ClusterNode.java  |    2 +
 .../ignite/compute/ComputeJobResultPolicy.java  |    3 +-
 .../configuration/CacheConfiguration.java       |  115 +-
 .../configuration/IgniteConfiguration.java      |   26 +
 .../configuration/IgniteReflectionFactory.java  |   81 +-
 .../configuration/NearCacheConfiguration.java   |   10 +-
 .../configuration/TransactionConfiguration.java |   23 +
 .../apache/ignite/internal/GridComponent.java   |   18 +
 .../ignite/internal/GridJobSiblingImpl.java     |    2 +-
 .../ignite/internal/GridKernalContext.java      |    5 +
 .../ignite/internal/GridKernalContextImpl.java  |   36 +-
 .../ignite/internal/GridKernalGateway.java      |   46 +-
 .../ignite/internal/GridKernalGatewayImpl.java  |   85 +-
 .../apache/ignite/internal/GridKernalState.java |    3 +
 .../ignite/internal/GridPluginComponent.java    |   11 +
 ...gniteClientDisconnectedCheckedException.java |   49 +
 .../apache/ignite/internal/IgniteKernal.java    |  272 ++--
 .../ignite/internal/IgniteNodeAttributes.java   |    3 +
 .../internal/cluster/ClusterGroupAdapter.java   |   50 +-
 .../cluster/IgniteClusterAsyncImpl.java         |   17 +-
 .../internal/cluster/IgniteClusterImpl.java     |   18 +
 .../internal/interop/InteropIgnition.java       |   48 +-
 .../internal/interop/InteropProcessor.java      |    7 +
 .../internal/managers/GridManagerAdapter.java   |   19 +-
 .../managers/communication/GridIoManager.java   |  173 ++-
 .../managers/communication/GridIoMessage.java   |   15 +-
 .../managers/communication/GridIoPolicy.java    |   32 +-
 .../deployment/GridDeploymentCommunication.java |    2 +-
 .../deployment/GridDeploymentManager.java       |   95 +-
 .../discovery/GridDiscoveryManager.java         |  229 +++-
 .../eventstorage/GridEventStorageManager.java   |    2 +-
 .../failover/GridFailoverContextImpl.java       |   28 +-
 .../managers/failover/GridFailoverManager.java  |   13 +-
 .../processors/GridProcessorAdapter.java        |   11 +
 .../affinity/GridAffinityAssignmentCache.java   |   26 +-
 .../processors/cache/CacheObjectImpl.java       |    1 -
 .../processors/cache/CacheOperationContext.java |   44 +-
 .../cache/CacheOsConflictResolutionManager.java |    6 +
 .../internal/processors/cache/CacheType.java    |    8 +-
 .../cache/DynamicCacheChangeBatch.java          |   17 +
 .../cache/DynamicCacheChangeRequest.java        |   39 +-
 .../processors/cache/GridCacheAdapter.java      |  118 +-
 .../cache/GridCacheAffinityManager.java         |   21 +-
 .../processors/cache/GridCacheAtomicFuture.java |   12 +-
 .../processors/cache/GridCacheAttributes.java   |   11 +-
 .../cache/GridCacheConcurrentMap.java           |   15 +-
 .../processors/cache/GridCacheContext.java      |   69 +-
 .../cache/GridCacheDeploymentManager.java       |   10 +-
 .../processors/cache/GridCacheGateway.java      |  120 +-
 .../processors/cache/GridCacheIoManager.java    |   28 +-
 .../processors/cache/GridCacheManager.java      |    6 +
 .../cache/GridCacheManagerAdapter.java          |    6 +
 .../processors/cache/GridCacheMvccManager.java  |   51 +-
 .../GridCachePartitionExchangeManager.java      |  146 ++-
 .../processors/cache/GridCachePreloader.java    |    5 +
 .../cache/GridCachePreloaderAdapter.java        |    5 +
 .../processors/cache/GridCacheProcessor.java    |  694 ++++++----
 .../processors/cache/GridCacheProxyImpl.java    |   10 +-
 .../cache/GridCacheSharedContext.java           |  120 +-
 .../cache/GridCacheSharedManager.java           |   11 +-
 .../cache/GridCacheSharedManagerAdapter.java    |   20 +-
 .../processors/cache/GridCacheSwapManager.java  |  257 ++--
 .../processors/cache/GridCacheUtils.java        |   51 +
 .../processors/cache/IgniteCacheFutureImpl.java |   53 +
 .../processors/cache/IgniteCacheProxy.java      |  531 +++++---
 .../processors/cache/IgniteInternalCache.java   |    4 +-
 .../CacheDataStructuresManager.java             |   35 +
 .../distributed/GridCacheTxFinishSync.java      |   46 +
 .../GridDistributedTxFinishRequest.java         |   11 +-
 .../GridDistributedTxPrepareRequest.java        |    9 +-
 .../GridDistributedTxRemoteAdapter.java         |    3 +-
 .../distributed/dht/GridDhtCacheAdapter.java    |   14 +-
 .../distributed/dht/GridDhtCacheEntry.java      |    4 +-
 .../distributed/dht/GridDhtLocalPartition.java  |    3 +-
 .../distributed/dht/GridDhtLockFuture.java      |    2 +-
 .../dht/GridDhtPartitionTopologyImpl.java       |   24 +
 .../distributed/dht/GridDhtTopologyFuture.java  |   14 -
 .../distributed/dht/GridDhtTxFinishRequest.java |    3 +-
 .../cache/distributed/dht/GridDhtTxLocal.java   |    3 +-
 .../distributed/dht/GridDhtTxLocalAdapter.java  |    3 +-
 .../distributed/dht/GridDhtTxPrepareFuture.java |   16 +-
 .../cache/distributed/dht/GridDhtTxRemote.java  |    5 +-
 .../dht/GridPartitionedGetFuture.java           |   26 +-
 .../dht/atomic/GridDhtAtomicCache.java          |   33 +-
 .../dht/atomic/GridDhtAtomicUpdateFuture.java   |   15 +-
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |  202 ++-
 .../GridDhtPartitionsExchangeFuture.java        |  107 +-
 .../dht/preloader/GridDhtPreloader.java         |   16 +-
 .../distributed/near/GridNearCacheAdapter.java  |    8 +
 .../distributed/near/GridNearGetFuture.java     |   17 +-
 .../near/GridNearTxFinishRequest.java           |    3 +-
 .../cache/distributed/near/GridNearTxLocal.java |    3 +-
 .../distributed/near/GridNearTxRemote.java      |    5 +-
 .../cache/dr/GridOsCacheDrManager.java          |    7 +-
 .../cache/jta/CacheJtaManagerAdapter.java       |   17 +-
 .../cache/jta/CacheNoopJtaManager.java          |    2 +-
 .../query/GridCacheDistributedQueryManager.java |   22 +
 .../cache/query/GridCacheQueryAdapter.java      |   46 +-
 .../query/GridCacheQueryFutureAdapter.java      |    2 +-
 .../continuous/CacheContinuousQueryHandler.java |    9 +-
 .../cache/transactions/IgniteInternalTx.java    |    3 +-
 .../transactions/IgniteTransactionsImpl.java    |   59 +-
 .../cache/transactions/IgniteTxAdapter.java     |   11 +-
 .../transactions/IgniteTxLocalAdapter.java      |    3 +-
 .../cache/transactions/IgniteTxManager.java     |   23 +-
 .../transactions/TransactionProxyImpl.java      |    2 +-
 .../cache/version/GridCacheVersionManager.java  |    9 +-
 .../processors/clock/GridClockServer.java       |   21 +-
 .../clock/GridClockSyncProcessor.java           |    6 +-
 .../processors/closure/AffinityTask.java        |   35 +
 .../closure/GridClosureProcessor.java           |   63 +-
 .../processors/cluster/ClusterProcessor.java    |   11 +
 .../continuous/GridContinuousHandler.java       |    9 +-
 .../continuous/GridContinuousProcessor.java     |  127 +-
 .../datastreamer/DataStreamProcessor.java       |   27 +-
 .../datastreamer/DataStreamerImpl.java          |   90 +-
 .../datastructures/DataStructuresProcessor.java |  136 +-
 .../datastructures/GridCacheAtomicLongImpl.java |   58 +-
 .../GridCacheAtomicReferenceImpl.java           |   34 +-
 .../GridCacheAtomicSequenceImpl.java            |   44 +-
 .../GridCacheAtomicStampedImpl.java             |   54 +-
 .../GridCacheCountDownLatchImpl.java            |   82 +-
 .../datastructures/GridCacheRemovable.java      |    6 +-
 .../datastructures/GridCacheSetImpl.java        |   15 +-
 .../datastructures/GridCacheSetProxy.java       |   47 +-
 .../processors/hadoop/HadoopJobInfo.java        |    4 +-
 .../hadoop/counter/HadoopCounterWriter.java     |    5 +-
 .../internal/processors/igfs/IgfsContext.java   |    5 +-
 .../processors/job/GridJobProcessor.java        |    2 +-
 .../internal/processors/job/GridJobWorker.java  |    2 +-
 .../processors/plugin/CachePluginManager.java   |   10 +-
 .../plugin/IgnitePluginProcessor.java           |    3 +-
 .../processors/query/GridQueryIndexing.java     |    7 +
 .../processors/query/GridQueryProcessor.java    |   15 +-
 .../processors/rest/GridRestProcessor.java      |    4 +-
 .../handlers/task/GridTaskCommandHandler.java   |   12 +-
 .../service/GridServiceProcessor.java           |   45 +-
 .../processors/service/GridServiceProxy.java    |   13 +-
 .../processors/task/GridTaskProcessor.java      |   78 +-
 .../processors/task/GridTaskWorker.java         |   87 +-
 .../internal/util/GridConfigurationFinder.java  |   55 +-
 .../ignite/internal/util/IgniteUtils.java       |   57 +-
 .../util/future/GridFutureChainListener.java    |    4 -
 .../internal/util/future/IgniteFutureImpl.java  |   30 +-
 .../shmem/IpcSharedMemoryClientEndpoint.java    |    5 +-
 .../shmem/IpcSharedMemoryServerEndpoint.java    |   10 +-
 .../ignite/internal/util/lang/GridFunc.java     |    2 +
 .../util/nio/GridNioMessageTracker.java         |   23 +-
 .../ignite/internal/util/nio/GridNioServer.java |    9 +
 .../util/nio/GridSelectorNioSessionImpl.java    |    8 +
 .../apache/ignite/internal/visor/VisorJob.java  |    2 +
 .../visor/cache/VisorCacheConfiguration.java    |   11 -
 .../visor/cache/VisorCacheStopTask.java         |    2 +-
 .../internal/visor/log/VisorLogSearchTask.java  |    2 +-
 .../visor/node/VisorNodeDataCollectorJob.java   |    4 +
 .../visor/query/VisorQueryCleanupTask.java      |   14 +
 .../util/VisorClusterGroupEmptyException.java   |   37 +
 .../plugin/extensions/communication/IoPool.java |   42 +
 .../plugin/security/SecurityPermission.java     |    7 +-
 .../plugin/security/SecuritySubjectType.java    |    3 +-
 .../java/org/apache/ignite/spi/IgniteSpi.java   |   15 +
 .../org/apache/ignite/spi/IgniteSpiAdapter.java |   51 +-
 .../communication/tcp/TcpCommunicationSpi.java  |  358 ++++--
 .../spi/discovery/DiscoverySpiDataExchange.java |    3 +-
 .../ignite/spi/discovery/tcp/ClientImpl.java    |  560 ++++++--
 .../ignite/spi/discovery/tcp/ServerImpl.java    |  387 ++++--
 .../spi/discovery/tcp/TcpDiscoveryImpl.java     |    9 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |   39 +-
 .../tcp/internal/TcpDiscoveryNode.java          |   43 +-
 .../tcp/internal/TcpDiscoveryNodesRing.java     |    8 +-
 .../tcp/internal/TcpDiscoveryStatistics.java    |   10 +-
 .../TcpDiscoveryMulticastIpFinder.java          |   76 +-
 .../messages/TcpDiscoveryAbstractMessage.java   |    3 +
 .../messages/TcpDiscoveryClientAckResponse.java |   64 +
 .../messages/TcpDiscoveryHandshakeResponse.java |   14 +
 .../ignite/spi/failover/FailoverContext.java    |   18 +
 .../spi/failover/always/AlwaysFailoverSpi.java  |   25 +
 .../spi/swapspace/file/FileSwapSpaceSpi.java    |    2 +-
 .../startup/cmdline/CommandLineStartup.java     |    3 +-
 .../startup/cmdline/CommandLineTransformer.java |    9 +
 .../META-INF/classnames-jdk.properties          |    3 +
 .../core/src/main/resources/ignite.properties   |    2 +-
 .../core/src/test/config/spark/spark-config.xml |   46 +
 modules/core/src/test/config/tests.properties   |    6 +-
 .../affinity/IgniteClientNodeAffinityTest.java  |   14 +-
 .../IgniteFairAffinityDynamicCacheSelfTest.java |    3 +-
 ...cheStoreSessionListenerAbstractSelfTest.java |  112 +-
 .../internal/ClusterGroupAbstractTest.java      |  777 +++++++++++
 .../internal/ClusterGroupHostsSelfTest.java     |  141 ++
 .../ignite/internal/ClusterGroupSelfTest.java   |  251 ++++
 .../internal/GridDiscoveryEventSelfTest.java    |   12 +-
 .../internal/GridProjectionAbstractTest.java    |  784 ------------
 .../ignite/internal/GridProjectionSelfTest.java |  251 ----
 .../apache/ignite/internal/GridSelfTest.java    |    2 +-
 .../GridTaskFailoverAffinityRunTest.java        |  170 +++
 .../internal/GridUpdateNotifierSelfTest.java    |   15 +-
 .../IgniteClientReconnectAbstractTest.java      |  363 ++++++
 .../IgniteClientReconnectApiExceptionTest.java  |  846 ++++++++++++
 .../IgniteClientReconnectAtomicsTest.java       |  672 ++++++++++
 .../IgniteClientReconnectCacheTest.java         | 1202 ++++++++++++++++++
 .../IgniteClientReconnectCollectionsTest.java   |  443 +++++++
 .../IgniteClientReconnectComputeTest.java       |  192 +++
 ...eClientReconnectContinuousProcessorTest.java |  372 ++++++
 ...IgniteClientReconnectDiscoveryStateTest.java |  123 ++
 ...niteClientReconnectFailoverAbstractTest.java |  231 ++++
 .../IgniteClientReconnectFailoverTest.java      |  227 ++++
 .../IgniteClientReconnectServicesTest.java      |  260 ++++
 .../internal/IgniteClientReconnectStopTest.java |  106 ++
 .../IgniteClientReconnectStreamerTest.java      |  233 ++++
 .../IgniteSlowClientDetectionSelfTest.java      |    1 +
 .../communication/GridIoManagerSelfTest.java    |    2 +-
 .../GridDeploymentManagerStopSelfTest.java      |    7 +
 .../IgniteTopologyPrintFormatSelfTest.java      |  289 +++++
 .../GridCacheTxLoadFromStoreOnLockSelfTest.java |   34 +-
 .../cache/CacheAffinityCallSelfTest.java        |  174 +++
 .../cache/CacheFutureExceptionSelfTest.java     |  158 +++
 .../CacheMetricsForClusterGroupSelfTest.java    |   10 +-
 .../cache/CacheOffheapMapEntrySelfTest.java     |    7 +-
 .../CacheReadThroughAtomicRestartSelfTest.java  |   32 +
 ...heReadThroughLocalAtomicRestartSelfTest.java |   32 +
 .../CacheReadThroughLocalRestartSelfTest.java   |   32 +
 ...dThroughReplicatedAtomicRestartSelfTest.java |   32 +
 ...cheReadThroughReplicatedRestartSelfTest.java |   32 +
 .../cache/CacheReadThroughRestartSelfTest.java  |  133 ++
 .../cache/CacheStopAndDestroySelfTest.java      |  859 +++++++++++++
 ...eUsageMultinodeDynamicStartAbstractTest.java |    2 +-
 .../cache/GridCacheAbstractFullApiSelfTest.java |  355 ++++--
 .../cache/GridCacheAbstractSelfTest.java        |   16 +-
 .../cache/GridCacheAffinityRoutingSelfTest.java |  157 ++-
 .../cache/GridCacheDaemonNodeStopSelfTest.java  |  119 --
 ...ProjectionForCachesOnDaemonNodeSelfTest.java |    2 +-
 .../IgniteCacheAbstractStopBusySelfTest.java    |    2 +-
 .../IgniteCacheConfigurationTemplateTest.java   |   26 +-
 .../cache/IgniteCacheDynamicStopSelfTest.java   |    6 +-
 .../cache/IgniteCacheNearLockValueSelfTest.java |    2 +
 .../IgniteDaemonNodeMarshallerCacheTest.java    |  192 +++
 ...eDynamicCacheStartNoExchangeTimeoutTest.java |  466 +++++++
 .../cache/IgniteDynamicCacheStartSelfTest.java  |  193 +--
 .../IgniteDynamicClientCacheStartSelfTest.java  |    5 +-
 .../cache/IgniteInternalCacheTypesTest.java     |    3 +-
 .../IgniteTxExceptionAbstractSelfTest.java      |    1 +
 ...GridCacheQueueMultiNodeAbstractSelfTest.java |    4 +-
 .../GridCacheSetAbstractSelfTest.java           |   22 +-
 .../IgniteClientDataStructuresAbstractTest.java |  109 +-
 .../IgniteCountDownLatchAbstractSelfTest.java   |   12 +-
 .../IgniteDataStructureWithJobTest.java         |  111 ++
 .../GridCacheAbstractNodeRestartSelfTest.java   |   12 +-
 ...ridCachePartitionNotLoadedEventSelfTest.java |   82 ++
 .../distributed/IgniteCache150ClientsTest.java  |  190 +++
 ...teCacheClientNodePartitionsExchangeTest.java |   30 +-
 .../IgniteCacheClientReconnectTest.java         |  175 +++
 .../distributed/IgniteCacheManyClientsTest.java |    2 +
 .../IgniteCacheServerNodeConcurrentStart.java   |   96 ++
 .../IgniteCacheSystemTransactionsSelfTest.java  |    2 +-
 .../IgniteCacheTxMessageRecoveryTest.java       |    5 +
 .../IgniteCachePutRetryAbstractSelfTest.java    |  161 +++
 .../dht/IgniteCachePutRetryAtomicSelfTest.java  |   34 +
 ...gniteCachePutRetryTransactionalSelfTest.java |   79 ++
 ...eAtomicInvalidPartitionHandlingSelfTest.java |    7 +-
 ...eAtomicNearOnlyMultiNodeFullApiSelfTest.java |    3 +
 ...idCacheNearOnlyMultiNodeFullApiSelfTest.java |   10 +-
 .../near/GridCacheNearTxMultiNodeSelfTest.java  |   10 +-
 .../GridCachePartitionedFailoverSelfTest.java   |    5 +
 ...achePartitionedMultiNodeFullApiSelfTest.java |  103 +-
 .../GridCachePartitionedNodeRestartTest.java    |    5 -
 ...ePartitionedOptimisticTxNodeRestartTest.java |    2 +-
 .../GridCacheReplicatedInvalidateSelfTest.java  |    3 +-
 .../GridCacheReplicatedNodeRestartSelfTest.java |    5 -
 ...acheAtomicReplicatedNodeRestartSelfTest.java |    4 +-
 ...heConcurrentEvictionConsistencySelfTest.java |   15 +-
 .../GridCacheEvictionFilterSelfTest.java        |    2 -
 .../IgniteCacheTxStoreSessionTest.java          |    4 +
 ...CacheLocalOffHeapAndSwapMetricsSelfTest.java |    2 +-
 ...OnlyFairAffinityMultiJvmFullApiSelfTest.java |   31 +
 ...AtomicClientOnlyMultiJvmFullApiSelfTest.java |   31 +
 ...tOnlyMultiJvmP2PDisabledFullApiSelfTest.java |   31 +
 ...pyOnReadDisabledMultiJvmFullApiSelfTest.java |   31 +
 ...omicFairAffinityMultiJvmFullApiSelfTest.java |   31 +
 .../GridCacheAtomicMultiJvmFullApiSelfTest.java |   30 +
 ...tomicMultiJvmP2PDisabledFullApiSelfTest.java |   31 +
 ...bledFairAffinityMultiJvmFullApiSelfTest.java |   31 +
 ...tomicNearEnabledMultiJvmFullApiSelfTest.java |   31 +
 ...rimaryWriteOrderMultiJvmFullApiSelfTest.java |   31 +
 ...heAtomicNearOnlyMultiJvmFullApiSelfTest.java |   31 +
 ...rOnlyMultiJvmP2PDisabledFullApiSelfTest.java |   31 +
 ...cheAtomicOffHeapMultiJvmFullApiSelfTest.java |   31 +
 ...micOffHeapTieredMultiJvmFullApiSelfTest.java |   36 +
 ...rderFairAffinityMultiJvmFullApiSelfTest.java |   31 +
 ...rimaryWriteOrderMultiJvmFullApiSelfTest.java |   31 +
 ...OrderMultiJvmP2PDisabledFullApiSelfTest.java |   31 +
 ...rityOrderOffHeapMultiJvmFullApiSelfTest.java |   31 +
 ...derOffHeapTieredMultiJvmFullApiSelfTest.java |   36 +
 ...OnlyFairAffinityMultiJvmFullApiSelfTest.java |   31 +
 ...ridCacheNearOnlyMultiJvmFullApiSelfTest.java |   30 +
 ...rOnlyMultiJvmP2PDisabledFullApiSelfTest.java |   31 +
 ...pyOnReadDisabledMultiJvmFullApiSelfTest.java |   31 +
 ...onedFairAffinityMultiJvmFullApiSelfTest.java |   31 +
 ...CachePartitionedMultiJvmFullApiSelfTest.java |   30 +
 ...ionedMultiJvmP2PDisabledFullApiSelfTest.java |   31 +
 ...micOffHeapTieredMultiJvmFullApiSelfTest.java |   36 +
 ...bledFairAffinityMultiJvmFullApiSelfTest.java |   31 +
 ...onedNearDisabledMultiJvmFullApiSelfTest.java |   31 +
 ...abledMultiJvmP2PDisabledFullApiSelfTest.java |   31 +
 ...rDisabledOffHeapMultiJvmFullApiSelfTest.java |   31 +
 ...ledOffHeapTieredMultiJvmFullApiSelfTest.java |   36 +
 ...rtitionedOffHeapMultiJvmFullApiSelfTest.java |   31 +
 ...nedOffHeapTieredMultiJvmFullApiSelfTest.java |   36 +
 ...ReplicatedAtomicMultiJvmFullApiSelfTest.java |   31 +
 ...rimaryWriteOrderMultiJvmFullApiSelfTest.java |   31 +
 ...dCacheReplicatedMultiJvmFullApiSelfTest.java |   30 +
 ...catedMultiJvmP2PDisabledFullApiSelfTest.java |   31 +
 ...plicatedNearOnlyMultiJvmFullApiSelfTest.java |   37 +
 ...eplicatedOffHeapMultiJvmFullApiSelfTest.java |   31 +
 ...tedOffHeapTieredMultiJvmFullApiSelfTest.java |   36 +
 .../DataStreamerMultinodeCreateCacheTest.java   |   14 +-
 .../internal/util/IgniteUtilsSelfTest.java      |   22 +
 .../internal/util/nio/GridNioSelfTest.java      |   88 +-
 .../internal/util/nio/GridNioSslSelfTest.java   |   16 +-
 .../loadtests/hashmap/GridCacheTestContext.java |    2 +-
 .../GridP2PContinuousDeploymentSelfTest.java    |    2 -
 .../tcp/TcpClientDiscoverySpiSelfTest.java      |  827 +++++++++++-
 .../tcp/TcpDiscoveryMultiThreadedTest.java      |  118 +-
 ...DiscoveryNodeConfigConsistentIdSelfTest.java |   76 ++
 .../TcpDiscoveryNodeConsistentIdSelfTest.java   |   80 ++
 .../spi/failover/GridFailoverTestContext.java   |   10 +
 .../inmemory/GridTestSwapSpaceSpi.java          |    3 +-
 .../GridCommandLineTransformerSelfTest.java     |   12 +-
 .../testframework/junits/GridAbstractTest.java  |  390 +++++-
 .../junits/common/GridCommonAbstractTest.java   |   50 +-
 .../junits/multijvm/AffinityProcessProxy.java   |  195 +++
 .../multijvm/IgniteCacheProcessProxy.java       |  602 +++++++++
 .../multijvm/IgniteClusterProcessProxy.java     |  325 +++++
 .../multijvm/IgniteEventsProcessProxy.java      |  148 +++
 .../junits/multijvm/IgniteNodeRunner.java       |  184 +++
 .../junits/multijvm/IgniteProcessProxy.java     |  571 +++++++++
 .../ignite/testsuites/IgniteBasicTestSuite.java |    7 +-
 .../IgniteCacheDataStructuresSelfTestSuite.java |    1 +
 .../IgniteCacheFailoverTestSuite.java           |    3 +
 ...IgniteCacheFullApiMultiJvmSelfTestSuite.java |   89 ++
 .../ignite/testsuites/IgniteCacheTestSuite.java |    6 +-
 .../testsuites/IgniteCacheTestSuite2.java       |    2 +-
 .../testsuites/IgniteCacheTestSuite3.java       |    1 -
 .../testsuites/IgniteCacheTestSuite4.java       |   10 +-
 .../testsuites/IgniteClientNodesTestSuite.java  |   42 +
 .../IgniteClientReconnectTestSuite.java         |   48 +
 .../testsuites/IgniteClientTestSuite.java       |   38 +
 .../testsuites/IgniteComputeGridTestSuite.java  |    1 +
 .../testsuites/IgniteKernalSelfTestSuite.java   |    1 +
 .../IgniteSpiDiscoverySelfTestSuite.java        |    6 +
 .../ignite/util/TestTcpCommunicationSpi.java    |   21 +
 modules/core/src/test/resources/helloworld.gar  |  Bin 6092 -> 0 bytes
 modules/core/src/test/resources/helloworld1.gar |  Bin 6092 -> 0 bytes
 modules/core/src/test/resources/readme.txt      |    6 -
 modules/docker/Dockerfile                       |   55 +
 modules/docker/README.txt                       |   11 +
 modules/docker/build_users_libs.sh              |   39 +
 modules/docker/download_ignite.sh               |   49 +
 modules/docker/execute.sh                       |   62 +
 modules/docker/run.sh                           |   34 +
 modules/extdata/p2p/pom.xml                     |    4 +-
 .../p2p/GridP2PContinuousDeploymentTask1.java   |    2 +-
 .../CacheConfigurationP2PTestClient.java        |    4 +-
 modules/extdata/uri/META-INF/ignite.xml         |   38 +
 .../extdata/uri/modules/uri-dependency/pom.xml  |   40 +
 .../deployment/uri/tasks/GarHelloWorldBean.java |   60 +
 .../src/main/resources/gar-example.properties   |   18 +
 modules/extdata/uri/pom.xml                     |   50 +-
 .../deployment/uri/tasks/GarHelloWorldTask.java |   81 ++
 .../deployment/uri/tasks/gar-spring-bean.xml    |   29 +
 modules/gce/pom.xml                             |    2 +-
 .../geospatial/licenses/jts-lgpl-license.txt    |  165 ---
 modules/geospatial/pom.xml                      |    2 +-
 modules/hadoop/pom.xml                          |   80 +-
 .../fs/IgniteHadoopFileSystemCounterWriter.java |    9 +-
 .../processors/hadoop/HadoopClassLoader.java    |   29 +
 .../processors/hadoop/HadoopDefaultJobInfo.java |   27 +-
 .../internal/processors/hadoop/HadoopUtils.java |  237 ----
 .../hadoop/SecondaryFileSystemProvider.java     |    3 +-
 .../hadoop/fs/HadoopFileSystemCacheUtils.java   |  241 ++++
 .../hadoop/fs/HadoopFileSystemsUtils.java       |   11 +
 .../hadoop/fs/HadoopLazyConcurrentMap.java      |    5 +
 .../hadoop/jobtracker/HadoopJobTracker.java     |   25 +-
 .../child/HadoopChildProcessRunner.java         |    3 +-
 .../processors/hadoop/v2/HadoopV2Job.java       |   84 +-
 .../hadoop/v2/HadoopV2JobResourceManager.java   |   22 +-
 .../hadoop/v2/HadoopV2TaskContext.java          |   37 +-
 .../apache/ignite/igfs/IgfsEventsTestSuite.java |    5 +-
 .../processors/hadoop/HadoopMapReduceTest.java  |    2 +-
 .../processors/hadoop/HadoopTasksV1Test.java    |    7 +-
 .../processors/hadoop/HadoopTasksV2Test.java    |    7 +-
 .../processors/hadoop/HadoopV2JobSelfTest.java  |    6 +-
 .../collections/HadoopAbstractMapTest.java      |    3 +-
 .../testsuites/IgniteHadoopTestSuite.java       |    4 +-
 .../IgniteIgfsLinuxAndMacOSTestSuite.java       |    3 +-
 .../licenses/hibernate-lgpl-2.1-license.txt     |  174 ---
 modules/hibernate/pom.xml                       |    2 +-
 .../HibernateTransactionalDataRegion.java       |   12 +-
 .../hibernate/HibernateL2CacheSelfTest.java     |    7 +-
 .../HibernateL2CacheTransactionalSelfTest.java  |    5 -
 modules/indexing/licenses/h2-epl-license.txt    |   69 -
 modules/indexing/pom.xml                        |    2 +-
 .../processors/query/h2/IgniteH2Indexing.java   |    5 +
 .../query/h2/opt/GridH2KeyValueRowOffheap.java  |    8 +-
 .../processors/query/h2/opt/GridH2Table.java    |    2 +-
 .../query/h2/twostep/GridMergeIndex.java        |   45 +-
 .../h2/twostep/GridReduceQueryExecutor.java     |   70 +-
 .../CacheAbstractQueryMetricsSelfTest.java      |  157 ++-
 .../cache/CacheLocalQueryMetricsSelfTest.java   |   33 +
 ...titionedQueryMetricsDistributedSelfTest.java |   33 +
 ...chePartitionedQueryMetricsLocalSelfTest.java |   33 +
 .../CachePartitionedQueryMetricsSelfTest.java   |   32 -
 ...plicatedQueryMetricsDistributedSelfTest.java |   33 +
 ...acheReplicatedQueryMetricsLocalSelfTest.java |   33 +
 .../CacheReplicatedQueryMetricsSelfTest.java    |   32 -
 .../cache/IgniteCacheOffheapEvictQueryTest.java |    2 +-
 .../IgniteCacheQueryMultiThreadedSelfTest.java  |    4 +-
 ...ClientReconnectCacheQueriesFailoverTest.java |  225 ++++
 .../cache/IgniteClientReconnectQueriesTest.java |  427 +++++++
 .../IgniteCacheQueryNodeRestartSelfTest2.java   |    5 +
 ...dCacheAbstractReduceFieldsQuerySelfTest.java |    4 +
 .../IgniteCacheQuerySelfTestSuite.java          |    9 +-
 .../IgniteCacheWithIndexingTestSuite.java       |    1 +
 modules/jcl/pom.xml                             |    2 +-
 modules/jta/licenses/jta-license.txt            |    2 +
 modules/jta/pom.xml                             |    2 +-
 .../apache/ignite/cache/jta/CacheTmLookup.java  |    3 +-
 .../processors/cache/jta/CacheJtaManager.java   |   72 +-
 .../cache/jta/GridCacheXAResource.java          |   16 +-
 .../processors/cache/GridCacheJtaSelfTest.java  |   52 +-
 .../GridTmLookupLifecycleAwareSelfTest.java     |   29 +-
 modules/kafka/licenses/apache-2.0.txt           |  202 +++
 modules/kafka/pom.xml                           |  105 ++
 .../ignite/stream/kafka/KafkaStreamer.java      |  220 ++++
 .../kafka/IgniteKafkaStreamerSelfTestSuite.java |   37 +
 .../stream/kafka/KafkaEmbeddedBroker.java       |  378 ++++++
 .../kafka/KafkaIgniteStreamerSelfTest.java      |  227 ++++
 .../ignite/stream/kafka/SimplePartitioner.java  |   53 +
 modules/log4j/pom.xml                           |    2 +-
 modules/mesos/licenses/jetty-epl-license.txt    |   69 -
 modules/mesos/pom.xml                           |    4 +-
 .../apache/ignite/mesos/ClusterProperties.java  |   14 +
 .../apache/ignite/mesos/IgniteScheduler.java    |   26 +-
 modules/rest-http/pom.xml                       |   20 +-
 .../scalar-2.10/licenses/scala-bsd-license.txt  |   18 -
 modules/scalar-2.10/pom.xml                     |    2 +-
 modules/scalar/licenses/scala-bsd-license.txt   |   18 -
 modules/scalar/pom.xml                          |    2 +-
 .../licenses/cron4j-lgpl-2.1-license.txt        |  174 ---
 modules/schedule/pom.xml                        |    2 +-
 modules/schema-import/pom.xml                   |    2 +-
 .../ignite/schema/model/PojoDescriptor.java     |    2 +
 .../apache/ignite/schema/model/PojoField.java   |    1 +
 .../parser/dialect/OracleMetadataDialect.java   |    2 +-
 .../ignite/schema/ui/SchemaImportApp.java       |   36 +-
 modules/slf4j/licenses/sl4j-mit-license.txt     |   21 -
 modules/slf4j/pom.xml                           |    2 +-
 .../spark-2.10/licenses/scala-bsd-license.txt   |   18 -
 modules/spark-2.10/pom.xml                      |    2 +-
 modules/spark/licenses/scala-bsd-license.txt    |   18 -
 modules/spark/pom.xml                           |    2 +-
 .../org/apache/ignite/spark/IgniteContext.scala |   50 +-
 .../org/apache/ignite/spark/IgniteRddSpec.scala |   18 +
 modules/spring/pom.xml                          |    2 +-
 .../apache/ignite/cache/spring/SpringCache.java |    2 +-
 .../ignite/cache/spring/SpringCacheManager.java |   22 +-
 .../util/spring/IgniteSpringHelperImpl.java     |   72 +-
 .../IgniteExcludeInConfigurationTest.java       |   81 ++
 .../org/apache/ignite/spring/sprint-exclude.xml |   76 ++
 .../testsuites/IgniteSpringTestSuite.java       |    2 +
 modules/ssh/licenses/jcraft-revised-bsd.txt     |   28 -
 modules/ssh/pom.xml                             |    2 +-
 modules/tools/licenses/jodd-revised-bsd.txt     |   21 -
 modules/tools/pom.xml                           |    2 +-
 .../urideploy/licenses/jtidy-mit-license.txt    |   50 -
 modules/urideploy/pom.xml                       |   16 +-
 .../GridTaskUriDeploymentDeadlockSelfTest.java  |   13 +-
 .../ignite/p2p/GridP2PDisabledSelfTest.java     |    2 +-
 modules/visor-console-2.10/pom.xml              |    2 +-
 .../licenses/jline-bsd-license.txt              |   18 -
 .../licenses/scala-bsd-license.txt              |   18 -
 modules/visor-console/pom.xml                   |    2 +-
 .../ignite/visor/commands/VisorConsole.scala    |    3 +-
 .../commands/cache/VisorCacheCommand.scala      |    9 +-
 .../visor/commands/open/VisorOpenCommand.scala  |  319 +++++
 .../scala/org/apache/ignite/visor/visor.scala   |  230 +---
 .../ignite/visor/VisorRuntimeBaseSpec.scala     |    2 +
 .../commands/kill/VisorKillCommandSpec.scala    |    1 +
 .../commands/start/VisorStartCommandSpec.scala  |    1 +
 .../commands/tasks/VisorTasksCommandSpec.scala  |    1 +
 .../commands/vvm/VisorVvmCommandSpec.scala      |    1 +
 .../licenses/slf4j-mit-license.txt              |   21 -
 modules/visor-plugins/pom.xml                   |    2 +-
 modules/web/pom.xml                             |   12 +-
 .../IgniteWebSessionSelfTestSuite.java          |    2 +-
 .../config/benchmark-put-indexed-val.properties |   64 +
 modules/yardstick/config/ignite-base-config.xml |   23 +
 modules/yardstick/pom.xml                       |    2 +-
 .../cache/IgnitePutIndexedValue1Benchmark.java  |   42 +
 .../cache/IgnitePutIndexedValue2Benchmark.java  |   42 +
 .../cache/IgnitePutIndexedValue8Benchmark.java  |   42 +
 .../ignite/yardstick/cache/model/Person1.java   |   55 +
 .../ignite/yardstick/cache/model/Person2.java   |   67 +
 .../ignite/yardstick/cache/model/Person8.java   |  109 ++
 modules/yarn/README.txt                         |   28 +
 modules/yarn/licenses/apache-2.0.txt            |  202 +++
 modules/yarn/pom.xml                            |  101 ++
 .../apache/ignite/yarn/ApplicationMaster.java   |  400 ++++++
 .../apache/ignite/yarn/ClusterProperties.java   |  432 +++++++
 .../org/apache/ignite/yarn/IgniteContainer.java |   84 ++
 .../org/apache/ignite/yarn/IgniteProvider.java  |  339 +++++
 .../apache/ignite/yarn/IgniteYarnClient.java    |  178 +++
 .../org/apache/ignite/yarn/package-info.java    |   22 +
 .../ignite/yarn/utils/IgniteYarnUtils.java      |   81 ++
 .../main/resources/ignite-default-config.xml    |   35 +
 .../org/apache/ignite/IgniteYarnTestSuite.java  |   38 +
 .../yarn/IgniteApplicationMasterSelfTest.java   |  532 ++++++++
 parent/pom.xml                                  |   96 ++
 pom.xml                                         |   20 +-
 scripts/git-patch-prop.sh                       |    2 +-
 570 files changed, 30494 insertions(+), 5676 deletions(-)
----------------------------------------------------------------------



[07/24] incubator-ignite git commit: ignite-1015 - refactor

Posted by vk...@apache.org.
ignite-1015 - refactor


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

Branch: refs/heads/ignite-104
Commit: 0871a7a8cacdfde1dab817d782dd6de3e7a512b4
Parents: 38d2a93
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 08:23:36 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 08:23:36 2015 +0300

----------------------------------------------------------------------
 .../query/h2/sql/GridSqlQuerySplitter.java      | 163 +++++++++++--------
 1 file changed, 94 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0871a7a8/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 6c1886b..536f72d 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -28,6 +28,7 @@ import org.jetbrains.annotations.*;
 import java.util.*;
 
 import static org.apache.ignite.internal.processors.query.h2.sql.GridSqlFunctionType.*;
+import static org.apache.ignite.internal.processors.query.h2.sql.GridSqlPlaceholder.*;
 
 /**
  * Splits a single SQL query into two step map-reduce query.
@@ -397,77 +398,12 @@ public class GridSqlQuerySplitter {
         if (!collocated && el instanceof GridSqlAggregateFunction) {
             aggregateFound = true;
 
-            GridSqlAggregateFunction agg = (GridSqlAggregateFunction)el;
+            if (alias == null)
+                alias = alias(columnName(idx), el);
 
-            GridSqlElement mapAgg, rdcAgg;
+            splitAggregate(alias, 0, mapSelect, idx, true);
 
-            String mapAggAlias = columnName(idx);
-
-            switch (agg.type()) {
-                case AVG: // SUM( AVG(CAST(x AS DOUBLE))*COUNT(x) )/SUM( COUNT(x) ).
-                    //-- COUNT(x) map
-                    GridSqlElement cntMapAgg = aggregate(agg.distinct(), COUNT).addChild(agg.child());
-
-                    // Add generated alias to COUNT(x).
-                    // Using size as index since COUNT will be added as the last select element to the map query.
-                    String cntMapAggAlias = columnName(mapSelect.size());
-
-                    cntMapAgg = alias(cntMapAggAlias, cntMapAgg);
-
-                    mapSelect.add(cntMapAgg);
-
-                    //-- AVG(CAST(x AS DOUBLE)) map
-                    mapAgg = aggregate(agg.distinct(), AVG).addChild( // Add function argument.
-                        function(CAST).setCastType("DOUBLE").addChild(agg.child()));
-
-                    //-- SUM( AVG(x)*COUNT(x) )/SUM( COUNT(x) ) reduce
-                    GridSqlElement sumUpRdc = aggregate(false, SUM).addChild(
-                        op(GridSqlOperationType.MULTIPLY,
-                                column(mapAggAlias),
-                                column(cntMapAggAlias)));
-
-                    GridSqlElement sumDownRdc = aggregate(false, SUM).addChild(column(cntMapAggAlias));
-
-                    rdcAgg = op(GridSqlOperationType.DIVIDE, sumUpRdc, sumDownRdc);
-
-                    break;
-
-                case SUM: // SUM( SUM(x) )
-                case MAX: // MAX( MAX(x) )
-                case MIN: // MIN( MIN(x) )
-                    mapAgg = aggregate(agg.distinct(), agg.type()).addChild(agg.child());
-                    rdcAgg = aggregate(agg.distinct(), agg.type()).addChild(column(mapAggAlias));
-
-                    break;
-
-                case COUNT_ALL: // CAST(SUM( COUNT(*) ) AS BIGINT)
-                case COUNT: // CAST(SUM( COUNT(x) ) AS BIGINT)
-                    mapAgg = aggregate(agg.distinct(), agg.type());
-
-                    if (agg.type() == COUNT)
-                        mapAgg.addChild(agg.child());
-
-                    rdcAgg = aggregate(false, SUM).addChild(column(mapAggAlias));
-                    rdcAgg = function(CAST).setCastType("BIGINT").addChild(rdcAgg);
-
-                    break;
-
-                default:
-                    throw new IgniteException("Unsupported aggregate: " + agg.type());
-            }
-
-            assert !(mapAgg instanceof GridSqlAlias);
-
-            // Add generated alias to map aggregate.
-            mapAgg = alias(mapAggAlias, mapAgg);
-
-            if (alias != null) // Add initial alias if it was set.
-                rdcAgg = alias(alias.alias(), rdcAgg);
-
-            // Set map and reduce aggregates to their places in selects.
-            mapSelect.set(idx, mapAgg);
-
-            rdcSelect[idx] = rdcAgg;
+            rdcSelect[idx] = alias;
         }
         else {
             String mapColAlias = columnName(idx);
@@ -500,6 +436,95 @@ public class GridSqlQuerySplitter {
     }
 
     /**
+     * @param parentExpr Parent expression.
+     * @param aggIdx Index of the aggregate to split in this expression.
+     * @param mapSelect List of expressions in map SELECT clause.
+     * @param exprIdx Index of the original expression in map SELECT clause.
+     * @param first If this is the first aggregate found in this expression.
+     */
+    private static void splitAggregate(
+        GridSqlElement parentExpr,
+        int aggIdx,
+        List<GridSqlElement> mapSelect,
+        int exprIdx,
+        boolean first
+    ) {
+        GridSqlAggregateFunction agg = parentExpr.child(aggIdx);
+
+        GridSqlElement mapAgg, rdcAgg;
+
+        // Create stubbed map alias to fill it with correct expression later.
+        GridSqlAlias mapAggAlias = alias(columnName(first ? exprIdx : mapSelect.size()), EMPTY);
+
+        // Replace original expression if it is the first aggregate in expression or add to the end.
+        if (first)
+            mapSelect.set(exprIdx, mapAggAlias);
+        else
+            mapSelect.add(mapAggAlias);
+
+        switch (agg.type()) {
+            case AVG: // SUM( AVG(CAST(x AS DOUBLE))*COUNT(x) )/SUM( COUNT(x) ).
+                //-- COUNT(x) map
+                GridSqlElement cntMapAgg = aggregate(agg.distinct(), COUNT).addChild(agg.child());
+
+                // Add generated alias to COUNT(x).
+                // Using size as index since COUNT will be added as the last select element to the map query.
+                String cntMapAggAlias = columnName(mapSelect.size());
+
+                cntMapAgg = alias(cntMapAggAlias, cntMapAgg);
+
+                mapSelect.add(cntMapAgg);
+
+                //-- AVG(CAST(x AS DOUBLE)) map
+                mapAgg = aggregate(agg.distinct(), AVG).addChild( // Add function argument.
+                    function(CAST).setCastType("DOUBLE").addChild(agg.child()));
+
+                //-- SUM( AVG(x)*COUNT(x) )/SUM( COUNT(x) ) reduce
+                GridSqlElement sumUpRdc = aggregate(false, SUM).addChild(
+                    op(GridSqlOperationType.MULTIPLY,
+                        column(mapAggAlias.alias()),
+                        column(cntMapAggAlias)));
+
+                GridSqlElement sumDownRdc = aggregate(false, SUM).addChild(column(cntMapAggAlias));
+
+                rdcAgg = op(GridSqlOperationType.DIVIDE, sumUpRdc, sumDownRdc);
+
+                break;
+
+            case SUM: // SUM( SUM(x) )
+            case MAX: // MAX( MAX(x) )
+            case MIN: // MIN( MIN(x) )
+                mapAgg = aggregate(agg.distinct(), agg.type()).addChild(agg.child());
+                rdcAgg = aggregate(agg.distinct(), agg.type()).addChild(column(mapAggAlias.alias()));
+
+                break;
+
+            case COUNT_ALL: // CAST(SUM( COUNT(*) ) AS BIGINT)
+            case COUNT: // CAST(SUM( COUNT(x) ) AS BIGINT)
+                mapAgg = aggregate(agg.distinct(), agg.type());
+
+                if (agg.type() == COUNT)
+                    mapAgg.addChild(agg.child());
+
+                rdcAgg = aggregate(false, SUM).addChild(column(mapAggAlias.alias()));
+                rdcAgg = function(CAST).setCastType("BIGINT").addChild(rdcAgg);
+
+                break;
+
+            default:
+                throw new IgniteException("Unsupported aggregate: " + agg.type());
+        }
+
+        assert !(mapAgg instanceof GridSqlAlias);
+
+        // Fill the map alias with aggregate.
+        mapAggAlias.child(0, mapAgg);
+
+        // Replace in original expression aggregate with reduce aggregate.
+        parentExpr.child(aggIdx, rdcAgg);
+    }
+
+    /**
      * @param distinct Distinct.
      * @param type Type.
      * @return Aggregate function.


[15/24] incubator-ignite git commit: ignite-1015 - review fixes

Posted by vk...@apache.org.
ignite-1015 - review fixes


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

Branch: refs/heads/ignite-104
Commit: 624ec83022f8d8c950d4cb393ebe961096e168c4
Parents: 1eb0d79
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 18:41:06 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 18:41:06 2015 +0300

----------------------------------------------------------------------
 .../processors/query/h2/sql/GridSqlQuerySplitter.java     | 10 +++++-----
 .../cache/GridCacheCrossCacheQuerySelfTest.java           |  2 ++
 2 files changed, 7 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/624ec830/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 056aafe..502366d 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -137,13 +137,13 @@ public class GridSqlQuerySplitter {
         // nullifying or updating things, have to make sure that we will not need them in the original form later.
         final GridSqlSelect mapQry = wrapUnion(collectAllSpaces(GridSqlQueryParser.parse(stmt), spaces));
 
-        final String mergeTable = TABLE_FUNC_NAME + "()"; // table(0); TODO
+        final String mergeTable = TABLE_FUNC_NAME + "()"; // table(0); TODO IGNITE-1142
 
         final boolean explain = mapQry.explain();
 
         mapQry.explain(false);
 
-        GridSqlSelect rdcQry = new GridSqlSelect().from(new GridSqlFunction(null, TABLE_FUNC_NAME)); // table(mergeTable)); TODO
+        GridSqlSelect rdcQry = new GridSqlSelect().from(new GridSqlFunction(null, TABLE_FUNC_NAME)); // table(mergeTable)); TODO IGNITE-1142
 
         // Split all select expressions into map-reduce parts.
         List<GridSqlElement> mapExps = F.addAll(new ArrayList<GridSqlElement>(mapQry.allColumns()),
@@ -176,7 +176,7 @@ public class GridSqlQuerySplitter {
 
         // -- HAVING
         if (mapQry.havingColumn() >= 0 && !collocated) {
-            // TODO Find aggregate functions in HAVING clause or rewrite query to put all aggregates to SELECT clause.
+            // TODO IGNITE-1140 - Find aggregate functions in HAVING clause or rewrite query to put all aggregates to SELECT clause.
             rdcQry.whereAnd(column(columnName(mapQry.havingColumn())));
 
             mapQry.havingColumn(-1);
@@ -189,7 +189,7 @@ public class GridSqlQuerySplitter {
 
             if (aggregateFound) // Ordering over aggregates does not make sense.
                 mapQry.clearSort(); // Otherwise map sort will be used by offset-limit.
-            // TODO Check if sorting is done over aggregated expression, otherwise we can sort and use offset-limit.
+            // TODO IGNITE-1141 - Check if sorting is done over aggregated expression, otherwise we can sort and use offset-limit.
         }
 
         // -- LIMIT
@@ -425,7 +425,7 @@ public class GridSqlQuerySplitter {
                 GridSqlType type = el.expressionResultType();
 
                 if (type != null && type.type() == Value.UUID) // There is no JDBC type UUID, so conversion to bytes occurs.
-                    rdcEl = function(CAST).setCastType("UUID").addChild(rdcEl); // TODO remove this cast when table function removed
+                    rdcEl = function(CAST).setCastType("UUID").addChild(rdcEl); // TODO IGNITE-1142 - remove this cast when table function removed
 
                 if (colNames.add(rdcColAlias)) // To handle column name duplication (usually wildcard for few tables).
                     rdcEl = alias(rdcColAlias, rdcEl);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/624ec830/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
index a393991..63744f1 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheCrossCacheQuerySelfTest.java
@@ -151,6 +151,7 @@ public class GridCacheCrossCacheQuerySelfTest extends GridCommonAbstractTest {
 
         qry = new SqlFieldsQuery("select p.name, avg(f.price), min(f.price), max(f.price), sum(f.price), count(*), " +
             "count(nullif(f.price, 5)), (max(f.price) - min(f.price)) * 3 as nn " +
+            ", CAST(max(f.price) + 7 AS VARCHAR) " +
             "from FactPurchase f, \"replicated\".DimProduct p " +
             "where p.id = f.productId " +
             "group by f.productId, p.name");
@@ -161,6 +162,7 @@ public class GridCacheCrossCacheQuerySelfTest extends GridCommonAbstractTest {
             assertTrue(names.add((String)o.get(0)));
             assertEquals(i(o, 4), i(o, 2) + i(o, 3));
             assertEquals(i(o, 7), (i(o, 3) - i(o, 2)) * 3);
+            assertEquals(o.get(8), Integer.toString(i(o, 3) + 7));
         }
 
         X.println("___ SUM HAVING");


[18/24] incubator-ignite git commit: # HELPDESC-777 Fix javadoc. (cherry picked from commit 77b14fe)

Posted by vk...@apache.org.
# HELPDESC-777 Fix javadoc.
(cherry picked from commit 77b14fe)


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

Branch: refs/heads/ignite-104
Commit: 0055b4050481758a3b989cf3cab019768e664f0a
Parents: 4092c0f
Author: sevdokimov <se...@jetbrains.com>
Authored: Wed Jul 22 20:29:09 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Wed Jul 22 20:31:54 2015 +0300

----------------------------------------------------------------------
 .../src/main/java/org/apache/ignite/IgniteSystemProperties.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0055b405/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index b5685b2..d0dd29b 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -318,7 +318,7 @@ public final class IgniteSystemProperties {
 
     /**
      * If this property is set to {@code true} then Ignite will append
-     * hash code of class loader to bean name returned by {@link RuntimeMXBean#getName()}.
+     * hash code of class loader to MXBean name.
      * <p>
      * Default is {@code true}.
      */


[12/24] incubator-ignite git commit: muted failing discovery test

Posted by vk...@apache.org.
muted failing discovery test


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

Branch: refs/heads/ignite-104
Commit: 0b25ec2216f7d7c54f29cc9c4ca465c55ed8c0a1
Parents: 63575bb
Author: Denis Magda <dm...@gridgain.com>
Authored: Wed Jul 22 15:48:36 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Wed Jul 22 15:48:36 2015 +0300

----------------------------------------------------------------------
 .../ignite/spi/discovery/tcp/TcpDiscoveryMultiThreadedTest.java    | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0b25ec22/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMultiThreadedTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMultiThreadedTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMultiThreadedTest.java
index 9643235..69dd538 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMultiThreadedTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryMultiThreadedTest.java
@@ -102,6 +102,8 @@ public class TcpDiscoveryMultiThreadedTest extends GridCommonAbstractTest {
      * @throws Exception If any error occurs.
      */
     public void testMultiThreadedClientsRestart() throws Exception {
+        fail("https://issues.apache.org/jira/browse/IGNITE-1139");
+
         clientFlagGlobal = false;
 
         info("Test timeout: " + (getTestTimeout() / (60 * 1000)) + " min.");


[05/24] incubator-ignite git commit: ignite-1015 - lists

Posted by vk...@apache.org.
ignite-1015 - lists


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

Branch: refs/heads/ignite-104
Commit: 12af70bf57bdf77acf376a5baec9cbde6083565a
Parents: 0bb26bb
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 07:27:25 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 07:27:25 2015 +0300

----------------------------------------------------------------------
 .../processors/query/h2/sql/GridSqlAlias.java       | 16 +++++++++++++++-
 .../processors/query/h2/sql/GridSqlColumn.java      |  4 ++++
 .../processors/query/h2/sql/GridSqlConst.java       |  4 ++++
 .../processors/query/h2/sql/GridSqlElement.java     | 16 ++++++++++++++--
 .../processors/query/h2/sql/GridSqlFunction.java    |  2 ++
 .../processors/query/h2/sql/GridSqlJoin.java        |  4 ++++
 .../processors/query/h2/sql/GridSqlOperation.java   |  7 +++++++
 .../query/h2/sql/GridSqlOperationType.java          |  2 ++
 .../processors/query/h2/sql/GridSqlParameter.java   |  4 ++++
 .../processors/query/h2/sql/GridSqlPlaceholder.java |  4 ++++
 .../query/h2/sql/GridSqlQuerySplitter.java          |  2 +-
 .../processors/query/h2/sql/GridSqlSubquery.java    |  4 ++++
 .../processors/query/h2/sql/GridSqlTable.java       |  4 ++++
 13 files changed, 69 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java
index 464a135..5e827a0 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlAlias.java
@@ -19,6 +19,8 @@ package org.apache.ignite.internal.processors.query.h2.sql;
 
 import org.h2.command.*;
 
+import java.util.*;
+
 /**
  * Alias for column or table.
  */
@@ -43,12 +45,24 @@ public class GridSqlAlias extends GridSqlElement {
      * @param useAs Use 'AS' keyword.
      */
     public GridSqlAlias(String alias, GridSqlElement expr, boolean useAs) {
-        addChild(expr);
+        super(list(expr));
 
         this.useAs = useAs;
         this.alias = alias;
     }
 
+    /**
+     * @param el Element.
+     * @return List.
+     */
+    private static List<GridSqlElement> list(GridSqlElement el) {
+        List<GridSqlElement> res = new ArrayList<>(1);
+
+        res.add(el);
+
+        return res;
+    }
+
     /** {@inheritDoc} */
     @Override public String getSQL() {
         return child().getSQL() + (useAs ? " AS " : " ") + Parser.quoteIdentifier(alias);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlColumn.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlColumn.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlColumn.java
index 2353b48..d3d7d1d 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlColumn.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlColumn.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.sql;
 
+import java.util.*;
+
 /**
  * Column.
  */
@@ -36,6 +38,8 @@ public class GridSqlColumn extends GridSqlElement implements GridSqlValue {
      * @param sqlText Text.
      */
     public GridSqlColumn(GridSqlElement from, String name, String sqlText) {
+        super(Collections.<GridSqlElement>emptyList());
+
         assert sqlText != null;
 
         expressionInFrom = from;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlConst.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlConst.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlConst.java
index f416243..124bc94 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlConst.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlConst.java
@@ -19,6 +19,8 @@ package org.apache.ignite.internal.processors.query.h2.sql;
 
 import org.h2.value.*;
 
+import java.util.*;
+
 /**
  * Constant value.
  */
@@ -30,6 +32,8 @@ public class GridSqlConst extends GridSqlElement implements GridSqlValue {
      * @param val Value.
      */
     public GridSqlConst(Value val) {
+        super(Collections.<GridSqlElement>emptyList());
+
         this.val = val;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
index 9a6b410..7ad8d5a 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlElement.java
@@ -24,12 +24,21 @@ import java.util.*;
  */
 public abstract class GridSqlElement implements Iterable<GridSqlElement> {
     /** */
-    protected List<GridSqlElement> children = new ArrayList<>();
+    protected List<GridSqlElement> children;
 
     /** */
     private GridSqlType expressionResultType;
 
     /**
+     * @param children Initial child list.
+     */
+    protected GridSqlElement(List<GridSqlElement> children) {
+        assert children != null;
+
+        this.children = children;
+    }
+
+    /**
      * @return Optional expression result type (if this is an expression and result type is known).
      */
     public GridSqlType expressionResultType() {
@@ -67,7 +76,7 @@ public abstract class GridSqlElement implements Iterable<GridSqlElement> {
      * @return First child.
      */
     public GridSqlElement child() {
-        return children.get(0);
+        return child(0);
     }
 
     /**
@@ -83,6 +92,9 @@ public abstract class GridSqlElement implements Iterable<GridSqlElement> {
      * @param child New child.
      */
     public void child(int idx, GridSqlElement child) {
+        if (child == null)
+            throw new NullPointerException();
+
         children.set(idx, child);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java
index 9479538..c41bbb7 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java
@@ -66,6 +66,8 @@ public class GridSqlFunction extends GridSqlElement {
      * @param name Name.
      */
     private GridSqlFunction(String schema, GridSqlFunctionType type, String name) {
+        super(new ArrayList<GridSqlElement>());
+
         if (name == null)
             throw new NullPointerException();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlJoin.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlJoin.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlJoin.java
index 69ebdbf..ddd9ba7 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlJoin.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlJoin.java
@@ -20,6 +20,8 @@ package org.apache.ignite.internal.processors.query.h2.sql;
 import org.h2.util.*;
 import org.jetbrains.annotations.*;
 
+import java.util.*;
+
 /**
  * Join of two tables or subqueries.
  */
@@ -34,6 +36,8 @@ public class GridSqlJoin extends GridSqlElement {
      * @param on Join condition.
      */
     public GridSqlJoin(GridSqlElement leftTbl, GridSqlElement rightTbl, boolean leftOuter, @Nullable GridSqlElement on) {
+        super(new ArrayList<GridSqlElement>(on == null ? 2 : 3));
+
         addChild(leftTbl);
         addChild(rightTbl);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java
index 6100618..395754b 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperation.java
@@ -17,6 +17,10 @@
 
 package org.apache.ignite.internal.processors.query.h2.sql;
 
+import java.util.*;
+
+import static org.apache.ignite.internal.processors.query.h2.sql.GridSqlOperationType.*;
+
 /**
  * Unary or binary operation.
  */
@@ -28,6 +32,9 @@ public class GridSqlOperation extends GridSqlElement {
      * @param opType Operation type.
      */
     public GridSqlOperation(GridSqlOperationType opType) {
+        super(opType == IN ? new ArrayList<GridSqlElement>() :
+            new ArrayList<GridSqlElement>(opType.childrenCount()));
+
         this.opType = opType;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
index a071e73..cfe7576 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
@@ -70,6 +70,8 @@ public enum GridSqlOperationType {
      * @param sqlGenerator sqlGenerator.
      */
     GridSqlOperationType(int childrenCnt, SqlGenerator sqlGenerator) {
+        assert childrenCnt > 0 || sqlGenerator instanceof ConditionInSqlGenerator : childrenCnt;
+
         this.childrenCnt = childrenCnt;
         this.sqlGenerator = sqlGenerator;
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlParameter.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlParameter.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlParameter.java
index 1332c97..fc71659 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlParameter.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlParameter.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.sql;
 
+import java.util.*;
+
 /**
  * Query parameter.
  */
@@ -28,6 +30,8 @@ public class GridSqlParameter extends GridSqlElement implements GridSqlValue {
      * @param idx Index.
      */
     public GridSqlParameter(int idx) {
+        super(Collections.<GridSqlElement>emptyList());
+
         this.idx = idx;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlPlaceholder.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlPlaceholder.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlPlaceholder.java
index 02fa7d7..6b94f20 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlPlaceholder.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlPlaceholder.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.sql;
 
+import java.util.*;
+
 /**
  * Placeholder.
  */
@@ -31,6 +33,8 @@ public class GridSqlPlaceholder extends GridSqlElement {
      * @param sql SQL.
      */
     public GridSqlPlaceholder(String sql) {
+        super(Collections.<GridSqlElement>emptyList());
+
         this.sql = sql;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index b1dc0dc..6c1886b 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -285,7 +285,7 @@ public class GridSqlQuerySplitter {
         if (el instanceof GridSqlAlias)
             el = el.child();
 
-        if (el instanceof GridSqlOperation || el instanceof GridSqlFunction || el instanceof GridSqlAggregateFunction) {
+        if (el instanceof GridSqlOperation || el instanceof GridSqlFunction) {
             for (GridSqlElement child : el)
                 collectAllSpacesInSubqueries(child, spaces);
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSubquery.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSubquery.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSubquery.java
index 4b60969..04314c7 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSubquery.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlSubquery.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.processors.query.h2.sql;
 
+import java.util.*;
+
 /**
  * Subquery.
  */
@@ -28,6 +30,8 @@ public class GridSqlSubquery extends GridSqlElement {
      * @param select Select.
      */
     public GridSqlSubquery(GridSqlQuery select) {
+        super(Collections.<GridSqlElement>emptyList());
+
         this.select = select;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/12af70bf/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlTable.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlTable.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlTable.java
index b51845a..b76f962 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlTable.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlTable.java
@@ -20,6 +20,8 @@ package org.apache.ignite.internal.processors.query.h2.sql;
 import org.h2.command.*;
 import org.jetbrains.annotations.*;
 
+import java.util.*;
+
 /**
  * Table with optional schema.
  */
@@ -35,6 +37,8 @@ public class GridSqlTable extends GridSqlElement {
      * @param tblName Table name.
      */
     public GridSqlTable(@Nullable String schema, String tblName) {
+        super(Collections.<GridSqlElement>emptyList());
+
         this.schema = schema;
         this.tblName = tblName;
     }


[22/24] incubator-ignite git commit: IGNITE-104 - Ordered ATOMIC updates

Posted by vk...@apache.org.
IGNITE-104 - Ordered ATOMIC updates


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

Branch: refs/heads/ignite-104
Commit: 73f1be64fe7beef1b687aaadcc3184991e49fa10
Parents: b181411
Author: Valentin Kulichenko <vk...@gridgain.com>
Authored: Wed Jul 22 18:38:45 2015 -0700
Committer: Valentin Kulichenko <vk...@gridgain.com>
Committed: Wed Jul 22 18:38:45 2015 -0700

----------------------------------------------------------------------
 .../processors/cache/GridCacheMapEntry.java     |  9 ++++--
 .../dht/atomic/GridDhtAtomicCache.java          | 31 ++++++++++++++------
 .../distributed/near/GridNearAtomicCache.java   | 22 +++++++++++---
 3 files changed, 46 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/73f1be64/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index 4680994..b0237f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -1611,7 +1611,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx {
         CacheObject oldVal;
         CacheObject updated;
 
-        GridCacheVersion enqueueVer = null;
+        GridCacheVersion rmvVer = null;
 
         GridCacheVersionConflictContext<?, ?> conflictCtx = null;
 
@@ -2120,7 +2120,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx {
                     }
                 }
 
-                enqueueVer = newVer;
+                rmvVer = newVer;
 
                 boolean hasValPtr = hasOffHeapPointer();
 
@@ -2163,6 +2163,9 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx {
                     }
                 }
 
+                if (!cctx.deferredDelete())
+                    markObsolete(rmvVer);
+
                 res = hadVal;
             }
 
@@ -2194,7 +2197,7 @@ public abstract class GridCacheMapEntry implements GridCacheEntryEx {
             invokeRes,
             newSysTtl,
             newSysExpireTime,
-            enqueueVer,
+            rmvVer,
             conflictCtx,
             true);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/73f1be64/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index aaf373d..fb309c3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -1181,13 +1181,22 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
                 if (locked != null)
                     unlockEntries(locked, req.topologyVersion());
 
-                // Enqueue if necessary after locks release.
                 if (deleted != null) {
                     assert !deleted.isEmpty();
-                    assert ctx.deferredDelete(this) : this;
 
-                    for (IgniteBiTuple<GridDhtCacheEntry, GridCacheVersion> e : deleted)
-                        ctx.onDeferredDelete(e.get1(), e.get2());
+                    boolean deferred = ctx.deferredDelete();
+
+                    for (IgniteBiTuple<GridDhtCacheEntry, GridCacheVersion> e : deleted) {
+                        if (deferred)
+                            ctx.onDeferredDelete(e.get1(), e.get2());
+                        else {
+                            GridDhtCacheEntry entry = e.get1();
+
+                            assert entry.obsolete();
+
+                            removeEntry(entry);
+                        }
+                    }
                 }
             }
         }
@@ -2182,9 +2191,6 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
      * @param topVer Topology version.
      */
     private void unlockEntries(Collection<GridDhtCacheEntry> locked, AffinityTopologyVersion topVer) {
-        // Process deleted entries before locks release.
-        assert ctx.deferredDelete(this) : this;
-
         // Entries to skip eviction manager notification for.
         // Enqueue entries while holding locks.
         Collection<KeyCacheObject> skip = null;
@@ -2468,8 +2474,15 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
                             req.subjectId(),
                             taskName);
 
-                        if (updRes.removeVersion() != null)
-                            ctx.onDeferredDelete(entry, updRes.removeVersion());
+                        if (updRes.removeVersion() != null) {
+                            if (ctx.deferredDelete())
+                                ctx.onDeferredDelete(entry, updRes.removeVersion());
+                            else {
+                                assert entry.obsolete();
+
+                                removeEntry(entry);
+                            }
+                        }
 
                         entry.onUnlock();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/73f1be64/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index ed07f8f..f8fa573 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -241,8 +241,15 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
                         subjId,
                         taskName);
 
-                    if (updRes.removeVersion() != null)
-                        ctx.onDeferredDelete(entry, updRes.removeVersion());
+                    if (updRes.removeVersion() != null) {
+                        if (ctx.deferredDelete())
+                            ctx.onDeferredDelete(entry, updRes.removeVersion());
+                        else {
+                            assert entry.obsolete();
+
+                            removeEntry(entry);
+                        }
+                    }
 
                     break; // While.
                 }
@@ -339,8 +346,15 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
                             req.subjectId(),
                             taskName);
 
-                        if (updRes.removeVersion() != null)
-                            ctx.onDeferredDelete(entry, updRes.removeVersion());
+                        if (updRes.removeVersion() != null) {
+                            if (ctx.deferredDelete())
+                                ctx.onDeferredDelete(entry, updRes.removeVersion());
+                            else {
+                                assert entry.obsolete();
+
+                                removeEntry(entry);
+                            }
+                        }
 
                         break;
                     }


[09/24] incubator-ignite git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-1015

Posted by vk...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-1015


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

Branch: refs/heads/ignite-104
Commit: 52025271f3db6e764ab62d0483966159d004b42c
Parents: 301f573 8e1492a
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 09:04:55 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 09:04:55 2015 +0300

----------------------------------------------------------------------
 .../processors/cache/GridCacheMvccManager.java  | 14 +++++++++
 .../distributed/dht/GridDhtTxFinishFuture.java  | 13 +++++++-
 .../GridDhtPartitionsExchangeFuture.java        | 10 +++++--
 .../near/GridNearOptimisticTxPrepareFuture.java |  4 ++-
 .../GridNearPessimisticTxPrepareFuture.java     |  2 +-
 .../near/GridNearTxFinishFuture.java            | 17 ++++++++++-
 .../cache/transactions/IgniteTxManager.java     |  5 ++--
 .../cache/GridCachePutAllFailoverSelfTest.java  |  3 ++
 .../GridCacheAbstractNodeRestartSelfTest.java   |  9 ++++++
 ...NearDisabledOptimisticTxNodeRestartTest.java | 31 ++++++++++++++++++++
 .../GridCachePartitionedFailoverSelfTest.java   |  5 ----
 ...ePartitionedOptimisticTxNodeRestartTest.java | 12 +++++++-
 .../IgniteCacheFailoverTestSuite2.java          |  4 +++
 .../testsuites/IgniteCacheRestartTestSuite.java |  5 ++--
 .../org/apache/ignite/spark/IgniteContext.scala | 14 +++++++++
 15 files changed, 130 insertions(+), 18 deletions(-)
----------------------------------------------------------------------



[14/24] incubator-ignite git commit: Merge branches 'ignite-1015' and 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-1015

Posted by vk...@apache.org.
Merge branches 'ignite-1015' and 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-1015


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

Branch: refs/heads/ignite-104
Commit: 1eb0d79bd6c81e1f8e901de9b58600bc70883cd3
Parents: 2e1dea9 a57707f
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 17:53:38 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 17:53:38 2015 +0300

----------------------------------------------------------------------
 .../ignite/spi/discovery/tcp/TcpDiscoveryMultiThreadedTest.java    | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------



[24/24] incubator-ignite git commit: IGNITE-104 - Ordered ATOMIC updates

Posted by vk...@apache.org.
IGNITE-104 - Ordered ATOMIC updates


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

Branch: refs/heads/ignite-104
Commit: b544e80b80803d116b13c3cdd78b619c38b86359
Parents: 0f54d4c
Author: Valentin Kulichenko <vk...@gridgain.com>
Authored: Wed Jul 22 19:52:57 2015 -0700
Committer: Valentin Kulichenko <vk...@gridgain.com>
Committed: Wed Jul 22 19:52:57 2015 -0700

----------------------------------------------------------------------
 .../processors/cache/distributed/near/GridNearAtomicCache.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b544e80b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index ab3b06f..0aa1638 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -71,7 +71,7 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
         int size = CU.isSystemCache(ctx.name()) ? 100 :
             Integer.getInteger(IGNITE_ATOMIC_CACHE_DELETE_HISTORY_SIZE, 1_000_000);
 
-        if (ctx.deferredDelete())
+        if (ctx.deferredDelete(this))
             rmvQueue = new GridCircularBuffer<>(U.ceilPow2(size / 10));
     }
 


[10/24] incubator-ignite git commit: master - disabled test. fix in ignite-959-z

Posted by vk...@apache.org.
master - disabled test. fix in ignite-959-z


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

Branch: refs/heads/ignite-104
Commit: c044bb8278d724336d17fbc2dcd34b0957ac41ec
Parents: 8e1492a
Author: S.Vladykin <sv...@gridgain.com>
Authored: Wed Jul 22 15:10:29 2015 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Wed Jul 22 15:10:29 2015 +0300

----------------------------------------------------------------------
 .../IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest.java     | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c044bb82/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest.java
index dc25af5..edc7f35 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest.java
@@ -22,6 +22,11 @@ package org.apache.ignite.internal.processors.cache;
  */
 public class IgniteCacheQueryOffheapEvictsMultiThreadedSelfTest extends IgniteCacheQueryOffheapMultiThreadedSelfTest {
     /** {@inheritDoc} */
+    @Override protected void beforeTestsStarted() throws Exception {
+        fail("IGNITE-959");
+    }
+
+    /** {@inheritDoc} */
     @Override protected boolean evictsEnabled() {
         return true;
     }