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;
}