You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2016/09/14 09:18:05 UTC

[01/12] ignite git commit: Fixed NPE in GridCacheAbstractFullApiSelfTest in multi jvm tests.

Repository: ignite
Updated Branches:
  refs/heads/master 563c2765d -> cfdae56db


Fixed NPE in GridCacheAbstractFullApiSelfTest in multi jvm tests.


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

Branch: refs/heads/master
Commit: 121b89b07990068a31d384da8d6f3c781cf0efb8
Parents: b5121ad
Author: sboikov <sb...@gridgain.com>
Authored: Wed Sep 7 14:36:51 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Wed Sep 7 14:36:51 2016 +0300

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


http://git-wip-us.apache.org/repos/asf/ignite/blob/121b89b0/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
index 3f4d812..a31c82e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
@@ -296,7 +296,7 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
         for (int i = 0; i < gridCount(); i++) {
             Boolean clientMode = grid(i).configuration().isClientMode();
 
-            if (clientMode)
+            if (clientMode != null && clientMode) // Can be null in multi jvm tests.
                 continue;
 
             grid(0).services(grid(0).cluster()).deployNodeSingleton(SERVICE_NAME1, new DummyServiceImpl());


[10/12] ignite git commit: IGNITE-3815 Added check that key type registered in store or cache. Added test. IGNITE-3816 Fixed column index search logic and added propper exception.

Posted by ak...@apache.org.
IGNITE-3815 Added check that key type registered in store or cache. Added test.
IGNITE-3816 Fixed column index search logic and added propper exception.


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

Branch: refs/heads/master
Commit: 98914fef1565dee660b1d743c45c91f3c0bf0afe
Parents: 409f043
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Wed Sep 14 15:59:42 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Wed Sep 14 15:59:42 2016 +0700

----------------------------------------------------------------------
 .../store/jdbc/CacheAbstractJdbcStore.java      | 71 +++++++++++++-------
 .../cache/store/jdbc/CacheJdbcPojoStore.java    | 22 +++---
 .../CacheJdbcPojoStoreAbstractSelfTest.java     | 70 ++++++++++++++++---
 ...heJdbcPojoStoreBinaryMarshallerSelfTest.java | 12 ++--
 4 files changed, 126 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/98914fef/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java
index aad05e0..a33a1e6 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java
@@ -574,8 +574,8 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
         try {
             if (kind == TypeKind.BUILT_IN) {
                 if (flds.length != 1)
-                    throw new CacheException("More than one field for built in type [cache=" +  U.maskName(cacheName) +
-                        ", type=" + typeName + " ]");
+                    throw new CacheException("More than one field for built in type " +
+                        "[cache=" + U.maskName(cacheName) + ", type=" + typeName + " ]");
 
                 JdbcTypeField field = flds[0];
 
@@ -588,16 +588,16 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
             else
                 for (JdbcTypeField field : flds) {
                     if (field.getDatabaseFieldName() == null)
-                        throw new CacheException("Missing database name in mapping description [cache=" +
-                            U.maskName(cacheName) + ", type=" + typeName + " ]");
+                        throw new CacheException("Missing database name in mapping description " +
+                            "[cache=" + U.maskName(cacheName) + ", type=" + typeName + " ]");
 
                     if (field.getJavaFieldName() == null)
-                        throw new CacheException("Missing field name in mapping description [cache=" +
-                            U.maskName(cacheName) + ", type=" + typeName + " ]");
+                        throw new CacheException("Missing field name in mapping description " +
+                            "[cache=" + U.maskName(cacheName) + ", type=" + typeName + " ]");
 
                     if (field.getJavaFieldType() == null)
-                        throw new CacheException("Missing field type in mapping description [cache=" +
-                            U.maskName(cacheName) + ", type=" + typeName + " ]");
+                        throw new CacheException("Missing field type in mapping description " +
+                            "[cache=" + U.maskName(cacheName) + ", type=" + typeName + " ]");
                 }
         }
         catch (ClassNotFoundException e) {
@@ -778,6 +778,23 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
         return em;
     }
 
+    /**
+     * Find column index by database name.
+     *
+     * @param loadColIdxs Select query columns indexes.
+     * @param dbName Column name in database.
+     * @return Column index.
+     * @throws IllegalStateException if column not found.
+     */
+    protected Integer columnIndex(Map<String, Integer> loadColIdxs, String dbName) {
+        Integer colIdx = loadColIdxs.get(dbName.toUpperCase());
+
+        if (colIdx == null)
+            throw new IllegalStateException("Failed to find column index for database field: " + dbName);
+
+        return colIdx;
+    }
+
     /** {@inheritDoc} */
     @Override public void loadCache(final IgniteBiInClosure<K, V> clo, @Nullable Object... args)
         throws CacheLoaderException {
@@ -800,7 +817,15 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
                     log.debug("Start loading entries from db using user queries from arguments...");
 
                 for (int i = 0; i < args.length; i += 2) {
-                    String keyType = args[i].toString();
+                    final String keyType = args[i].toString();
+
+                    if (!F.exist(mappings.values(), new IgnitePredicate<EntryMapping>() {
+                        @Override public boolean apply(EntryMapping em) {
+                            return em.keyType().equals(keyType);
+                        }
+                    }))
+                        throw new CacheLoaderException("Provided key type is not found in store or cache configuration " +
+                            "[cache=" + U.maskName(cacheName) + ", key=" + keyType + "]");
 
                     String selQry = args[i + 1].toString();
 
@@ -827,7 +852,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
 
                             if (rs.next()) {
                                 if (log.isDebugEnabled())
-                                    log.debug("Multithread loading entries from db [cache=" +  U.maskName(cacheName) +
+                                    log.debug("Multithread loading entries from db [cache=" + U.maskName(cacheName) +
                                         ", keyType=" + em.keyType() + " ]");
 
                                 int keyCnt = em.keyCols.size();
@@ -856,8 +881,8 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
                             }
                         }
                         catch (SQLException e) {
-                            log.warning("Failed to load entries from db in multithreaded mode [cache=" +  U.maskName(cacheName) +
-                                ", keyType=" + em.keyType() + " ]", e);
+                            log.warning("Failed to load entries from db in multithreaded mode " +
+                                "[cache=" + U.maskName(cacheName) + ", keyType=" + em.keyType() + " ]", e);
                         }
                         finally {
                             U.closeQuiet(conn);
@@ -865,7 +890,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
                     }
 
                     if (log.isDebugEnabled())
-                        log.debug("Single thread loading entries from db [cache=" +  U.maskName(cacheName) +
+                        log.debug("Single thread loading entries from db [cache=" + U.maskName(cacheName) +
                             ", keyType=" + em.keyType() + " ]");
 
                     futs.add(pool.submit(loadCacheFull(em, clo)));
@@ -876,7 +901,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
                 U.get(fut);
 
             if (log.isDebugEnabled())
-                log.debug("Cache loaded from db: " +  U.maskName(cacheName));
+                log.debug("Cache loaded from db: " + U.maskName(cacheName));
         }
         catch (IgniteCheckedException e) {
             throw new CacheLoaderException("Failed to load cache: " + U.maskName(cacheName), e.getCause());
@@ -1143,7 +1168,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
                         if (currKeyTypeId == null || !currKeyTypeId.equals(keyTypeId)) {
                             if (mergeStmt != null) {
                                 if (log.isDebugEnabled())
-                                    log.debug("Write entries to db [cache=" +  U.maskName(cacheName) +
+                                    log.debug("Write entries to db [cache=" + U.maskName(cacheName) +
                                         ", keyType=" + em.keyType() + ", cnt=" + prepared + "]");
 
                                 executeBatch(em, mergeStmt, "writeAll", fromIdx, prepared, lazyEntries);
@@ -1168,7 +1193,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
 
                         if (++prepared % batchSize == 0) {
                             if (log.isDebugEnabled())
-                                log.debug("Write entries to db [cache=" +  U.maskName(cacheName) +
+                                log.debug("Write entries to db [cache=" + U.maskName(cacheName) +
                                     ", keyType=" + em.keyType() + ", cnt=" + prepared + "]");
 
                             executeBatch(em, mergeStmt, "writeAll", fromIdx, prepared, lazyEntries);
@@ -1181,7 +1206,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
 
                     if (mergeStmt != null && prepared % batchSize != 0) {
                         if (log.isDebugEnabled())
-                            log.debug("Write entries to db [cache=" +  U.maskName(cacheName) +
+                            log.debug("Write entries to db [cache=" + U.maskName(cacheName) +
                                 ", keyType=" + em.keyType() + ", cnt=" + prepared + "]");
 
                         executeBatch(em, mergeStmt, "writeAll", fromIdx, prepared, lazyEntries);
@@ -1194,8 +1219,8 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
             }
             else {
                 if (log.isDebugEnabled())
-                    log.debug("Write entries to db one by one using update and insert statements [cache=" +
-                        U.maskName(cacheName) + ", cnt=" + entries.size() + "]");
+                    log.debug("Write entries to db one by one using update and insert statements " +
+                        "[cache=" + U.maskName(cacheName) + ", cnt=" + entries.size() + "]");
 
                 PreparedStatement insStmt = null;
 
@@ -1359,7 +1384,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
 
                 if (!currKeyTypeId.equals(keyTypeId)) {
                     if (log.isDebugEnabled())
-                        log.debug("Delete entries from db [cache=" +  U.maskName(cacheName) +
+                        log.debug("Delete entries from db [cache=" + U.maskName(cacheName) +
                             ", keyType=" + em.keyType() + ", cnt=" + prepared + "]");
 
                     executeBatch(em, delStmt, "deleteAll", fromIdx, prepared, lazyKeys);
@@ -1377,7 +1402,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
 
                 if (++prepared % batchSize == 0) {
                     if (log.isDebugEnabled())
-                        log.debug("Delete entries from db [cache=" +  U.maskName(cacheName) +
+                        log.debug("Delete entries from db [cache=" + U.maskName(cacheName) +
                             ", keyType=" + em.keyType() + ", cnt=" + prepared + "]");
 
                     executeBatch(em, delStmt, "deleteAll", fromIdx, prepared, lazyKeys);
@@ -1390,7 +1415,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
 
             if (delStmt != null && prepared % batchSize != 0) {
                 if (log.isDebugEnabled())
-                    log.debug("Delete entries from db [cache=" +  U.maskName(cacheName) +
+                    log.debug("Delete entries from db [cache=" + U.maskName(cacheName) +
                         ", keyType=" + em.keyType() + ", cnt=" + prepared + "]");
 
                 executeBatch(em, delStmt, "deleteAll", fromIdx, prepared, lazyKeys);
@@ -1766,7 +1791,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>,
             int idx = 1;
 
             for (String col : cols)
-                loadColIdxs.put(col, idx++);
+                loadColIdxs.put(col.toUpperCase(), idx++);
 
             loadCacheQry = dialect.loadCacheQuery(fullTblName, cols);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/98914fef/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java
index b9a3118..798b84a 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java
@@ -151,7 +151,9 @@ public class CacheJdbcPojoStore<K, V> extends CacheAbstractJdbcStore<K, V> {
         try {
             JdbcTypeField field = fields[0];
 
-            return getColumnValue(rs, loadColIdxs.get(field.getDatabaseFieldName()), field.getJavaFieldType());
+            Integer colIdx = columnIndex(loadColIdxs, field.getDatabaseFieldName());
+
+            return getColumnValue(rs, colIdx, field.getJavaFieldType());
         }
         catch (SQLException e) {
             throw new CacheLoaderException("Failed to read object of class: " + typeName, e);
@@ -195,9 +197,9 @@ public class CacheJdbcPojoStore<K, V> extends CacheAbstractJdbcStore<K, V> {
                     throw new IllegalStateException("Failed to find property in POJO class [type=" + typeName +
                         ", prop=" + fldJavaName + "]");
 
-                String fldDbName = fld.getDatabaseFieldName();
+                String dbName = fld.getDatabaseFieldName();
 
-                Integer colIdx = loadColIdxs.get(fldDbName);
+                Integer colIdx = columnIndex(loadColIdxs, dbName);
 
                 try {
                     Object colVal = getColumnValue(rs, colIdx, fld.getJavaFieldType());
@@ -207,12 +209,12 @@ public class CacheJdbcPojoStore<K, V> extends CacheAbstractJdbcStore<K, V> {
                     }
                     catch (Exception e) {
                         throw new CacheLoaderException("Failed to set property in POJO class [type=" + typeName +
-                            ", prop=" + fldJavaName + ", col=" + colIdx + ", dbName=" + fldDbName + "]", e);
+                            ", prop=" + fldJavaName + ", col=" + colIdx + ", dbName=" + dbName + "]", e);
                     }
                 }
                 catch (SQLException e) {
                     throw new CacheLoaderException("Failed to read object property [type= " + typeName +
-                        ", prop=" + fldJavaName + ", col=" + colIdx + ", dbName=" + fldDbName + "]", e);
+                        ", prop=" + fldJavaName + ", col=" + colIdx + ", dbName=" + dbName + "]", e);
                 }
             }
 
@@ -244,7 +246,7 @@ public class CacheJdbcPojoStore<K, V> extends CacheAbstractJdbcStore<K, V> {
             Collection<Object> hashValues = calcHash ? new ArrayList<>(hashFields.size()) : null;
 
             for (JdbcTypeField field : fields) {
-                Integer colIdx = loadColIdxs.get(field.getDatabaseFieldName());
+                Integer colIdx = columnIndex(loadColIdxs, field.getDatabaseFieldName());
 
                 Object colVal = getColumnValue(rs, colIdx, field.getJavaFieldType());
 
@@ -370,8 +372,8 @@ public class CacheJdbcPojoStore<K, V> extends CacheAbstractJdbcStore<K, V> {
          *
          * @param obj Object to get property value from.
          * @return Property value.
-         * @throws IllegalAccessException
-         * @throws InvocationTargetException
+         * @throws IllegalAccessException If failed to get value from property or failed access to property via reflection.
+         * @throws InvocationTargetException If failed access to property via reflection.
          */
         private Object get(Object obj) throws IllegalAccessException, InvocationTargetException {
             if (getter != null)
@@ -388,8 +390,8 @@ public class CacheJdbcPojoStore<K, V> extends CacheAbstractJdbcStore<K, V> {
          *
          * @param obj Object to set property value to.
          * @param val New property value to set.
-         * @throws IllegalAccessException
-         * @throws InvocationTargetException
+         * @throws IllegalAccessException If failed to set property value or failed access to property via reflection.
+         * @throws InvocationTargetException If failed access to property via reflection.
          */
         private void set(Object obj, Object val) throws IllegalAccessException, InvocationTargetException {
             if (setter != null)

http://git-wip-us.apache.org/repos/asf/ignite/blob/98914fef/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreAbstractSelfTest.java
index 41a6136..e8592d7 100644
--- a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreAbstractSelfTest.java
@@ -26,6 +26,7 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.sql.Types;
 import java.util.Random;
+import javax.cache.integration.CacheLoaderException;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.cache.store.jdbc.dialect.H2Dialect;
 import org.apache.ignite.cache.store.jdbc.model.Person;
@@ -77,7 +78,7 @@ public abstract class CacheJdbcPojoStoreAbstractSelfTest extends GridCommonAbstr
 
     /**
      * @return Connection to test in-memory H2 database.
-     * @throws SQLException
+     * @throws SQLException if failed to connect.
      */
     protected Connection getConnection() throws SQLException {
         return DriverManager.getConnection(DFLT_CONN_URL, "sa", "");
@@ -164,9 +165,9 @@ public abstract class CacheJdbcPojoStoreAbstractSelfTest extends GridCommonAbstr
 
         storeTypes[0].setValueType("org.apache.ignite.cache.store.jdbc.model.Organization" + (noValClasses ? "1" : ""));
         storeTypes[0].setValueFields(
-            new JdbcTypeField(Types.INTEGER, "ID", Integer.class, "id"),
-            new JdbcTypeField(Types.VARCHAR, "NAME", String.class, "name"),
-            new JdbcTypeField(Types.VARCHAR, "CITY", String.class, "city"));
+            new JdbcTypeField(Types.INTEGER, "Id", Integer.class, "id"),
+            new JdbcTypeField(Types.VARCHAR, "Name", String.class, "name"),
+            new JdbcTypeField(Types.VARCHAR, "City", String.class, "city"));
 
         storeTypes[1] = new JdbcType();
         storeTypes[1].setCacheName(CACHE_NAME);
@@ -273,7 +274,7 @@ public abstract class CacheJdbcPojoStoreAbstractSelfTest extends GridCommonAbstr
      * @param noKeyCls {@code True} if keys classes are not on class path.
      * @param noValCls {@code True} if values classes are not on class path.
      * @param trn {@code True} if cache should be started in transactional mode.
-     * @throws Exception
+     * @throws Exception If failed to start grid.
      */
     protected void startTestGrid(boolean builtin, boolean noKeyCls, boolean noValCls, boolean trn) throws Exception {
         builtinKeys = builtin;
@@ -287,7 +288,7 @@ public abstract class CacheJdbcPojoStoreAbstractSelfTest extends GridCommonAbstr
     /**
      * Check that data was loaded correctly.
      */
-    protected void checkCacheContent() {
+    protected void checkCacheLoad() {
         IgniteCache<Object, Object> c1 = grid().cache(CACHE_NAME);
 
         c1.loadCache(null);
@@ -296,12 +297,32 @@ public abstract class CacheJdbcPojoStoreAbstractSelfTest extends GridCommonAbstr
     }
 
     /**
+     * Check that data was loaded correctly.
+     */
+    protected void checkCacheLoadWithSql() {
+        IgniteCache<Object, Object> c1 = grid().cache(CACHE_NAME);
+
+        c1.loadCache(null, "org.apache.ignite.cache.store.jdbc.model.PersonKey", "select id, org_id, name, birthday from Person");
+
+        assertEquals(PERSON_CNT, c1.size());
+    }
+
+    /**
      * @throws Exception If failed.
      */
     public void testLoadCache() throws Exception {
         startTestGrid(false, false, false, false);
 
-        checkCacheContent();
+        checkCacheLoad();
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testLoadCacheWithSql() throws Exception {
+        startTestGrid(false, false, false, false);
+
+        checkCacheLoadWithSql();
     }
 
     /**
@@ -310,7 +331,16 @@ public abstract class CacheJdbcPojoStoreAbstractSelfTest extends GridCommonAbstr
     public void testLoadCacheTx() throws Exception {
         startTestGrid(false, false, false, true);
 
-        checkCacheContent();
+        checkCacheLoad();
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testLoadCacheWithSqlTx() throws Exception {
+        startTestGrid(false, false, false, true);
+
+        checkCacheLoadWithSql();
     }
 
     /**
@@ -319,7 +349,7 @@ public abstract class CacheJdbcPojoStoreAbstractSelfTest extends GridCommonAbstr
     public void testLoadCachePrimitiveKeys() throws Exception {
         startTestGrid(true, false, false, false);
 
-        checkCacheContent();
+        checkCacheLoad();
     }
 
     /**
@@ -328,7 +358,7 @@ public abstract class CacheJdbcPojoStoreAbstractSelfTest extends GridCommonAbstr
     public void testLoadCachePrimitiveKeysTx() throws Exception {
         startTestGrid(true, false, false, true);
 
-        checkCacheContent();
+        checkCacheLoad();
     }
 
     /**
@@ -431,4 +461,24 @@ public abstract class CacheJdbcPojoStoreAbstractSelfTest extends GridCommonAbstr
 
         checkPut();
     }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testLoadNotRegisteredType() throws Exception {
+        startTestGrid(false, false, false, false);
+
+        IgniteCache<Object, Object> c1 = grid().cache(CACHE_NAME);
+
+        try {
+            c1.loadCache(null, "PersonKeyWrong", "SELECT * FROM Person");
+        }
+        catch (CacheLoaderException e) {
+            String msg = e.getMessage();
+
+            assertTrue("Unexpected exception: " + msg,
+                ("Provided key type is not found in store or cache configuration " +
+                    "[cache=" + CACHE_NAME + ", key=PersonKeyWrong]").equals(msg));
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/98914fef/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreBinaryMarshallerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreBinaryMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreBinaryMarshallerSelfTest.java
index b825a24..f998027 100644
--- a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreBinaryMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreBinaryMarshallerSelfTest.java
@@ -35,7 +35,7 @@ public class CacheJdbcPojoStoreBinaryMarshallerSelfTest extends CacheJdbcPojoSto
     public void testLoadCacheNoKeyClasses() throws Exception {
         startTestGrid(false, true, false, false);
 
-        checkCacheContent();
+        checkCacheLoad();
     }
 
     /**
@@ -44,7 +44,7 @@ public class CacheJdbcPojoStoreBinaryMarshallerSelfTest extends CacheJdbcPojoSto
     public void testLoadCacheNoKeyClassesTx() throws Exception {
         startTestGrid(false, true, false, true);
 
-        checkCacheContent();
+        checkCacheLoad();
     }
 
     /**
@@ -53,7 +53,7 @@ public class CacheJdbcPojoStoreBinaryMarshallerSelfTest extends CacheJdbcPojoSto
     public void testLoadCacheNoValueClasses() throws Exception {
         startTestGrid(false, false, true, false);
 
-        checkCacheContent();
+        checkCacheLoad();
     }
 
     /**
@@ -62,7 +62,7 @@ public class CacheJdbcPojoStoreBinaryMarshallerSelfTest extends CacheJdbcPojoSto
     public void testLoadCacheNoValueClassesTx() throws Exception {
         startTestGrid(false, false, true, true);
 
-        checkCacheContent();
+        checkCacheLoad();
     }
 
     /**
@@ -71,7 +71,7 @@ public class CacheJdbcPojoStoreBinaryMarshallerSelfTest extends CacheJdbcPojoSto
     public void testLoadCacheNoKeyAndValueClasses() throws Exception {
         startTestGrid(false, true, true, false);
 
-        checkCacheContent();
+        checkCacheLoad();
     }
 
     /**
@@ -80,6 +80,6 @@ public class CacheJdbcPojoStoreBinaryMarshallerSelfTest extends CacheJdbcPojoSto
     public void testLoadCacheNoKeyAndValueClassesTx() throws Exception {
         startTestGrid(false, true, true, true);
 
-        checkCacheContent();
+        checkCacheLoad();
     }
 }


[09/12] ignite git commit: IGNITE-3890: IGFS: Simplified IgfsInputStream hierarchy (2).

Posted by ak...@apache.org.
IGNITE-3890: IGFS: Simplified IgfsInputStream hierarchy (2).


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

Branch: refs/heads/master
Commit: 409f043b3e94f51aa23341b7283233a572be6cd2
Parents: 16c5a71
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Wed Sep 14 11:01:33 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Sep 14 11:01:33 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsAsyncImpl.java |   5 -
 .../internal/processors/igfs/IgfsContext.java   |  27 ++++
 .../processors/igfs/IgfsDataManager.java        |  19 +--
 .../ignite/internal/processors/igfs/IgfsEx.java |   8 --
 .../internal/processors/igfs/IgfsImpl.java      | 143 ++-----------------
 .../processors/igfs/IgfsInputStreamImpl.java    | 103 ++++++-------
 .../processors/igfs/IgfsOutputStreamImpl.java   |   8 +-
 .../internal/processors/igfs/IgfsMock.java      |   7 -
 8 files changed, 100 insertions(+), 220 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/409f043b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java
index 743601e..106ef60 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java
@@ -157,11 +157,6 @@ public class IgfsAsyncImpl extends AsyncSupportAdapter<IgniteFileSystem> impleme
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsLocalMetrics localMetrics() {
-        return igfs.localMetrics();
-    }
-
-    /** {@inheritDoc} */
     @Override public long groupBlockSize() {
         return igfs.groupBlockSize();
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/409f043b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsContext.java
index a638bf3..3e01246 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsContext.java
@@ -54,6 +54,12 @@ public class IgfsContext {
     /** IGFS instance. */
     private final IgfsEx igfs;
 
+    /** Local metrics holder. */
+    private final IgfsLocalMetrics metrics = new IgfsLocalMetrics();
+
+    /** Local cluster node. */
+    private volatile ClusterNode locNode;
+
     /**
      * @param ctx Kernal context.
      * @param cfg IGFS configuration.
@@ -179,6 +185,27 @@ public class IgfsContext {
     }
 
     /**
+     * Get local metrics.
+     *
+     * @return Local metrics.
+     */
+    public IgfsLocalMetrics metrics() {
+        return metrics;
+    }
+
+    /**
+     * Get local node.
+     *
+     * @return Local node.
+     */
+    public ClusterNode localNode() {
+        if (locNode == null)
+            locNode = ctx.discovery().localNode();
+
+        return locNode;
+    }
+
+    /**
      * Adds manager to managers list.
      *
      * @param mgr Manager.

http://git-wip-us.apache.org/repos/asf/ignite/blob/409f043b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
index 5e2c6b2..d2183f9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
@@ -105,9 +105,6 @@ public class IgfsDataManager extends IgfsManager {
     /** */
     private CountDownLatch dataCacheStartLatch;
 
-    /** Local IGFS metrics. */
-    private IgfsLocalMetrics metrics;
-
     /** Group block size. */
     private long grpBlockSize;
 
@@ -201,8 +198,6 @@ public class IgfsDataManager extends IgfsManager {
 
         dataCache = (IgniteInternalCache)dataCachePrj;
 
-        metrics = igfsCtx.igfs().localMetrics();
-
         AffinityKeyMapper mapper = igfsCtx.kernalContext().cache()
             .internalCache(igfsCtx.configuration().getDataCacheName()).configuration().getAffinityMapper();
 
@@ -388,7 +383,7 @@ public class IgfsDataManager extends IgfsManager {
 
                                 putBlock(fileInfo.blockSize(), key, res);
 
-                                metrics.addReadBlocks(1, 1);
+                                igfsCtx.metrics().addReadBlocks(1, 1);
                             }
                             catch (IgniteCheckedException e) {
                                 rmtReadFut.onDone(e);
@@ -405,18 +400,18 @@ public class IgfsDataManager extends IgfsManager {
                             // Wait for existing future to finish and get it's result.
                             res = oldRmtReadFut.get();
 
-                            metrics.addReadBlocks(1, 0);
+                            igfsCtx.metrics().addReadBlocks(1, 0);
                         }
                     }
                     else
-                        metrics.addReadBlocks(1, 0);
+                        igfsCtx.metrics().addReadBlocks(1, 0);
 
                     return res;
                 }
             });
         }
         else
-            metrics.addReadBlocks(1, 0);
+            igfsCtx.metrics().addReadBlocks(1, 0);
 
         return fut;
     }
@@ -1308,7 +1303,7 @@ public class IgfsDataManager extends IgfsManager {
                         if (!nodeBlocks.isEmpty()) {
                             processBatch(id, node, nodeBlocks);
 
-                            metrics.addWriteBlocks(1, 0);
+                            igfsCtx.metrics().addWriteBlocks(1, 0);
                         }
 
                         return portion;
@@ -1350,7 +1345,7 @@ public class IgfsDataManager extends IgfsManager {
                 else
                     nodeBlocks.put(key, portion);
 
-                metrics.addWriteBlocks(writtenTotal, writtenSecondary);
+                igfsCtx.metrics().addWriteBlocks(writtenTotal, writtenSecondary);
 
                 written += portion.length;
             }
@@ -1359,7 +1354,7 @@ public class IgfsDataManager extends IgfsManager {
             if (!nodeBlocks.isEmpty()) {
                 processBatch(id, node, nodeBlocks);
 
-                metrics.addWriteBlocks(nodeBlocks.size(), 0);
+                igfsCtx.metrics().addWriteBlocks(nodeBlocks.size(), 0);
             }
 
             assert written == len;

http://git-wip-us.apache.org/repos/asf/ignite/blob/409f043b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java
index 05e157d..c869695 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.processors.igfs;
 
 import java.net.URI;
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteFileSystem;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystem;
@@ -75,13 +74,6 @@ public interface IgfsEx extends IgniteFileSystem {
     @Nullable public Boolean globalSampling();
 
     /**
-     * Get local metrics.
-     *
-     * @return Local metrics.
-     */
-    public IgfsLocalMetrics localMetrics();
-
-    /**
      * Gets group block size, i.e. block size multiplied by group size in affinity mapper.
      *
      * @return Group block size.

http://git-wip-us.apache.org/repos/asf/ignite/blob/409f043b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
index 2c1f0f3..45596a3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
@@ -24,7 +24,6 @@ import org.apache.ignite.IgniteFileSystem;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.cache.eviction.EvictionPolicy;
 import org.apache.ignite.cache.eviction.igfs.IgfsPerBlockLruEvictionPolicy;
-import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.compute.ComputeJob;
 import org.apache.ignite.compute.ComputeJobAdapter;
 import org.apache.ignite.compute.ComputeJobResult;
@@ -48,7 +47,6 @@ import org.apache.ignite.igfs.IgfsPathSummary;
 import org.apache.ignite.igfs.mapreduce.IgfsRecordResolver;
 import org.apache.ignite.igfs.mapreduce.IgfsTask;
 import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystem;
-import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystemPositionedReadable;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.IgniteKernal;
 import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
@@ -72,7 +70,6 @@ import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.T2;
 import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.internal.util.typedef.internal.LT;
-import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.apache.ignite.lang.IgniteFuture;
@@ -83,7 +80,6 @@ import org.apache.ignite.thread.IgniteThreadPoolExecutor;
 import org.jetbrains.annotations.Nullable;
 import org.jsr166.ConcurrentHashMap8;
 
-import java.io.IOException;
 import java.io.OutputStream;
 import java.net.URI;
 import java.util.ArrayList;
@@ -97,12 +93,10 @@ import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
 import static org.apache.ignite.events.EventType.EVT_IGFS_DIR_DELETED;
-import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_CLOSED_READ;
 import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_DELETED;
 import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_OPENED_READ;
 import static org.apache.ignite.events.EventType.EVT_IGFS_META_UPDATED;
@@ -142,9 +136,6 @@ public final class IgfsImpl implements IgfsEx {
     /** Event storage manager. */
     private GridEventStorageManager evts;
 
-    /** Local node. */
-    private ClusterNode locNode;
-
     /** Logger. */
     private IgniteLogger log;
 
@@ -285,16 +276,6 @@ public final class IgfsImpl implements IgfsEx {
             new LinkedBlockingQueue<Runnable>(), new IgfsThreadFactory(cfg.getName()), null) : null;
     }
 
-    /**
-     * @return Local node.
-     */
-    private ClusterNode localNode() {
-        if (locNode == null)
-            locNode = igfsCtx.kernalContext().discovery().localNode();
-
-        return locNode;
-    }
-
     /** {@inheritDoc} */
     @Override public void stop(boolean cancel) {
         busyLock.block();
@@ -500,12 +481,6 @@ public final class IgfsImpl implements IgfsEx {
             }
         });
     }
-
-    /** {@inheritDoc} */
-    @Override public IgfsLocalMetrics localMetrics() {
-        return metrics;
-    }
-
     /** {@inheritDoc} */
     @Override public long groupBlockSize() {
         return data.groupBlockSize();
@@ -632,7 +607,7 @@ public final class IgfsImpl implements IgfsEx {
 
                             if (info != null) {
                                 if (evts.isRecordable(EVT_IGFS_META_UPDATED))
-                                    evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_META_UPDATED, props));
+                                    evts.record(new IgfsEvent(path, igfsCtx.localNode(), EVT_IGFS_META_UPDATED, props));
 
                                 return new IgfsFileImpl(path, info, data.groupBlockSize());
                             }
@@ -979,8 +954,8 @@ public final class IgfsImpl implements IgfsEx {
 
                     IgfsSecondaryInputStreamDescriptor desc = meta.openDual(secondaryFs, path, bufSize0);
 
-                    IgfsEventAwareInputStream os = new IgfsEventAwareInputStream(igfsCtx, path, desc.info(),
-                        cfg.getPrefetchBlocks(), seqReadsBeforePrefetch, desc.reader(), metrics);
+                    IgfsInputStreamImpl os = new IgfsInputStreamImpl(igfsCtx, path, desc.info(),
+                        cfg.getPrefetchBlocks(), seqReadsBeforePrefetch, desc.reader());
 
                     IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_FILE_OPENED_READ);
 
@@ -996,8 +971,8 @@ public final class IgfsImpl implements IgfsEx {
                     throw new IgfsPathIsDirectoryException("Failed to open file (not a file): " + path);
 
                 // Input stream to read data from grid cache with separate blocks.
-                IgfsEventAwareInputStream os = new IgfsEventAwareInputStream(igfsCtx, path, info,
-                    cfg.getPrefetchBlocks(), seqReadsBeforePrefetch, null, metrics);
+                IgfsInputStreamImpl os = new IgfsInputStreamImpl(igfsCtx, path, info,
+                    cfg.getPrefetchBlocks(), seqReadsBeforePrefetch, null);
 
                 IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_FILE_OPENED_READ);
 
@@ -1266,6 +1241,8 @@ public final class IgfsImpl implements IgfsEx {
                     }
                 }
 
+                IgfsLocalMetrics metrics = igfsCtx.metrics();
+
                 return new IgfsMetricsAdapter(
                     igfsCtx.data().spaceSize(),
                     igfsCtx.data().maxSpaceSize(),
@@ -1288,7 +1265,7 @@ public final class IgfsImpl implements IgfsEx {
 
     /** {@inheritDoc} */
     @Override public void resetMetrics() {
-        metrics.reset();
+        igfsCtx.metrics().reset();
     }
 
     /** {@inheritDoc} */
@@ -1592,110 +1569,6 @@ public final class IgfsImpl implements IgfsEx {
         throw new IllegalStateException("Asynchronous mode is not enabled.");
     }
 
-    /** Detailed file descriptor. */
-    private static final class FileDescriptor {
-        /** Parent file ID. */
-        @Nullable
-        private final IgniteUuid parentId;
-
-        /** File name. */
-        private final String fileName;
-
-        /** File ID. */
-        private final IgniteUuid fileId;
-
-        /** File is plain data file or directory. */
-        private final boolean isFile;
-
-        /**
-         * Constructs detailed file descriptor.
-         *
-         * @param parentId Parent file ID.
-         * @param fileName File name.
-         * @param fileId File ID.
-         * @param isFile {@code True} if file.
-         */
-        private FileDescriptor(@Nullable IgniteUuid parentId, String fileName, IgniteUuid fileId, boolean isFile) {
-            assert fileName != null;
-
-            this.parentId = parentId;
-            this.fileName = fileName;
-
-            this.fileId = fileId;
-            this.isFile = isFile;
-        }
-
-        /** {@inheritDoc} */
-        @Override public int hashCode() {
-            int res = parentId != null ? parentId.hashCode() : 0;
-
-            res = 31 * res + fileName.hashCode();
-            res = 31 * res + fileId.hashCode();
-            res = 31 * res + (isFile ? 1231 : 1237);
-
-            return res;
-        }
-
-        /** {@inheritDoc} */
-        @Override public boolean equals(Object o) {
-            if (o == this)
-                return true;
-
-            if (o == null || getClass() != o.getClass())
-                return false;
-
-            FileDescriptor that = (FileDescriptor)o;
-
-            return fileId.equals(that.fileId) && isFile == that.isFile && fileName.equals(that.fileName) &&
-                (parentId == null ? that.parentId == null : parentId.equals(that.parentId));
-        }
-
-        /** {@inheritDoc} */
-        @Override public String toString() {
-            return S.toString(FileDescriptor.class, this);
-        }
-    }
-
-    /**
-     * IGFS input stream extension that fires events.
-     */
-    private class IgfsEventAwareInputStream extends IgfsInputStreamImpl {
-        /** Close guard. */
-        private final AtomicBoolean closeGuard = new AtomicBoolean(false);
-
-        /**
-         * Constructor.
-         *
-         * @param igfsCtx IGFS context.
-         * @param path Path to stored file.
-         * @param fileInfo File info.
-         * @param prefetchBlocks Prefetch blocks.
-         * @param seqReadsBeforePrefetch Amount of sequential reads before prefetch is triggered.
-         * @param secReader Optional secondary file system reader.
-         * @param metrics Metrics.
-         */
-        IgfsEventAwareInputStream(IgfsContext igfsCtx, IgfsPath path, IgfsEntryInfo fileInfo,
-            int prefetchBlocks, int seqReadsBeforePrefetch, @Nullable IgfsSecondaryFileSystemPositionedReadable secReader,
-            IgfsLocalMetrics metrics) {
-            super(igfsCtx, path, fileInfo, prefetchBlocks, seqReadsBeforePrefetch, secReader, metrics);
-
-            metrics.incrementFilesOpenedForRead();
-        }
-
-        /** {@inheritDoc} */
-        @SuppressWarnings("NonSynchronizedMethodOverridesSynchronizedMethod")
-        @Override public void close() throws IOException {
-            if (closeGuard.compareAndSet(false, true)) {
-                super.close();
-
-                metrics.decrementFilesOpenedForRead();
-
-                if (evts.isRecordable(EVT_IGFS_FILE_CLOSED_READ))
-                    evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_FILE_CLOSED_READ, bytes()));
-            }
-        }
-    }
-
     /**
      * Space calculation task.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/409f043b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
index f20a423..2f9f2fc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
@@ -19,12 +19,14 @@ package org.apache.ignite.internal.processors.igfs;
 
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.events.IgfsEvent;
 import org.apache.ignite.igfs.IgfsCorruptedFileException;
 import org.apache.ignite.igfs.IgfsInputStream;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.igfs.IgfsPathNotFoundException;
 import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystemPositionedReadable;
 import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
 import org.apache.ignite.internal.util.GridConcurrentHashSet;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -43,6 +45,8 @@ import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_CLOSED_READ;
+
 /**
  * Input stream to read data from grid cache with separate blocks.
  */
@@ -50,11 +54,8 @@ public class IgfsInputStreamImpl extends IgfsInputStream implements IgfsSecondar
     /** Empty chunks result. */
     private static final byte[][] EMPTY_CHUNKS = new byte[0][];
 
-    /** Meta manager. */
-    private final IgfsMetaManager meta;
-
-    /** Data manager. */
-    private final IgfsDataManager data;
+    /** IGFS context. */
+    private final IgfsContext igfsCtx;
 
     /** Secondary file system reader. */
     @SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
@@ -108,9 +109,6 @@ public class IgfsInputStreamImpl extends IgfsInputStream implements IgfsSecondar
     /** Time consumed on reading. */
     private long time;
 
-    /** Local IGFS metrics. */
-    private final IgfsLocalMetrics metrics;
-
     /**
      * Constructs file output stream.
      *
@@ -120,24 +118,19 @@ public class IgfsInputStreamImpl extends IgfsInputStream implements IgfsSecondar
      * @param prefetchBlocks Number of blocks to prefetch.
      * @param seqReadsBeforePrefetch Amount of sequential reads before prefetch is triggered.
      * @param secReader Optional secondary file system reader.
-     * @param metrics Local IGFS metrics.
      */
     IgfsInputStreamImpl(IgfsContext igfsCtx, IgfsPath path, IgfsEntryInfo fileInfo, int prefetchBlocks,
-        int seqReadsBeforePrefetch, @Nullable IgfsSecondaryFileSystemPositionedReadable secReader, IgfsLocalMetrics metrics) {
+        int seqReadsBeforePrefetch, @Nullable IgfsSecondaryFileSystemPositionedReadable secReader) {
         assert igfsCtx != null;
         assert path != null;
         assert fileInfo != null;
-        assert metrics != null;
 
+        this.igfsCtx = igfsCtx;
         this.path = path;
         this.fileInfo = fileInfo;
         this.prefetchBlocks = prefetchBlocks;
         this.seqReadsBeforePrefetch = seqReadsBeforePrefetch;
         this.secReader = secReader;
-        this.metrics = metrics;
-
-        meta = igfsCtx.meta();
-        data = igfsCtx.data();
 
         log = igfsCtx.kernalContext().log(IgfsInputStream.class);
 
@@ -146,6 +139,8 @@ public class IgfsInputStreamImpl extends IgfsInputStream implements IgfsSecondar
         locCache = new LinkedHashMap<>(maxLocCacheSize, 1.0f);
 
         pendingFuts = new GridConcurrentHashSet<>(prefetchBlocks > 0 ? prefetchBlocks : 1);
+
+        igfsCtx.metrics().incrementFilesOpenedForRead();
     }
 
     /**
@@ -295,46 +290,56 @@ public class IgfsInputStreamImpl extends IgfsInputStream implements IgfsSecondar
 
     /** {@inheritDoc} */
     @Override public synchronized void close() throws IOException {
-        try {
-            if (secReader != null) {
-                // Close secondary input stream.
-                secReader.close();
-
-                // Ensuring local cache futures completion.
-                for (IgniteInternalFuture<byte[]> fut : locCache.values()) {
-                    try {
-                        fut.get();
-                    }
-                    catch (IgniteCheckedException ignore) {
-                        // No-op.
+        if (!closed) {
+            try {
+                if (secReader != null) {
+                    // Close secondary input stream.
+                    secReader.close();
+
+                    // Ensuring local cache futures completion.
+                    for (IgniteInternalFuture<byte[]> fut : locCache.values()) {
+                        try {
+                            fut.get();
+                        }
+                        catch (IgniteCheckedException ignore) {
+                            // No-op.
+                        }
                     }
-                }
 
-                // Ensuring pending evicted futures completion.
-                while (!pendingFuts.isEmpty()) {
-                    pendingFutsLock.lock();
+                    // Ensuring pending evicted futures completion.
+                    while (!pendingFuts.isEmpty()) {
+                        pendingFutsLock.lock();
 
-                    try {
-                        pendingFutsCond.await(100, TimeUnit.MILLISECONDS);
-                    }
-                    catch (InterruptedException ignore) {
-                        // No-op.
-                    }
-                    finally {
-                        pendingFutsLock.unlock();
+                        try {
+                            pendingFutsCond.await(100, TimeUnit.MILLISECONDS);
+                        }
+                        catch (InterruptedException ignore) {
+                            // No-op.
+                        }
+                        finally {
+                            pendingFutsLock.unlock();
+                        }
                     }
                 }
             }
-        }
-        catch (Exception e) {
-            throw new IOException("File to close the file: " + path, e);
-        }
-        finally {
-            closed = true;
+            catch (Exception e) {
+                throw new IOException("File to close the file: " + path, e);
+            }
+            finally {
+                closed = true;
+
+                IgfsLocalMetrics metrics = igfsCtx.metrics();
+
+                metrics.addReadBytesTime(bytes, time);
+                metrics.decrementFilesOpenedForRead();
 
-            metrics.addReadBytesTime(bytes, time);
+                locCache.clear();
 
-            locCache.clear();
+                GridEventStorageManager evts = igfsCtx.kernalContext().event();
+
+                if (evts.isRecordable(EVT_IGFS_FILE_CLOSED_READ))
+                    evts.record(new IgfsEvent(path, igfsCtx.localNode(), EVT_IGFS_FILE_CLOSED_READ, bytes()));
+            }
         }
     }
 
@@ -408,7 +413,7 @@ public class IgfsInputStreamImpl extends IgfsInputStream implements IgfsSecondar
 
                 // This failure may be caused by file being fragmented.
                 if (fileInfo.fileMap() != null && !fileInfo.fileMap().ranges().isEmpty()) {
-                    IgfsEntryInfo newInfo = meta.info(fileInfo.id());
+                    IgfsEntryInfo newInfo = igfsCtx.meta().info(fileInfo.id());
 
                     // File was deleted.
                     if (newInfo == null)
@@ -540,7 +545,7 @@ public class IgfsInputStreamImpl extends IgfsInputStream implements IgfsSecondar
      */
     @Nullable protected IgniteInternalFuture<byte[]> dataBlock(IgfsEntryInfo fileInfo, long blockIdx)
         throws IgniteCheckedException {
-        return data.dataBlock(fileInfo, path, blockIdx, secReader);
+        return igfsCtx.data().dataBlock(fileInfo, path, blockIdx, secReader);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/409f043b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
index bbff93b..6dec0c1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
@@ -127,7 +127,7 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
             writeFut = igfsCtx.data().writeStart(fileInfo.id());
         }
 
-        igfsCtx.igfs().localMetrics().incrementFilesOpenedForWrite();
+        igfsCtx.metrics().incrementFilesOpenedForWrite();
     }
 
     /** {@inheritDoc} */
@@ -355,8 +355,8 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
             if (err != null)
                 throw err;
 
-            igfsCtx.igfs().localMetrics().addWrittenBytesTime(bytes, time);
-            igfsCtx.igfs().localMetrics().decrementFilesOpenedForWrite();
+            igfsCtx.metrics().addWrittenBytesTime(bytes, time);
+            igfsCtx.metrics().decrementFilesOpenedForWrite();
 
             GridEventStorageManager evts = igfsCtx.kernalContext().event();
 
@@ -396,7 +396,7 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
     /**
      * Send local buffer if at least something is stored there.
      *
-     * @throws IOException
+     * @throws IOException If failed.
      */
     private void sendBufferIfNotEmpty() throws IOException {
         if (buf != null && buf.position() > 0)

http://git-wip-us.apache.org/repos/asf/ignite/blob/409f043b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java
index 2b989c5..04c67dc 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java
@@ -117,13 +117,6 @@ public class IgfsMock implements IgfsEx {
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsLocalMetrics localMetrics() {
-        throwUnsupported();
-
-        return null;
-    }
-
-    /** {@inheritDoc} */
     @Override public long groupBlockSize() {
         throwUnsupported();
 


[02/12] ignite git commit: IGNITE-3868: ODBC: Fix for driver installation. This closes #1051.

Posted by ak...@apache.org.
IGNITE-3868: ODBC: Fix for driver installation. This closes #1051.


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

Branch: refs/heads/master
Commit: b595991fbc8eeef4bf7f8bf1e4e096c6c1f88488
Parents: b5121ad
Author: Igor Sapego <is...@gridgain.com>
Authored: Fri Sep 9 12:13:26 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Fri Sep 9 12:13:26 2016 +0300

----------------------------------------------------------------------
 .../cache/GridCacheAbstractFullApiSelfTest.java |  2 +-
 .../cpp/odbc/install/ignite-odbc-install.ini    |  1 +
 .../cpp/odbc/install/install_amd64.cmd          | 22 +++++++++++---------
 .../platforms/cpp/odbc/install/install_x86.cmd  | 11 +++++-----
 4 files changed, 20 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/b595991f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
index 3f4d812..a31c82e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java
@@ -296,7 +296,7 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
         for (int i = 0; i < gridCount(); i++) {
             Boolean clientMode = grid(i).configuration().isClientMode();
 
-            if (clientMode)
+            if (clientMode != null && clientMode) // Can be null in multi jvm tests.
                 continue;
 
             grid(0).services(grid(0).cluster()).deployNodeSingleton(SERVICE_NAME1, new DummyServiceImpl());

http://git-wip-us.apache.org/repos/asf/ignite/blob/b595991f/modules/platforms/cpp/odbc/install/ignite-odbc-install.ini
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/install/ignite-odbc-install.ini b/modules/platforms/cpp/odbc/install/ignite-odbc-install.ini
index 2de265a..f512fb4 100644
--- a/modules/platforms/cpp/odbc/install/ignite-odbc-install.ini
+++ b/modules/platforms/cpp/odbc/install/ignite-odbc-install.ini
@@ -1,5 +1,6 @@
 [Apache Ignite]
 Description=Apache Ignite
 Driver=/usr/local/lib/libignite-odbc.so
+Setup=/usr/local/lib/libignite-odbc.so
 DriverODBCVer=03.00
 FileUsage=0
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b595991f/modules/platforms/cpp/odbc/install/install_amd64.cmd
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/install/install_amd64.cmd b/modules/platforms/cpp/odbc/install/install_amd64.cmd
index 8a0391f..3b4b63f 100644
--- a/modules/platforms/cpp/odbc/install/install_amd64.cmd
+++ b/modules/platforms/cpp/odbc/install/install_amd64.cmd
@@ -7,17 +7,18 @@ if [%ODBC_AMD64%] == [] (
 	echo error: 64-bit driver is not specified. Call format: install_amd64 abs_path_to_64_bit_driver [abs_path_to_32_bit_driver]
 	pause
 	exit /b 1
-) else if exist "%ODBC_AMD64%" (
-	if exist "%ODBC_AMD64%\" (
+) else if exist %ODBC_AMD64% (
+	if exist %ODBC_AMD64%\ (
 		echo warning: The path you have specified seems to be a directory. Note that you have to specify path to driver file itself instead.
 	)
-	echo Installing 64-bit driver: "%ODBC_AMD64%"
+	echo Installing 64-bit driver: %ODBC_AMD64%
 	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v DriverODBCVer /t REG_SZ /d "03.80" /f
 	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v UsageCount /t REG_DWORD /d 00000001 /f
-	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v Driver /t REG_SZ /d "%ODBC_AMD64%" /f
+	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v Driver /t REG_SZ /d %ODBC_AMD64% /f
+	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v Setup /t REG_SZ /d %ODBC_AMD64% /f
 	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers" /v "Apache Ignite" /t REG_SZ /d "Installed" /f    
 ) else (
-	echo 64-bit driver can not be found: "%ODBC_AMD64%"
+	echo 64-bit driver can not be found: %ODBC_AMD64%
 	echo Call format: install_amd64 abs_path_to_64_bit_driver [abs_path_to_32_bit_driver]
 	pause
 	exit /b 1
@@ -25,16 +26,17 @@ if [%ODBC_AMD64%] == [] (
 
 if [%ODBC_X86%] == [] (
 	echo warning: 32-bit driver is not specified. If you want to install 32-bit driver please specify path to it as a second argument.
-) else if exist "%ODBC_X86%" (
-	if exist "%ODBC_X86%\" (
+) else if exist %ODBC_X86% (
+	if exist %ODBC_X86%\ (
 		echo warning: The path you have specified seems to be a directory. Note that you have to specify path to driver file itself instead.
 	)
-	echo Installing 32-bit driver: "%ODBC_X86%"
+	echo Installing 32-bit driver: %ODBC_X86%
 	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Apache Ignite" /v DriverODBCVer /t REG_SZ /d "03.80" /f
 	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Apache Ignite" /v UsageCount /t REG_DWORD /d 00000001 /f
-	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Apache Ignite" /v Driver /t REG_SZ /d "%ODBC_X86%" /f
+	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Apache Ignite" /v Driver /t REG_SZ /d %ODBC_X86% /f
+	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Apache Ignite" /v Setup /t REG_SZ /d %ODBC_X86% /f
 	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers" /v "Apache Ignite" /t REG_SZ /d "Installed" /f    
 ) else (
-	echo warning: 32-bit driver can not be found: "%ODBC_X86%"
+	echo warning: 32-bit driver can not be found: %ODBC_X86%
 )
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/b595991f/modules/platforms/cpp/odbc/install/install_x86.cmd
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/install/install_x86.cmd b/modules/platforms/cpp/odbc/install/install_x86.cmd
index 74eea0a..93ced4b 100644
--- a/modules/platforms/cpp/odbc/install/install_x86.cmd
+++ b/modules/platforms/cpp/odbc/install/install_x86.cmd
@@ -5,17 +5,18 @@ set ODBC=%1
 if [%ODBC%] == [] (
 	echo error: driver is not specified. Call format: install_x86 abs_path_to_driver.
 	pause
-) else if exist "%ODBC%" (
-	if exist "%ODBC%\" (
+) else if exist %ODBC% (
+	if exist %ODBC%\ (
 		echo warning: The path you have specified seems to be a directory. Note that you have to specify path to driver file itself instead.
 	)
-	echo Installing driver: "%ODBC%"
+	echo Installing driver: %ODBC%
 	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v DriverODBCVer /t REG_SZ /d "03.80" /f
 	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v UsageCount /t REG_DWORD /d 00000001 /f
-	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v Driver /t REG_SZ /d "%ODBC%" /f
+	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v Driver /t REG_SZ /d %ODBC% /f
+	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Apache Ignite" /v Setup /t REG_SZ /d %ODBC% /f
 	reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers" /v "Apache Ignite" /t REG_SZ /d "Installed" /f    
 ) else (
-	echo Driver can not be found: "%ODBC%"
+	echo Driver can not be found: %ODBC%
 	echo Call format: install_x86 abs_path_to_driver
 	pause
 )


[05/12] ignite git commit: IGNITE-3831: CPP: Added distributed joins query example. This closes #1035.

Posted by ak...@apache.org.
IGNITE-3831: CPP: Added distributed joins query example. This closes #1035.


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

Branch: refs/heads/master
Commit: fc6f8797ed5a22820a8cf0df0482dc09e2df6731
Parents: 35d6a56
Author: Igor Sapego <is...@gridgain.com>
Authored: Tue Sep 13 14:57:36 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Sep 13 14:57:36 2016 +0300

----------------------------------------------------------------------
 .../query-example/src/query_example.cpp         | 54 ++++++++++++++++++++
 1 file changed, 54 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/fc6f8797/modules/platforms/cpp/examples/query-example/src/query_example.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/examples/query-example/src/query_example.cpp b/modules/platforms/cpp/examples/query-example/src/query_example.cpp
index 1bbf21b..9bf3e52 100644
--- a/modules/platforms/cpp/examples/query-example/src/query_example.cpp
+++ b/modules/platforms/cpp/examples/query-example/src/query_example.cpp
@@ -43,6 +43,57 @@ const char* PERSON_CACHE = "Person";
 const char* PERSON_TYPE = "Person";
 
 /**
+ * Example for SQL queries based on all employees working for a specific
+ * organization (query uses distributed join).
+ */
+void DoSqlQueryWithDistributedJoin()
+{
+    typedef std::vector< CacheEntry<int64_t, Person> > ResVector;
+
+    Cache<int64_t, Person> cache = Ignition::Get().GetCache<int64_t, Person>(PERSON_CACHE);
+
+    // SQL clause query which joins on 2 types to select people for a specific organization.
+    std::string joinSql(
+        "from Person, \"Organization\".Organization as org "
+        "where Person.orgId = org._key "
+        "and lower(org.name) = lower(?)");
+
+    SqlQuery qry("Person", joinSql);
+
+    qry.AddArgument<std::string>("ApacheIgnite");
+
+    // Enable distributed joins for query.
+    qry.SetDistributedJoins(true);
+
+    // Execute queries for find employees for different organizations.
+    ResVector igniters;
+    cache.Query(qry).GetAll(igniters);
+
+    // Printing first result set.
+    std::cout << "Following people are 'ApacheIgnite' employees (distributed join): " << std::endl;
+
+    for (ResVector::const_iterator i = igniters.begin(); i != igniters.end(); ++i)
+        std::cout << i->GetKey() << " : " << i->GetValue().ToString() << std::endl;
+
+    std::cout << std::endl;
+
+    qry = SqlQuery("Person", joinSql);
+
+    qry.AddArgument<std::string>("Other");
+
+    ResVector others;
+    cache.Query(qry).GetAll(others);
+
+    // Printing second result set.
+    std::cout << "Following people are 'Other' employees (distributed join): " << std::endl;
+
+    for (ResVector::const_iterator i = others.begin(); i != others.end(); ++i)
+        std::cout << i->GetKey() << " : " << i->GetValue().ToString() << std::endl;
+
+    std::cout << std::endl;
+}
+
+/**
  * Example for SQL-based fields queries that return only required
  * fields instead of whole key-value pairs.
  *
@@ -374,6 +425,9 @@ int main()
         // Example for SQL-based querying employees for a given organization (includes SQL join).
         DoSqlQueryWithJoin();
 
+        // Example for SQL-based querying employees for a given organization (includes distributed SQL join).
+        DoSqlQueryWithDistributedJoin();
+
         // Example for TEXT-based querying for a given string in peoples resumes.
         DoTextQuery();
 


[08/12] ignite git commit: IGNITE-3890: IGFS: Simplified IgfsInputStream hierarchy.

Posted by ak...@apache.org.
IGNITE-3890: IGFS: Simplified IgfsInputStream hierarchy.


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

Branch: refs/heads/master
Commit: 16c5a715889322d31ed95a2a29206d3a909aa7b7
Parents: 43f65fe
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Sep 13 18:00:31 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Sep 13 18:00:31 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsAsyncImpl.java |  7 +--
 .../ignite/internal/processors/igfs/IgfsEx.java | 10 ----
 .../internal/processors/igfs/IgfsImpl.java      | 11 +++--
 .../processors/igfs/IgfsInputStreamAdapter.java | 51 --------------------
 .../processors/igfs/IgfsInputStreamImpl.java    | 17 +++++--
 .../processors/igfs/IgfsIpcHandler.java         |  7 +--
 .../igfs/IgfsSecondaryFileSystemImpl.java       |  2 +-
 .../processors/igfs/IgfsMetricsSelfTest.java    | 21 +++-----
 .../internal/processors/igfs/IgfsMock.java      |  8 +--
 .../hadoop/igfs/HadoopIgfsInProc.java           | 12 ++---
 .../hadoop/HadoopCommandLineTest.java           |  4 +-
 11 files changed, 47 insertions(+), 103 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java
index 07b070e..743601e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsAsyncImpl.java
@@ -25,6 +25,7 @@ import org.apache.ignite.IgniteFileSystem;
 import org.apache.ignite.configuration.FileSystemConfiguration;
 import org.apache.ignite.igfs.IgfsBlockLocation;
 import org.apache.ignite.igfs.IgfsFile;
+import org.apache.ignite.igfs.IgfsInputStream;
 import org.apache.ignite.igfs.IgfsMetrics;
 import org.apache.ignite.igfs.IgfsMode;
 import org.apache.ignite.igfs.IgfsOutputStream;
@@ -125,18 +126,18 @@ public class IgfsAsyncImpl extends AsyncSupportAdapter<IgniteFileSystem> impleme
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path, int bufSize,
+    @Override public IgfsInputStream open(IgfsPath path, int bufSize,
         int seqReadsBeforePrefetch) {
         return igfs.open(path, bufSize, seqReadsBeforePrefetch);
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path) {
+    @Override public IgfsInputStream open(IgfsPath path) {
         return igfs.open(path);
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path, int bufSize) {
+    @Override public IgfsInputStream open(IgfsPath path, int bufSize) {
         return igfs.open(path, bufSize);
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java
index 9760f43..05e157d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEx.java
@@ -49,16 +49,6 @@ public interface IgfsEx extends IgniteFileSystem {
      */
     public IgfsPaths proxyPaths();
 
-    /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path, int bufSize, int seqReadsBeforePrefetch)
-        throws IgniteException;
-
-    /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path) throws IgniteException;
-
-    /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path, int bufSize) throws IgniteException;
-
     /**
      * Gets global space counters.
      *

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
index 2720f24..2c1f0f3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
@@ -36,6 +36,7 @@ import org.apache.ignite.events.IgfsEvent;
 import org.apache.ignite.igfs.IgfsBlockLocation;
 import org.apache.ignite.igfs.IgfsException;
 import org.apache.ignite.igfs.IgfsFile;
+import org.apache.ignite.igfs.IgfsInputStream;
 import org.apache.ignite.igfs.IgfsInvalidPathException;
 import org.apache.ignite.igfs.IgfsMetrics;
 import org.apache.ignite.igfs.IgfsMode;
@@ -948,24 +949,24 @@ public final class IgfsImpl implements IgfsEx {
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path) {
+    @Override public IgfsInputStream open(IgfsPath path) {
         return open(path, cfg.getStreamBufferSize(), cfg.getSequentialReadsBeforePrefetch());
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path, int bufSize) {
+    @Override public IgfsInputStream open(IgfsPath path, int bufSize) {
         return open(path, bufSize, cfg.getSequentialReadsBeforePrefetch());
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(final IgfsPath path, final int bufSize,
+    @Override public IgfsInputStream open(final IgfsPath path, final int bufSize,
         final int seqReadsBeforePrefetch) {
         A.notNull(path, "path");
         A.ensure(bufSize >= 0, "bufSize >= 0");
         A.ensure(seqReadsBeforePrefetch >= 0, "seqReadsBeforePrefetch >= 0");
 
-        return safeOp(new Callable<IgfsInputStreamAdapter>() {
-            @Override public IgfsInputStreamAdapter call() throws Exception {
+        return safeOp(new Callable<IgfsInputStream>() {
+            @Override public IgfsInputStream call() throws Exception {
                 if (log.isDebugEnabled())
                     log.debug("Open file for reading [path=" + path + ", bufSize=" + bufSize + ']');
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamAdapter.java
deleted file mode 100644
index 07ab051..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamAdapter.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.igfs;
-
-import org.apache.ignite.igfs.IgfsInputStream;
-import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystemPositionedReadable;
-
-import java.io.IOException;
-
-/**
- * Implementation adapter providing necessary methods.
- */
-public abstract class IgfsInputStreamAdapter extends IgfsInputStream
-    implements IgfsSecondaryFileSystemPositionedReadable {
-    /** {@inheritDoc} */
-    @Override public long length() {
-        return fileInfo().length();
-    }
-
-    /**
-     * Gets file info for opened file.
-     *
-     * @return File info.
-     */
-    public abstract IgfsEntryInfo fileInfo();
-
-    /**
-     * Reads bytes from given position.
-     *
-     * @param pos Position to read from.
-     * @param len Number of bytes to read.
-     * @return Array of chunks with respect to chunk file representation.
-     * @throws IOException If read failed.
-     */
-    public abstract byte[][] readChunks(long pos, int len) throws IOException;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
index ca2f9f7..f20a423 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
@@ -46,7 +46,7 @@ import java.util.concurrent.locks.ReentrantLock;
 /**
  * Input stream to read data from grid cache with separate blocks.
  */
-public class IgfsInputStreamImpl extends IgfsInputStreamAdapter {
+public class IgfsInputStreamImpl extends IgfsInputStream implements IgfsSecondaryFileSystemPositionedReadable {
     /** Empty chunks result. */
     private static final byte[][] EMPTY_CHUNKS = new byte[0][];
 
@@ -158,8 +158,8 @@ public class IgfsInputStreamImpl extends IgfsInputStreamAdapter {
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsEntryInfo fileInfo() {
-        return fileInfo;
+    @Override public long length() {
+        return fileInfo.length();
     }
 
     /** {@inheritDoc} */
@@ -234,9 +234,16 @@ public class IgfsInputStreamImpl extends IgfsInputStreamAdapter {
         return readFromStore(pos, buf, off, len);
     }
 
-    /** {@inheritDoc} */
+    /**
+     * Reads bytes from given position.
+     *
+     * @param pos Position to read from.
+     * @param len Number of bytes to read.
+     * @return Array of chunks with respect to chunk file representation.
+     * @throws IOException If read failed.
+     */
     @SuppressWarnings("IfMayBeConditional")
-    @Override public synchronized byte[][] readChunks(long pos, int len) throws IOException {
+    public synchronized byte[][] readChunks(long pos, int len) throws IOException {
         // Readable bytes in the file, starting from the specified position.
         long readable = fileInfo.length() - pos;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java
index a888aff..6047604 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.igfs;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.igfs.IgfsInputStream;
 import org.apache.ignite.igfs.IgfsIpcEndpointConfiguration;
 import org.apache.ignite.igfs.IgfsOutOfSpaceException;
 import org.apache.ignite.igfs.IgfsOutputStream;
@@ -381,7 +382,7 @@ class IgfsIpcHandler implements IgfsServerHandler {
                             break;
 
                         case OPEN_READ: {
-                            IgfsInputStreamAdapter igfsIn = !req.flag() ? igfs.open(req.path(), bufSize) :
+                            IgfsInputStream igfsIn = !req.flag() ? igfs.open(req.path(), bufSize) :
                                 igfs.open(req.path(), bufSize, req.sequentialReadsBeforePrefetch());
 
                             long streamId = registerResource(ses, igfsIn);
@@ -390,7 +391,7 @@ class IgfsIpcHandler implements IgfsServerHandler {
                                 log.debug("Opened IGFS input stream for file read [igfsName=" + igfs.name() + ", path=" +
                                     req.path() + ", streamId=" + streamId + ", ses=" + ses + ']');
 
-                            res.response(new IgfsInputStreamDescriptor(streamId, igfsIn.fileInfo().length()));
+                            res.response(new IgfsInputStreamDescriptor(streamId, igfsIn.length()));
 
                             break;
                         }
@@ -514,7 +515,7 @@ class IgfsIpcHandler implements IgfsServerHandler {
                 long pos = req.position();
                 int size = req.length();
 
-                IgfsInputStreamAdapter igfsIn = (IgfsInputStreamAdapter)resource(ses, rsrcId);
+                IgfsInputStreamImpl igfsIn = (IgfsInputStreamImpl)resource(ses, rsrcId);
 
                 if (igfsIn == null)
                     throw new IgniteCheckedException("Input stream not found (already closed?): " + rsrcId);

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryFileSystemImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryFileSystemImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryFileSystemImpl.java
index 453682c..526e60d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryFileSystemImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryFileSystemImpl.java
@@ -86,7 +86,7 @@ class IgfsSecondaryFileSystemImpl implements IgfsSecondaryFileSystemV2 {
     /** {@inheritDoc} */
     @Override public IgfsSecondaryFileSystemPositionedReadable open(IgfsPath path, int bufSize)
         throws IgniteException {
-        return igfs.open(path, bufSize);
+        return (IgfsSecondaryFileSystemPositionedReadable)igfs.open(path, bufSize);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetricsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetricsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetricsSelfTest.java
index 38cfc00..8d742fb 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetricsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetricsSelfTest.java
@@ -116,6 +116,7 @@ public class IgfsMetricsSelfTest extends IgfsCommonAbstractTest {
      * @return Configuration.
      * @throws Exception If failed.
      */
+    @SuppressWarnings("unchecked")
     private IgniteConfiguration primaryConfiguration(int idx) throws Exception {
         FileSystemConfiguration igfsCfg = new FileSystemConfiguration();
 
@@ -172,6 +173,7 @@ public class IgfsMetricsSelfTest extends IgfsCommonAbstractTest {
      *
      * @throws Exception If failed.
      */
+    @SuppressWarnings("unchecked")
     private void startSecondary() throws Exception {
         FileSystemConfiguration igfsCfg = new FileSystemConfiguration();
 
@@ -384,6 +386,7 @@ public class IgfsMetricsSelfTest extends IgfsCommonAbstractTest {
      *
      * @throws Exception If failed.
      */
+    @SuppressWarnings({"ResultOfMethodCallIgnored", "ConstantConditions"})
     public void testBlockMetrics() throws Exception {
         IgfsEx igfs = (IgfsEx)igfsPrimary[0];
 
@@ -424,7 +427,7 @@ public class IgfsMetricsSelfTest extends IgfsCommonAbstractTest {
         checkBlockMetrics(initMetrics, igfs.metrics(), 0, 0, 0, 3, 0, blockSize * 3);
 
         // Read data from the first file.
-        IgfsInputStreamAdapter is = igfs.open(file1);
+        IgfsInputStream is = igfs.open(file1);
         is.readFully(0, new byte[blockSize * 2]);
         is.close();
 
@@ -432,7 +435,7 @@ public class IgfsMetricsSelfTest extends IgfsCommonAbstractTest {
 
         // Read data from the second file with hits.
         is = igfs.open(file2);
-        is.readChunks(0, blockSize);
+        is.read(new byte[blockSize]);
         is.close();
 
         checkBlockMetrics(initMetrics, igfs.metrics(), 3, 0, blockSize * 3, 3, 0, blockSize * 3);
@@ -449,7 +452,7 @@ public class IgfsMetricsSelfTest extends IgfsCommonAbstractTest {
 
         // Read remote file.
         is = igfs.open(fileRemote);
-        is.readChunks(0, rmtBlockSize);
+        is.read(new byte[rmtBlockSize]);
         is.close();
 
         checkBlockMetrics(initMetrics, igfs.metrics(), 4, 1, blockSize * 3 + rmtBlockSize, 3, 0, blockSize * 3);
@@ -459,7 +462,7 @@ public class IgfsMetricsSelfTest extends IgfsCommonAbstractTest {
 
         // Read remote file again.
         is = igfs.open(fileRemote);
-        is.readChunks(0, rmtBlockSize);
+        is.read(new byte[rmtBlockSize]);
         is.close();
 
         checkBlockMetrics(initMetrics, igfs.metrics(), 5, 1, blockSize * 3 + rmtBlockSize * 2, 3, 0, blockSize * 3);
@@ -495,16 +498,6 @@ public class IgfsMetricsSelfTest extends IgfsCommonAbstractTest {
         checkBlockMetrics(initMetrics, igfs.metrics(), 5, 1, blockSize * 3 + rmtBlockSize * 2, 5, 1,
             blockSize * 7 / 2 + rmtBlockSize);
 
-        // Now read partial block.
-        // Read remote file again.
-        is = igfs.open(file1);
-        is.seek(blockSize * 2);
-        is.readChunks(0, blockSize / 2);
-        is.close();
-
-        checkBlockMetrics(initMetrics, igfs.metrics(), 6, 1, blockSize * 7 / 2 + rmtBlockSize * 2, 5, 1,
-            blockSize * 7 / 2 + rmtBlockSize);
-
         igfs.resetMetrics();
 
         metrics = igfs.metrics();

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java
index 0138907..2b989c5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMock.java
@@ -23,6 +23,7 @@ import org.apache.ignite.IgniteFileSystem;
 import org.apache.ignite.configuration.FileSystemConfiguration;
 import org.apache.ignite.igfs.IgfsBlockLocation;
 import org.apache.ignite.igfs.IgfsFile;
+import org.apache.ignite.igfs.IgfsInputStream;
 import org.apache.ignite.igfs.IgfsMetrics;
 import org.apache.ignite.igfs.IgfsMode;
 import org.apache.ignite.igfs.IgfsOutputStream;
@@ -75,21 +76,22 @@ public class IgfsMock implements IgfsEx {
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path, int bufSize, int seqReadsBeforePrefetch) throws IgniteException {
+    @Override public IgfsInputStream open(IgfsPath path, int bufSize, int seqReadsBeforePrefetch)
+        throws IgniteException {
         throwUnsupported();
 
         return null;
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path) throws IgniteException {
+    @Override public IgfsInputStream open(IgfsPath path) throws IgniteException {
         throwUnsupported();
 
         return null;
     }
 
     /** {@inheritDoc} */
-    @Override public IgfsInputStreamAdapter open(IgfsPath path, int bufSize) throws IgniteException {
+    @Override public IgfsInputStream open(IgfsPath path, int bufSize) throws IgniteException {
         throwUnsupported();
 
         return null;

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsInProc.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsInProc.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsInProc.java
index f426243..3220538 100644
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsInProc.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsInProc.java
@@ -28,6 +28,7 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.igfs.IgfsBlockLocation;
 import org.apache.ignite.igfs.IgfsFile;
+import org.apache.ignite.igfs.IgfsInputStream;
 import org.apache.ignite.igfs.IgfsOutputStream;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.igfs.IgfsPathSummary;
@@ -35,7 +36,6 @@ import org.apache.ignite.igfs.IgfsUserContext;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.processors.igfs.IgfsEx;
 import org.apache.ignite.internal.processors.igfs.IgfsHandshakeResponse;
-import org.apache.ignite.internal.processors.igfs.IgfsInputStreamAdapter;
 import org.apache.ignite.internal.processors.igfs.IgfsStatus;
 import org.apache.ignite.internal.processors.igfs.IgfsUtils;
 import org.apache.ignite.internal.util.future.GridFinishedFuture;
@@ -316,9 +316,9 @@ public class HadoopIgfsInProc implements HadoopIgfsEx {
         try {
             return IgfsUserContext.doAs(user, new IgniteOutClosure<HadoopIgfsStreamDelegate>() {
                 @Override public HadoopIgfsStreamDelegate apply() {
-                    IgfsInputStreamAdapter stream = igfs.open(path, bufSize);
+                    IgfsInputStream stream = igfs.open(path, bufSize);
 
-                    return new HadoopIgfsStreamDelegate(HadoopIgfsInProc.this, stream, stream.fileInfo().length());
+                    return new HadoopIgfsStreamDelegate(HadoopIgfsInProc.this, stream, stream.length());
                 }
             });
         }
@@ -336,9 +336,9 @@ public class HadoopIgfsInProc implements HadoopIgfsEx {
         try {
             return IgfsUserContext.doAs(user, new IgniteOutClosure<HadoopIgfsStreamDelegate>() {
                 @Override public HadoopIgfsStreamDelegate apply() {
-                    IgfsInputStreamAdapter stream = igfs.open(path, bufSize, seqReadsBeforePrefetch);
+                    IgfsInputStream stream = igfs.open(path, bufSize, seqReadsBeforePrefetch);
 
-                    return new HadoopIgfsStreamDelegate(HadoopIgfsInProc.this, stream, stream.fileInfo().length());
+                    return new HadoopIgfsStreamDelegate(HadoopIgfsInProc.this, stream, stream.length());
                 }
             });
         }
@@ -394,7 +394,7 @@ public class HadoopIgfsInProc implements HadoopIgfsEx {
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<byte[]> readData(HadoopIgfsStreamDelegate delegate, long pos, int len,
         @Nullable byte[] outBuf, int outOff, int outLen) {
-        IgfsInputStreamAdapter stream = delegate.target();
+        IgfsInputStream stream = delegate.target();
 
         try {
             byte[] res = null;

http://git-wip-us.apache.org/repos/asf/ignite/blob/16c5a715/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopCommandLineTest.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopCommandLineTest.java b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopCommandLineTest.java
index 8dc2717..7ee318a 100644
--- a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopCommandLineTest.java
+++ b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopCommandLineTest.java
@@ -34,11 +34,11 @@ import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.Ignition;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.hadoop.fs.IgniteHadoopFileSystemCounterWriter;
+import org.apache.ignite.igfs.IgfsInputStream;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.internal.IgnitionEx;
 import org.apache.ignite.internal.processors.hadoop.jobtracker.HadoopJobTracker;
 import org.apache.ignite.internal.processors.igfs.IgfsEx;
-import org.apache.ignite.internal.processors.igfs.IgfsInputStreamAdapter;
 import org.apache.ignite.internal.processors.resource.GridSpringResourceContext;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -398,7 +398,7 @@ public class HadoopCommandLineTest extends GridCommonAbstractTest {
             "location '/result' as " + qry
         ));
 
-        IgfsInputStreamAdapter in = igfs.open(new IgfsPath("/result/000000_0"));
+        IgfsInputStream in = igfs.open(new IgfsPath("/result/000000_0"));
 
         byte[] buf = new byte[(int) in.length()];
 


[04/12] ignite git commit: Merge branch 'ignite-1.6.7' into ignite-1.6.8

Posted by ak...@apache.org.
Merge branch 'ignite-1.6.7' into ignite-1.6.8


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

Branch: refs/heads/master
Commit: 499700c2b48d062b768327f8d35c0349648a1eec
Parents: 6c3993d 4ba9c8e
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Sep 13 12:38:51 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Sep 13 12:38:51 2016 +0300

----------------------------------------------------------------------
 .../cpp/odbc/install/ignite-odbc-install.ini    |  1 +
 .../cpp/odbc/install/install_amd64.cmd          | 22 +++++++++++---------
 .../platforms/cpp/odbc/install/install_x86.cmd  | 11 +++++-----
 3 files changed, 19 insertions(+), 15 deletions(-)
----------------------------------------------------------------------



[03/12] ignite git commit: Merge remote-tracking branch 'upstream/ignite-1.6.7' into ignite-1.6.7

Posted by ak...@apache.org.
Merge remote-tracking branch 'upstream/ignite-1.6.7' into ignite-1.6.7


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

Branch: refs/heads/master
Commit: 4ba9c8e62072d0933f97ebc4335c7e6264657ab0
Parents: b595991 121b89b
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Fri Sep 9 12:13:44 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Fri Sep 9 12:13:44 2016 +0300

----------------------------------------------------------------------

----------------------------------------------------------------------



[12/12] ignite git commit: Merge branch ignite-1.7.2 to master.

Posted by ak...@apache.org.
Merge branch ignite-1.7.2 to master.


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

Branch: refs/heads/master
Commit: cfdae56db683a709924719e878ebadfe1e984b4a
Parents: 563c276 f30b79c
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Wed Sep 14 16:18:49 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Wed Sep 14 16:18:49 2016 +0700

----------------------------------------------------------------------
 .../store/jdbc/CacheAbstractJdbcStore.java      |  71 ++++--
 .../cache/store/jdbc/CacheJdbcPojoStore.java    |  21 +-
 .../java/org/apache/ignite/igfs/IgfsPath.java   |  14 +-
 .../org/apache/ignite/igfs/IgfsPathSummary.java |   3 +-
 .../local/LocalIgfsSecondaryFileSystem.java     |   2 +-
 .../igfs/common/IgfsControlResponse.java        |  19 +-
 .../internal/igfs/common/IgfsMarshaller.java    |  14 +-
 .../internal/processors/igfs/IgfsAsyncImpl.java |  12 +-
 .../internal/processors/igfs/IgfsContext.java   |  27 +++
 .../processors/igfs/IgfsDataManager.java        |  19 +-
 .../ignite/internal/processors/igfs/IgfsEx.java |  18 --
 .../internal/processors/igfs/IgfsFileImpl.java  |   5 +-
 .../internal/processors/igfs/IgfsImpl.java      | 227 ++++---------------
 .../processors/igfs/IgfsInputStreamAdapter.java |  51 -----
 .../processors/igfs/IgfsInputStreamImpl.java    | 120 +++++-----
 .../processors/igfs/IgfsIpcHandler.java         |   7 +-
 .../processors/igfs/IgfsModeResolver.java       |   3 +-
 .../processors/igfs/IgfsOutputStreamImpl.java   |   8 +-
 .../internal/processors/igfs/IgfsPathIds.java   |   2 +-
 .../internal/processors/igfs/IgfsPaths.java     |   5 +-
 .../igfs/IgfsSecondaryFileSystemImpl.java       |   2 +-
 .../internal/processors/igfs/IgfsUtils.java     |  21 +-
 .../CacheJdbcPojoStoreAbstractSelfTest.java     |  70 +++++-
 ...heJdbcPojoStoreBinaryMarshallerSelfTest.java |  12 +-
 .../apache/ignite/igfs/IgfsPathSelfTest.java    |   6 -
 .../igfs/IgfsAbstractBaseSelfTest.java          |   2 +-
 .../processors/igfs/IgfsAbstractSelfTest.java   |  12 +-
 .../igfs/IgfsDataManagerSelfTest.java           |   6 +-
 .../igfs/IgfsDualAbstractSelfTest.java          |  28 ++-
 .../igfs/IgfsMetaManagerSelfTest.java           |   4 +-
 .../processors/igfs/IgfsMetricsSelfTest.java    |  21 +-
 .../internal/processors/igfs/IgfsMock.java      |  15 +-
 .../igfs/IgfsModeResolverSelfTest.java          |   4 +-
 .../processors/igfs/IgfsStreamsSelfTest.java    |   4 +-
 .../hadoop/igfs/HadoopIgfsInProc.java           |  12 +-
 .../hadoop/HadoopCommandLineTest.java           |   4 +-
 .../query-example/src/query_example.cpp         |  54 +++++
 .../cpp/odbc/install/ignite-odbc-install.ini    |   1 +
 .../cpp/odbc/install/install_amd64.cmd          |  22 +-
 .../platforms/cpp/odbc/install/install_x86.cmd  |  11 +-
 40 files changed, 460 insertions(+), 499 deletions(-)
----------------------------------------------------------------------



[11/12] ignite git commit: Merge branches ignite-1.6.8 to ignite-1.7.2.

Posted by ak...@apache.org.
Merge branches ignite-1.6.8 to ignite-1.7.2.


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

Branch: refs/heads/master
Commit: f30b79c842cb56c0c12c793852fc630731d0698f
Parents: fc6f879 98914fe
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Wed Sep 14 16:15:14 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Wed Sep 14 16:15:14 2016 +0700

----------------------------------------------------------------------
 .../store/jdbc/CacheAbstractJdbcStore.java      |  71 ++++--
 .../cache/store/jdbc/CacheJdbcPojoStore.java    |  21 +-
 .../java/org/apache/ignite/igfs/IgfsPath.java   |  14 +-
 .../org/apache/ignite/igfs/IgfsPathSummary.java |   3 +-
 .../local/LocalIgfsSecondaryFileSystem.java     |   2 +-
 .../igfs/common/IgfsControlResponse.java        |  19 +-
 .../internal/igfs/common/IgfsMarshaller.java    |  14 +-
 .../internal/processors/igfs/IgfsAsyncImpl.java |  12 +-
 .../internal/processors/igfs/IgfsContext.java   |  27 +++
 .../processors/igfs/IgfsDataManager.java        |  19 +-
 .../ignite/internal/processors/igfs/IgfsEx.java |  18 --
 .../internal/processors/igfs/IgfsFileImpl.java  |   5 +-
 .../internal/processors/igfs/IgfsImpl.java      | 227 ++++---------------
 .../processors/igfs/IgfsInputStreamAdapter.java |  51 -----
 .../processors/igfs/IgfsInputStreamImpl.java    | 120 +++++-----
 .../processors/igfs/IgfsIpcHandler.java         |   7 +-
 .../processors/igfs/IgfsModeResolver.java       |   3 +-
 .../processors/igfs/IgfsOutputStreamImpl.java   |   8 +-
 .../internal/processors/igfs/IgfsPathIds.java   |   2 +-
 .../internal/processors/igfs/IgfsPaths.java     |   5 +-
 .../igfs/IgfsSecondaryFileSystemImpl.java       |   2 +-
 .../internal/processors/igfs/IgfsUtils.java     |  21 +-
 .../CacheJdbcPojoStoreAbstractSelfTest.java     |  70 +++++-
 ...heJdbcPojoStoreBinaryMarshallerSelfTest.java |  12 +-
 .../apache/ignite/igfs/IgfsPathSelfTest.java    |   6 -
 .../igfs/IgfsAbstractBaseSelfTest.java          |   2 +-
 .../processors/igfs/IgfsAbstractSelfTest.java   |  12 +-
 .../igfs/IgfsDataManagerSelfTest.java           |   6 +-
 .../igfs/IgfsDualAbstractSelfTest.java          |  28 ++-
 .../igfs/IgfsMetaManagerSelfTest.java           |   4 +-
 .../processors/igfs/IgfsMetricsSelfTest.java    |  21 +-
 .../internal/processors/igfs/IgfsMock.java      |  15 +-
 .../igfs/IgfsModeResolverSelfTest.java          |   4 +-
 .../processors/igfs/IgfsStreamsSelfTest.java    |   4 +-
 .../hadoop/igfs/HadoopIgfsInProc.java           |  12 +-
 .../hadoop/HadoopCommandLineTest.java           |   4 +-
 .../cpp/odbc/install/ignite-odbc-install.ini    |   1 +
 .../cpp/odbc/install/install_amd64.cmd          |  22 +-
 .../platforms/cpp/odbc/install/install_x86.cmd  |  11 +-
 39 files changed, 406 insertions(+), 499 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f30b79c8/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/ignite/blob/f30b79c8/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java
index ef4e246,798b84a..b19fdea
--- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java
@@@ -150,9 -150,10 +150,10 @@@ public class CacheJdbcPojoStore<K, V> e
          ResultSet rs) throws CacheLoaderException {
          try {
              JdbcTypeField field = fields[0];
-             int colIdx = loadColIdxs.get(field.getDatabaseFieldName());
+ 
+             Integer colIdx = columnIndex(loadColIdxs, field.getDatabaseFieldName());
  
 -            return getColumnValue(rs, colIdx, field.getJavaFieldType());
 +            return transformer.getColumnValue(rs, colIdx, field.getJavaFieldType());
          }
          catch (SQLException e) {
              throw new CacheLoaderException("Failed to read object of class: " + typeName, e);
@@@ -196,12 -197,12 +197,12 @@@
                      throw new IllegalStateException("Failed to find property in POJO class [type=" + typeName +
                          ", prop=" + fldJavaName + "]");
  
-                 String fldDbName = fld.getDatabaseFieldName();
+                 String dbName = fld.getDatabaseFieldName();
  
-                 Integer colIdx = loadColIdxs.get(fldDbName);
+                 Integer colIdx = columnIndex(loadColIdxs, dbName);
  
                  try {
 -                    Object colVal = getColumnValue(rs, colIdx, fld.getJavaFieldType());
 +                    Object colVal = transformer.getColumnValue(rs, colIdx, fld.getJavaFieldType());
  
                      try {
                          prop.set(obj, colVal);
@@@ -245,9 -246,9 +246,9 @@@
              Collection<Object> hashValues = calcHash ? new ArrayList<>(hashFields.size()) : null;
  
              for (JdbcTypeField field : fields) {
-                 Integer colIdx = loadColIdxs.get(field.getDatabaseFieldName());
+                 Integer colIdx = columnIndex(loadColIdxs, field.getDatabaseFieldName());
  
 -                Object colVal = getColumnValue(rs, colIdx, field.getJavaFieldType());
 +                Object colVal = transformer.getColumnValue(rs, colIdx, field.getJavaFieldType());
  
                  builder.setField(field.getJavaFieldName(), colVal, (Class<Object>)field.getJavaFieldType());
  


[07/12] ignite git commit: IGNITE-3613 IGFS: Fixed IgfsImpl.size() to take secondary fie system in count. This closes #1023.

Posted by ak...@apache.org.
IGNITE-3613 IGFS: Fixed IgfsImpl.size() to take secondary fie system in count. This closes #1023.


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

Branch: refs/heads/master
Commit: 43f65fe91d85ba8f3c16e13bdf5ea815d3a48d71
Parents: 0852bae
Author: tledkov-gridgain <tl...@gridgain.com>
Authored: Tue Sep 13 17:30:47 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Sep 13 17:30:47 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsImpl.java      | 69 ++++++++++----------
 .../igfs/IgfsDualAbstractSelfTest.java          | 14 ++++
 2 files changed, 47 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/43f65fe9/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
index 273e67d..2720f24 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
@@ -598,16 +598,7 @@ public final class IgfsImpl implements IgfsEx {
                 if (log.isDebugEnabled())
                     log.debug("Calculating path summary: " + path);
 
-                IgniteUuid fileId = meta.fileId(path);
-
-                if (fileId == null)
-                    throw new IgfsPathNotFoundException("Failed to get path summary (path not found): " + path);
-
-                IgfsPathSummary sum = new IgfsPathSummary(path);
-
-                summary0(fileId, sum);
-
-                return sum;
+                return summary0(path);
             }
         });
     }
@@ -1259,9 +1250,7 @@ public final class IgfsImpl implements IgfsEx {
     @Override public IgfsMetrics metrics() {
         return safeOp(new Callable<IgfsMetrics>() {
             @Override public IgfsMetrics call() throws Exception {
-                IgfsPathSummary sum = new IgfsPathSummary();
-
-                summary0(IgfsUtils.ROOT_ID, sum);
+                IgfsPathSummary sum = summary0(IgfsPath.ROOT);
 
                 long secondarySpaceSize = 0;
 
@@ -1310,44 +1299,52 @@ public final class IgfsImpl implements IgfsEx {
 
         return safeOp(new Callable<Long>() {
             @Override public Long call() throws Exception {
-                IgniteUuid nextId = meta.fileId(path);
+                return summary0(path).totalLength();
+            }
+        });
+    }
 
-                if (nextId == null)
-                    return 0L;
+    /**
+     * Get summary for path.
+     *
+     * @param path Path.
+     * @return Summary.
+     * @throws IgniteCheckedException If failed.
+     */
+    private IgfsPathSummary summary0(IgfsPath path) throws IgniteCheckedException {
+        IgfsFile info = info(path);
 
-                IgfsPathSummary sum = new IgfsPathSummary(path);
+        if (info == null)
+            throw new IgfsPathNotFoundException("Failed to get path summary (path not found): " + path);
 
-                summary0(nextId, sum);
+        IgfsPathSummary sum = new IgfsPathSummary(path);
 
-                return sum.totalLength();
-            }
-        });
+        summaryRecursive(info, sum);
+
+        return sum;
     }
 
     /**
      * Calculates size of directory or file for given ID.
      *
-     * @param fileId File ID.
+     * @param file IGFS File object.
      * @param sum Summary object that will collect information.
      * @throws IgniteCheckedException If failed.
      */
-    private void summary0(IgniteUuid fileId, IgfsPathSummary sum) throws IgniteCheckedException {
+    private void summaryRecursive(IgfsFile file, IgfsPathSummary sum) throws IgniteCheckedException {
+        assert file != null;
         assert sum != null;
 
-        IgfsEntryInfo info = meta.info(fileId);
-
-        if (info != null) {
-            if (info.isDirectory()) {
-                if (!IgfsUtils.ROOT_ID.equals(info.id()))
-                    sum.directoriesCount(sum.directoriesCount() + 1);
+        if (file.isDirectory()) {
+            if (!F.eq(IgfsPath.ROOT, file.path()))
+                sum.directoriesCount(sum.directoriesCount() + 1);
 
-                for (IgfsListingEntry entry : info.listing().values())
-                    summary0(entry.fileId(), sum);
-            }
-            else {
-                sum.filesCount(sum.filesCount() + 1);
-                sum.totalLength(sum.totalLength() + info.length());
-            }
+            for (IgfsFile childFile : listFiles(file.path()))
+                summaryRecursive(childFile, sum);
+        }
+        else {
+            sum.filesCount(sum.filesCount() + 1);
+            sum.totalLength(sum.totalLength() + file.length());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/43f65fe9/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java
index 57bc4f3..742d20c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java
@@ -1599,4 +1599,18 @@ public abstract class IgfsDualAbstractSelfTest extends IgfsAbstractSelfTest {
             // No-op.
         }
     }
+
+    /**
+     *
+     * @throws Exception If failed.
+     */
+    public void testSecondarySize() throws Exception {
+        igfs.mkdirs(SUBDIR);
+
+        createFile(igfsSecondary, FILE, chunk);
+        createFile(igfsSecondary, new IgfsPath(SUBDIR, "file2"), chunk);
+
+        assertEquals(chunk.length, igfs.size(FILE));
+        assertEquals(chunk.length * 2, igfs.size(SUBDIR));
+    }
 }
\ No newline at end of file


[06/12] ignite git commit: IGNITE-3887: IGFS: IgfsPath API cleanup.

Posted by ak...@apache.org.
IGNITE-3887: IGFS: IgfsPath API cleanup.


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

Branch: refs/heads/master
Commit: 0852baeef4c828e4832b34edf24c0869619c5745
Parents: 499700c
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Sep 13 16:50:14 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Sep 13 16:50:14 2016 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/igfs/IgfsPath.java   | 14 ++++++++++++-
 .../org/apache/ignite/igfs/IgfsPathSummary.java |  3 +--
 .../local/LocalIgfsSecondaryFileSystem.java     |  2 +-
 .../igfs/common/IgfsControlResponse.java        | 19 +++++-------------
 .../internal/igfs/common/IgfsMarshaller.java    | 14 +++----------
 .../internal/processors/igfs/IgfsFileImpl.java  |  5 +----
 .../internal/processors/igfs/IgfsImpl.java      |  4 ++--
 .../processors/igfs/IgfsModeResolver.java       |  3 ++-
 .../internal/processors/igfs/IgfsPathIds.java   |  2 +-
 .../internal/processors/igfs/IgfsPaths.java     |  5 +----
 .../internal/processors/igfs/IgfsUtils.java     | 21 ++++++++++++++++----
 .../apache/ignite/igfs/IgfsPathSelfTest.java    |  6 ------
 .../igfs/IgfsAbstractBaseSelfTest.java          |  2 +-
 .../processors/igfs/IgfsAbstractSelfTest.java   | 12 +++++------
 .../igfs/IgfsDataManagerSelfTest.java           |  6 +++---
 .../igfs/IgfsDualAbstractSelfTest.java          | 14 ++++++-------
 .../igfs/IgfsMetaManagerSelfTest.java           |  4 ++--
 .../igfs/IgfsModeResolverSelfTest.java          |  4 ++--
 .../processors/igfs/IgfsStreamsSelfTest.java    |  4 +---
 19 files changed, 68 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java b/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java
index c705274..d01e1db 100644
--- a/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java
+++ b/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPath.java
@@ -62,9 +62,15 @@ public final class IgfsPath implements Comparable<IgfsPath>, Externalizable, Bin
     /** URI representing this path. Should never change after object creation or de-serialization. */
     private String path;
 
+    /** Root path. */
+    public static final IgfsPath ROOT = new IgfsPath(SLASH);
+
     /**
      * Constructs default root path.
+     *
+     * @deprecated Use {@link #ROOT} instead.
      */
+    @Deprecated
     public IgfsPath() {
         path = SLASH;
     }
@@ -146,9 +152,11 @@ public final class IgfsPath implements Comparable<IgfsPath>, Externalizable, Bin
      * Returns a root for this path.
      *
      * @return Root for this path.
+     * @deprecated Use {@link #ROOT} instead.
      */
+    @Deprecated
     public IgfsPath root() {
-        return new IgfsPath();
+        return ROOT;
     }
 
     /**
@@ -244,7 +252,10 @@ public final class IgfsPath implements Comparable<IgfsPath>, Externalizable, Bin
      *
      * @param path Path to check.
      * @return {@code True} if paths are identical.
+     * @deprecated Use {@link #equals(Object)} instead.
      */
+    @SuppressWarnings("unused")
+    @Deprecated
     public boolean isSame(IgfsPath path) {
         A.notNull(path, "path");
 
@@ -252,6 +263,7 @@ public final class IgfsPath implements Comparable<IgfsPath>, Externalizable, Bin
     }
 
     /** {@inheritDoc} */
+    @SuppressWarnings("NullableProblems")
     @Override public int compareTo(IgfsPath o) {
         return path.compareTo(o.path);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPathSummary.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPathSummary.java b/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPathSummary.java
index 7d60b95..0eff4b7 100644
--- a/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPathSummary.java
+++ b/modules/core/src/main/java/org/apache/ignite/igfs/IgfsPathSummary.java
@@ -137,8 +137,7 @@ public class IgfsPathSummary implements Externalizable, Binarylizable {
         dirCnt = in.readInt();
         totalLen = in.readLong();
 
-        path = new IgfsPath();
-        path.readExternal(in);
+        path = IgfsUtils.readPath(in);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java b/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java
index 36080f2..c84fcf2 100644
--- a/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java
+++ b/modules/core/src/main/java/org/apache/ignite/igfs/secondary/local/LocalIgfsSecondaryFileSystem.java
@@ -303,7 +303,7 @@ public class LocalIgfsSecondaryFileSystem implements IgfsSecondaryFileSystem, Li
 
     /** {@inheritDoc} */
     @Override public long usedSpaceSize() {
-        Path p = fileForPath(new IgfsPath("/")).toPath();
+        Path p = fileForPath(IgfsPath.ROOT).toPath();
 
         try {
             LocalFileSystemSizeVisitor visitor = new LocalFileSystemSizeVisitor();

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java
index ce7107d..595f3c4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsControlResponse.java
@@ -40,6 +40,7 @@ import org.apache.ignite.internal.processors.igfs.IgfsFileImpl;
 import org.apache.ignite.internal.processors.igfs.IgfsHandshakeResponse;
 import org.apache.ignite.internal.processors.igfs.IgfsInputStreamDescriptor;
 import org.apache.ignite.internal.processors.igfs.IgfsStatus;
+import org.apache.ignite.internal.processors.igfs.IgfsUtils;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.S;
@@ -492,13 +493,8 @@ public class IgfsControlResponse extends IgfsMessage {
             case RES_TYPE_IGFS_PATH: {
                 boolean hasVal = in.readBoolean();
 
-                if (hasVal) {
-                    IgfsPath path = new IgfsPath();
-
-                    path.readExternal(in);
-
-                    res = path;
-                }
+                if (hasVal)
+                    res = IgfsUtils.readPath(in);
 
                 break;
             }
@@ -603,13 +599,8 @@ public class IgfsControlResponse extends IgfsMessage {
                 if (size >= 0) {
                     paths = new ArrayList<>(size);
 
-                    for (int i = 0; i < size; i++) {
-                        IgfsPath path = new IgfsPath();
-
-                        path.readExternal(in);
-
-                        paths.add(path);
-                    }
+                    for (int i = 0; i < size; i++)
+                        paths.add(IgfsUtils.readPath(in));
                 }
 
                 res = paths;

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsMarshaller.java
index 1dba21c..91656fd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/igfs/common/IgfsMarshaller.java
@@ -23,6 +23,7 @@ import java.io.ObjectOutput;
 import java.util.Arrays;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.igfs.IgfsPath;
+import org.apache.ignite.internal.processors.igfs.IgfsUtils;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.jetbrains.annotations.Nullable;
 
@@ -331,21 +332,12 @@ public class IgfsMarshaller {
     }
 
     /**
-     * Reads IGFS path from data input that was written by {@link #writePath(ObjectOutput, org.apache.ignite.igfs.IgfsPath)}
-     * method.
+     * Reads IGFS path from data input that was written by {@link #writePath(ObjectOutput, IgfsPath)} method.
      *
      * @param in Data input.
      * @return Written path or {@code null}.
      */
     @Nullable private IgfsPath readPath(ObjectInput in) throws IOException {
-        if(in.readBoolean()) {
-            IgfsPath path = new IgfsPath();
-
-            path.readExternal(in);
-
-            return path;
-        }
-
-        return null;
+        return in.readBoolean() ? IgfsUtils.readPath(in) : null;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java
index 984c8f5..98777be 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileImpl.java
@@ -231,10 +231,7 @@ public final class IgfsFileImpl implements IgfsFile, Externalizable, Binarylizab
      * @param in Data input.
      */
     @Override public void readExternal(ObjectInput in) throws IOException {
-        path = new IgfsPath();
-
-        path.readExternal(in);
-
+        path = IgfsUtils.readPath(in);
         blockSize = in.readInt();
         grpBlockSize = in.readLong();
         len = in.readLong();

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
index 636b4a9..273e67d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
@@ -388,7 +388,7 @@ public final class IgfsImpl implements IgfsEx {
             boolean await = false;
 
             for (IgfsPath path : paths) {
-                if (workerPath.isSubDirectoryOf(path) || workerPath.isSame(path))  {
+                if (workerPath.isSubDirectoryOf(path) || F.eq(workerPath, path))  {
                     await = true;
 
                     break;
@@ -749,7 +749,7 @@ public final class IgfsImpl implements IgfsEx {
                 if (log.isDebugEnabled())
                     log.debug("Deleting file [path=" + path + ", recursive=" + recursive + ']');
 
-                if (IgfsPath.SLASH.equals(path.toString()))
+                if (F.eq(IgfsPath.ROOT, path))
                     return false;
 
                 IgfsMode mode = resolveMode(path);

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolver.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolver.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolver.java
index 33b835f..d4e248d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolver.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolver.java
@@ -26,6 +26,7 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.igfs.IgfsMode;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.internal.util.GridBoundedConcurrentLinkedHashMap;
+import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.T2;
 import org.jetbrains.annotations.Nullable;
 
@@ -84,7 +85,7 @@ public class IgfsModeResolver {
 
             if (mode == null) {
                 for (T2<IgfsPath, IgfsMode> entry : modes) {
-                    if (path.isSame(entry.getKey()) || path.isSubDirectoryOf(entry.getKey())) {
+                    if (F.eq(path, entry.getKey()) || path.isSubDirectoryOf(entry.getKey())) {
                         // As modes ordered from most specific to least specific first mode found is ours.
                         mode = entry.getValue();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java
index b710ba2..9b30913 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java
@@ -163,7 +163,7 @@ public class IgfsPathIds {
      * @return Path of the last existing element.
      */
     public IgfsPath lastExistingPath() {
-        IgfsPath path = new IgfsPath();
+        IgfsPath path = IgfsPath.ROOT;
 
         for (int i = 1; i <= lastExistingIdx; i++)
             path = new IgfsPath(path, parts[i]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java
index 2bdb23b..72b5a19 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPaths.java
@@ -24,7 +24,6 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.ArrayList;
-import java.util.List;
 
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.igfs.IgfsMode;
@@ -144,9 +143,7 @@ public class IgfsPaths implements Externalizable {
             pathModes = new ArrayList<>(size);
 
             for (int i = 0; i < size; i++) {
-                IgfsPath path = new IgfsPath();
-
-                path.readExternal(in);
+                IgfsPath path = IgfsUtils.readPath(in);
 
                 pathModes.add(new T2<>(path, IgfsMode.fromOrdinal(in.readByte())));
             }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
index 2e79a98..4453dba 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
@@ -52,6 +52,7 @@ import org.jetbrains.annotations.Nullable;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
+import java.io.ObjectInput;
 import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -126,9 +127,6 @@ public class IgfsUtils {
     /** Flag: this is a file. */
     private static final byte FLAG_FILE = 0x2;
 
-    /**
-     * Static initializer.
-     */
     static {
         TRASH_IDS = new IgniteUuid[TRASH_CONCURRENCY];
 
@@ -750,6 +748,21 @@ public class IgfsUtils {
     }
 
     /**
+     * Read non-null path from the input.
+     *
+     * @param in Input.
+     * @return IGFS path.
+     * @throws IOException If failed.
+     */
+    public static IgfsPath readPath(ObjectInput in) throws IOException {
+        IgfsPath res = new IgfsPath();
+
+        res.readExternal(in);
+
+        return res;
+    }
+
+    /**
      * Write IgfsFileAffinityRange.
      *
      * @param writer Writer
@@ -878,7 +891,7 @@ public class IgfsUtils {
 
         ArrayList<T2<IgfsPath, IgfsMode>> resModes = new ArrayList<>(modes.size() + 1);
 
-        resModes.add(new T2<>(new IgfsPath("/"), dfltMode));
+        resModes.add(new T2<>(IgfsPath.ROOT, dfltMode));
 
         for (T2<IgfsPath, IgfsMode> mode : modes) {
             assert mode.getKey() != null;

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
index eb0f383..3092374 100644
--- a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsPathSelfTest.java
@@ -97,12 +97,6 @@ public class IgfsPathSelfTest extends GridCommonAbstractTest {
         URI uri = URI.create(pathStr);
         IgfsPath path = new IgfsPath(uri);
 
-        assertNotNull(new IgfsPath(uri));
-        assertNotNull(new IgfsPath(pathStr));
-        assertNotNull(new IgfsPath("/"));
-        assertNotNull(new IgfsPath(path, pathStr));
-        assertNotNull(new IgfsPath());
-
         Class nullUri = URI.class;
         Class nullStr = String.class;
         Class nullPath = IgfsPath.class;

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
index 03f24a4..3f62cf5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractBaseSelfTest.java
@@ -342,7 +342,7 @@ public abstract class IgfsAbstractBaseSelfTest extends IgfsCommonAbstractTest {
     @Override protected void afterTest() throws Exception {
         clear(igfs, igfsSecondary);
 
-        assert igfs.listFiles(new IgfsPath("/")).isEmpty();
+        assert igfs.listFiles(IgfsPath.ROOT).isEmpty();
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
index 89979ad..a115e03 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
@@ -265,7 +265,7 @@ public abstract class IgfsAbstractSelfTest extends IgfsAbstractBaseSelfTest {
     public void testMoveFileDestinationRoot() throws Exception {
         create(igfs, paths(DIR, SUBDIR), paths(FILE));
 
-        igfs.rename(FILE, new IgfsPath());
+        igfs.rename(FILE, IgfsPath.ROOT);
 
         checkExist(igfs, igfsSecondary, new IgfsPath("/" + FILE.name()));
         checkNotExist(igfs, igfsSecondary, FILE);
@@ -357,7 +357,7 @@ public abstract class IgfsAbstractSelfTest extends IgfsAbstractBaseSelfTest {
     public void testMoveDirectoryDestinationRoot() throws Exception {
         create(igfs, paths(DIR, SUBDIR, SUBSUBDIR), null);
 
-        igfs.rename(SUBSUBDIR, new IgfsPath());
+        igfs.rename(SUBSUBDIR, IgfsPath.ROOT);
 
         checkExist(igfs, igfsSecondary, new IgfsPath("/" + SUBSUBDIR.name()));
         checkNotExist(igfs, igfsSecondary, SUBSUBDIR);
@@ -745,13 +745,11 @@ public abstract class IgfsAbstractSelfTest extends IgfsAbstractBaseSelfTest {
      * @throws Exception If failed.
      */
     private void checkRootPropertyUpdate(String prop, String setVal, String expGetVal) throws Exception {
-        final IgfsPath rootPath = new IgfsPath("/");
-
-        igfs.update(rootPath, Collections.singletonMap(prop, setVal));
+        igfs.update(IgfsPath.ROOT, Collections.singletonMap(prop, setVal));
 
         igfs.format();
 
-        IgfsFile file = igfs.info(rootPath);
+        IgfsFile file = igfs.info(IgfsPath.ROOT);
 
         assert file != null;
 
@@ -2334,7 +2332,7 @@ public abstract class IgfsAbstractSelfTest extends IgfsAbstractBaseSelfTest {
 
         Queue<IgniteBiTuple<Integer, IgfsPath>> queue = new ArrayDeque<>();
 
-        queue.add(F.t(0, new IgfsPath())); // Add root directory.
+        queue.add(F.t(0, IgfsPath.ROOT)); // Add root directory.
 
         while (!queue.isEmpty()) {
             IgniteBiTuple<Integer, IgfsPath> entry = queue.poll();

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
index 70d6b99..a98c3a1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
@@ -165,7 +165,7 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
     @SuppressWarnings("ConstantConditions")
     public void testDataStoring() throws Exception {
         for (int i = 0; i < 10; i++) {
-            IgfsPath path = new IgfsPath();
+            IgfsPath path = IgfsPath.ROOT;
 
             long t = System.currentTimeMillis();
 
@@ -250,7 +250,7 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
         final int blockSize = IGFS_BLOCK_SIZE;
 
         for (int i = 0; i < 10; i++) {
-            IgfsPath path = new IgfsPath();
+            IgfsPath path = IgfsPath.ROOT;
 
             long t = System.currentTimeMillis();
 
@@ -341,7 +341,7 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
         final int writesCnt = 64;
 
         for (int i = 0; i < 10; i++) {
-            IgfsPath path = new IgfsPath();
+            IgfsPath path = IgfsPath.ROOT;
 
             long t = System.currentTimeMillis();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java
index 02027d6..57bc4f3 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDualAbstractSelfTest.java
@@ -23,6 +23,7 @@ import org.apache.ignite.igfs.IgfsMode;
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.igfs.secondary.IgfsSecondaryFileSystem;
 import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.T2;
 import org.apache.ignite.internal.util.typedef.internal.U;
 
@@ -334,7 +335,7 @@ public abstract class IgfsDualAbstractSelfTest extends IgfsAbstractSelfTest {
         create(igfsSecondary, paths(DIR, SUBDIR), paths(FILE));
         create(igfs, paths(DIR), null);
 
-        igfs.rename(FILE, new IgfsPath());
+        igfs.rename(FILE, IgfsPath.ROOT);
 
         checkExist(igfs, SUBDIR);
         checkExist(igfs, igfsSecondary, new IgfsPath("/" + FILE.name()));
@@ -350,7 +351,7 @@ public abstract class IgfsDualAbstractSelfTest extends IgfsAbstractSelfTest {
         create(igfsSecondary, paths(DIR, SUBDIR), paths(FILE));
         create(igfs, null, null);
 
-        igfs.rename(FILE, new IgfsPath());
+        igfs.rename(FILE, IgfsPath.ROOT);
 
         checkExist(igfs, DIR, SUBDIR);
         checkExist(igfs, igfsSecondary, new IgfsPath("/" + FILE.name()));
@@ -701,7 +702,7 @@ public abstract class IgfsDualAbstractSelfTest extends IgfsAbstractSelfTest {
         create(igfsSecondary, paths(DIR, SUBDIR, SUBSUBDIR), null);
         create(igfs, paths(DIR), null);
 
-        igfs.rename(SUBSUBDIR, new IgfsPath());
+        igfs.rename(SUBSUBDIR, IgfsPath.ROOT);
 
         checkExist(igfs, SUBDIR);
         checkExist(igfs, igfsSecondary, new IgfsPath("/" + SUBSUBDIR.name()));
@@ -717,7 +718,7 @@ public abstract class IgfsDualAbstractSelfTest extends IgfsAbstractSelfTest {
         create(igfsSecondary, paths(DIR, SUBDIR, SUBSUBDIR), null);
         create(igfs, null, null);
 
-        igfs.rename(SUBSUBDIR, new IgfsPath());
+        igfs.rename(SUBSUBDIR, IgfsPath.ROOT);
 
         checkExist(igfs, DIR, SUBDIR);
         checkExist(igfs, igfsSecondary, new IgfsPath("/" + SUBSUBDIR.name()));
@@ -1510,8 +1511,7 @@ public abstract class IgfsDualAbstractSelfTest extends IgfsAbstractSelfTest {
         T2<Long, Long> t0 = new T2<>(f0.accessTime(), f0.modificationTime());
 
         // Root cannot be seen through the parent listing:
-        if (!p.isSame(p.root())) {
-
+        if (!F.eq(IgfsPath.ROOT, p)) {
             assertNotNull(f0);
 
             Collection<IgfsFile> listing = fs.listFiles(p.parent());
@@ -1519,7 +1519,7 @@ public abstract class IgfsDualAbstractSelfTest extends IgfsAbstractSelfTest {
             IgfsFile f1 = null;
 
             for (IgfsFile fi : listing) {
-                if (fi.path().isSame(p)) {
+                if (F.eq(fi.path(), p)) {
                     f1 = fi;
 
                     break;

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
index 6053d3b..a4100ea 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
@@ -266,7 +266,7 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
         }
 
         // Validate 'file ID' operations.
-        assertEquals(ROOT_ID, mgr.fileId(new IgfsPath("/")));
+        assertEquals(ROOT_ID, mgr.fileId(IgfsPath.ROOT));
         assertEquals(a.id(), mgr.fileId(new IgfsPath("/a")));
         assertEquals(b.id(), mgr.fileId(new IgfsPath("/a/b")));
         assertEquals(f1.id(), mgr.fileId(new IgfsPath("/f1")));
@@ -285,7 +285,7 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
         assertNull(mgr.fileId(a.id(), "f5"));
         assertNull(mgr.fileId(b.id(), "f6"));
 
-        assertEquals(Arrays.asList(ROOT_ID), mgr.fileIds(new IgfsPath("/")));
+        assertEquals(Arrays.asList(ROOT_ID), mgr.fileIds(IgfsPath.ROOT));
         assertEquals(Arrays.asList(ROOT_ID, a.id()), mgr.fileIds(new IgfsPath("/a")));
         assertEquals(Arrays.asList(ROOT_ID, a.id(), b.id()), mgr.fileIds(new IgfsPath("/a/b")));
         assertEquals(Arrays.asList(ROOT_ID, f1.id()), mgr.fileIds(new IgfsPath("/f1")));

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolverSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolverSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolverSelfTest.java
index bd7e413..7932660 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolverSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsModeResolverSelfTest.java
@@ -69,7 +69,7 @@ public class IgfsModeResolverSelfTest extends TestCase {
      * @throws Exception If failed.
      */
     public void testResolve() throws Exception {
-        assertEquals(DUAL_SYNC, reslvr.resolveMode(new IgfsPath("/")));
+        assertEquals(DUAL_SYNC, reslvr.resolveMode(IgfsPath.ROOT));
         assertEquals(DUAL_SYNC, reslvr.resolveMode(new IgfsPath("/a")));
         assertEquals(DUAL_SYNC, reslvr.resolveMode(new IgfsPath("/a/1")));
 
@@ -161,7 +161,7 @@ public class IgfsModeResolverSelfTest extends TestCase {
         assertEquals(set, new HashSet<IgfsPath>() {{
             add(new IgfsPath("/a/b"));
             add(new IgfsPath("/a/b/x"));
-            add(new IgfsPath("/"));
+            add(IgfsPath.ROOT);
         }});
 
         set = new HashSet<>();

http://git-wip-us.apache.org/repos/asf/ignite/blob/0852baee/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java
index 44560e3..8c6cf57 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java
@@ -47,7 +47,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Random;
 import java.util.UUID;
@@ -192,13 +191,12 @@ public class IgfsStreamsSelfTest extends IgfsCommonAbstractTest {
      * @throws Exception In case of exception.
      */
     public void testCreateFile() throws Exception {
-        IgfsPath root = new IgfsPath("/");
         IgfsPath path = new IgfsPath("/asdf");
 
         long max = 100L * CFG_BLOCK_SIZE / WRITING_THREADS_CNT;
 
         for (long size = 0; size <= max; size = size * 15 / 10 + 1) {
-            assertTrue(F.isEmpty(fs.listPaths(root)));
+            assertTrue(F.isEmpty(fs.listPaths(IgfsPath.ROOT)));
 
             testCreateFile(path, size, new Random().nextInt());
         }