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:20 UTC
[11/16] ignite git commit: WIP.
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;