You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/03/15 14:35:10 UTC

[01/16] ignite git commit: Implemented alternative listing.

Repository: ignite
Updated Branches:
  refs/heads/ignite-2813 [created] 0bdd7f266


Implemented alternative listing.


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

Branch: refs/heads/ignite-2813
Commit: ee08e00a77a7fc477f53a0bd59d89fa3d7dbc3fb
Parents: 18de768
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:09:42 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:09:42 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsFileInfo.java  | 25 ++++++++++++++++++++
 1 file changed, 25 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ee08e00a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
index 0a85657..09c529f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 import org.apache.ignite.configuration.FileSystemConfiguration;
 import org.apache.ignite.igfs.IgfsPath;
@@ -74,6 +75,9 @@ public final class IgfsFileInfo implements Externalizable {
     @GridToStringInclude
     private Map<String, IgfsListingEntry> listing;
 
+    /** Directory listing. */
+    private Map<String, IgniteUuid> listing2;
+
     /** Whether data blocks of this entry should never be excluded. */
     private boolean evictExclude;
 
@@ -300,6 +304,13 @@ public final class IgfsFileInfo implements Externalizable {
         if (listing == null && isDir)
             this.listing = Collections.emptyMap();
 
+        if (this.listing != null) {
+            this.listing2 = new HashMap<>(this.listing.size());
+
+            for (Map.Entry<String, IgfsListingEntry> entry : this.listing.entrySet())
+                this.listing2.put(entry.getKey(), entry.getValue().fileId());
+        }
+
         this.lockId = lockId;
         this.evictExclude = evictExclude;
     }
@@ -420,6 +431,13 @@ public final class IgfsFileInfo implements Externalizable {
     }
 
     /**
+     * @return Directory listing.
+     */
+    public Map<String, IgniteUuid> listing2() {
+        return listing2 != null ? listing2 : Collections.<String, IgniteUuid>emptyMap();
+    }
+
+    /**
      * @return Affinity key used for single-node file collocation. If {@code null}, usual
      *      mapper procedure is used for block affinity detection.
      */
@@ -514,6 +532,13 @@ public final class IgfsFileInfo implements Externalizable {
         modificationTime = in.readLong();
         evictExclude = in.readBoolean();
         path = (IgfsPath)in.readObject();
+
+        if (listing != null) {
+            listing2 = new HashMap<>(listing.size());
+
+            for (Map.Entry<String, IgfsListingEntry> entry : listing.entrySet())
+                listing2.put(entry.getKey(), entry.getValue().fileId());
+        }
     }
 
     /** {@inheritDoc} */


[15/16] ignite git commit: Now getting rid of listing2 (3).

Posted by vo...@apache.org.
Now getting rid of listing2 (3).


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

Branch: refs/heads/ignite-2813
Commit: 459cf2b76433fcfbb957389982666b052d52fff5
Parents: 0d4d567
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 16:30:18 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 16:30:18 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsFileInfo.java  | 49 +++++---------------
 .../internal/processors/igfs/IgfsImpl.java      |  8 ++--
 .../processors/igfs/IgfsMetaManager.java        | 12 ++---
 3 files changed, 19 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/459cf2b7/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
index 814b730..ba484bb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.Map;
 import org.apache.ignite.configuration.FileSystemConfiguration;
 import org.apache.ignite.igfs.IgfsPath;
@@ -75,9 +74,6 @@ public final class IgfsFileInfo implements Externalizable {
     @GridToStringInclude
     private Map<String, IgfsListingEntry> listing;
 
-    /** Directory listing. */
-    private Map<String, IgniteUuid> listing2;
-
     /** Whether data blocks of this entry should never be excluded. */
     private boolean evictExclude;
 
@@ -301,16 +297,6 @@ public final class IgfsFileInfo implements Externalizable {
         this.props = props == null || props.isEmpty() ? null :
             cpProps ? new GridLeanMap<>(props) : props;
 
-        if (listing == null && isDir)
-            this.listing = Collections.emptyMap();
-
-        if (this.listing != null) {
-            this.listing2 = new HashMap<>(this.listing.size());
-
-            for (Map.Entry<String, IgfsListingEntry> entry : this.listing.entrySet())
-                this.listing2.put(entry.getKey(), entry.getValue().fileId());
-        }
-
         this.lockId = lockId;
         this.evictExclude = evictExclude;
     }
@@ -421,27 +407,14 @@ public final class IgfsFileInfo implements Externalizable {
      * @return Directory listing.
      */
     public Map<String, IgfsListingEntry> listing() {
-        // Always wrap into unmodifiable map to be able to avoid illegal modifications in order pieces of the code.
-        if (isFile())
-            return Collections.unmodifiableMap(Collections.<String, IgfsListingEntry>emptyMap());
-
-        assert listing != null;
-
-        return Collections.unmodifiableMap(listing);
-    }
-
-    /**
-     * @return Directory listing.
-     */
-    public Map<String, IgniteUuid> listing2() {
-        return listing2 != null ? listing2 : Collections.<String, IgniteUuid>emptyMap();
+        return listing != null ? listing : Collections.<String, IgfsListingEntry>emptyMap();
     }
 
     /**
      * @return {@code True} if at least one child exists.
      */
     public boolean hasChildren() {
-        return !F.isEmpty(listing2);
+        return !F.isEmpty(listing);
     }
 
     /**
@@ -449,7 +422,7 @@ public final class IgfsFileInfo implements Externalizable {
      * @return {@code True} if child with such name exists.
      */
     public boolean hasChild(String name) {
-        return listing2 != null && listing2.containsKey(name);
+        return listing != null && listing.containsKey(name);
     }
 
     /**
@@ -458,7 +431,14 @@ public final class IgfsFileInfo implements Externalizable {
      * @return {@code True} if child with such name exists.
      */
     public boolean hasChild(String name, IgniteUuid expId) {
-        return listing2 != null && F.eq(expId, listing2.get(name));
+        if (listing != null) {
+            IgfsListingEntry entry = listing.get(name);
+
+            if (entry != null)
+                return F.eq(expId, entry.fileId());
+        }
+
+        return false;
     }
 
     /**
@@ -556,13 +536,6 @@ public final class IgfsFileInfo implements Externalizable {
         modificationTime = in.readLong();
         evictExclude = in.readBoolean();
         path = (IgfsPath)in.readObject();
-
-        if (listing != null) {
-            listing2 = new HashMap<>(listing.size());
-
-            for (Map.Entry<String, IgfsListingEntry> entry : listing.entrySet())
-                listing2.put(entry.getKey(), entry.getValue().fileId());
-        }
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/459cf2b7/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 3eaf02f..e0c9be8 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
@@ -869,8 +869,8 @@ public final class IgfsImpl implements IgfsEx {
                                 data.groupBlockSize()));
 
                         // Perform the listing.
-                        for (Map.Entry<String, IgniteUuid> e : info.listing2().entrySet()) {
-                            IgfsFileInfo childInfo = meta.info(e.getValue());
+                        for (Map.Entry<String, IgfsListingEntry> e : info.listing().entrySet()) {
+                            IgfsFileInfo childInfo = meta.info(e.getValue().fileId());
 
                             if (childInfo != null) {
                                 IgfsPath childPath = new IgfsPath(path, e.getKey());
@@ -1285,8 +1285,8 @@ public final class IgfsImpl implements IgfsEx {
                 if (!IgfsUtils.ROOT_ID.equals(info.id()))
                     sum.directoriesCount(sum.directoriesCount() + 1);
 
-                for (IgniteUuid id : info.listing2().values())
-                    summary0(id, sum);
+                for (IgfsListingEntry childEntry : info.listing().values())
+                    summary0(childEntry.fileId(), sum);
             }
             else {
                 sum.filesCount(sum.filesCount() + 1);

http://git-wip-us.apache.org/repos/asf/ignite/blob/459cf2b7/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index 105792d..463e7a8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -801,10 +801,10 @@ public class IgfsMetaManager extends IgfsManager {
         if (!parentInfo.isDirectory())
             throw fsException(new IgfsPathIsNotDirectoryException("Parent file is not a directory: " + parentInfo));
 
-        IgniteUuid fileId = parentInfo.listing2().get(fileName);
+        IgfsListingEntry childEntry = parentInfo.listing().get(fileName);
 
-        if (fileId != null)
-            return fileId;
+        if (childEntry != null)
+            return childEntry.fileId();
 
         if (!id2InfoPrj.putIfAbsent(newFileInfo.id(), newFileInfo))
             throw fsException("Failed to add file details into cache: " + newFileInfo);
@@ -1187,7 +1187,7 @@ public class IgfsMetaManager extends IgfsManager {
                     IgfsListingEntry srcEntry = srcParentInfo.listing().get(srcFileName);
 
                     assert srcEntry != null : "Deletion victim not found in parent listing [path=" + path +
-                        ", name=" + srcFileName + ", listing=" + srcParentInfo.listing2() + ']';
+                        ", name=" + srcFileName + ", listing=" + srcParentInfo.listing() + ']';
 
                     assert victimId.equals(srcEntry.fileId());
 
@@ -1528,10 +1528,6 @@ public class IgfsMetaManager extends IgfsManager {
                 return null; // File not found.
 
             if (parentInfo != null) {
-                Map<String, IgniteUuid> listing = parentInfo.listing2();
-
-                IgniteUuid entry = listing.get(fileName);
-
                 if (!parentInfo.hasChild(fileName, fileId)) // File was removed or recreated.
                     return null;
             }


[02/16] ignite git commit: Removed listing usage from IgfsDeleteWorker.

Posted by vo...@apache.org.
Removed listing usage from IgfsDeleteWorker.


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

Branch: refs/heads/ignite-2813
Commit: d139289b29aacbb92580f8ec2b30290e06d63a59
Parents: ee08e00
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:19:25 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:19:25 2016 +0300

----------------------------------------------------------------------
 .../processors/igfs/IgfsDeleteWorker.java       | 50 ++++++++++----------
 .../processors/igfs/IgfsMetaManager.java        | 23 ++++-----
 2 files changed, 38 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d139289b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
index ffddd3e..1570845 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
@@ -175,20 +175,21 @@ public class IgfsDeleteWorker extends IgfsThread {
         }
 
         if (info != null) {
-            for (Map.Entry<String, IgfsListingEntry> entry : info.listing().entrySet()) {
-                IgniteUuid fileId = entry.getValue().fileId();
+            for (Map.Entry<String, IgniteUuid> entry : info.listing2().entrySet()) {
+                String childName = entry.getKey();
+                IgniteUuid childId = entry.getValue();
 
                 if (log.isDebugEnabled())
-                    log.debug("Deleting IGFS trash entry [name=" + entry.getKey() + ", fileId=" + fileId + ']');
+                    log.debug("Deleting IGFS trash entry [name=" + childName + ", id=" + childId + ']');
 
                 try {
                     if (!cancelled) {
-                        if (delete(trashId, entry.getKey(), fileId)) {
+                        if (delete(trashId, childName, childId)) {
                             if (log.isDebugEnabled())
-                                log.debug("Sending delete confirmation message [name=" + entry.getKey() +
-                                    ", fileId=" + fileId + ']');
+                                log.debug("Sending delete confirmation message [name=" + childName +
+                                    ", id=" + childId + ']');
 
-                            sendDeleteMessage(new IgfsDeleteMessage(fileId));
+                            sendDeleteMessage(new IgfsDeleteMessage(childId));
                         }
                     }
                     else
@@ -198,9 +199,9 @@ public class IgfsDeleteWorker extends IgfsThread {
                     // Ignore this exception while stopping.
                 }
                 catch (IgniteCheckedException e) {
-                    U.error(log, "Failed to delete entry from the trash directory: " + entry.getKey(), e);
+                    U.error(log, "Failed to delete entry from the trash directory: " + childName, e);
 
-                    sendDeleteMessage(new IgfsDeleteMessage(fileId, e));
+                    sendDeleteMessage(new IgfsDeleteMessage(childId, e));
                 }
             }
         }
@@ -276,34 +277,35 @@ public class IgfsDeleteWorker extends IgfsThread {
             if (info != null) {
                 assert info.isDirectory();
 
-                final Map<String, IgfsListingEntry> listing = info.listing();
+                final Map<String, IgniteUuid> listing = info.listing2();
 
                 if (listing.isEmpty())
                     return true; // Directory is empty.
 
-                final Map<String, IgfsListingEntry> delListing = new HashMap<>(MAX_DELETE_BATCH, 1.0f);
+                final Map<String, IgniteUuid> delListing = new HashMap<>(MAX_DELETE_BATCH, 1.0f);
 
                 final GridCompoundFuture<Object, ?> fut = new GridCompoundFuture<>();
 
                 int failedFiles = 0;
 
-                for (final Map.Entry<String, IgfsListingEntry> entry : listing.entrySet()) {
+                for (final Map.Entry<String, IgniteUuid> entry : listing.entrySet()) {
                     if (cancelled)
                         return false;
 
-                    if (entry.getValue().isDirectory()) {
-                        if (deleteDirectoryContents(id, entry.getValue().fileId())) // *** Recursive call.
-                            delListing.put(entry.getKey(), entry.getValue());
-                        else
-                            failedFiles++;
-                    }
-                    else {
-                        IgfsFileInfo fileInfo = meta.info(entry.getValue().fileId());
+                    String childName = entry.getKey();
+                    IgniteUuid childId = entry.getValue();
 
-                        if (fileInfo != null) {
-                            assert fileInfo.isFile();
+                    IgfsFileInfo childInfo = meta.info(childId);
 
-                            IgfsFileInfo lockedInfo = meta.lock(fileInfo.id(), true);
+                    if (childInfo != null) {
+                        if (childInfo.isDirectory()) {
+                            if (deleteDirectoryContents(id, childId)) // *** Recursive call.
+                                delListing.put(childName, childId);
+                            else
+                                failedFiles++;
+                        }
+                        else {
+                            IgfsFileInfo lockedInfo = meta.lock(childId, true);
 
                             if (lockedInfo == null)
                                 // File is already locked:
@@ -313,7 +315,7 @@ public class IgfsDeleteWorker extends IgfsThread {
 
                                 fut.add(data.delete(lockedInfo));
 
-                                delListing.put(entry.getKey(), entry.getValue());
+                                delListing.put(childName, childId);
                             }
                         }
                     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/d139289b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index d3aae58..1fd426c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -1318,7 +1318,7 @@ public class IgfsMetaManager extends IgfsManager {
      * @return Collection of really deleted entries.
      * @throws IgniteCheckedException If failed.
      */
-    Collection<IgniteUuid> delete(IgniteUuid parentId, Map<String, IgfsListingEntry> listing)
+    Collection<IgniteUuid> delete(IgniteUuid parentId, Map<String, IgniteUuid> listing)
         throws IgniteCheckedException {
         if (busyLock.enterBusy()) {
             try {
@@ -1338,8 +1338,8 @@ public class IgfsMetaManager extends IgfsManager {
 
                     int i = 1;
 
-                    for (IgfsListingEntry entry : listing.values())
-                        allIds[i++] = entry.fileId();
+                    for (IgniteUuid childId : listing.values())
+                        allIds[i++] = childId;
 
                     Map<IgniteUuid, IgfsFileInfo> locks = lockIds(allIds);
 
@@ -1353,10 +1353,11 @@ public class IgfsMetaManager extends IgfsManager {
                         newListing.putAll(parentInfo.listing());
 
                         // Remove child entries if possible.
-                        for (Map.Entry<String, IgfsListingEntry> entry : listing.entrySet()) {
-                            IgniteUuid entryId = entry.getValue().fileId();
+                        for (Map.Entry<String, IgniteUuid> entry : listing.entrySet()) {
+                            String childName = entry.getKey();
+                            IgniteUuid childId = entry.getValue();
 
-                            IgfsFileInfo entryInfo = locks.get(entryId);
+                            IgfsFileInfo entryInfo = locks.get(childId);
 
                             if (entryInfo != null) {
                                 // File must be locked for deletion:
@@ -1364,18 +1365,18 @@ public class IgfsMetaManager extends IgfsManager {
 
                                 // Delete only files or empty folders.
                                 if (entryInfo.isFile() || entryInfo.isDirectory() && entryInfo.listing().isEmpty()) {
-                                    id2InfoPrj.getAndRemove(entryId);
+                                    id2InfoPrj.getAndRemove(childId);
 
-                                    newListing.remove(entry.getKey());
+                                    newListing.remove(childName);
 
-                                    res.add(entryId);
+                                    res.add(childId);
                                 }
                             }
                             else {
                                 // Entry was deleted concurrently.
-                                newListing.remove(entry.getKey());
+                                newListing.remove(childName);
 
-                                res.add(entryId);
+                                res.add(childId);
                             }
                         }
 


[16/16] ignite git commit: Minors.

Posted by vo...@apache.org.
Minors.


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

Branch: refs/heads/ignite-2813
Commit: 0bdd7f266bc3b77693fdf50f4335d72da9a921d7
Parents: 459cf2b
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 16:34:57 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 16:34:57 2016 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/internal/processors/igfs/IgfsImpl.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/0bdd7f26/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 e0c9be8..f44eda8 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
@@ -1285,8 +1285,8 @@ public final class IgfsImpl implements IgfsEx {
                 if (!IgfsUtils.ROOT_ID.equals(info.id()))
                     sum.directoriesCount(sum.directoriesCount() + 1);
 
-                for (IgfsListingEntry childEntry : info.listing().values())
-                    summary0(childEntry.fileId(), sum);
+                for (IgfsListingEntry entry : info.listing().values())
+                    summary0(entry.fileId(), sum);
             }
             else {
                 sum.filesCount(sum.filesCount() + 1);


[09/16] ignite git commit: WIP.

Posted by vo...@apache.org.
WIP.


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

Branch: refs/heads/ignite-2813
Commit: 5cb122123f2703022fa414d1ee2543a06e393c63
Parents: 93d2e84
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:46:41 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:46:41 2016 +0300

----------------------------------------------------------------------
 .../processors/igfs/IgfsMetaManager.java        | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/5cb12212/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index 9f34f68..f5e21d6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -969,12 +969,12 @@ public class IgfsMetaManager extends IgfsManager {
 
                 // If parent info is null, it doesn't exist.
                 if (parentInfo != null) {
-                    IgfsListingEntry childEntry = parentInfo.listing().get(pathParts.get(i));
+                    IgniteUuid childEntry = parentInfo.listing2().get(pathParts.get(i));
 
                     // If expected child exists.
                     if (childEntry != null) {
                         // If child ID matches expected ID.
-                        if (F.eq(childEntry.fileId(), expIds.get(i + 1)))
+                        if (F.eq(childEntry, expIds.get(i + 1)))
                             continue;
                     }
                 }
@@ -1170,7 +1170,7 @@ public class IgfsMetaManager extends IgfsManager {
 
                     final IgfsFileInfo victimInfo = infoMap.get(victimId);
 
-                    if (!recursive && victimInfo.isDirectory() && !victimInfo.listing().isEmpty())
+                    if (!recursive && victimInfo.hasChildren())
                         // Throw exception if not empty and not recursive.
                         throw new IgfsDirectoryNotEmptyException("Failed to remove directory (directory is not " +
                             "empty and recursive flag is not set).");
@@ -1183,7 +1183,7 @@ public class IgfsMetaManager extends IgfsManager {
 
                     final String destFileName = victimId.toString();
 
-                    assert destInfo.listing().get(destFileName) == null : "Failed to add file name into the " +
+                    assert destInfo.listing2().get(destFileName) == null : "Failed to add file name into the " +
                         "destination directory (file already exists) [destName=" + destFileName + ']';
 
                     IgfsFileInfo srcParentInfo = infoMap.get(pathIdList.get(pathIdList.size() - 2));
@@ -1196,7 +1196,7 @@ public class IgfsMetaManager extends IgfsManager {
                     IgfsListingEntry srcEntry = srcParentInfo.listing().get(srcFileName);
 
                     assert srcEntry != null : "Deletion victim not found in parent listing [path=" + path +
-                        ", name=" + srcFileName + ", listing=" + srcParentInfo.listing() + ']';
+                        ", name=" + srcFileName + ", listing=" + srcParentInfo.listing2() + ']';
 
                     assert victimId.equals(srcEntry.fileId());
 
@@ -1537,11 +1537,11 @@ public class IgfsMetaManager extends IgfsManager {
                 return null; // File not found.
 
             if (parentInfo != null) {
-                Map<String, IgfsListingEntry> listing = parentInfo.listing();
+                Map<String, IgniteUuid> listing = parentInfo.listing2();
 
-                IgfsListingEntry entry = listing.get(fileName);
+                IgniteUuid entry = listing.get(fileName);
 
-                if (entry == null || !entry.fileId().equals(fileId)) // File was removed or recreated.
+                if (entry == null || !entry.equals(fileId)) // File was removed or recreated.
                     return null;
             }
 
@@ -2974,10 +2974,10 @@ public class IgfsMetaManager extends IgfsManager {
                         throw fsException(new IgfsPathNotFoundException("Failed to update times " +
                             "(parent was not found): " + fileName));
 
-                    IgfsListingEntry entry = parentInfo.listing().get(fileName);
+                    IgniteUuid entry = parentInfo.listing2().get(fileName);
 
                     // Validate listing.
-                    if (entry == null || !entry.fileId().equals(fileId))
+                    if (entry == null || !entry.equals(fileId))
                         throw fsException(new IgfsConcurrentModificationException("Failed to update times " +
                                 "(file concurrently modified): " + fileName));
 


[04/16] ignite git commit: Removed listing from tests.

Posted by vo...@apache.org.
Removed listing from tests.


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

Branch: refs/heads/ignite-2813
Commit: b47eef61bfeef530204fc8e3ff29b4b4f10a2f64
Parents: 56d0570
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:23:34 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:23:34 2016 +0300

----------------------------------------------------------------------
 .../ignite/internal/processors/igfs/IgfsProcessorSelfTest.java     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/b47eef61/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
index f567099..79d337b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
@@ -231,7 +231,7 @@ public class IgfsProcessorSelfTest extends IgfsCommonAbstractTest {
                     (IgfsFileInfo)grid(i).cachex(metaCacheName).localPeek(info.fileId(), ONHEAP_PEEK_MODES, null);
 
                 assertNotNull(fileInfo);
-                assertNotNull(fileInfo.listing());
+                assertNotNull(fileInfo.listing2());
             }
         }
         finally {


[08/16] ignite git commit: WIP.

Posted by vo...@apache.org.
WIP.


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

Branch: refs/heads/ignite-2813
Commit: 93d2e8471a7ea4402dd04fd3d08c9733aa4b7bc0
Parents: 92eb571
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:42:26 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:42:26 2016 +0300

----------------------------------------------------------------------
 .../processors/igfs/IgfsMetaManager.java        | 28 +++++++-------------
 1 file changed, 10 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/93d2e847/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index 98804d3..9f34f68 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -801,18 +801,14 @@ public class IgfsMetaManager extends IgfsManager {
         if (!parentInfo.isDirectory())
             throw fsException(new IgfsPathIsNotDirectoryException("Parent file is not a directory: " + parentInfo));
 
-        Map<String, IgfsListingEntry> parentListing = parentInfo.listing();
+        Map<String, IgniteUuid> parentListing = parentInfo.listing2();
 
-        assert parentListing != null;
+        IgniteUuid fileId = parentListing.get(fileName);
 
-        IgfsListingEntry entry = parentListing.get(fileName);
+        if (fileId != null)
+            return fileId;
 
-        if (entry != null)
-            return entry.fileId();
-
-        IgniteUuid fileId = newFileInfo.id();
-
-        if (!id2InfoPrj.putIfAbsent(fileId, newFileInfo))
+        if (!id2InfoPrj.putIfAbsent(newFileInfo.id(), newFileInfo))
             throw fsException("Failed to add file details into cache: " + newFileInfo);
 
         id2InfoPrj.invoke(parentId, new ListingAdd(fileName, new IgfsListingEntry(newFileInfo)));
@@ -915,7 +911,7 @@ public class IgfsMetaManager extends IgfsManager {
                     assert dstTargetInfo.isDirectory();
 
                     // 7. Last check: does destination target already have listing entry with the same name?
-                    if (dstTargetInfo.listing().containsKey(dstName)) {
+                    if (dstTargetInfo.listing2().containsKey(dstName)) {
                         throw new IgfsPathAlreadyExistsException("Failed to perform move because destination already " +
                             "contains entry with the same name existing file [src=" + srcPath +
                             ", dst=" + dstPath + ']');
@@ -1046,7 +1042,7 @@ public class IgfsMetaManager extends IgfsManager {
                 fileId + ']'));
 
         IgfsListingEntry srcEntry = srcInfo.listing().get(srcFileName);
-        IgfsListingEntry destEntry = destInfo.listing().get(destFileName);
+        IgniteUuid destEntry = destInfo.listing2().get(destFileName);
 
         // If source file does not exist or was re-created.
         if (srcEntry == null || !srcEntry.fileId().equals(fileId))
@@ -1483,13 +1479,9 @@ public class IgfsMetaManager extends IgfsManager {
 
                     IgfsFileInfo trashInfo = id2InfoPrj.get(trashId);
 
-                    if (trashInfo != null) {
-                        Map<String, IgfsListingEntry> listing = trashInfo.listing();
-
-                        if (listing != null && !listing.isEmpty()) {
-                            for (IgfsListingEntry entry : listing.values())
-                                ids.add(entry.fileId());
-                        }
+                    if (trashInfo != null && trashInfo.hasChildren()) {
+                        for (IgniteUuid entry : trashInfo.listing2().values())
+                            ids.add(entry);
                     }
                 }
 


[11/16] ignite git commit: WIP.

Posted by vo...@apache.org.
WIP.


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

Branch: refs/heads/ignite-2813
Commit: 063e72fbfd382c65ea76d7398393c3b90e521a57
Parents: be1aaeb
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 16:05:22 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 16:05:22 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsFileInfo.java  |  9 ++++++
 .../processors/igfs/IgfsMetaManager.java        | 33 ++++++--------------
 2 files changed, 19 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/063e72fb/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
index fc2d70b..814b730 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
@@ -453,6 +453,15 @@ public final class IgfsFileInfo implements Externalizable {
     }
 
     /**
+     * @param name Child name.
+     * @param expId Expected child ID.
+     * @return {@code True} if child with such name exists.
+     */
+    public boolean hasChild(String name, IgniteUuid expId) {
+        return listing2 != null && F.eq(expId, listing2.get(name));
+    }
+
+    /**
      * @return Affinity key used for single-node file collocation. If {@code null}, usual
      *      mapper procedure is used for block affinity detection.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/063e72fb/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index f5e21d6..aee1191 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -801,9 +801,7 @@ public class IgfsMetaManager extends IgfsManager {
         if (!parentInfo.isDirectory())
             throw fsException(new IgfsPathIsNotDirectoryException("Parent file is not a directory: " + parentInfo));
 
-        Map<String, IgniteUuid> parentListing = parentInfo.listing2();
-
-        IgniteUuid fileId = parentListing.get(fileName);
+        IgniteUuid fileId = parentInfo.listing2().get(fileName);
 
         if (fileId != null)
             return fileId;
@@ -911,7 +909,7 @@ public class IgfsMetaManager extends IgfsManager {
                     assert dstTargetInfo.isDirectory();
 
                     // 7. Last check: does destination target already have listing entry with the same name?
-                    if (dstTargetInfo.listing2().containsKey(dstName)) {
+                    if (dstTargetInfo.hasChild(dstName)) {
                         throw new IgfsPathAlreadyExistsException("Failed to perform move because destination already " +
                             "contains entry with the same name existing file [src=" + srcPath +
                             ", dst=" + dstPath + ']');
@@ -969,14 +967,8 @@ public class IgfsMetaManager extends IgfsManager {
 
                 // If parent info is null, it doesn't exist.
                 if (parentInfo != null) {
-                    IgniteUuid childEntry = parentInfo.listing2().get(pathParts.get(i));
-
-                    // If expected child exists.
-                    if (childEntry != null) {
-                        // If child ID matches expected ID.
-                        if (F.eq(childEntry, expIds.get(i + 1)))
-                            continue;
-                    }
+                    if (parentInfo.hasChild(pathParts.get(i), expIds.get(i + 1)))
+                        continue;
                 }
             }
 
@@ -1042,7 +1034,6 @@ public class IgfsMetaManager extends IgfsManager {
                 fileId + ']'));
 
         IgfsListingEntry srcEntry = srcInfo.listing().get(srcFileName);
-        IgniteUuid destEntry = destInfo.listing2().get(destFileName);
 
         // If source file does not exist or was re-created.
         if (srcEntry == null || !srcEntry.fileId().equals(fileId))
@@ -1051,10 +1042,10 @@ public class IgfsMetaManager extends IgfsManager {
                 ", srcParentId=" + srcParentId + ", srcEntry=" + srcEntry + ']'));
 
         // If stored file already exist.
-        if (destEntry != null)
+        if (destInfo.hasChild(destFileName))
             throw fsException(new IgfsPathAlreadyExistsException("Failed to add file name into the destination " +
                 " directory (file already exists) [fileId=" + fileId + ", destFileName=" + destFileName +
-                ", destParentId=" + destParentId + ", destEntry=" + destEntry + ']'));
+                ", destParentId=" + destParentId + ']'));
 
         // Remove listing entry from the source parent listing.
         id2InfoPrj.invoke(srcParentId, new ListingRemove(srcFileName, srcEntry.fileId()));
@@ -1183,7 +1174,7 @@ public class IgfsMetaManager extends IgfsManager {
 
                     final String destFileName = victimId.toString();
 
-                    assert destInfo.listing2().get(destFileName) == null : "Failed to add file name into the " +
+                    assert !destInfo.hasChild(destFileName) : "Failed to add file name into the " +
                         "destination directory (file already exists) [destName=" + destFileName + ']';
 
                     IgfsFileInfo srcParentInfo = infoMap.get(pathIdList.get(pathIdList.size() - 2));
@@ -1541,7 +1532,7 @@ public class IgfsMetaManager extends IgfsManager {
 
                 IgniteUuid entry = listing.get(fileName);
 
-                if (entry == null || !entry.equals(fileId)) // File was removed or recreated.
+                if (!parentInfo.hasChild(fileName, fileId)) // File was removed or recreated.
                     return null;
             }
 
@@ -2974,10 +2965,8 @@ public class IgfsMetaManager extends IgfsManager {
                         throw fsException(new IgfsPathNotFoundException("Failed to update times " +
                             "(parent was not found): " + fileName));
 
-                    IgniteUuid entry = parentInfo.listing2().get(fileName);
-
                     // Validate listing.
-                    if (entry == null || !entry.equals(fileId))
+                    if (!parentInfo.hasChild(fileName, fileId))
                         throw fsException(new IgfsConcurrentModificationException("Failed to update times " +
                                 "(file concurrently modified): " + fileName));
 
@@ -3602,11 +3591,9 @@ public class IgfsMetaManager extends IgfsManager {
                                 throw new IgfsParentNotDirectoryException("Failed to " + (append ? "open" : "create" )
                                     + " file (parent element is not a directory)");
 
-                            Map<String, IgniteUuid> parentListing = lowermostExistingInfo.listing2();
-
                             final String uppermostFileToBeCreatedName = b.components.get(b.existingIdCnt - 1);
 
-                            if (parentListing.get(uppermostFileToBeCreatedName) == null) {
+                            if (!lowermostExistingInfo.hasChild(uppermostFileToBeCreatedName)) {
                                 b.doBuild();
 
                                 assert b.leafInfo != null;


[10/16] ignite git commit: WIP.

Posted by vo...@apache.org.
WIP.


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

Branch: refs/heads/ignite-2813
Commit: be1aaeb5c31e0ba586715b34ef2daa0ff7c0c0d7
Parents: 5cb1221
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:58:30 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:58:30 2016 +0300

----------------------------------------------------------------------
 .../ignite/internal/processors/igfs/IgfsDeleteWorker.java    | 7 +++++--
 .../apache/ignite/internal/processors/igfs/IgfsFileInfo.java | 8 ++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/be1aaeb5/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
index 1570845..dda3612 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
@@ -286,6 +286,7 @@ public class IgfsDeleteWorker extends IgfsThread {
 
                 final GridCompoundFuture<Object, ?> fut = new GridCompoundFuture<>();
 
+                int notFoundFiles = 0;
                 int failedFiles = 0;
 
                 for (final Map.Entry<String, IgniteUuid> entry : listing.entrySet()) {
@@ -319,6 +320,8 @@ public class IgfsDeleteWorker extends IgfsThread {
                             }
                         }
                     }
+                    else
+                        notFoundFiles++;
 
                     if (delListing.size() == MAX_DELETE_BATCH)
                         break;
@@ -340,10 +343,10 @@ public class IgfsDeleteWorker extends IgfsThread {
                 // Actual delete of folder content.
                 Collection<IgniteUuid> delIds = meta.delete(id, delListing);
 
-                if (listing.size() == delIds.size())
+                if (listing.size() - notFoundFiles == delIds.size())
                     return true; // All entries were deleted.
 
-                if (listing.size() == delListing.size() + failedFiles)
+                if (listing.size() - notFoundFiles == delListing.size() + failedFiles)
                     // All the files were tried, no reason to continue the loop:
                     return false;
             }

http://git-wip-us.apache.org/repos/asf/ignite/blob/be1aaeb5/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
index 1f41d91..fc2d70b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
@@ -445,6 +445,14 @@ public final class IgfsFileInfo implements Externalizable {
     }
 
     /**
+     * @param name Child name.
+     * @return {@code True} if child with such name exists.
+     */
+    public boolean hasChild(String name) {
+        return listing2 != null && listing2.containsKey(name);
+    }
+
+    /**
      * @return Affinity key used for single-node file collocation. If {@code null}, usual
      *      mapper procedure is used for block affinity detection.
      */


[14/16] ignite git commit: Now getting rid of listing2 (2).

Posted by vo...@apache.org.
Now getting rid of listing2 (2).


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

Branch: refs/heads/ignite-2813
Commit: 0d4d5677dec4991ed9f8cf63d62c19d291be6927
Parents: 8cabfcd
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 16:23:47 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 16:23:47 2016 +0300

----------------------------------------------------------------------
 .../processors/igfs/IgfsDeleteWorker.java       | 57 +++++++++-----------
 .../processors/igfs/IgfsMetaManager.java        | 10 ++--
 2 files changed, 31 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/0d4d5677/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
index dda3612..ffddd3e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
@@ -175,21 +175,20 @@ public class IgfsDeleteWorker extends IgfsThread {
         }
 
         if (info != null) {
-            for (Map.Entry<String, IgniteUuid> entry : info.listing2().entrySet()) {
-                String childName = entry.getKey();
-                IgniteUuid childId = entry.getValue();
+            for (Map.Entry<String, IgfsListingEntry> entry : info.listing().entrySet()) {
+                IgniteUuid fileId = entry.getValue().fileId();
 
                 if (log.isDebugEnabled())
-                    log.debug("Deleting IGFS trash entry [name=" + childName + ", id=" + childId + ']');
+                    log.debug("Deleting IGFS trash entry [name=" + entry.getKey() + ", fileId=" + fileId + ']');
 
                 try {
                     if (!cancelled) {
-                        if (delete(trashId, childName, childId)) {
+                        if (delete(trashId, entry.getKey(), fileId)) {
                             if (log.isDebugEnabled())
-                                log.debug("Sending delete confirmation message [name=" + childName +
-                                    ", id=" + childId + ']');
+                                log.debug("Sending delete confirmation message [name=" + entry.getKey() +
+                                    ", fileId=" + fileId + ']');
 
-                            sendDeleteMessage(new IgfsDeleteMessage(childId));
+                            sendDeleteMessage(new IgfsDeleteMessage(fileId));
                         }
                     }
                     else
@@ -199,9 +198,9 @@ public class IgfsDeleteWorker extends IgfsThread {
                     // Ignore this exception while stopping.
                 }
                 catch (IgniteCheckedException e) {
-                    U.error(log, "Failed to delete entry from the trash directory: " + childName, e);
+                    U.error(log, "Failed to delete entry from the trash directory: " + entry.getKey(), e);
 
-                    sendDeleteMessage(new IgfsDeleteMessage(childId, e));
+                    sendDeleteMessage(new IgfsDeleteMessage(fileId, e));
                 }
             }
         }
@@ -277,36 +276,34 @@ public class IgfsDeleteWorker extends IgfsThread {
             if (info != null) {
                 assert info.isDirectory();
 
-                final Map<String, IgniteUuid> listing = info.listing2();
+                final Map<String, IgfsListingEntry> listing = info.listing();
 
                 if (listing.isEmpty())
                     return true; // Directory is empty.
 
-                final Map<String, IgniteUuid> delListing = new HashMap<>(MAX_DELETE_BATCH, 1.0f);
+                final Map<String, IgfsListingEntry> delListing = new HashMap<>(MAX_DELETE_BATCH, 1.0f);
 
                 final GridCompoundFuture<Object, ?> fut = new GridCompoundFuture<>();
 
-                int notFoundFiles = 0;
                 int failedFiles = 0;
 
-                for (final Map.Entry<String, IgniteUuid> entry : listing.entrySet()) {
+                for (final Map.Entry<String, IgfsListingEntry> entry : listing.entrySet()) {
                     if (cancelled)
                         return false;
 
-                    String childName = entry.getKey();
-                    IgniteUuid childId = entry.getValue();
+                    if (entry.getValue().isDirectory()) {
+                        if (deleteDirectoryContents(id, entry.getValue().fileId())) // *** Recursive call.
+                            delListing.put(entry.getKey(), entry.getValue());
+                        else
+                            failedFiles++;
+                    }
+                    else {
+                        IgfsFileInfo fileInfo = meta.info(entry.getValue().fileId());
 
-                    IgfsFileInfo childInfo = meta.info(childId);
+                        if (fileInfo != null) {
+                            assert fileInfo.isFile();
 
-                    if (childInfo != null) {
-                        if (childInfo.isDirectory()) {
-                            if (deleteDirectoryContents(id, childId)) // *** Recursive call.
-                                delListing.put(childName, childId);
-                            else
-                                failedFiles++;
-                        }
-                        else {
-                            IgfsFileInfo lockedInfo = meta.lock(childId, true);
+                            IgfsFileInfo lockedInfo = meta.lock(fileInfo.id(), true);
 
                             if (lockedInfo == null)
                                 // File is already locked:
@@ -316,12 +313,10 @@ public class IgfsDeleteWorker extends IgfsThread {
 
                                 fut.add(data.delete(lockedInfo));
 
-                                delListing.put(childName, childId);
+                                delListing.put(entry.getKey(), entry.getValue());
                             }
                         }
                     }
-                    else
-                        notFoundFiles++;
 
                     if (delListing.size() == MAX_DELETE_BATCH)
                         break;
@@ -343,10 +338,10 @@ public class IgfsDeleteWorker extends IgfsThread {
                 // Actual delete of folder content.
                 Collection<IgniteUuid> delIds = meta.delete(id, delListing);
 
-                if (listing.size() - notFoundFiles == delIds.size())
+                if (listing.size() == delIds.size())
                     return true; // All entries were deleted.
 
-                if (listing.size() - notFoundFiles == delListing.size() + failedFiles)
+                if (listing.size() == delListing.size() + failedFiles)
                     // All the files were tried, no reason to continue the loop:
                     return false;
             }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0d4d5677/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index 7a3c108..105792d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -1305,7 +1305,7 @@ public class IgfsMetaManager extends IgfsManager {
      * @return Collection of really deleted entries.
      * @throws IgniteCheckedException If failed.
      */
-    Collection<IgniteUuid> delete(IgniteUuid parentId, Map<String, IgniteUuid> listing)
+    Collection<IgniteUuid> delete(IgniteUuid parentId, Map<String, IgfsListingEntry> listing)
         throws IgniteCheckedException {
         if (busyLock.enterBusy()) {
             try {
@@ -1325,8 +1325,8 @@ public class IgfsMetaManager extends IgfsManager {
 
                     int i = 1;
 
-                    for (IgniteUuid childId : listing.values())
-                        allIds[i++] = childId;
+                    for (IgfsListingEntry childEntry : listing.values())
+                        allIds[i++] = childEntry.fileId();
 
                     Map<IgniteUuid, IgfsFileInfo> locks = lockIds(allIds);
 
@@ -1341,9 +1341,9 @@ public class IgfsMetaManager extends IgfsManager {
                         newListing.putAll(parentListing);
 
                         // Remove child entries if possible.
-                        for (Map.Entry<String, IgniteUuid> entry : listing.entrySet()) {
+                        for (Map.Entry<String, IgfsListingEntry> entry : listing.entrySet()) {
                             String childName = entry.getKey();
-                            IgniteUuid childId = entry.getValue();
+                            IgniteUuid childId = entry.getValue().fileId();
 
                             IgfsFileInfo entryInfo = locks.get(childId);
 


[13/16] ignite git commit: Now getting rid of listing2 (1).

Posted by vo...@apache.org.
Now getting rid of listing2 (1).


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

Branch: refs/heads/ignite-2813
Commit: 8cabfcdb95d483309825cd3641738a805282f275
Parents: 2985289
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 16:20:17 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 16:20:17 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsMetaManager.java       | 12 ++++++------
 .../internal/processors/igfs/IgfsProcessorSelfTest.java |  2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/8cabfcdb/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index 59874fb..7a3c108 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -1425,10 +1425,10 @@ public class IgfsMetaManager extends IgfsManager {
 
                         assert parentInfo != null;
 
-                        IgniteUuid childId = parentInfo.listing2().get(name);
+                        IgfsListingEntry childEntry = parentInfo.listing().get(name);
 
-                        if (childId != null)
-                            id2InfoPrj.invoke(parentId, new ListingRemove(name, childId));
+                        if (childEntry != null)
+                            id2InfoPrj.invoke(parentId, new ListingRemove(name, childEntry.fileId()));
 
                         IgfsFileInfo deleted = id2InfoPrj.getAndRemove(id);
 
@@ -1471,8 +1471,8 @@ public class IgfsMetaManager extends IgfsManager {
                     IgfsFileInfo trashInfo = id2InfoPrj.get(trashId);
 
                     if (trashInfo != null && trashInfo.hasChildren()) {
-                        for (IgniteUuid entry : trashInfo.listing2().values())
-                            ids.add(entry);
+                        for (IgfsListingEntry entry : trashInfo.listing().values())
+                            ids.add(entry.fileId());
                     }
                 }
 
@@ -1990,7 +1990,7 @@ public class IgfsMetaManager extends IgfsManager {
                                 id2InfoPrj.put(newInfo.id(), newInfo); // Put the new one.
 
                                 id2InfoPrj.invoke(parentInfo.id(),
-                                    new ListingRemove(path.name(), parentInfo.listing2().get(path.name())));
+                                    new ListingRemove(path.name(), parentInfo.listing().get(path.name()).fileId()));
                                 id2InfoPrj.invoke(parentInfo.id(),
                                     new ListingAdd(path.name(), new IgfsListingEntry(newInfo)));
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/8cabfcdb/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
index 79d337b..f567099 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
@@ -231,7 +231,7 @@ public class IgfsProcessorSelfTest extends IgfsCommonAbstractTest {
                     (IgfsFileInfo)grid(i).cachex(metaCacheName).localPeek(info.fileId(), ONHEAP_PEEK_MODES, null);
 
                 assertNotNull(fileInfo);
-                assertNotNull(fileInfo.listing2());
+                assertNotNull(fileInfo.listing());
             }
         }
         finally {


[05/16] ignite git commit: Removed listing from IgfsMetaManager.delete() method.

Posted by vo...@apache.org.
Removed listing from IgfsMetaManager.delete() method.


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

Branch: refs/heads/ignite-2813
Commit: 8af4f482a5af173c08cebe40e2165f8944f22cc0
Parents: b47eef6
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:33:37 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:33:37 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsFileInfo.java       |  7 +++++++
 .../internal/processors/igfs/IgfsMetaManager.java    | 15 ++++++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/8af4f482/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
index 09c529f..1f41d91 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java
@@ -438,6 +438,13 @@ public final class IgfsFileInfo implements Externalizable {
     }
 
     /**
+     * @return {@code True} if at least one child exists.
+     */
+    public boolean hasChildren() {
+        return !F.isEmpty(listing2);
+    }
+
+    /**
      * @return Affinity key used for single-node file collocation. If {@code null}, usual
      *      mapper procedure is used for block affinity detection.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/8af4f482/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index 1fd426c..b695e41 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -1347,10 +1347,11 @@ public class IgfsMetaManager extends IgfsManager {
 
                     // Ensure parent is still in place.
                     if (parentInfo != null) {
-                        Map<String, IgfsListingEntry> newListing =
-                            new HashMap<>(parentInfo.listing().size(), 1.0f);
+                        Map<String, IgfsListingEntry> parentListing = parentInfo.listing();
 
-                        newListing.putAll(parentInfo.listing());
+                        Map<String, IgfsListingEntry> newListing = new HashMap<>(parentListing.size(), 1.0f);
+
+                        newListing.putAll(parentListing);
 
                         // Remove child entries if possible.
                         for (Map.Entry<String, IgniteUuid> entry : listing.entrySet()) {
@@ -1364,7 +1365,7 @@ public class IgfsMetaManager extends IgfsManager {
                                 assert entryInfo.isDirectory() || IgfsUtils.DELETE_LOCK_ID.equals(entryInfo.lockId());
 
                                 // Delete only files or empty folders.
-                                if (entryInfo.isFile() || entryInfo.isDirectory() && entryInfo.listing().isEmpty()) {
+                                if (!entryInfo.hasChildren()) {
                                     id2InfoPrj.getAndRemove(childId);
 
                                     newListing.remove(childName);
@@ -1437,10 +1438,10 @@ public class IgfsMetaManager extends IgfsManager {
 
                         assert parentInfo != null;
 
-                        IgfsListingEntry listingEntry = parentInfo.listing().get(name);
+                        IgniteUuid childId = parentInfo.listing2().get(name);
 
-                        if (listingEntry != null)
-                            id2InfoPrj.invoke(parentId, new ListingRemove(name, listingEntry.fileId()));
+                        if (childId != null)
+                            id2InfoPrj.invoke(parentId, new ListingRemove(name, childId));
 
                         IgfsFileInfo deleted = id2InfoPrj.getAndRemove(id);
 


[06/16] ignite git commit: WIP.

Posted by vo...@apache.org.
WIP.


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

Branch: refs/heads/ignite-2813
Commit: ffbe94d94b9a08dc67a34554157a8ac92e3f4fd5
Parents: 8af4f48
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:36:01 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:36:01 2016 +0300

----------------------------------------------------------------------
 .../ignite/internal/processors/igfs/IgfsMetaManager.java       | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/ffbe94d9/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index b695e41..ff73201 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -3610,13 +3610,11 @@ public class IgfsMetaManager extends IgfsManager {
                                 throw new IgfsParentNotDirectoryException("Failed to " + (append ? "open" : "create" )
                                     + " file (parent element is not a directory)");
 
-                            Map<String, IgfsListingEntry> parentListing = lowermostExistingInfo.listing();
+                            Map<String, IgniteUuid> parentListing = lowermostExistingInfo.listing2();
 
                             final String uppermostFileToBeCreatedName = b.components.get(b.existingIdCnt - 1);
 
-                            final IgfsListingEntry entry = parentListing.get(uppermostFileToBeCreatedName);
-
-                            if (entry == null) {
+                            if (parentListing.get(uppermostFileToBeCreatedName) == null) {
                                 b.doBuild();
 
                                 assert b.leafInfo != null;


[07/16] ignite git commit: WIP.

Posted by vo...@apache.org.
WIP.


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

Branch: refs/heads/ignite-2813
Commit: 92eb571d554cbf504cfc87200041c5d6beeba931
Parents: ffbe94d
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:37:00 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:37:00 2016 +0300

----------------------------------------------------------------------
 .../apache/ignite/internal/processors/igfs/IgfsMetaManager.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/92eb571d/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index ff73201..98804d3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -2036,7 +2036,7 @@ public class IgfsMetaManager extends IgfsManager {
                                 id2InfoPrj.put(newInfo.id(), newInfo); // Put the new one.
 
                                 id2InfoPrj.invoke(parentInfo.id(),
-                                    new ListingRemove(path.name(), parentInfo.listing().get(path.name()).fileId()));
+                                    new ListingRemove(path.name(), parentInfo.listing2().get(path.name())));
                                 id2InfoPrj.invoke(parentInfo.id(),
                                     new ListingAdd(path.name(), new IgfsListingEntry(newInfo)));
 


[03/16] ignite git commit: Removed listing from IgfsImpl.

Posted by vo...@apache.org.
Removed listing from IgfsImpl.


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

Branch: refs/heads/ignite-2813
Commit: 56d0570253b7134512ed4d4fcd28ef308b3b4b06
Parents: d139289
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 15:22:27 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 15:22:27 2016 +0300

----------------------------------------------------------------------
 .../ignite/internal/processors/igfs/IgfsImpl.java     | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/56d05702/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 0e52927..3eaf02f 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
@@ -869,10 +869,14 @@ public final class IgfsImpl implements IgfsEx {
                                 data.groupBlockSize()));
 
                         // Perform the listing.
-                        for (Map.Entry<String, IgfsListingEntry> e : info.listing().entrySet()) {
-                            IgfsPath p = new IgfsPath(path, e.getKey());
+                        for (Map.Entry<String, IgniteUuid> e : info.listing2().entrySet()) {
+                            IgfsFileInfo childInfo = meta.info(e.getValue());
 
-                            files.add(new IgfsFileImpl(p, e.getValue(), data.groupBlockSize()));
+                            if (childInfo != null) {
+                                IgfsPath childPath = new IgfsPath(path, e.getKey());
+
+                                files.add(new IgfsFileImpl(childPath, childInfo, data.groupBlockSize()));
+                            }
                         }
                     }
                 } else if (mode == PRIMARY) {
@@ -1281,8 +1285,8 @@ public final class IgfsImpl implements IgfsEx {
                 if (!IgfsUtils.ROOT_ID.equals(info.id()))
                     sum.directoriesCount(sum.directoriesCount() + 1);
 
-                for (IgfsListingEntry entry : info.listing().values())
-                    summary0(entry.fileId(), sum);
+                for (IgniteUuid id : info.listing2().values())
+                    summary0(id, sum);
             }
             else {
                 sum.filesCount(sum.filesCount() + 1);


[12/16] ignite git commit: Dramatically simplified IgfsListingEntry.

Posted by vo...@apache.org.
Dramatically simplified IgfsListingEntry.


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

Branch: refs/heads/ignite-2813
Commit: 2985289e2dafd376fba602a979260ed627557eac
Parents: 063e72f
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 15 16:18:24 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 15 16:18:24 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsFileImpl.java  |  29 -----
 .../processors/igfs/IgfsListingEntry.java       | 129 +++----------------
 .../processors/igfs/IgfsMetaManager.java        | 126 ------------------
 .../processors/igfs/IgfsOutputStreamImpl.java   |   2 -
 4 files changed, 17 insertions(+), 269 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/2985289e/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 4a96e81..3576a06 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
@@ -124,35 +124,6 @@ public final class IgfsFileImpl implements IgfsFile, Externalizable {
         modificationTime = info.modificationTime();
     }
 
-    /**
-     * Constructs file instance.
-     *
-     * @param path Path.
-     * @param entry Listing entry.
-     */
-    public IgfsFileImpl(IgfsPath path, IgfsListingEntry entry, long globalGrpSize) {
-        A.notNull(path, "path");
-        A.notNull(entry, "entry");
-
-        this.path = path;
-        fileId = entry.fileId();
-
-        blockSize = entry.blockSize();
-
-        // By contract file must have blockSize > 0, while directory's blockSize == 0:
-        assert entry.isFile() == (blockSize > 0);
-        assert entry.isDirectory() == (blockSize == 0);
-
-        grpBlockSize = entry.affinityKey() == null ? globalGrpSize :
-            entry.length() == 0 ? globalGrpSize : entry.length();
-
-        len = entry.length();
-        props = entry.properties();
-
-        accessTime = entry.accessTime();
-        modificationTime = entry.modificationTime();
-    }
-
     /** {@inheritDoc} */
     @Override public IgfsPath path() {
         return path;

http://git-wip-us.apache.org/repos/asf/ignite/blob/2985289e/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsListingEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsListingEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsListingEntry.java
index 1cdc8a9..61d9265 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsListingEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsListingEntry.java
@@ -21,7 +21,8 @@ import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import java.util.Map;
+
+import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteUuid;
@@ -34,25 +35,10 @@ public class IgfsListingEntry implements Externalizable {
     private static final long serialVersionUID = 0L;
 
     /** File id. */
-    private IgniteUuid fileId;
-
-    /** File affinity key. */
-    private IgniteUuid affKey;
-
-    /** Positive block size if file, 0 if directory. */
-    private int blockSize;
-
-    /** File length. */
-    private long len;
-
-    /** Last access time. */
-    private long accessTime;
+    private IgniteUuid id;
 
-    /** Last modification time. */
-    private long modificationTime;
-
-    /** File properties. */
-    private Map<String, String> props;
+    /** Directory marker. */
+    private boolean dir;
 
     /**
      * Empty constructor required by {@link Externalizable}.
@@ -65,132 +51,51 @@ public class IgfsListingEntry implements Externalizable {
      * @param fileInfo File info to construct listing entry from.
      */
     public IgfsListingEntry(IgfsFileInfo fileInfo) {
-        fileId = fileInfo.id();
-        affKey = fileInfo.affinityKey();
-
-        if (fileInfo.isFile()) {
-            blockSize = fileInfo.blockSize();
-            len = fileInfo.length();
-        }
-
-        props = fileInfo.properties();
-        accessTime = fileInfo.accessTime();
-        modificationTime = fileInfo.modificationTime();
-    }
-
-    /**
-     * Creates listing entry with updated length.
-     *
-     * @param entry Entry.
-     * @param len New length.
-     */
-    public IgfsListingEntry(IgfsListingEntry entry, long len, long accessTime, long modificationTime) {
-        fileId = entry.fileId;
-        affKey = entry.affKey;
-        blockSize = entry.blockSize;
-        props = entry.props;
-        this.accessTime = accessTime;
-        this.modificationTime = modificationTime;
-
-        this.len = len;
+        id = fileInfo.id();
+        dir = fileInfo.isDirectory();
     }
 
     /**
      * @return Entry file ID.
      */
     public IgniteUuid fileId() {
-        return fileId;
-    }
-
-    /**
-     * @return File affinity key, if specified.
-     */
-    public IgniteUuid affinityKey() {
-        return affKey;
+        return id;
     }
 
     /**
      * @return {@code True} if entry represents file.
      */
     public boolean isFile() {
-        return blockSize > 0;
+        return !dir;
     }
 
     /**
      * @return {@code True} if entry represents directory.
      */
     public boolean isDirectory() {
-        return blockSize == 0;
-    }
-
-    /**
-     * @return Block size.
-     */
-    public int blockSize() {
-        return blockSize;
-    }
-
-    /**
-     * @return Length.
-     */
-    public long length() {
-        return len;
-    }
-
-    /**
-     * @return Last access time.
-     */
-    public long accessTime() {
-        return accessTime;
-    }
-
-    /**
-     * @return Last modification time.
-     */
-    public long modificationTime() {
-        return modificationTime;
-    }
-
-    /**
-     * @return Properties map.
-     */
-    public Map<String, String> properties() {
-        return props;
+        return dir;
     }
 
     /** {@inheritDoc} */
     @Override public void writeExternal(ObjectOutput out) throws IOException {
-        U.writeGridUuid(out, fileId);
-        out.writeInt(blockSize);
-        out.writeLong(len);
-        U.writeStringMap(out, props);
-        out.writeLong(accessTime);
-        out.writeLong(modificationTime);
+        U.writeGridUuid(out, id);
+        out.writeBoolean(dir);
     }
 
     /** {@inheritDoc} */
     @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        fileId = U.readGridUuid(in);
-        blockSize = in.readInt();
-        len = in.readLong();
-        props = U.readStringMap(in);
-        accessTime = in.readLong();
-        modificationTime = in.readLong();
+        id = U.readGridUuid(in);
+        dir = in.readBoolean();
     }
 
     /** {@inheritDoc} */
-    @Override public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof IgfsListingEntry)) return false;
-
-        IgfsListingEntry that = (IgfsListingEntry)o;
-
-        return fileId.equals(that.fileId);
+    @Override public boolean equals(Object other) {
+        return this == other || other instanceof IgfsListingEntry && F.eq(id, ((IgfsListingEntry)other).id);
     }
 
     /** {@inheritDoc} */
     @Override public int hashCode() {
-        return fileId.hashCode();
+        return id.hashCode();
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/2985289e/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
index aee1191..59874fb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java
@@ -1607,35 +1607,6 @@ public class IgfsMetaManager extends IgfsManager {
     }
 
     /**
-     * Asynchronously updates record in parent listing.
-     *
-     * @param parentId Parent ID.
-     * @param fileId File ID.
-     * @param fileName File name.
-     * @param lenDelta Length delta.
-     * @param modificationTime Last modification time.
-     */
-    public void updateParentListingAsync(IgniteUuid parentId, IgniteUuid fileId, String fileName, long lenDelta,
-        long modificationTime) {
-        if (busyLock.enterBusy()) {
-            try {
-                assert parentId != null;
-
-                assert validTxState(false);
-
-                id2InfoPrj.invokeAsync(parentId, new UpdateListingEntry(fileId, fileName, lenDelta, -1,
-                    modificationTime));
-            }
-            finally {
-                busyLock.leaveBusy();
-            }
-        }
-        else
-            throw new IllegalStateException("Failed to update parent listing because Grid is stopping [parentId=" +
-                parentId + ", fileId=" + fileId + ", fileName=" + fileName + ']');
-    }
-
-    /**
      * Reserve space for file.
      *
      * @param path File path.
@@ -2977,9 +2948,6 @@ public class IgfsMetaManager extends IgfsManager {
                         modificationTime == -1 ? fileInfo.modificationTime() : modificationTime)
                     );
 
-                    id2InfoPrj.invoke(parentId, new UpdateListingEntry(fileId, fileName, 0, accessTime,
-                        modificationTime));
-
                     tx.commit();
                 }
                 finally {
@@ -3126,100 +3094,6 @@ public class IgfsMetaManager extends IgfsManager {
     }
 
     /**
-     * Updates file length information in parent listing.
-     */
-    private static final class UpdateListingEntry implements EntryProcessor<IgniteUuid, IgfsFileInfo, Void>,
-        Externalizable {
-        /** */
-        private static final long serialVersionUID = 0L;
-
-        /** File name. */
-        private String fileName;
-
-        /** File id. */
-        private IgniteUuid fileId;
-
-        /** Length delta. */
-        private long lenDelta;
-
-        /** Last access time. */
-        private long accessTime;
-
-        /** Last modification time. */
-        private long modificationTime;
-
-        /**
-         * Empty constructor required by {@link Externalizable}.
-         */
-        public UpdateListingEntry() {
-            // No-op.
-        }
-
-        /**
-         * @param fileId Expected file id in parent directory listing.
-         * @param fileName File name.
-         * @param lenDelta Length delta.
-         * @param accessTime Last access time.
-         * @param modificationTime Last modification time.
-         */
-        private UpdateListingEntry(IgniteUuid fileId,
-            String fileName,
-            long lenDelta,
-            long accessTime,
-            long modificationTime) {
-            this.fileId = fileId;
-            this.fileName = fileName;
-            this.lenDelta = lenDelta;
-            this.accessTime = accessTime;
-            this.modificationTime = modificationTime;
-        }
-
-        /** {@inheritDoc} */
-        @Override public Void process(MutableEntry<IgniteUuid, IgfsFileInfo> e, Object... args) {
-            IgfsFileInfo fileInfo = e.getValue();
-
-            Map<String, IgfsListingEntry> listing = fileInfo.listing();
-
-            IgfsListingEntry entry = listing.get(fileName);
-
-            if (entry == null || !entry.fileId().equals(fileId))
-                return null;
-
-            entry = new IgfsListingEntry(entry, entry.length() + lenDelta,
-                accessTime == -1 ? entry.accessTime() : accessTime,
-                modificationTime == -1 ? entry.modificationTime() : modificationTime);
-
-            // Create new map to replace info.
-            listing = new HashMap<>(listing);
-
-            // Modify listing map in-place since map is serialization-safe.
-            listing.put(fileName, entry);
-
-            e.setValue(new IgfsFileInfo(listing, fileInfo));
-
-            return null;
-        }
-
-        /** {@inheritDoc} */
-        @Override public void writeExternal(ObjectOutput out) throws IOException {
-            U.writeGridUuid(out, fileId);
-            out.writeUTF(fileName);
-            out.writeLong(lenDelta);
-            out.writeLong(accessTime);
-            out.writeLong(modificationTime);
-        }
-
-        /** {@inheritDoc} */
-        @Override public void readExternal(ObjectInput in) throws IOException {
-            fileId = U.readGridUuid(in);
-            fileName = in.readUTF();
-            lenDelta = in.readLong();
-            accessTime = in.readLong();
-            modificationTime = in.readLong();
-        }
-    }
-
-    /**
      * Remove entry from directory listing.
      */
     @GridInternal

http://git-wip-us.apache.org/repos/asf/ignite/blob/2985289e/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 8c11073..3bf1011 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
@@ -381,8 +381,6 @@ class IgfsOutputStreamImpl extends IgfsOutputStreamAdapter {
                     throw new IOException("File to read file metadata: " + fileInfo.path(), e);
                 }
 
-                meta.updateParentListingAsync(parentId, fileInfo.id(), fileName, bytes, modificationTime);
-
                 if (err != null)
                     throw err;
             }