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 <voze...@gridgain.com> Authored: Tue Mar 15 16:30:18 2016 +0300 Committer: vozerov-gridgain <voze...@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; }